hola buenos dias
tengo un proyecto donde utilizo dos sensores , uno es de temperatura (DS18B20) y el otro es de presion(YF-S201B)
y el problema es que no se como hacer que los dos funcionen en un display (2004A)
Si me pudueran ayudar a programar los dos estaria muy agradecido
PD: tengo el codigo de presion solo me falta el de temperatura y configurarlo
// Importar librerías
#include <Wire.h> // Librería comunicación I2C
#include <LiquidCrystal_I2C.h> // Librería LCD I2C
// Declaración del objeto para el LCD
// Poner la dirección del LCD a 0x20 para display 20x4 (A0=0, A1=0, A2=0)
// Terminales de conexión del LCD
// addr, en,rw,rs,d4,d5,d6,d7,bl,blpol
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
const int sensor = 2; // Pin digital para el sensor de flujo YF-S201
int litros_Min; // Variable que almacena el caudal (L/min)
volatile int pulsos = 0; // Variable que almacena el número de pulsos
unsigned long tiempoAnterior = 0; // Variable para calcular el tiempo transcurrido
unsigned long pulsos_Acumulados = 0; // Variable que almacena el número de pulsos acumulados
float litros; // // Variable que almacena el número de litros acumulados
// Rutina de servicio de la interrupción (ISR)
void flujo()
{
pulsos++; // Incrementa en una unidad el número de pulsos
}
void setup()
{
pinMode(sensor, INPUT_PULLUP); // Pin digital como entrada con conexión PULL-UP interna
lcd.begin(20,4); // Inicializo el LCD 2004
interrupts(); // Habilito las interrupciones
// Interrupción INT0, llama a la ISR llamada "flujo" en cada flanco de subida en el pin digital 2
attachInterrupt(digitalPinToInterrupt(sensor), flujo, RISING);
tiempoAnterior = millis(); // Guardo el tiempo que tarda el ejecutarse el setup
}
void loop ()
{
// Cada segundo calculamos e imprimimos el caudal y el número de litros consumidos
if(millis() - tiempoAnterior > 1000)
{
// Realizo los cálculos
tiempoAnterior = millis(); // Actualizo el nuevo tiempo
pulsos_Acumulados += pulsos; // Número de pulsos acumulados
litros_Min = (pulsos / 7.5); // Q = frecuencia * 60/ 7.5 (L/Min)
litros = pulsos_Acumulados*1.0/450; // Cada 450 pulsos son un litro
pulsos = 0; // Pongo nuevamente el número de pulsos a cero
// Llamada a la función que muestra los resultados en el LCD 2004
LCD_2004();
}
}
// Función que muestra los resultados en el LCD 2004
void LCD_2004()
{
// Imprimo la cabecera del sistema
lcd.clear();
lcd.setCursor(0,0);
lcd.print("''INSTRUMENTACION''");
lcd.setCursor(0,1);
lcd.print("ITM-MECATRONICA");
// Presento los valores a través del LCD 2004
lcd.setCursor(0,2);
// Imprimo el caudal en L/min
lcd.print(" = ");
lcd.print(litros_Min, DEC);
lcd.print(" l/m");
lcd.setCursor(0,3);
// Imprimo el número de litros acumulados
lcd.print(" = ");
lcd.print(litros);
lcd.print(" l");
}
Moderador: Código editado con etiquetas