2017-06-20 20 views
0

TinyWireSライブラリを使用してArduinoとAtTiny85をI2Cで通信しようとしています。私はAtTinyにコマンドを送るためだけにArduinoを必要とします、それは戻って話す必要はありません。私はAtTiny85コードをコンパイルしようとするたびにエラーTinyWireSを使用してI2C経由でATtiny85とArduinoを通信する

Arduinoのは、ワイヤライブラリを使用している、それが正常に動作します、しかし、それは次のエラーを与える:

#include <TinyWireS.h> 
#include <usiTwiSlave.h> 
#define output (4) 
#define I2C_SLAVE_ADDR (1) 


void setup() { 
    // put your setup code here, to run once: 
    TinyWireS.begin(I2C_SLAVE_ADDR); 
    pinMode(output, OUTPUT); 
} 

volatile byte msg = 0; 

void loop() { 
    if(TinyWireS.available()) 
    msg = TinyWireS.receive(); 

    if(msg == 1) 
    digitalWrite(output, HIGH); 
    else if(msg == 0) 
    digitalWrite(output, LOW); 
    else 
    msg = 0; 
} 
:ここ
libraries\TinyWireS\TinyWireS.cpp.o (symbol from plugin): In function `usi_onReceiverPtr': 

(.text+0x0): multiple definition of `usi_onReceiverPtr' 

sketch\ATtiny_Servo.ino.cpp.o (symbol from plugin):(.text+0x0): first defined here 

libraries\TinyWireS\TinyWireS.cpp.o (symbol from plugin): In function `usi_onReceiverPtr': 

(.text+0x0): multiple definition of `usi_onRequestPtr' 

sketch\ATtiny_Servo.ino.cpp.o (symbol from plugin):(.text+0x0): first defined here 

libraries\TinyWireS\TinyWireS.cpp.o (symbol from plugin): In function `usi_onReceiverPtr': 

(.text+0x0): multiple definition of `_onTwiDataRequest' 

sketch\ATtiny_Servo.ino.cpp.o (symbol from plugin):(.text+0x0): first defined here 

collect2.exe: error: ld returned 1 exit status 

exit status 1 
Error compiling for board ATtiny25/45/85. 

は私のコードです
+0

'#include '行を削除するとどうなりますか?また、https://github.com/rambo/TinyWire/blob/master/TinyWireS/examples/attiny85_i2c_slave/attiny85_i2c_slave.inoによると、 'TinyWireS.h'をインクルードする前に' I2C_SLAVE_ADDR' *を定義する必要があります。 –

答えて

0

Maximilian Gerhardtのコメントは半分です。 <usiTwiSlave.h>を2度追加しないでください。 TinyWireSライブラリのヘッダーには、角括弧#ifdef - #defは使用されません。これは、通常、何もコンパイルされないことを保証します。 アドレスは、begin()関数のパラメータによってライブラリに与えられます。だから私は、スレーブの例では、アドレスの定義がインクルードの前にあるのは偶然のことだと思います。

Btw:TinyWireSおよびTinyWireMライブラリから1つのライブラリを作成しました。あなたが興味があるなら、それをチェックしてください: https://github.com/lucullusTheOnly/TinyWire

そしてFYI:I2C/TwoWireプロトコルは予備のアドレスを持っていて、1はそれらの1つです。バスに別のデバイスを追加すると、問題が発生することがあります。

関連する問題