Arduino I2C (3 / 3 steg)
Steg 3: Programmera / kod
Vi kommer att skriva två uppsättningar av kod
Master koden och slav koden.
Master i princip skriver kommandon och slaven läser dem och lyder. Master och slav igen varandra genom att använda funktionen kod t.ex modbus funktion kod 05 i befälhavaren berätta för slaven att tvinga en enda utgång. Så måste inställningen funktion kod för master vara samma för slaven.
Vi kommer att behöva använda Wire.h biblioteket här. Om det inte är i ditt bibliotek kan du hämta den från Arduino.cc hemsida.
Kom ihåg tryckknappen ansluts till befälhavaren och LED är ansluten till slav, så när du trycker på knappen mästaren ger slav ett kommando för att slå på LED, och när du trycker igen det ger ett annat kommando som stänger av lysdioden.
< pre > #include //include tråd biblioteket MASTER koden < br >
int stat; //state av tryckknappen
int PB = 3; //declare tryckknapp pin på master arduino
int nuvarande; //current tillstånd av tryckknapp
void setup() {
Serial.BEGIN (9600); //set baudvärde för den seriella
Wire.BEGIN (); //begin tråd biblioteket
}
void loop() {
State = (digitalRead(PB)); / / staten läser värdet på pin3
om (statligt == hög & & nuvarande == låg) //if staten är hög och aktuella knappen är låg
{
Wire.beginTransmission (5), //begin överföring (kraft enda utgång)
Wire.write (hög); //master skriver ett högt värde
Wire.endTransmission(); / / slutet överföring
State = låg, //set stat till låg
Nuvarande = hög; //current till hög
}
annars om (statligt == hög & & nuvarande == hög) //if tillstånd är redan hög och nuvarande är hög för
{
Wire.beginTransmission (5), //begin överföring
Wire.write (låg), //master skriver låga värde
Wire.endTransmission(); / / slutar överföring
State = hög; //set stat till hög
Nuvarande = låg, //set nuvarande till låg
}
}
< pre > #include //include tråd bibliotek //SLAVE koden < br >
int LED = 3; //declare ledde pin som pin3 på slav arduino
void setup() {
Serial.BEGIN (9600); //begin seriell övervaka och ange baudvärde
Wire.BEGIN (5), //start tråd bibliotek, med adress 5 (kraft enda utgång)
Wire.onReceive (händelse); //set ta emot variabel
pinMode (3, OUTPUT); //set pin3 som utgångsstiftet
digitalWrite (3, låg); //set utgång pint till låg
sätta din installation kod här, om du vill köra en gång:
}
void loop() {
sätta din huvudsakliga kod här, för att köra flera gånger:
}
Annullera händelse (int antal) //start en händelse
{
While(Wire.available()) //if tråd är tillgänglig
{
int state=Wire.read (); //state läsa kommandot recept från master, hög eller låg
IF(State==High) //if stat läser högt från master
{
digitalWrite (LED, hög), //slave kommer att lyda master och Ställ in utgång till hög
}
annat if(state==LOW) //but om slav läser låg från master
{
digitalWrite (LED, låg); //slave kommer Maria och Ställ in output till låg.
}
}
}
Jag gör en fyra hjul robot med två H-broar som tar 12 digitala portar och en uno har endast 13, så jag bestämde mig på med 2 arduinos, sensorerna ansluts till befälhavaren och h-bro till slave.when roboten är blir jag kommer ladda upp den här också. Jag vill att det ska fungera som en bobCAT: P, så jag måste ha individuell kontroll över alla 4 hjulen. snälla, lämna alla frågor som kommentarer och jag kommer att svara. Tack.