Paso 3: Programa / código
Vamos a escribir dos conjuntos de código
El código y el código de esclavo.
El maestro escribe básicamente los comandos y el esclavo Lee y obedece. El maestro y el esclavo reconocen por el uso de código de función por ejemplo que el modbus código 05 en el maestro de la función Dile al esclavo para forzar una salida única. Así la configuración del código de función para el maestro tiene que ser el mismo para el esclavo.
Necesitaremos utilizar la biblioteca de Wire.h aquí. Si no está en su biblioteca que se puede descargar desde el sitio web de Arduino.cc.
Recuerde que el botón está conectado con el maestro y el LED está conectado a la esclava, así que cuando usted empuja el botón, que el maestro da al esclavo un comando para encender el LED, y cuando empujas otra vez lo da otro comando para apagar el 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() {estado = (digitalRead(PB)); / / estado lee el valor en el pin3 si (estado == HIGH & & actual == baja) //if el estado es alto y botón actual es bajo {Wire.beginTransmission (5), transmisión de //begin (salida única fuerza) Wire.write (alto); //master escribe un alto valor Wire.endTransmission(); / / extremo estado de transmisión = bajo; //set estado a baja corriente = alto; //current a alta 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 } else if (estado == HIGH & & actual == HIGH) //if estado ya es alta y la corriente es alta también {Wire.beginTransmission (5), transmisión de //begin Wire.write (bajo), //master escribe bajo valor Wire.endTransmission(); / / termina estado de transmisión = alta; //set estado a corriente alta = bajo; //set corriente a baja }
<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 //start (int número) del evento un evento {while(Wire.available()) //if alambre está disponible {int state=Wire.read (); //state Lea el comando recibido de maestro, alto o bajo if(state==HIGH) estado //if Lee alto del maestro {digitalWrite (LED, alta); //slave voluntad obedecer maestra y set ouput a altaotra if(state==LOW) //but si esclavo Lee bajo del maestro {digitalWrite (LED, baja); //slave a salida permanencia y ajuste a la baja.}