# define LEDA 2 # define LEDB 3 # define POT A0 int ledStateA = LOW; int ledStateB = LOW; long pMillisA = 0; long pMillisB = 0; long pausa = 0; void setup() { pinMode (POT, INPUT); pinMode(LEDA, OUTPUT); pinMode(LEDB, OUTPUT); } void loop(){ pausa = analogRead(POT); unsigned long cMillisA = millis(); if( cMillisA - pMillisA > (pausa + 50)) { pMillisA = cMillisA; if ( ledStateA== LOW) ledStateA = HIGH; else ledStateA = LOW; digitalWrite(LEDA, ledStateA);} unsigned long cMillisB = millis(); if( cMillisB - pMillisB > ( pausa + 275) ) { pMillisB = cMillisB; if ( ledStateB == LOW) ledStateB = HIGH; else ledStateB = LOW; digitalWrite(LEDB, ledStateB);} }
Visualizzazione post con etichetta Temporizzatore. Mostra tutti i post
Visualizzazione post con etichetta Temporizzatore. Mostra tutti i post
lunedì 1 dicembre 2014
Blink regolabile
Blink regolabile (delay).
# define Sensore A0 # define LED1 2 # define LED2 3 int tempo = 0; void setup() { pinMode (Sensore,INPUT); pinMode(LED1,OUTPUT); pinMode(LED2,OUTPUT); Serial.begin(9600);} void loop(){ tempo = analogRead(Sensore); digitalWrite (LED1,HIGH); delay(tempo *0.5 ); digitalWrite (LED1,LOW); digitalWrite (LED2,HIGH); delay(tempo*2); digitalWrite (LED2,LOW); delay(tempo); }
lunedì 24 novembre 2014
Temporizzatore ad impulso.
/* TEMPORIZZATORE Alla pressione di BUTTON1 LED1 si accende per spegnersi dopo TempoON */ # define BUTTON1 2 # define LED1 8 int buttonState1 = 0; unsigned long iMillis1 = 0; byte acceso1 = LOW; int TempoON = 3000; void setup() { pinMode(LED1, OUTPUT); pinMode(BUTTON1, INPUT); } void loop() { int buttonState1 = digitalRead(BUTTON1); if ( buttonState1 == HIGH && acceso1 == LOW) { digitalWrite(LED1, HIGH); acceso1 = HIGH; iMillis1 = millis(); } if ( acceso1 == HIGH && (millis()-iMillis1)> TempoON) { digitalWrite(LED1, LOW); acceso1 = LOW; } }//-------------Fine LOOP-------------
Temporizzatore ritardato all'inserzione (pulsante).
/* Il LED si accende dopo 5 sec. dalla pressione del pulsante e si spegne dopo 8 secondi dalla stessa pressione. */ # define TASTOSET 2 # define LED 7 int ValueLED = 0; int tempoON = 5000; byte acceso = LOW; int tempoOFF = 8000; byte acceso1 = LOW; unsigned long iMillis = 0; void setup() { pinMode(TASTOSET, INPUT ); pinMode(LED, OUTPUT); } void loop() { int valoreTastoSET = digitalRead(TASTOSET); if ( valoreTastoSET == HIGH) { acceso = HIGH; acceso1 = HIGH; iMillis = millis(); digitalWrite(LED, LOW);} if ( acceso == HIGH && (millis()-iMillis)> tempoON) { digitalWrite(LED, HIGH); acceso = LOW; } if ( acceso1 == HIGH && (millis()-iMillis)> tempoOFF) { digitalWrite(LED, LOW); acceso1 = LOW; } }
domenica 23 novembre 2014
Temporizzatore ad Impulso ritardato.
/* Il LED si accende dopo 5 sec. dalla pressione del pulsante e si spegne dopo 8 secondi dalla stessa pressione. */ # define SET 2 # define LED 7 int ValueLED = 0; int RitardoON = 5000; byte acceso = LOW; int RitardoOFF = 8000; byte acceso1 = LOW; unsigned long iMillis = 0; void setup() { pinMode(SET, INPUT ); pinMode(LED, OUTPUT); } void loop() { int valoreTastoSET = digitalRead(SET); if ( valoreTastoSET == HIGH) { acceso = HIGH; acceso1 = HIGH; iMillis = millis(); digitalWrite(LED, LOW);} if ( acceso == HIGH && (millis()-iMillis)> RitardoON) { digitalWrite(LED, HIGH); acceso = LOW; } if ( acceso1 == HIGH && (millis()-iMillis)> RitardoOFF) { digitalWrite(LED, LOW); acceso1 = LOW; } }
Temporizzatore con ritardo all'inserzione.
# define LED1 8 # define SWITCH1 2 int switch1State = LOW; byte pState1 = 0; unsigned long pMillis1 = 0; unsigned long pausa1 =3000; void setup() { pinMode(LED1, OUTPUT); pinMode(SWITCH1, INPUT); } void loop(){ switch1State = digitalRead(SWITCH1); if (switch1State == HIGH) { if ( millis() - pMillis1 > pausa1) { pMillis1 = millis(); pState1 = HIGH; digitalWrite(LED1, pState1);}} }
sabato 22 novembre 2014
Pausa
Non ho capito bene il perchè ma questo è lo sketch corretto che sostituisce la funzione delay.
unsigned long iMillis1 = 0; byte acceso1 = LOW; int TempoON = 3000; void setup() { pinMode(13, OUTPUT); pinMode(2, INPUT); } void loop() { if ( digitalRead(2) == HIGH && acceso1 == LOW) { digitalWrite(13, HIGH); acceso1 = HIGH; iMillis1 = millis(); } if (acceso1 == HIGH && (millis()-iMillis1)> TempoON) { digitalWrite(13, LOW); acceso1 = LOW; } }
giovedì 20 novembre 2014
Delay 2
I due led lampeggiano alla stessa frequenza con tempi di ON ed OFF uguali.
Vedi anche i post " delay 1" e " Blink senza delay".
Vedi anche i post " delay 1" e " Blink senza delay".
/* La pausa inserita nel ciclo di BUTTON1 non influisce sull'azione di BUTTON2 */ const int BUTTON1 = 2; const int LED1 = 12; int buttonState1 = 0; const int BUTTON2 = 3; const int LED2 = 13; int buttonState2 = 0; long pMillis = 0; long interval = 10000; void setup() { pinMode(BUTTON1, INPUT); pinMode(BUTTON2, INPUT); pinMode(LED1, OUTPUT); pinMode(LED2, OUTPUT); } void loop(){ buttonState1 = digitalRead(BUTTON1); if ( buttonState1 == HIGH) { unsigned long cMillis = millis(); if ( cMillis - pMillis > interval) { pMillis = cMillis; digitalWrite( LED1, HIGH); } else { LED1, LOW;}} buttonState2 = digitalRead(BUTTON2); if ( buttonState2 == HIGH) { digitalWrite(LED2, HIGH); } else { digitalWrite(LED2, LOW); } }
Delay 1
/* Mentre BUTTON1 è a livello HIGH per 10 sec. tutto il LOOP è bloccato, infatti BUTTON2 non riesce ad accendere LED2 */ const int BUTTON1 = 2; const int LED1 = 12; int buttonState1 = 0; const int BUTTON2 = 3; const int LED2 = 13; int buttonState2 = 0; long pMillis = 0; long interval = 10000; void setup() { pinMode(BUTTON1, INPUT); pinMode(BUTTON2, INPUT); pinMode(LED1, OUTPUT); pinMode(LED2, OUTPUT); } void loop(){ buttonState1 = digitalRead(BUTTON1); if ( buttonState1 == HIGH) { digitalWrite(LED1, HIGH); delay (10000); } else { digitalWrite(LED1, LOW); } buttonState2 = digitalRead(BUTTON2); if ( buttonState2 == HIGH) { digitalWrite(LED2, HIGH); } else { digitalWrite(LED2, LOW); } }
venerdì 14 novembre 2014
Blink with delay asimmetrico.
Alla chiusura di un interruttore due led lampeggiano ciascuno con tempi propri di ON ed OFF senza l'uso dell'istruzione delay()
# define BUTTON1 2 # define BUTTON2 3 # define LED1 6 # define LED2 7 int buttonState1 = 0; byte Pulse1 = 0; unsigned long pMillis1A = 0; unsigned long Wart1A = 100; unsigned long pMillis1B = 0; unsigned long Wart1B = 1200; int buttonState2 = 0; byte Pulse2 = 0; unsigned long pMillis2A = 0; unsigned long Wart2A = 330; unsigned long pMillis2B = 0; unsigned long Wart2B = 660; void setup() { pinMode(BUTTON1,INPUT); pinMode(BUTTON2,INPUT); pinMode(LED1, OUTPUT); pinMode(LED2, OUTPUT); } void loop() { buttonState1 = digitalRead(BUTTON1); if ( buttonState1 == HIGH) { if ( millis() - pMillis1A > Wart1A) { pMillis1A = millis(); Pulse1 = LOW; digitalWrite(LED1, Pulse1); if ( millis() - pMillis1B > Wart1B) { pMillis1B = millis(); Pulse1 = HIGH; digitalWrite(LED1, Pulse1); }}} buttonState2 = digitalRead(BUTTON2); if ( buttonState2 == HIGH) { if ( millis() - pMillis2A > Wart2A) { pMillis2A = millis(); Pulse2 = LOW; digitalWrite(LED2, Pulse2); if ( millis() - pMillis2B > Wart2B) { pMillis2B = millis(); Pulse2 = HIGH; digitalWrite(LED2, Pulse2); }}} }
sabato 25 ottobre 2014
CRONOMETRO HIGH/LOW
Lo sketch permette di cronometrare il tempo di ON e di OFF di un onda quadra.
/* Cronómetro modificato, creado por Javier Sirgo Blanco http://zygzax.com/webpcronometro/ Ingresso al pin 2. Misura il tempo di ON e di OFF di un segnale ad onda quadra. I due tempi si azzerano al reinizio del ciclo. */ #include <LiquidCrystal.h> # define SET 2 LiquidCrystal lcd(8, 9, 10, 11, 12, 13); int m, mu=0,md=0; int s, su=0,sd=0; int l, lu=0,ld=0,lc=0; int pin2; long int tempo,inizio; void setup() { pinMode(SET, INPUT); pin2=LOW; lcd.begin(16, 2); lcd.setCursor(0, 0); lcd.print("ON"); lcd.setCursor(5, 0); lcd.print("00:00:000"); lcd.setCursor(0, 1); lcd.print("OFF"); lcd.setCursor(5, 1); lcd.print("00:00:000"); } void loop() { //**************** Tempo in cui il pin 2 è HIGH ******************** pin2=digitalRead(2); if ( pin2==HIGH) { inizio=millis(); //Cronometra e trasforma in sessagesimali il tempo di ON while (pin2==HIGH) { tempo=millis()-inizio; m=(tempo/1000)/60; mu=m%10; md=(m-mu)/10; s=(tempo/1000)%60; su=s%10; sd=(s-su)/10; l=(tempo%1000); lu=l%10; ld=((l-lu)/10)%10; lc=(l-(ld*10)-lu)/100; // Stampa sulla prima riga il tempo di ON lcd.setCursor(5, 0); lcd.print(md); lcd.print(mu); lcd.print(":"); lcd.print(sd); lcd.print(su); lcd.print(":"); lcd.print(lc); lcd.print(ld); lcd.print(lu); pin2=digitalRead(SET); } } // Fine sottoprogramma tempo di HIGH //**************** Tempo in cui il pin 2 è LOW ******************** pin2=digitalRead(2); if ( pin2==LOW) { inizio=millis(); //Cronometra e trasforma in sessagesimali il tempo di OFF while( pin2==LOW) { tempo=millis()-inizio; m=(tempo/1000)/60; mu=m%10; md=(m-mu)/10; s=(tempo/1000)%60; su=s%10; sd=(s-su)/10; l=(tempo%1000); lu=l%10; ld=((l-lu)/10)%10; lc=(l-(ld*10)-lu)/100; // Stampa sulla seconda riga il tempo di OFF lcd.setCursor(5, 1); lcd.print(md); lcd.print(mu); lcd.print(":"); lcd.print(sd); lcd.print(su); lcd.print(":"); lcd.print(lc); lcd.print(ld); lcd.print(lu); pin2=digitalRead(SET); }} // Fine sottoprogramma tempo di LOW }//----------Fine Programma
domenica 3 agosto 2014
Candeliere votivo.
Annotazioni: vedi lo sketch Pausa.
Senza le variabili acceso1...acceso6 il LOOp so blocca dopo un certo numero di cicli.
NinoAL
Senza le variabili acceso1...acceso6 il LOOp so blocca dopo un certo numero di cicli.
NinoAL
/* Candeliere votivo. Alla pressione del pulsante la relativa candela rimane accesa per n. minuti */ # define CONTA 2 # define LED1 8 # define LED2 9 # define LED3 10 # define LED4 11 # define LED5 12 # define LED6 13 int ValueConta = 0; int lastValueConta = 0; int contaImpulsi = 0; int ValueUno = 1; int ValueDue = 2; int ValueTre = 3; int ValueQuattro = 4; int ValueCinque = 5; int ValueSei = 6; byte acceso1 = LOW; byte acceso2 = LOW; byte acceso3 = LOW; byte acceso4 = LOW; byte acceso5 = LOW; byte acceso6 = LOW; unsigned long iMillis1 = 0; unsigned long iMillis2 = 0; unsigned long iMillis3 = 0; unsigned long iMillis4 = 0; unsigned long iMillis5 = 0; unsigned long iMillis6 = 0; int TempoON = 3000; void setup() { pinMode(CONTA, INPUT ); pinMode (LED1, OUTPUT); pinMode (LED2, OUTPUT); pinMode (LED3, OUTPUT); pinMode (LED4, OUTPUT); pinMode (LED5, OUTPUT); pinMode (LED6, OUTPUT); } void loop() { //---------- Leggi pezzi su Pin2 ------------------- ValueConta = digitalRead(CONTA); if ( ValueConta != lastValueConta) { if ( ValueConta == HIGH) { contaImpulsi++; delay(20); }}// DebounceTime lastValueConta = ValueConta; if ( ValueConta == HIGH && acceso1 == LOW && contaImpulsi==ValueUno) { digitalWrite(LED1, HIGH); acceso1 = HIGH; iMillis1 = millis(); } if ( acceso1 == HIGH && (millis()-iMillis1) > TempoON) { digitalWrite(LED1, LOW); acceso1 = LOW; } if ( ValueConta == HIGH && acceso2 == LOW && contaImpulsi==ValueDue) { digitalWrite(LED2, HIGH); acceso2 = HIGH; iMillis2 = millis(); } if ( acceso2 == HIGH && (millis()-iMillis2) > TempoON) { digitalWrite(LED2, LOW); acceso2 = LOW; } if ( ValueConta == HIGH && acceso3 == LOW && contaImpulsi==ValueTre) { digitalWrite(LED3, HIGH); acceso3 = HIGH; iMillis3 = millis(); } if ( acceso3 == HIGH && (millis()-iMillis3) > TempoON) { digitalWrite(LED3, LOW); acceso3 = LOW; } if ( ValueConta == HIGH && acceso4 == LOW && contaImpulsi==ValueQuattro) { digitalWrite(LED4, HIGH); acceso4 = HIGH; iMillis4 = millis(); } if ( acceso4 == HIGH && (millis()-iMillis4) > TempoON) { digitalWrite(LED4, LOW); acceso4 = LOW; } if ( ValueConta == HIGH && acceso5 == LOW && contaImpulsi==ValueCinque) { digitalWrite(LED5, HIGH); acceso5 = HIGH; iMillis5 = millis(); } if ( acceso5 == HIGH && (millis()-iMillis5) > TempoON) { digitalWrite(LED5, LOW); acceso5 = LOW; } if ( ValueConta == HIGH && acceso6 == LOW && contaImpulsi==ValueSei) { digitalWrite(LED6, HIGH); acceso6 = HIGH; iMillis6 = millis(); } if ( acceso6 == HIGH && (millis()-iMillis6) > TempoON) { digitalWrite(LED6, LOW); acceso6 = LOW; } if ( contaImpulsi > 5) { contaImpulsi= 0; } }
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);} }
Iscriviti a:
Post (Atom)