Lectura Maestro/ Escritura Esclavo

En algunas situaciones, puede ser de utilidad la configuración de dos (o más) placas Arduino y Genuino para compartir información entre sí. En este ejemplo, dos placas están programadas para comunicarse entre sí en una configuración de Lector Maestro / Esclavo Remitente a través del protocolo serie síncrono I2C Para lograr esto se utilizan varias funciones de la Biblioteca Wire. Arduino 1, el Maestro, está programado para solicitar, y después leer, 6 bytes de datos enviados desde un solo Esclavo Arduino direccionado. Una vez que se recibe ese mensaje, a continuación se puede ver en la ventana de monitor serie del Software (IDE)Arduino .

El protocolo I2C implica el uso de dos líneas para enviar y recibir datos:
  • un pin de reloj serie (SCL) envía los impulsos de la placa Arduino o Genuino Maestro a intervalos regulares,
  • un pin de datos serie (SDA) sobre el cual se envían los datos entre los dos dispositivos.
A medida que cambian las líneas de reloj de LOW a HIGH (conocido como el flanco de subida del pulso de reloj), un único bit de información - que va a formar de la secuencia de la dirección de un dispositivo específico y mando de datos - se transfiere desde la placa para el dispositivoI2C a través de la línea SDA. Cuando se envía esta información - bit a bit -, la llamada del dispositivo ejecuta la solicitud y transmite datos de nuevo es - si es necesario - a la placa sobre la misma línea utilizando la señal de reloj que sigue siendo generada por el Maestro en SCL como la sincronización.

Debido a que el protocolo I2Cpermite a cada dispositivo habilitado a tener su propia dirección única, y como los dispositivos maestro y esclavo hacen turnos para comunicarse a través de una sola línea, es posible que la placa Arduino o Genuino se comunique (a su vez) con muchos dispositivos , u otras plataformas, utilizandp sólo dos pines del microcontrolador.

Hardware necesario

  • 2 placas Arduino o Genuino
  • cable de conexionado


Circuito


Conecte el pin 4 (pin d datos o SDA) y el pin 5 (pin de reloj, o SCL) en la placa principal con sus homólogos en la placa esclavo. Asegúrese de que ambas placas comparten el común (GND). Con el fin de permitir la comunicación serie, la placa maestra debe estar conectada a su ordenador a través de USB.
Si la alimentación de los tableros de forma independiente es un problema, conecte la salida de 5 V del Maestro al pin VIN en el esclavo.

Esquema


Código


Código para el Master Reader - Programa para Arduino 1


// Wire Master Reader
// por Nicholas Zambetti <http://www.zambetti.com>

// Demuestra el uso de la biblioteca Wire
// Lee los datos de un dispositivo esclavo I2C/TWI
// Referirse al ejemplo de "Wire Slave Sender" para usarlo con este

// Creado el 29 Marzo de 2006

// Este código es de dominio publico.


#include <Wire.h>

void setup() {
  Wire.begin();        // se conecta al bus i2c (dirección opcional para el maestro)
  Serial.begin(9600);  // inicia la comunicacion Serie
}

void loop() {
  Wire.requestFrom(8, 6);    // pide 6 bytes del dispositivo esclavo numero 8

  while (Wire.available()) { // el esclavo puede menos bts de los salicitados
    char c = Wire.read(); // recibe un caracter como byte
    Serial.print(c);         // imprime el caracter
  }

  delay(500);
}
Codigo para el eslavo - Programa para Arduino 2


// Wire Slave Sender
// por Nicholas Zambetti <http://www.zambetti.com>

// Demuestra el uso de la biblioteca Wire
// Envía los datos como un dispositivo I2C TWI / esclavo
// Consulte el ejemplo "Wire Maestro Lector" para su uso con este

// Creado el 29 Marzo de 2006

// Este codigo es de dominio publico.


#include <Wire.h>

void setup() {
  Wire.begin(8);                // se conecta al bus i2c con la direccion numero 8
  Wire.onRequest(requestEvent); // requiere el evento
}

void loop() {
  delay(100);
}

// Función que se ejecuta cada vez que los datos se solicitan por el maestro
// Esta función se ha registrado como un evento, consulte setup()
void requestEvent() {
  Wire.write("hello "); // responde con un mensaje de 6 bytes
  // como era de esperar por el maestro
}


No hay comentarios:

Publicar un comentario