Stap 3: Code verdeling
Ten eerste, laten we kijken naar de master. We moeten de vereiste Wire.h library opnemen:
#include <Wire.h>
Dan, in de setup-functie, kunnen we beginnen de I2C-bus met de Wire.begin() functie. Als geen argument wordt opgegeven in de functie, zal Arduino beginnen als een master.
Tot slot, we sturen een teken x, die tussen 0 en 5 ligt. Wij de volgende functies te gebruiken
verzending van een naar het apparaat met het adres 9 te beginnen, schrijf het teken en dan stoppen de transmissie:
Wire.beginTransmission(9); // transmit to device #9 Wire.write(x); // sends x Wire.endTransmission(); // stop transmitting
Nu laten we verkennen de slaaf Arduino code. Wij omvatten ook de Wire.h bibliotheek hier, maar nu beginnen we de I2C-bus met behulp van Wire.begin(9). Het getal in het argument is het adres dat we willen gebruiken voor de Arduino. Alle apparaten met adres 9 ontvangt de transmissie.
Nu moeten we een of andere manier reageren, wanneer we een I2C-transmissie ontvangen. De volgende functie wordt een trigger functie toegevoegd wanneer een teken wordt ontvangen. Beter gezegd, wanneer de Arduino een personage I2C ontvangt, de functie die wij vertellen uit te voeren wordt uitgevoerd:
Wire.onReceive(receiveEvent);
En dit is de functie. We slaan hier, gewoon de waarde van de ontvangen teken:
void receiveEvent(int bytes) { x = Wire.read(); }
We interpreteren loop, gewoon dat teken te knipperen de ingebouwde LED op verschillende snelheden, afhankelijk van het ontvangen karakter.