gestione display LCD

Non quotare per intero il messaggio immediatamente precedente ma solo le parti a cui vuoi rispondere. Grazie. :slight_smile:

Notizie dal fronte ...

Ringrazio tutti per l'interessamento e sopratutto il member Etemenanki che è stato determinante nella soluzione.

Sostanzialmente i problemi erano 2 :

  1. mancava l'istruzione delay(xxxx) all'interno dei due if
  2. c'era un problema hardware in quanto sbagliavo a collegare i due segnali digitali

Sono un programmatore da 30 anni e con i sistemi PLC mediamente una situazione del genere la risolvo in 30/45 sec. ma sono anche componenti di svariati migliaia di euro ed era simpatico poter riuscire anche con elettronica open.

RiPosto il codice corretto

da notare che lo script (non so se è il termine giusto) utilizza due segnali di allarmi ma potrebbe essere implementato con 3 o addirittura 4 segnali digitali.

Può tornare utile per delle applicazioni dove si vogliono controllare lo stato di funzionamento di dispositivi oppure avere un ritorno di segnale per eventuali accensioni o spegnimenti remotando la segnalazione.

Saluti
ps. il prossimo test con modulo GSM

#include <LiquidCrystal.h> //inserisci librerie del display
LiquidCrystal lcd(12, 11, 5, 4, 3, 2); // settaggio display

 int AllarmPina = 7 ;     // the number of the allarm 1 pin
 int AllarmPinb = 8  ;     // the number of the allarm 2 pin
 int valuePin1 = 0;
 int valuePin2 = 0;

void setup() {

  lcd.begin(16, 2);             //impostiamo il numero di colonne ed il numero di righe di lcd
  lcd.setCursor(0, 0);
  lcd.print("allarmi attivi  "); // intestazione
 
  pinMode(AllarmPina, INPUT);
  pinMode(AllarmPinb, INPUT);
}

void loop() {
  
  valuePin1 = digitalRead(AllarmPina); // leggi le variabili in ingresso
  valuePin2 = digitalRead(AllarmPinb); // leggi le variabili in ingresso
   
                if (valuePin1 == HIGH) { // se il valore dell'input (1)  1 scrivi testo allarme 1

    lcd.setCursor(0, 1);
    lcd.print("ALLARME 1       ");
    delay(1000);
 }    
                if (valuePin2 == HIGH) { // se il valore dell'input (2)  1 scrivi testo allarme 2

    lcd.setCursor(0, 1);
    lcd.print("ALLARME 2       ");
    delay(1000);
 
  } else { // altrimenti

    valuePin1 = digitalRead(AllarmPina); // leggi le variabili in ingresso
    valuePin2 = digitalRead(AllarmPinb); // leggi le variabili in ingresso

                 if (valuePin1 == LOW && valuePin2 == LOW)  // se il valore dell'input  0 scrivi testo nessun allarme

      lcd.setCursor(0, 1);
      lcd.print("nessuno    sw0.0");
       
 } 
}