|     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

___________________________

30B.- Conectar dos Arduinos. Bus I2C. Del Maestro a los Esclavos.

- Tenemos un Master con dos Pulsadores, uno en el terminal 2 y otro en el 3.

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

- Al pulsar el pulsador 2 se encenderá el LED13 del Arduino esclavo 2.

- Al pulsar el pulsador 3 se encenderá el LED13 del Arduino esclavo 3.

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

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

// En el setup establecemos los parámetros iniciales.
void setup() {
  pinMode(pin2, INPUT);     // El pin2 será entrada. Pulsador.
  pinMode(pin3, INPUT);     // El pin3 será entrada. Pulsador.
  Wire.begin();        // Conexión al Bus I2C
  Serial.begin(9600);  // Velocidad de transmisión.
}


void loop() {
  valor2 = digitalRead(pin2); // Lee el valor del pin2 y se lo asigna a valor2. (Puede ser 0 o 1)
if (valor2 == HIGH) { 
    Wire.beginTransmission(2); // Transmite al esclavo 2
    Wire.write("1");           // Envía un 1 (es el caracter 49)
    Wire.endTransmission();    // Para la transmisión.
} 

if (valor2 == LOW) { 
    Wire.beginTransmission(2); // Transmite al esclavo 2
    Wire.write("0");           // Envía un 0 (es el caracter 48)
    Wire.endTransmission();    // Para la transmisión.
} 
////////////////////////////////////////////////////////////////////////////////
  valor3 = digitalRead(pin3); // Lee el valor del pin3 y se lo asigna a valor3. (Puede ser 0 o 1)
if (valor3 == HIGH) { 
    Wire.beginTransmission(3); // Transmite al esclavo 3
    Wire.write("1");           // Envía un 1 (es el caracter 49)
    Wire.endTransmission();    // Para la transmisión.
} 

if (valor3 == LOW) { 
    Wire.beginTransmission(3); // Transmite al esclavo 3
    Wire.write("0");           // Envía un 0 (es el caracter 48)
    Wire.endTransmission();    // Para la transmisión.
} 
}  
		  		    

 

Código para el Esclavo 2

// Esclavo 2
#include <Wire.h>

#define pin13 13 // Al terminal 13 lo llamamos pin13. Aquí irá el LED.

// En el setup establecemos los parámetros iniciales.
void setup() {
  pinMode(pin13, OUTPUT);  // El pin13 será salida. LED.
  Wire.begin(2);           // Este Esclavo es el número 2
  Wire.onReceive(receiveEvent);
  Serial.begin(9600);  // Velocidad de transmisión.
}

void loop() {
    // delay(200);
}

void receiveEvent(int howMany) {
  while (1 < Wire.available()) { // Comprueba si ha llegado bytes
    char c = Wire.read();    // recibe los byte como caracteres
    Serial.print(c);
    
  }
  int x = Wire.read();    // recibe los byte como entero
  Serial.println(x);  
  if (x == 48){           // El 48 es el "0"
      digitalWrite(pin13, HIGH);
    } else {
      digitalWrite(pin13, LOW);
    }
} 
		  		    

 

Código para el Esclavo 3

// Esclavo 3
#include <Wire.h>

#define pin13 13 // Al terminal 13 lo llamamos pin13. Aquí irá el LED.

// En el setup establecemos los parámetros iniciales.
void setup() {
  pinMode(pin13, OUTPUT);  // El pin13 será salida. LED.
  Wire.begin(3);           // Este Esclavo es el número 3
  Wire.onReceive(receiveEvent);
  Serial.begin(9600);  // Velocidad de transmisión.
}

void loop() {
    // delay(200);
}

void receiveEvent(int howMany) {
  while (1 < Wire.available()) { // Comprueba si ha llegado bytes
    char c = Wire.read();    // recibe los byte como caracteres
    Serial.print(c);
    
  }
  int x = Wire.read();    // recibe los byte como entero
  Serial.println(x);  
  if (x == 48){           // El 48 es el "0"
      digitalWrite(pin13, HIGH);
    } else {
      digitalWrite(pin13, LOW);
    }
} 
		  		    

________________________________

- 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