Arduino I2C (3 / 3 paso)

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.}

Artículos Relacionados

Busque el Bus Arduino I2C dispositivos I2C conectados con Visuino

Busque el Bus Arduino I2C dispositivos I2C conectados con Visuino

I2C Dispositivos y módulos están ampliamente disponibles y muy popular en los proyectos de Arduino . Cada dispositivo I2C tiene una dirección generalmente fija o configurable por jumpers. Cuando se trabaja con el dispositivo I2C , la primera tarea es
Master Arduino I2C y arranque

Master Arduino I2C y arranque

Después del éxito de mi tablero de Arduino Uno I2C maestro, empecé a pensar que podía mejorar la Junta. Bien... hacer más extensible por un lado y me permite usar la Junta para otras cosas así. Pensé que si podía romper las conexiones de la ATMEGA328
Biblioteca de controlador de LCD Arduino I2C y PackMan

Biblioteca de controlador de LCD Arduino I2C y PackMan

Este proyecto es una completa Arduino un Instructable anterior que se puede encontrar aquí;Snappily que tituló...'Biblioteca PIC de microchip para el Control de un 20 por 4 LCD sobre I2C'Es mi primera ir a escribir una librería de Arduino C++ así que
Reloj con termómetro usando Arduino i2c 16 x 2 lcd, RTC DS1307 y DHT11 sensor.

Reloj con termómetro usando Arduino i2c 16 x 2 lcd, RTC DS1307 y DHT11 sensor.

Hello! Ya ha pasado un tiempo no me he posteado nada en Instructables, pero ahora hice un simple proyecto que he visto en internet en varias formas. He conseguido crear un código con otros códigos que he encontrado en internet y tengo que decir es tr
Arduino - I2C LCD 1602A - contraseña protegida puerta acceso con relé - KY-019

Arduino - I2C LCD 1602A - contraseña protegida puerta acceso con relé - KY-019

¡Hola mundo! Hoy hice un código simple para controlar una cerradura eléctrica huelga con una contraseña / clave de acceso utilizando un relé de 1 canal. No tengo tal bloqueo pero demostró con una lámpara atada relé. Compruebe el siguiente paso para e
Pantalla de temperatura dual-Arduino I2C

Pantalla de temperatura dual-Arduino I2C

Uso de Arduinos es grande y todo, pero ¿qué pasa cuando te quedas sin pernos? ¿Claro, usted podría comprar un Mega, pero lo que si ya tienes Unos pocos, o tal vez algunos Micros? Existe un protocolo ingenioso en la electrónica de hoy en día, y se lla
Arduino I2C pantalla PIN de depuración

Arduino I2C pantalla PIN de depuración

Bienvenido a mi intento de un Instructable primera. Estoy haciendo esto porque compré un LCD barato de I2C cutre para Arduino de eBay y pasaron varias horas tratando de enganchar para arriba. Como era de esperar las instrucciones horribles no hizo na
ATTiny84 - esclavo I2C - Arduino UNO

ATTiny84 - esclavo I2C - Arduino UNO

He estado trabajando en la construcción de las piezas que necesito para hacerme un molino del CNC del PWB para un rato ahora y la siguiente parte del rompecabezas está tratando el Arduino para controlar 3 motores paso a paso al mismo tiempo. Puesto q
Cómo medir la temperatura con gran exactitud con un Arduino y un tablero de Sensor de temperatura de TSYS01.

Cómo medir la temperatura con gran exactitud con un Arduino y un tablero de Sensor de temperatura de TSYS01.

Mientras estudiaba en la Universidad fuimos desafiados como parte de un trabajo de curso en diseño de una caja con control de temperatura muy preciso. Si el proyecto fuera a tener éxito, múltiples cajas debían ser construido y utilizado en un proyect
MPU-9150/9250 IMU con Arduino Pro Micro

MPU-9150/9250 IMU con Arduino Pro Micro

¿Comprar un sensor de 10-DOF de aliexpress o ebay y experimentar problemas funcionando? He descargado Jeff Rowberg biblioteca y la salida siempre congelada después de un tiempo. Me decidí a depurar el código, porque el sensor MPU-9150 parecía promete
Guía paso a paso al controlador de robot mago Micro (Arduino compatible)

Guía paso a paso al controlador de robot mago Micro (Arduino compatible)

el Micro mago de DAGU es un bajo costo Arduino compatible controlador diseñado especialmente para principiantes que quieren construir un pequeño robot. El Consejo tiene una serie de accesorios útiles construido en forma que en la mayoría de los casos
Arduino ducha Monitor 2

Arduino ducha Monitor 2

"ya que este perezoso Geek antiguo (LOG) está consiguiendo viejo, he(I) olvidar las cosas. Ahora me gusta a tomar una ducha todos los días pero no puede recordar si es día de ducha o no. Pude marcar en un calendario (papel o informático) o incluso po
PCF8574 mochilas con LCDs y Arduino

PCF8574 mochilas con LCDs y Arduino

IntroducciónUtilización de módulos LCD con tu Arduino es popular, sin embargo la cantidad de cableado requiere tiempo y paciencia para alambre hasta correctamente - y también utiliza un montón de alfileres de salida digital. Esa es la razón por la cu
Arduino básico parte 2

Arduino básico parte 2

Hola, esta es la segunda parte de la guía anterior. En esta guía voy a introducir algunos otros códigos 'básicos' y usos generales. El hecho de que algunos sensores son 'básicas' ciertamente no significa que no se complican. Un componente básico - co