automazione tapparelle

Claudio_FF:
Allora basta scrivere le stesse espressioni logiche in C.

Esempio di relé start/stop con autoritenuta. 'A' è il relé, 'sta' e 'sto' sono i livelli letti dai pulsanti start e stop (si assume che quando premuti forniscano un 1). Al posto dei puntini vanno i pin da usare.

byte A = 0;  // rele' inizialmente spento

void loop() {
    // lettura ingressi
    byte sta = digitalRead(...);
    byte sto = digitalRead(...);
   
    // rele' A
    A = (A | sta) & !sto;
   
    // aggiornamento uscite   
    digitalWrite(..., A);
}




Esempio come prima ma con disattivazione dopo 10 secondi. 't0' minuscolo è la variabile tempo, 'T0' maiuscolo è l'uscita del temporizzatore (va a 1 dopo 10 secondi che 'A' è a 1).


byte A = 0;  // rele' inizialmente spento
byte T0 = 0;  // temporizzatore inizialmente spento
uint32_t t0 = 0;

void loop() {
    // lettura ingressi
    byte sta = digitalRead(...);
    byte sto = digitalRead(...);
   
    // rele' A
    A = (A | sta) & !T0 & !sto;

// temporizzatore T0
    if(!A) { t0 = millis(); T0 = 0; }
    else if(millis() - t0 >= 10000) T0 = 1;

// aggiornamento uscite   
    digitalWrite(..., A);
}




Anche se si lavora in bassissima tensione, gli ingressi vanno filtrati contro i rimbalzi e optoisolati.

Fantastico!! Sono quasi più i commenti che il programma.