Sensor de temperatura transistor lm317, 3 led y pantalla lcd con modulador i2c

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.

He trasladado su tema de una categoría de idioma inglés del foro a la categoría International > Español @abrahamchacon21.

En adelante por favor usar la categoría apropiada a la lengua en que queráis publicar. Esto es importante para el uso responsable del foro, y esta explicado aquí la guía "How to get the best out of this forum".
Este guía contiene mucha información útil. Por favor leer.

De antemano, muchas gracias por cooperar.

Por favor edita tu post y adjunta el código de acuerdo a las Normas del Foro en español, punto 7.

Lo simulé en wokwi y funciona perfectamente, entonces el código no es el problema.
Revisa las conexiones.