嗨我用I2C解决多个attiny85芯片存在很大问题:
据我所知,attiny使用7位地址进行通信。我正在使用TinyWireS lib,它对我来说非常好,直到我到达地址:' 64'这是' 1000000'在二进制。最高可用地址应为' 1111111'。
这就是:
从站:
Attiny85:当通过I2C接收msg时,开关导通或截止。
Slaveaddress:64
#include <TinyWireS.h>
#include <usiTwiSlave.h>
#define output (4)
#define I2C_SLAVE_ADDR (64) //works if I2C_SLAVE_ADDR < 64
void setup() {
TinyWireS.begin(I2C_SLAVE_ADDR);
pinMode(output, OUTPUT);
}
volatile bool state = LOW;
void loop() {
byte msg = -1;
if(TinyWireS.available())
msg = TinyWireS.receive();
if(msg == 1)
state = HIGH;
else if(msg == 0)
state = LOW;
else if(msg == 2)
state = !state;
digitalWrite(output, state);
}
主
Arduino pro mini:
sendMsg(0,true); //作品!芯片上的芯片:64开关
sendMsg(64,true); //失败!筹码领先:64人关闭。
#include <Wire.h>
#define DEVICE (64) //0 works!
void setup() {
Wire.begin();
}
void loop() {
sendMsg(1, DEVICE);
delay(2000);
sendMsg(0, DEVICE);
delay(2000);
}
void sendMsg(int msg, int device) {
Wire.beginTransmission(device);
Wire.write(msg);
Wire.endTransmission();
}
你知道如何解决这个问题吗?
我正在使用的TinyWireS版本:https://github.com/rambo/TinyWire/tree/master/TinyWireS