Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define Bomba1 5 // Relay da bomba1 no port 5 HIGH = Desligda
- #define Bomba2 6 // Relay da bomba2 no port 6 HIGH = Desligda
- #define SensorTorneira 7 // SensorTorneira no port 7 0 = Torneira aberta
- #define SensorBaixo 8 // SensorBaixo no port 8 0 = Tem água
- #define SensorAlto 9 // SensorAlto no port 9
- #define Pressao 10 // Sensor de pressão no port 10 0 = Tem presão
- #define LED 13 // Indicativo de 2 bombas no port 10 0 = 2 Bombas desligadas
- byte BombaON = 0; // Variavel informase tem bombas ligada 1 = ligada
- byte Bomba1Ligada = 0; // Variavel Bomba1Ligada 0 = bomba desligada
- byte Bomba2Ligada = 0; // Variavel Bomba2Ligada 0 = bomba desligada
- byte DuasBombas = 0; // Variavel 2Bomba2Ligada2 0 = 2bombas desligadas
- unsigned long Tempo = 0; // Variavel para guardar tempo de 2 bombas
- //----------------------------------------------
- void setup()
- {
- pinMode(Bomba1,OUTPUT); // Bomba1 como saída
- pinMode(Bomba2,OUTPUT); // Bomba2 como saída
- pinMode(LED,OUTPUT); // LED como saída
- pinMode(SensorTorneira,INPUT_PULLUP); // Bomba1 como entrada e PUL UP ligado
- pinMode(SensorBaixo,INPUT_PULLUP); // Bomba1 como entrada e PUL UP ligado
- pinMode(SensorAlto,INPUT_PULLUP); // Bomba1 como entrada e PUL UP ligado
- pinMode(Pressao,INPUT_PULLUP); // Bomba1 como entrada e PUL UP ligado
- digitalWrite(Bomba1 , HIGH); // HIGH bomba desligada
- digitalWrite(Bomba2 , HIGH); // HIGH bomba desligada
- digitalWrite(LED , HIGH); // HIGH LED desligado
- }
- //----------------------------------------------
- void loop()
- {
- while(DuasBombas == 0) // Só liga se não fora ligada 2bombas + q 10Seg
- {
- if ((digitalRead(SensorBaixo)) == 0) // Só liga se tiver água
- {
- if((digitalRead(SensorTorneira)) == 0 ) // Liga ao abrir a torneira
- {
- if((digitalRead(Pressao) == 1)) // Se não tiver pressão
- { // Liga as 2 bombas
- if (Tempo < 1000) // Tempo 10 Seg (1000 x delay(10))
- {
- digitalWrite(Bomba1 , LOW); // Liga bomba1
- digitalWrite(Bomba2 , LOW); // Liga bomba2
- delay(10); // Delay 10mSeg
- Tempo++; // Incrementa tempo
- }
- else // Se passou de 10 seg desliga bombas e impede ligar qq bomba
- {
- digitalWrite(Bomba1 , HIGH); // Desliiga bomba1
- digitalWrite(Bomba2 , HIGH); // Desliiga bomba2
- digitalWrite(LED , LOW); // Liga LED indicativo de 2 bombas ligadas
- DuasBombas = 1; // Indica que as 2 bombas estão ligadas
- }
- }
- else // Se tiver pressão
- {
- if (BombaON == 0) // Se não tem bomba ligada
- {
- BombaON = 1; // Informa que tem bomba ligada
- Bomba1Ligada = !Bomba1Ligada; // Inverte bomba a ser usada
- if (Bomba1Ligada == 1) // Verifica se o flag da bomba1 está ligado
- Bomba2Ligada = 0; // Se tiver desliga o flag da bomba2
- else // Se o flag da bomba1 está desligado
- Bomba2Ligada = 1; // Liga o flag da bomba2
- if (Bomba1Ligada == 0) // Se o flag da bomba1 estiver desligado
- digitalWrite(Bomba1 , Bomba1Ligada); // Desliga uma bomba antes de ligar outra
- if (Bomba2Ligada == 0) // Se o flag da bomba2 estiver desligado
- digitalWrite(Bomba2 , Bomba2Ligada); // Desliga uma bomba antes de ligar outra
- digitalWrite(Bomba1 , Bomba1Ligada); // Liga só bomba que estiver definida
- digitalWrite(Bomba2 , Bomba2Ligada); // Liga só bomba que estiver definida
- }
- }
- }
- else // Se torneira foi fechada
- {
- digitalWrite(Bomba1 , HIGH); // Desliga bomba1
- digitalWrite(Bomba2 , HIGH); // Desliga bomba2
- BombaON = 0; // Informa que não tem bomba ligada
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement