#define botao1 18
#define botao2 5
#define botao3 17
#define botao4 16
#define led1G 14
#define led2G 27
#define led1R 12
#define led2R 26
bool alto = 0, alto2 = 0, alto3 = 0, baixo = 0, baixo2 = 0, baixo3 = 0, subi = 0, desc = 0;
int subindo = 0, descendo = 0;
#include "pitches.h"
#define music 13
void setup(){
pinMode(music, OUTPUT);
pinMode(led1G, OUTPUT);
pinMode(led1R, OUTPUT);
pinMode(led2G, OUTPUT);
pinMode(led2R, OUTPUT);
pinMode(led1G, OUTPUT);
pinMode(botao1, INPUT);
pinMode(botao2, INPUT);
pinMode(botao3, INPUT);
pinMode(botao4, INPUT);
Serial.begin(115200);
Serial.println("iniciando...");
}
void loop(){
away();
if(digitalRead(botao1) == LOW && digitalRead(botao4) == LOW){
away();
}
if(digitalRead(botao1) == HIGH && digitalRead(botao4) == LOW && alto == 0){
delay(20);
sub();
alto = 1;
}
if(alto == 1){
digitalWrite(led2R, HIGH);
if(digitalRead(botao4) == HIGH || digitalRead(botao3) == HIGH && alto == 1){
alarme();
}
}
if(alto == 1 && digitalRead(botao2) == HIGH){
delay(20);
sub();
desc = 1;
alto2 = 1;
alto = 0;
subindo++;
}
if(alto2 == HIGH && digitalRead(baixo) == HIGH){
alarme();
}
while(desc == 1){
if(alto2 == HIGH && digitalRead(baixo) == HIGH){
alarme();
}
if(alto2 == 1 && digitalRead(botao2) == HIGH){
delay(20);
subindo++;
}
if(alto2 == 1 && digitalRead(botao3) == HIGH){
delay(20);
sub();
baixo3 = 1;
}
if(baixo3 == 1 && digitalRead(botao4) == HIGH){
delay(20);
sub();
subindo--;
if(subindo == 0){
delay(20);
alto = 0;
alto2 = 0;
alto3 = 0;
desc = 0;
break;
}
}
if(subindo < 0){
subindo = 0;
}
}
if(digitalRead(botao4) == HIGH && digitalRead(botao1) == LOW && baixo == 0){
delay(20);
dec();
baixo = 1;
}
if(baixo == 1){
digitalWrite(led1R, HIGH);
if(digitalRead(botao1) == HIGH || digitalRead(botao2) == HIGH && baixo == 1){
alarme();
}
}
if(baixo == 1 && digitalRead(botao3) == HIGH){
delay(20);
dec();
subi = 1;
baixo2 = 1;
baixo = 0;
descendo++;
}
if(baixo2 == HIGH && digitalRead(alto) == HIGH){
alarme();
}
while(subi == 1){
if(baixo2 == HIGH && digitalRead(alto) == HIGH){
alarme();
}
if(baixo2 == 1 && digitalRead(botao3) == HIGH){
delay(20);
descendo++;
}
if(baixo2 == 1 && digitalRead(botao2) == HIGH){
delay(20);
dec();
alto3 = 1;
}
if(alto3 == 1 && digitalRead(botao1) == HIGH){
delay(20);
dec();
descendo--;
if(descendo == 0){
delay(20);
baixo = 0;
baixo2 = 0;
baixo3 = 0;
subi = 0;
break;
}
}
if(descendo < 0){
descendo = 0;
}
}
}
void alarme(){
tone(13, 262, 250);
digitalWrite(led1G, HIGH);
digitalWrite(led2G, HIGH);
digitalWrite(led1R, HIGH);
digitalWrite(led2R, HIGH);
delay(500);
tone(13, 0, 250);
digitalWrite(led1G, LOW);
digitalWrite(led2G, LOW);
digitalWrite(led1R, LOW);
digitalWrite(led2R, LOW);
delay(500);
}
void sub(){
digitalWrite(led1G, HIGH);
digitalWrite(led2G, LOW);
digitalWrite(led1R, LOW);
digitalWrite(led2R, HIGH);
}
void dec(){
digitalWrite(led1G, LOW);
digitalWrite(led2G, HIGH);
digitalWrite(led1R, HIGH);
digitalWrite(led2R, LOW);
}
void away(){
digitalWrite(led1G, HIGH);
digitalWrite(led2G, HIGH);
digitalWrite(led1R, LOW);
digitalWrite(led2R, LOW);
}