Salve a tutti, io vorrei creare una modifica al mio codice ma non so proprio come arrivare alla soluzione.
Ho iniziato a scrivere un programma per una piastra riscaldante e a una temperatura impostata scatta il relè per evitare che il liquido salga troppo di temperatura. in questo progetto sto usando sensore di temperatura LM35, Arduino uno r3, un monitor lcd 16x2 con modulo i2c e un modulo relè.
Attualmente con il programma che ho scritto funziona tutto solo che imposto tramite pc caricando il valore di temperatura al quale deve scattare il relè. Volevo modificare questa cosa con dei pulsanti, impostati in pullup, per alzare o abbassare il valore di temperatura alla quale il relè deve scattare e far partire il tutto.
#include <Wire.h>
#include <LCD.h>
#include <LiquidCrystal_I2C.h>
#define I2C_ADDR 0x27 // indirizzo lcd 16x2 i2c
#define BACKLIGHT_PIN 3
#define En_pin 2
#define Rw_pin 1
#define Rs_pin 0
#define D4_pin 4
#define D5_pin 5
#define D6_pin 6
#define D7_pin 7
#define PIN_LM35 A0
//modulo rele
#define PIN_rele1 7
int stato_PIN_rele1;
//libreria lcd cinese
LiquidCrystal_I2C lcd(I2C_ADDR,En_pin,Rw_pin,Rs_pin,D4_pin,D5_pin,D6_pin,D7_pin);
//carattere clessidra
byte clessidra[8] = {
B11111,
B10001,
B01010,
B00100,
B00100,
B01110,
B11111,
B11111
};
//carattere on
byte on[8] = {
B00000,
B00000,
B00001,
B00010,
B10100,
B01000,
B00000,
B00000
};
//carattere off
byte off[8] = {
B00000,
B10001,
B01010,
B00100,
B01010,
B10001,
B00000,
B00000
};
void setup() {
pinMode (PIN_rele1,OUTPUT);
lcd.begin(16,2);
lcd.setBacklightPin(BACKLIGHT_PIN,POSITIVE);
lcd.setBacklight(HIGH);
//creazione carattere
lcd.createChar(0,clessidra);
lcd.createChar(1,on);
lcd.createChar(2,off);
lcd.home();
}
void loop() {
int valore = analogRead(PIN_LM35);
//float mV = valore / 1023.0 * 5000;
//float temperatura = mV / 10;
float temperatura = valore / 2.046;
//impostazioni pin rele
if (temperatura >= 30){
digitalWrite (PIN_rele1,HIGH);
(digitalRead(stato_PIN_rele1 == HIGH));
lcd.setCursor(15,1);
lcd.write(byte(2));// disegno off
}else{
digitalWrite (PIN_rele1,LOW);
lcd.setCursor(15,1);
lcd.write(byte(1)); //disegno on}
}
//impostazioni scritte lcd
lcd.setCursor(0,0);
lcd.print("Temp:");
lcd.print(temperatura);
lcd.print(" C ");
//scritta relè1 (scalda) se acceso o spento
lcd.setCursor(14,1);
lcd.print("R");
delay(1000);
}