|     Inicio    |   |         |  |   FOROS      |  |      |      
   Elastix - VoIP B4A (Basic4Android) App inventor 2 PHP - MySQL
  Estación meteorológica B4J (Basic4Java) ADB Shell - Android Arduino
  Raspberry Pi Visual Basic Script (VBS) FireBase (BD autoactualizable) NodeMCU como Arduino
  AutoIt (Programación) Visual Basic Cosas de Windows Webs interesantes
Translate:
Búsqueda en este sitio:


.

Arduino en español
Circuitos con Arduino - Juan Antonio Villalpando

-- Tutorial de iniciación a Arduino --

Volver al índice del tutorial

___________________________

30C.- Conectar dos Arduinos. Bus I2C. De los Esclavos al Maestro.

- Tenemos dos Esclavos, cada uno con un pulsador.

- Los Arduinos están conectados mediante el bus I2C.

- Al pulsar el pulsador 2 se enviará un mensaje al Maestro.

- Al pulsar el pulsador 3 se enviará un mensaje al Maestro.

- Cuando hayas cargado los programas en cada Arduino, conecta el Master al USB del ordenador y observa el Monitor Serie.

- En la foto de arriba se aprecia las conexiones. Los esclavos no tienen USB porque ya tienen cargado el programa y están alimentados con los cables rojo y negro que provienen del Maestro.
- El Maestro está conectado al USB para poder visualizar la información en el Serial Monitor, si no quisiéramos ver esa información, simplemente alimentaríamos al Maestro con una pila de 9V y lo independizamos del ordenador.

Código para el Maestro

// Código para el Maestro
// Juan A. Villalpando
// KIO4.COM
#include <Wire.h>

void setup()
{
  Wire.begin();        // Conexión al Bus I2C
  Serial.begin(9600);  // Velocidad de conexión
}

void loop()
{
//////// Petición al Esclavo 2
  Wire.requestFrom(2, 1);    // Le pide 1 byte al Esclavo 2

  while(Wire.available())    // slave may send less than requested
  { 
    char c = Wire.read();   // Recibe byte a byte
    Serial.print(c);        // Presenta los caracteres en el Serial Monitor
  }
    Serial.println();       // Cámbia de línea en el Serial Monitor.
    delay(200);
    
 //////// Petición al Esclavo 3
  Wire.requestFrom(3, 1);    // Le pide 1 byte al Esclavo 3

  while(Wire.available())    // slave may send less than requested
  { 
    char c = Wire.read();   // Recibe byte a byte
    Serial.print(c);        // Presenta los caracteres en el Serial Monitor
  }
    Serial.println();       // Cámbia de línea en el Serial Monitor.
    delay(200);
    
}

 

Código para el Esclavo 2

// Esclavo 2
#include <Wire.h>

#define pin2 2   // Al terminal 3 lo llamamos pin2. Aquí irá un pulsador.
int valor2; // Esto es una variable entera

void setup()
{
  pinMode(pin2, INPUT);         // El pin2 será entrada. Pulsador.
  Wire.begin(2);                // Este Esclavo es el número 2
  Wire.onRequest(requestEvent); // Cuando el Maestro le hace una petición,
                                // realiza el requestEvent
}

void loop()
{
  delay(100);
}

// Esto es lo que envía cuando le hace la petición.
void requestEvent()
{
  valor2 = digitalRead(pin2); // Lee el valor del pin2 y se lo asigna a valor2. (Puede ser 0 o 1)
if (valor2 == HIGH) { 
    Wire.write("1");           // Envía un 1 (es el caracter 49)
} 

if (valor2 == LOW) { 
    Wire.write("0");           // Envía un 0 (es el caracter 48)
}             
}

 

Código para el Esclavo 3

// Esclavo 3
#include <Wire.h>

#define pin3 3   // Al terminal 3 lo llamamos pin3. Aquí irá un pulsador.
int valor3; // Esto es una variable entera

void setup()
{
  pinMode(pin3, INPUT);         // El pin3 será entrada. Pulsador.
  Wire.begin(3);                // Este Esclavo es el número 3
  Wire.onRequest(requestEvent); // Cuando el Maestro le hace una petición,
                                // realiza el requestEvent
}

void loop()
{
  delay(100);
}

// Esto es lo que envía cuando le hace la petición.
void requestEvent()
{
  valor3 = digitalRead(pin3); // Lee el valor del pin3 y se lo asigna a valor3. (Puede ser 0 o 1)
if (valor3 == HIGH) { 
    Wire.write("1");           // Envía un 1 (es el caracter 49)
} 

if (valor3 == LOW) { 
    Wire.write("0");           // Envía un 0 (es el caracter 48)
}             
}

___________________
- Propuesta.

- Conecta dos LED en el Master, de manera que desde cada Esclavo podamos encender/apagar su correspondiente LED

________________________________

- Mi correo:
juana1991@yahoo.com
- KIO4.COM - Política de cookies. Textos e imágenes propiedad del autor:
© Juan A. Villalpando
No se permite la copia de información ni imágenes.
Usamos cookies propias y de terceros que entre otras cosas recogen datos sobre sus hábitos de navegación y realizan análisis de uso de nuestro sitio.
Si continúa navegando consideramos que acepta su uso. Acepto    Más información