Étape 3: Programmer / Code
Nous allons écrire deux séries de code
Les codes maître et l’esclave.
Le maître écrit essentiellement des commandes et l’esclave leur lit et obéit. Le maître et l’esclave reconnaissent mutuellement par l’utilisation de la fonction code par exemple que les modbus fonction code 05 figurant le maître raconter l’esclave pour forcer une sortie unique. Donc le réglage du code fonction pour le maître doit être le même pour l’esclave.
Nous aurons besoin d’utiliser la bibliothèque de Wire.h ici. Si ce n’est pas dans votre bibliothèque vous pouvez le télécharger depuis le site Arduino.cc.
N’oubliez pas le bouton poussoir est relié au maître et la LED est reliée à l’esclave, c’est pourquoi lorsque vous appuyez sur le bouton, que le maître donne l’esclave une commande pour allumer la LED, ou lorsque vous appuyez à nouveau sur elle offre une autre commande pour désactiver la 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() {État = (digitalRead(PB)); / / État lit la valeur à la broche 3 si (État == HIGH & & actuel == faible) //if l’État est élevé et touche actuelle est faible {Wire.beginTransmission (5); //begin transmission (sortie unique force) Wire.write (HIGH); //master écrit une valeur haute Wire.endTransmission(); / / fin d’état de la transmission = bas ; //set État à faible courant = élevé ; //current à haute 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 } ElseIf (État == HIGH & & actuel == HIGH) //if État est déjà élevé et actuel est élevé trop {//begin transmission Wire.write (basse), Wire.beginTransmission (5); //master écrit faible valeur Wire.endTransmission(); / / extrémités État transmission = élevé ; //set État à courant élevé = faible ; //set actuels à faible }
<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.
annuler l’événement (int nombre) //start un événement {while(Wire.available()) //if fil est disponible {int state=Wire.read (); //state lire la commande recived du maître, haute ou basse if(state==HIGH) //if État lit haut du maître {digitalWrite (LED, HIGH); //slave volonté obéir ouput maître et mis à vifd’autre if(state==LOW) //but si l’esclave lit bas du maître {digitalWrite (LED, faible); //slave sera sortie okan et réglée au plus bas.}