Buenas, estoy haciendo un proyecto en el que con dos Arduinos (Mega y Uno), des del Arduino Mega, se recopilan diversos datos de los sensores, y se envían al Arduino UNO, donde hay conectada una pantalla con el módulo I2C.
El problema está aquí: Cuando cargo el código en la placa slave, si los pines de la LCD están conectados, entonces nada del código se ejecuta, como si no se estuvieran transfiriendo los datos, ya que ni la pantalla ni el led actúan.
Pero si no conecto la pantalla, y solamente conecto el LED, TODO funciona perfectamente, y los datos se transfieren.
No sé por que pasa esto, agradezco cualquier comentario. Gracias
MAESTRO:
#include <Wire.h>
int PINluz = A5;
int valorluz;
void setup()
{
Wire.begin();
Serial.begin ( 9600);
}
void loop()
{
valorluz = analogRead(PINluz);
Serial.println (" Valor luz: ");
Serial.print(valorluz);
delay(2000);
if (valorluz >= 300)
{
Wire.beginTransmission(1); // Comenzamos la transmisión con el dispositivo 1
Wire.write(1);
Wire.write(0);
Wire.endTransmission(); // Terminamos la transmisión con el dispositivo 1
}
// Si el pulsador no está presionado
else
{
Wire.beginTransmission(1);
Wire.write(1);
Wire.write(1);
Wire.endTransmission();
}
}
ESCLAVO:
int led = 5; // Pin digital 5 para el LED
#include <Wire.h>
#include <LCD.h>
#include <LiquidCrystal.h>
#include <LiquidCrystal_I2C.h>
#define I2C_ADDR 0x27
#define BACKLIGHT_PIN 3
#define En_pin 2
#define Rw_pin 1
#define Rs_pin 0
#define D4_pin 4
#define D5_pin 5
#define D6_pin 6
#define D7_pin 7
LiquidCrystal_I2C lcd(I2C_ADDR, En_pin, Rw_pin, Rs_pin, D4_pin, D5_pin, D6_pin, D7_pin);
void setup() {
lcd.begin (16, 2);
lcd.setBacklightPin(BACKLIGHT_PIN, POSITIVE);
lcd.setBacklight(HIGH);
lcd.home ();
lcd.setCursor(0, 0);
Wire.begin(1); // Empezamos la comunicación I2C con el dispositivo esclavo 1
Wire.onReceive(receiveEvent);
pinMode(led, OUTPUT); // Pin digital 5 como salida
}
void loop()
{
delay(100);
}
void receiveEvent(int rebut) {
int x = Wire.read();
int y = Wire.read();
switch (x) {
case 1:
if (y == 1) {
digitalWrite( led, HIGH);
lcd.print(" LUZ ");
lcd.setCursor(0, 1); // Imprimir valores en la segunda linea
lcd.print(" ENCENDIDA ");
delay(3000);
lcd.clear();
}
if (y == 0) {
digitalWrite( led, LOW);
lcd.print(" LUZ");
lcd.setCursor(0, 1);
lcd.print(" APAGADA ");
delay(3000);
lcd.clear();
}
break;
}
}