Buongiorno, ho preso il vostro codice del "Tutorial Luce Temporizzata con comando locale..." l'ho modificato per inserire un secondo pulsante che dia un ritardo maggiore rispetto al primo. Vorrei un vostor parere sul codice che ho scritto, per capire se può andare bene. Grazie /* Tutorial Luce Temporizzata con comando locale e remoto via web * * http://etabetastudio.blogger.com * * Pinto Massimo - Chistian Acqua */
const int buttonPin1 = 2; // pin dello switch button const int buttonPin2 = 5; // pin dello switch button const int ledPin = 13; // pin del led di segnalazione const int relPin = 12; // pin del rele
int buttonState1 = 0; // stato switch int buttonState2 = 0; // stato switch int ledrelon = 0; //stato led e rele unsigned long conteggio1 = 6000; // durata temorizzazioni in millisecondi unsigned long conteggio2 = 12000; // durata temorizzazioni in millisecondi unsigned long previsioneMillis=0; // variabili di inizio e fine conteggio unsigned long correntiMillis=0; // variabili di inizio e fine conteggio
void setup(){ Serial.begin(9600); // inizializziamo la seriale pinMode(ledPin, OUTPUT); //inizializziamo i pin pinMode(relPin, OUTPUT); //inizializziamo i pin pinMode(buttonPin1, INPUT);//inizializziamo il pin 1 pinMode(buttonPin2, INPUT);//inizializziamo il pin 2 digitalWrite(ledPin, LOW);//inizializziamo i pin } void loop(){ unsigned long correntiMillis = millis(); // memorizziamo il valore di millis buttonState1 = digitalRead(buttonPin1); //catturiamo lo stato dello switch button n.1 buttonState2 = digitalRead(buttonPin2); //catturiamo lo stato dello switch button n.2
// Se lo Switch button è alto if (buttonState1 == HIGH) { Serial.println("bottone n.1 giu"); // facciamo un po di stampe per capire cosa succede ledrelon = 1; // abilitiamo l'ingresso alla condizione successiva previsioneMillis = correntiMillis + conteggio1; // creiamo il valore di off sommando i millis catturati prima + il tempo impostato di off Serial.print("correntiMillis: "); // facciamo un po di stampe per capire cosa succede Serial.println(correntiMillis); // facciamo un po di stampe per capire cosa succede Serial.print("previsioneMillis: "); // facciamo un po di stampe per capire cosa succede Serial.println(previsioneMillis); // facciamo un po di stampe per capire cosa succede } if (buttonState2 == HIGH) { Serial.println("bottone n.2 giu"); // facciamo un po di stampe per capire cosa succede ledrelon = 1; // abilitiamo l'ingresso alla condizione successiva previsioneMillis = correntiMillis + conteggio2; // creiamo il valore di off sommando i millis catturati prima + il tempo impostato di off Serial.print("correntiMillis: "); // facciamo un po di stampe per capire cosa succede Serial.println(correntiMillis); // facciamo un po di stampe per capire cosa succede Serial.print("previsioneMillis: "); // facciamo un po di stampe per capire cosa succede Serial.println(previsioneMillis); // facciamo un po di stampe per capire cosa succede } if(ledrelon == 1){ digitalWrite(ledPin, HIGH); // accendiamo il led digitalWrite(relPin, HIGH); // eccitiamo il rele delay(500); // questo delay non è fondamentale serve a leggere le stampe sul serial monitor Serial.print("correntiMillis: "); Serial.println(correntiMillis); if (correntiMillis >= previsioneMillis) { delay(10); digitalWrite(ledPin, LOW); // raggiunto il tempo di spegnimento tutto va giù digitalWrite(relPin, LOW); ledrelon = 0; // reimpostiamo ledrelon per iniziare nuvamente un ciclo } } }
salve volevo attuare il progetto di centrale allarme a 2 zone dove posso trovare lo schema elettrico e come posso fare per ampliare i sensori??
RispondiEliminagrazie
Ciao Gianna, che tipo di centrale vorresti fare? Usare Arduino come base? Inserire anche delle sirene? Fornisci qualche informazione in più.
RispondiEliminaSaluti
Buongiorno, ho preso il vostro codice del "Tutorial Luce Temporizzata con comando locale..." l'ho modificato per inserire un secondo pulsante che dia un ritardo maggiore rispetto al primo. Vorrei un vostor parere sul codice che ho scritto, per capire se può andare bene. Grazie
RispondiElimina/* Tutorial Luce Temporizzata con comando locale e remoto via web
*
* http://etabetastudio.blogger.com
*
* Pinto Massimo - Chistian Acqua
*/
const int buttonPin1 = 2; // pin dello switch button
const int buttonPin2 = 5; // pin dello switch button
const int ledPin = 13; // pin del led di segnalazione
const int relPin = 12; // pin del rele
int buttonState1 = 0; // stato switch
int buttonState2 = 0; // stato switch
int ledrelon = 0; //stato led e rele
unsigned long conteggio1 = 6000; // durata temorizzazioni in millisecondi
unsigned long conteggio2 = 12000; // durata temorizzazioni in millisecondi
unsigned long previsioneMillis=0; // variabili di inizio e fine conteggio
unsigned long correntiMillis=0; // variabili di inizio e fine conteggio
void setup(){
Serial.begin(9600); // inizializziamo la seriale
pinMode(ledPin, OUTPUT); //inizializziamo i pin
pinMode(relPin, OUTPUT); //inizializziamo i pin
pinMode(buttonPin1, INPUT);//inizializziamo il pin 1
pinMode(buttonPin2, INPUT);//inizializziamo il pin 2
digitalWrite(ledPin, LOW);//inizializziamo i pin
}
void loop(){
unsigned long correntiMillis = millis(); // memorizziamo il valore di millis
buttonState1 = digitalRead(buttonPin1); //catturiamo lo stato dello switch button n.1
buttonState2 = digitalRead(buttonPin2); //catturiamo lo stato dello switch button n.2
// Se lo Switch button è alto
if (buttonState1 == HIGH) {
Serial.println("bottone n.1 giu"); // facciamo un po di stampe per capire cosa succede
ledrelon = 1; // abilitiamo l'ingresso alla condizione successiva
previsioneMillis = correntiMillis + conteggio1; // creiamo il valore di off sommando i millis catturati prima + il tempo impostato di off
Serial.print("correntiMillis: "); // facciamo un po di stampe per capire cosa succede
Serial.println(correntiMillis); // facciamo un po di stampe per capire cosa succede
Serial.print("previsioneMillis: "); // facciamo un po di stampe per capire cosa succede
Serial.println(previsioneMillis); // facciamo un po di stampe per capire cosa succede
}
if (buttonState2 == HIGH) {
Serial.println("bottone n.2 giu"); // facciamo un po di stampe per capire cosa succede
ledrelon = 1; // abilitiamo l'ingresso alla condizione successiva
previsioneMillis = correntiMillis + conteggio2; // creiamo il valore di off sommando i millis catturati prima + il tempo impostato di off
Serial.print("correntiMillis: "); // facciamo un po di stampe per capire cosa succede
Serial.println(correntiMillis); // facciamo un po di stampe per capire cosa succede
Serial.print("previsioneMillis: "); // facciamo un po di stampe per capire cosa succede
Serial.println(previsioneMillis); // facciamo un po di stampe per capire cosa succede
}
if(ledrelon == 1){
digitalWrite(ledPin, HIGH); // accendiamo il led
digitalWrite(relPin, HIGH); // eccitiamo il rele
delay(500); // questo delay non è fondamentale serve a leggere le stampe sul serial monitor
Serial.print("correntiMillis: ");
Serial.println(correntiMillis);
if (correntiMillis >= previsioneMillis) {
delay(10);
digitalWrite(ledPin, LOW); // raggiunto il tempo di spegnimento tutto va giù
digitalWrite(relPin, LOW);
ledrelon = 0; // reimpostiamo ledrelon per iniziare nuvamente un ciclo
}
}
}