* sistem deschidere poarta culisanta |
* program scris de | (niq_ro) pentru Catalin Ba2 |
* 06.06.2020, Craiova |
*/ |
#define deschidere 2 |
#define inchidere 3 |
#define releucomanda 7 |
#define releusens 8 |
#define cuplat LOW |
#define decuplat HIGH |
#define deschis LOW |
#define inchis HIGH |
#define led 13 |
byte stare = 0; // standby, 1 = deschis. 2 - inchis |
unsigned long timpactionare = 20000; // 20 secunde |
unsigned long timpapasare; |
void setup() { // parte se ruleaza o singura data la pornire program |
Serial.begin(9600); // pornire monitorizare seriala |
pinMode(deschidere, INPUT); |
pinMode(inchidere, INPUT); |
pinMode(releucomanda, OUTPUT); |
pinMode(releusens, OUTPUT); |
digitalWrite(releucomanda, decuplat); |
digitalWrite(releusens, inchis); |
pinMode(led, OUTPUT); |
digitalWrite(led, LOW); |
} |
void loop() { // parte ce se repeta mereu |
if ((digitalRead(deschidere) == HIGH) and (stare == 0)) // daca s-a apasat butonul 1 |
{ |
timpapasare = millis(); |
stare = 1; |
digitalWrite(releucomanda, cuplat); |
digitalWrite(releusens, deschis); |
delay(500); |
} |
if (stare == 1) // daca a fost apasat butonul 1 |
{ |
if ((millis() - timpapasare) > timpactionare) |
{ |
stare = 0; |
digitalWrite(releucomanda, decuplat); |
digitalWrite(releusens, inchis); |
} |
if ((digitalRead(deschidere) == HIGH) or (digitalRead(inchidere) == HIGH)) // daca se apasa unul din butoane |
{ |
stare = 0; |
digitalWrite(releucomanda, decuplat); |
digitalWrite(releusens, inchis); |
digitalWrite(led, HIGH); |
delay(2000); |
digitalWrite(led, LOW); |
} |
} |
if ((digitalRead(inchidere) == HIGH) and (stare == 0)) // daca s-a apasat butonul 2 |
{ |
timpapasare = millis(); |
stare = 2; |
digitalWrite(releucomanda, cuplat); |
digitalWrite(releusens, inchis); |
delay(500); |
} |
if (stare == 2) // daca a fost apasat butonul 2 |
{ |
if ((millis() - timpapasare) > timpactionare) |
{ |
stare = 0; |
digitalWrite(releucomanda, decuplat); |
digitalWrite(releusens, inchis); |
} |
if ((digitalRead(deschidere) == HIGH) or (digitalRead(inchidere) == HIGH)) // daca se apasa unul din butoane |
{ |
stare = 0; |
digitalWrite(releucomanda, decuplat); |
digitalWrite(releusens, inchis); |
digitalWrite(led, HIGH); |
delay(2000); |
digitalWrite(led, LOW); |
} |
} |
delay(50); |
/* |
Niciun comentariu:
Trimiteți un comentariu