estoy armando un sensor de temperatura con los componentes ya mencionando pero tengo problemas con la pantalla lcd i2c que no proyecta nada, ni siquiera me da error, lo he simulado en tinkercard y nada este es el codigo
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// Dirección I2C del módulo LCD (puede variar según el módulo)
#define LCD_ADDR 0x27
LiquidCrystal_I2C lcd(LCD_ADDR, 16, 2);
int Sensor = A0;
int ValorSensor = 0;
float Temperatura = 0;
int PinRojo = 6;
int PinVerde = 7;
int PinAmarillo = 8;
int PinSpeaker = 9;
void setup() {
// Configuramos los puertos digitales 6, 7, 8 y 10 como salidas
pinMode(PinVerde, OUTPUT);
pinMode(PinRojo, OUTPUT);
pinMode(PinAmarillo, OUTPUT);
pinMode(PinSpeaker, OUTPUT);
// Inicializamos los puertos 6, 7 y 8 como nivel lógico bajo
digitalWrite(PinAmarillo, LOW);
digitalWrite(PinRojo, LOW);
digitalWrite(PinVerde, LOW);
// Inicializamos la pantalla LCD
lcd.init();
lcd.backlight();
delay(1000);
}
void loop() {
ValorSensor = analogRead(Sensor);
Temperatura = (ValorSensor * (500.0 / 1023.0)) - 50.0;
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Temp: ");
lcd.print(Temperatura);
lcd.print("'C");
if (Temperatura < 35) {
lcd.setCursor(0, 1);
lcd.print("Temp Baja");
digitalWrite(PinAmarillo, HIGH);
digitalWrite(PinVerde, LOW);
digitalWrite(PinRojo, LOW);
playTone(600, 500);
delay(100);
playTone(600, 900);
delay(100);
} else if (Temperatura > 38) {
lcd.setCursor(0, 1);
lcd.print("Temp Alta");
digitalWrite(PinAmarillo, LOW);
digitalWrite(PinVerde, LOW);
digitalWrite(PinRojo, HIGH);
playTone(500, 600);
delay(100);
playTone(500, 800);
delay(100);
} else {
lcd.setCursor(0, 1);
lcd.print("Temp Normal");
digitalWrite(PinAmarillo, LOW);
digitalWrite(PinVerde, HIGH);
digitalWrite(PinRojo, LOW);
playTone(0, 0);
delay(100);
}
}
void playTone(long duracion, int frecuencia) {
duracion *= 1000;
int periodo = (1.0 / frecuencia) * 1000000;
long lapso_de_tiempo = 0;
while (lapso_de_tiempo < duracion) {
digitalWrite(PinSpeaker, HIGH);
delayMicroseconds(periodo / 2);
digitalWrite(PinSpeaker, LOW);
delayMicroseconds(periodo / 2);
lapso_de_tiempo += periodo;
}
mi me pudiern ayudar lo agradeceria.