Stap 3: Program / Code
We gaan twee sets van code schrijven
De master code en de code van de slaaf.
De meester schrijft in principe opdrachten en de slaaf leest ze en gehoorzaamt. De meester en slaaf erkennen elkaar door het gebruik van de functie code bijvoorbeeld die de modbus functie code 05 instellen in de master vertellen de slaaf te dwingen een uitgang. Dus is de functie code instelling voor de meester hetzelfde voor de slaaf.
Zullen we hier de Wire.h bibliotheek gebruiken. Als het niet in uw mediabibliotheek dat kunt u het downloaden van de website Arduino.cc.
Vergeet niet de drukknop is aangesloten aan de kapitein en de LED is aangesloten op de slaaf, dus wanneer u de knop die de kapitein de slaaf geeft een opdracht om te schakelen op de LED, en wanneer u opnieuw duwen een andere opdracht geeft naar het uitschakelen van de LED.
<pre>#include //include the wire library MASTER CODE<br>
int state;//state of the pushbutton int PB=3;//declare pushbutton pin on master arduino
int current;//current state of pushbutton
void setup() { Serial.begin(9600);//set the serial baudrate Wire.begin();//begin the wire library
}
void loop {staat = (digitalRead(PB)); / / staat leest de waarde bij pin3 als (staat == HIGH & & huidige == LOW) //if de staat is hoog en de knop huidige laag is {Wire.beginTransmission (5); //begin transmissie (kracht uitgang) Wire.write (hoog); //master schrijft een hoge waarde Wire.endTransmission(); / / end transmissie staat = laag; //set staat te laag stroom = hoog; //current op hoog void loop() { state= (digitalRead(PB));// state reads the value at pin3 if(state==HIGH && current==LOW)//if the state is high and current button is low { Wire.beginTransmission(5);//begin transmission(force single output) Wire.write(HIGH);//master writes a high value Wire.endTransmission();// end transmission state=LOW;//set state to low current=HIGH;//current to high } else if(state==HIGH && current == HIGH)//if state is already high and current is high too { Wire.beginTransmission(5);//begin transmission Wire.write(LOW);//master writes low value Wire.endTransmission();// ends transmission state=HIGH;//set state to high current=LOW;//set current to low } anders als (staat == HIGH & & huidige == HIGH) //if staat is al hoog en huidige ook hoge {//begin transmissie Wire.write (laag), Wire.beginTransmission (5); //master schrijft laagwaardige Wire.endTransmission(); / / transmissie staat eindigt = hoog; //set staat te hoge stroom = laag; //set huidige te laag }
<pre>#include //include wire library //SLAVE CODE<br>
int LED=3;//declare led pin as pin3 on slave arduino
void setup() { Serial.begin(9600);//begin serial monitor and set baudrate Wire.begin(5);//start wire library, with address 5 (force single output) Wire.onReceive(Event);//set to recieve variable pinMode(3,OUTPUT);//set pin3 as output pin digitalWrite(3,LOW);//set output pint to low // put your setup code here, to run once:
}
void loop() { // put your main code here, to run repeatedly:
} void Event(int number)//start an event { while(Wire.available())//if wire is avaliable { int state=Wire.read();//state read the recived command from master, high or low if(state==HIGH)//if state reads high from master { digitalWrite(LED,HIGH);//slave will obey master and set ouput to high } else if(state==LOW)//but if slave reads low from master { digitalWrite(LED,LOW);//slave will obay and set output to low. } } } I am making a four wheel robot using two H-bridges which takes 12 digital ports and an uno only has 13, so i decided on using 2 arduinos, the sensors will be connected to the master and h-bridge to the slave.when the robot is comlete i will upload it here as well. I want it to work like a bobCAT :P, so i need to have individual control over all 4 wheels. please, leave all questions as comments and i will reply. Thank you.
void (int-nummer) gebeurtenis //start een gebeurtenis {while(Wire.available()) //if draad is beschikbaar {int state=Wire.read (); //state Lees de recived opdracht van meester, hoog of laag if(state==HIGH) //if staat leest hoog van meester {digitalWrite (LED, hoge); //slave wil gehoorzamen output van de master en instellen op hooganders if(state==LOW) //but als slaaf leest laag van meester {digitalWrite (LED, laag); //slave zal output van het obay en instellen op laag.}