Hola compañeros tengo un problema con mi codigo espero me puedan ayudar resumo el problema
Lo que tengo problema es en que siga midiendo el sensor DS18B20 tanto en serial como en LCD 16X2 ya que cuando presiono el Keypad en cada "case" solo me mide un valor y ocupo que siga midiendo hasta que presione otro "case" estoy utilizado el protocolo "one wire" espero me ayuden ya que no se que otra cosa hacer gracias por su tiempo
#include <Keypad.h>
#include <LiquidCrystal.h>
#include <OneWire.h>
#include <DallasTemperature.h>
const int pinDatosDQ = 12; // Pin donde se conecta el bus 1-Wire
OneWire oneWireObjeto(pinDatosDQ); // Instancia a las clases OneWire y DallasTemperature
DallasTemperature sensorDS18B20(&oneWireObjeto);
DeviceAddress a = {0x28,0xA5,0xB8,0x1B,0x0A,0x00,0x00,0x1E};
DeviceAddress b = {0x28,0xF1,0xCD,0x1B,0x0A,0x00,0x00,0x53};
DeviceAddress c = {0x28,0x51,0xBE,0x1B,0x0A,0x00,0x00,0x2C};
DeviceAddress d = {0x28,0xCF,0xBA,0x1B,0x0A,0x00,0x00,0x91};
DeviceAddress e = {0x28,0x18,0xCB,0x1B,0x0A,0x00,0x00,0x70};
DeviceAddress f = {0x28,0x6E,0xAF,0x1B,0x0A,0x00,0x00,0x54};
DeviceAddress g = {0x28,0x1D,0xBF,0x1B,0x0A,0x00,0x00,0xE9};
DeviceAddress h = {0x28,0xC9,0xB2,0x1B,0x0A,0x00,0x00,0x1D};
DeviceAddress i = {0x28,0x76,0xB4,0x1B,0x0A,0x00,0x00,0xA2};
const byte ROWS = 4; //filas
const byte COLS = 4; //columnas
char keys[ROWS][COLS] = {
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};
const byte rowPins[ROWS] = {2,3,4,5}; //filas
const byte colPins[COLS] = {6,7,8,9}; //columnas
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
LiquidCrystal lcd(A0, A1, A2, A3, A4, A5); //Pines donde va conectada la pantalla (RS, E, D4, D5, D6, D7)
void setup() {
Serial.begin(9600);
sensorDS18B20.begin(); // Iniciamos el bus 1-Wire
//float temp1 = a;
lcd.begin(16, 2); //Inicializa la librería
//lcd.clear();
lcd.print("Leyendo datos"); // Mandamos comandos para toma de temperatura a los sensores
delay(20);
lcd.setCursor(0,1); // Mueve el cursor al principio de la segunda línea
lcd.print("Indique sensor");
delay(40);
lcd.noDisplay();
}
void loop() {
char key = keypad.getKey();//
sensorDS18B20.requestTemperatures();
lcd.begin(16, 2);
switch (key)
{
case '1':
sensor1();
case '2':
sensor2();
case '3':
sensor3();
case '4':
sensor4();
case '5':
sensor5();
case '6':
sensor6();
case '7':
sensor7();
case '8':
sensor8();
case'9':
sensor9();
}
}
void sensor1() {
float temp1= sensorDS18B20.getTempC(a);//Se obtiene la temperatura en °C del sensor 1
lcd.print("SENSOR 1");
lcd.setCursor(0,1);
lcd.print(temp1); //Imprime el valor recogido
lcd.print(" C ");
Serial.print("Temperatura 1 = ");
Serial.println(temp1);
delay(200);
}
void sensor2() {
float temp2= sensorDS18B20.getTempC(b);//Se obtiene la temperatura en °C del sensor 1
lcd.print("SENSOR 2");
lcd.setCursor(0,1);
lcd.print(temp2); //Imprime el valor recogido
lcd.print(" C ");
Serial.print("Temperatura 2 = ");
Serial.println(temp2);
delay(200);
}
void sensor3() {
float temp3= sensorDS18B20.getTempC(c);//Se obtiene la temperatura en °C del sensor 1
lcd.print("SENSOR 3");
lcd.setCursor(0,1);
lcd.print(temp3); //Imprime el valor recogido
lcd.print(" C ");
Serial.print("Temperatura 3 = ");
Serial.println(temp3);
delay(200);
}
void sensor4() {
float temp4= sensorDS18B20.getTempC(d);//Se obtiene la temperatura en °C del sensor 1
lcd.print("SENSOR 4");
lcd.setCursor(0,1);
lcd.print(temp4); //Imprime el valor recogido
lcd.print(" C ");
Serial.print("Temperatura 4 = ");
Serial.println(temp4);
delay(200);
}
void sensor5() {
float temp5= sensorDS18B20.getTempC(e);//Se obtiene la temperatura en °C del sensor 1
lcd.print("SENSOR 5");
lcd.setCursor(0,1);
lcd.print(temp5); //Imprime el valor recogido
lcd.print(" C ");
Serial.print("Temperatura 5 = ");
Serial.println(temp5);
delay(200);
}
void sensor6() {
float temp6= sensorDS18B20.getTempC(f);//Se obtiene la temperatura en °C del sensor 1
lcd.print("SENSOR 6");
lcd.setCursor(0,1);
lcd.print(temp6); //Imprime el valor recogido
lcd.print(" C ");
Serial.print("Temperatura 6 = ");
Serial.println(temp6);
delay(200);
}
void sensor7() {
float temp7= sensorDS18B20.getTempC(g);//Se obtiene la temperatura en °C del sensor 1
lcd.print("SENSOR 7");
lcd.setCursor(0,1);
lcd.print(temp7); //Imprime el valor recogido
lcd.print(" C ");
Serial.print("Temperatura 7 = ");
Serial.println(temp7);
delay(200);
}
void sensor8() {
float temp8= sensorDS18B20.getTempC(h);//Se obtiene la temperatura en °C del sensor 1
lcd.print("SENSOR 8");
lcd.setCursor(0,1);
lcd.print(temp8); //Imprime el valor recogido
lcd.print(" C ");
Serial.print("Temperatura 8 = ");
Serial.println(temp8);
delay(200);
}
void sensor9() {
float temp9= sensorDS18B20.getTempC(i);//Se obtiene la temperatura en °C del sensor 1
lcd.print("SENSOR 9");
lcd.setCursor(0,1);
lcd.print(temp9); //Imprime el valor recogido
lcd.print(" C ");
Serial.print("Temperatura 9 = ");
Serial.println(temp9);
delay(200);
}
