Hola, tengo conectado a mi placa arduino un led rgb y un sensor ds18b20.
Lo que quiero es que dependiendo del rango de temperaturas que lea el sensor el led adquiera un color u otro. He programado lo que copio a continuación y no me funciona... siempre sale el led azul y no cambia. Alguien puede ayudarme?
//Tema DS18B20
#include <OneWire.h> //Se importan las librerías
#include <DallasTemperature.h>
#define Pin 2 //Se declara el pin donde se conectará la DATA
OneWire ourWire(Pin); //Se establece el pin declarado como bus para la comunicación OneWire
DallasTemperature sensors(&ourWire); //Se instancia la librería DallasTemperature
//Tema LED RGB
#define pinLed1 11 // Pin 11 a Red
#define pinLed2 10 // Pin 10 a Green
#define pinLed3 9 // Pin 9 a Blue
void setup() {
delay(1000);
Serial.begin(9600);
sensors.begin(); //Se inician los sensores
pinMode(pinLed1, OUTPUT);
pinMode(pinLed2, OUTPUT);
pinMode(pinLed3, OUTPUT);
}
void loop() {
sensors.requestTemperatures(); //Prepara el sensor para la lectura
Serial.print(sensors.getTempCByIndex(0)); //Se lee e imprime la temperatura en grados Celsius
Serial.println(" grados ");
// Si la temperatura es menor a 28 grados el led se pone azul
if (sensors.getTempCByIndex(0)<28){
analogWrite(pinLed1, LOW);
analogWrite(pinLed2, LOW);
analogWrite(pinLed3, HIGH);
}
// Si la temperatura es mayor o igual a 28 grados y menor o igual a 32 grados el led se pone verde
else if(sensors.getTempCByIndex(0)>=28 && sensors.getTempCByIndex(0)<=32){
analogWrite(pinLed1, LOW);
analogWrite(pinLed2, HIGH);
analogWrite(pinLed3, LOW);
}
// Si la temperatura es mayor a 32 grados el led se pone rojo
else if(sensors.getTempCByIndex(0)>32){
analogWrite(pinLed1, HIGH);
analogWrite(pinLed2, LOW);
analogWrite(pinLed3, LOW);
}
delay(1000); //Se provoca un lapso de 1 segundo antes de la próxima lectura
}