giovedì 29 novembre 2012

Temporizzatore con delay comandato da pulsante.

 
 
/* Premre il pulsante per qualche attimo.
Il relè rimarra acceso per 10 secondi */

# define TASTO1 7
# define LED1   8

int Stato1 = 0;    

void setup() 
{ pinMode(LED1, OUTPUT);      
  pinMode(TASTO1, INPUT);}

void loop(){

  Stato1 = digitalRead(TASTO1);

  if (Stato1 == HIGH)
  { digitalWrite(LED1, HIGH);  
    delay(10000);} 
  else {digitalWrite(LED1, LOW);}
}

6 commenti:

  1. buongiorno
    a me servirebbe con due pulsanti e due uscite indipendenti ho provato a modificare il suo sketch però alla fine mi da un errore.
    Mi saprebbe dire dove ho sbagliato.
    grazie in anticipo.


    /* Premre il pulsante per qualche attimo.
    Il relè rimarra acceso per 10 secondi */

    # define TASTO1 2
    # define TASTO2 3
    # define LED1 8
    # define LED2 7

    int Stato1 = 0;
    int Stato2 = 0;

    void setup()
    { pinMode(LED1, OUTPUT);
    pinMode(LED2, OUTPUT);
    pinMode(TASTO1, INPUT);
    pinMode(TASTO2, INPUT);}



    void loop(){

    Stato1 = digitalRead(TASTO1);
    Stato2 = digitalRead(TASTO2);

    if (Stato1 == HIGH);
    { digitalWrite(LED1, HIGH);
    delay(3000);}
    else {digitalWrite(LED1, LOW);}

    if (Stato2 == HIGH);
    { digitalWrite(LED2, HIGH);
    delay(3000);}
    else {digitalWrite(LED2, LOW);}

    RispondiElimina
  2. Non può usare questo programma. Il comando delay non si dovrebbe usare mai perchè blocca tutto il processore. In pratica: quando il yP ricevel'istruzione delay(3000) esso si "spegne" completamente non eseguendo nessun altra operazione.

    RispondiElimina
  3. https://arduinomicro.blogspot.it/2014/12/pausa.html
    Deve lavorare sullo sketch PAUSA, fa lo stesso lavoro ma senza "spegnere" il yp.

    RispondiElimina
  4. http://arduinomicro.blogspot.it/2014/11/temporizzatore-ad-impulso_24.html

    Questo fa lo stesso lavoro senza usare l'istruzione delay.

    RispondiElimina
  5. # define BUTTON1 2
    # define LED1 8
    int buttonState1 = 0;
    unsigned long iMillis1 = 0;
    byte acceso1 = LOW;
    int TempoON1 = 3000;

    # define BUTTON2 3
    # define LED2 9
    int buttonState2 = 0;
    unsigned long iMillis2 = 0;
    byte acceso2 = LOW;
    int TempoON2 = 6000;


    void setup()
    { pinMode(LED1, OUTPUT);
    pinMode(BUTTON1, INPUT);
    pinMode(LED2, OUTPUT);
    pinMode(BUTTON2, INPUT); }

    void loop() {
    /* TEMPORIZZATORE
    Alla pressione di BUTTON1
    LED1 si accende per
    spegnersi dopo TempoON
    */

    int buttonState1 = digitalRead(BUTTON1);
    if ( buttonState1 == HIGH && acceso1 == LOW)
    { digitalWrite(LED1, HIGH);
    acceso1 = HIGH;
    iMillis1 = millis(); }
    if ( acceso1 == HIGH && (millis()-iMillis1)> TempoON1)
    { digitalWrite(LED1, LOW);
    acceso1 = LOW; }


    /* TEMPORIZZATORE
    Alla pressione di BUTTON2
    LED2 si accende per
    spegnersi dopo TempoON2
    */

    int buttonState2 = digitalRead(BUTTON2);
    if ( buttonState2 == HIGH && acceso2 == LOW)
    { digitalWrite(LED2, HIGH);
    acceso2 = HIGH;
    iMillis2 = millis(); }
    if ( acceso2 == HIGH && (millis()-iMillis2)> TempoON2)
    { digitalWrite(LED2, LOW);
    acceso2 = LOW; }






    }//-------------Fine LOOP-------------


    //provi questo

    RispondiElimina
  6. Ciao
    Come posso fare per impostare un orario di accensione e spegnimento impostabile da menu?

    RispondiElimina