Non quotare per intero il messaggio immediatamente precedente ma solo le parti a cui vuoi rispondere. Grazie. ![]()
Notizie dal fronte ...
Ringrazio tutti per l'interessamento e sopratutto il member Etemenanki che è stato determinante nella soluzione.
Sostanzialmente i problemi erano 2 :
- mancava l'istruzione delay(xxxx) all'interno dei due if
- 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");
}
}