Hola amigos!
Quisiera hacerles dos preguntas relacionadas con la comunicación entre Arduinos mediante I2C. La primera: ¿Es posible enviar distintas variables (dos o más) de un Arduino a otro? Tengo un código que funciona para una variable y conecta dos Arduino mediante I2C. Cada Arduino con su código. El "master" (o el que envía datos) sólo envía los datos de un random a un "esclavo" que los lee y los muestra en pantalla. He probado de todo, y no consigo enviar datos de por ejemplo dos randoms diferentes: randNumber = random(300) y randNumber2 = random(1000, 2000). Me gustaría enviar la variable 1 y 2 y leerlas e imprimirlas en pantalla en el Arduino receptor. Adjunto el código:
El maestro:
////////////////////// ARDUINO MAESTRO /////////////////
#include "Wire.h";
const byte I2C_SLAVE_ADDR=0x20;
long randNumber;
void setup() {
Wire.begin();
randomSeed(analogRead(0));
Serial.begin(9600);
}
void loop() {
sendToSlave();
}
void sendToSlave()
{
randNumber = random(300);
Serial.println(randNumber);
Wire.beginTransmission(I2C_SLAVE_ADDR);
Wire.write(randNumber);
Wire.endTransmission();
}
Y el esclavo:
////////////// ARDUINO ESCLAVO /////////
#include "Wire.h"
const byte I2C_SLAVE_ADDR = 0x20;
void setup() {
Wire.begin(I2C_SLAVE_ADDR);
Wire.onReceive(receiveEvent);
Serial.begin(9600);
}
void loop() {
}
void receiveEvent(int bytes)
{
long randNumber = 0;
while (Wire.available())
{
randNumber = Wire.read();
Serial.println(randNumber);
}
}
La segunda pregunta: ¿Sería posible prescindir de la comunicación I2C y enviar los datos a través de un analogWrite()? Por ejemplo del pin 9 de un Arduino sale la lectura en forma de analogWrite(RandNumber) y lo lee el pin 3 del Arduino receptor en forma de analoRead.
Muchas gracias,