I2C mellan Arduinos (3 / 5 steg)
Steg 3: Kod uppdelning
Första, låt oss titta på de master. Vi måste inkludera krävs Wire.h biblioteket:
#include < Wire.h >
I setup-funktionen börjar vi då, I2C bussen med funktionen Wire.begin() . Om inga argument anges i funktionen startar Arduino som master.
Slutligen, vi skickar en karaktär x, som är mellan 0 och 5. Vi använder följande funktioner till
börja en överföring till enheten med adressen 9, skriver tecknet och sedan stoppa överföringen:
Wire.beginTransmission(9); överföra till enhet #9
Wire.write(x); skickar x
Wire.endTransmission(); stoppa överföring
Nu låt oss utforska slav Arduino kod. Vi har även Wire.h biblioteket här, men nu börjar vi I2C bussen med Wire.begin(9). Numret i argumentet är den adress som vi vill använda för Arduino. Alla enheter med adress 9 får överföringen.
Nu måste vi reagera på något sätt när vi får en I2C växellåda. Följande funktion lägger till en trigger funktion när ett tecken är emot. Rättare sagt, när Arduino får en karaktär på I2C, det kommer att köras den funktion vi berätta det för att köra:
Wire.onReceive(receiveEvent);
Och detta är funktionen. Här, lagra vi helt enkelt värdet av mottagna tecken:
void receiveEvent (int byte) {
x = Wire.read();
}
I loop()tolka vi helt enkelt tecknet för att blinka de inbyggda LED i olika hastigheter beroende på det mottagna tecknet.