Advertisement
RuiViana

Novo_Controle_de_Bombas

Jan 9th, 2016
306
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.33 KB | None | 0 0
  1.  
  2. #define Bomba1 5 // Relay da bomba1 no port 5 HIGH = Desligda
  3. #define Bomba2 6 // Relay da bomba2 no port 6 HIGH = Desligda
  4. #define SensorTorneira 7 // SensorTorneira no port 7 0 = Torneira aberta
  5. #define SensorBaixo 8 // SensorBaixo no port 8 0 = Tem água
  6. #define SensorAlto 9 // SensorAlto no port 9
  7. #define Pressao 10 // Sensor de pressão no port 10 0 = Tem presão
  8. #define LED 13 // Indicativo de 2 bombas no port 10 0 = 2 Bombas desligadas
  9. byte BombaON = 0; // Variavel informase tem bombas ligada 1 = ligada
  10. byte Bomba1Ligada = 0; // Variavel Bomba1Ligada 0 = bomba desligada
  11. byte Bomba2Ligada = 0; // Variavel Bomba2Ligada 0 = bomba desligada
  12. byte DuasBombas = 0; // Variavel 2Bomba2Ligada2 0 = 2bombas desligadas
  13. unsigned long Tempo = 0; // Variavel para guardar tempo de 2 bombas
  14. //----------------------------------------------
  15. void setup()
  16. {
  17. pinMode(Bomba1,OUTPUT); // Bomba1 como saída
  18. pinMode(Bomba2,OUTPUT); // Bomba2 como saída
  19. pinMode(LED,OUTPUT); // LED como saída
  20. pinMode(SensorTorneira,INPUT_PULLUP); // Bomba1 como entrada e PUL UP ligado
  21. pinMode(SensorBaixo,INPUT_PULLUP); // Bomba1 como entrada e PUL UP ligado
  22. pinMode(SensorAlto,INPUT_PULLUP); // Bomba1 como entrada e PUL UP ligado
  23. pinMode(Pressao,INPUT_PULLUP); // Bomba1 como entrada e PUL UP ligado
  24. digitalWrite(Bomba1 , HIGH); // HIGH bomba desligada
  25. digitalWrite(Bomba2 , HIGH); // HIGH bomba desligada
  26. digitalWrite(LED , HIGH); // HIGH LED desligado
  27. }
  28. //----------------------------------------------
  29. void loop()
  30. {
  31. while(DuasBombas == 0) // Só liga se não fora ligada 2bombas + q 10Seg
  32. {
  33. if ((digitalRead(SensorBaixo)) == 0) // Só liga se tiver água
  34. {
  35. if((digitalRead(SensorTorneira)) == 0 ) // Liga ao abrir a torneira
  36. {
  37. if((digitalRead(Pressao) == 1)) // Se não tiver pressão
  38. { // Liga as 2 bombas
  39. if (Tempo < 1000) // Tempo 10 Seg (1000 x delay(10))
  40. {
  41. digitalWrite(Bomba1 , LOW); // Liga bomba1
  42. digitalWrite(Bomba2 , LOW); // Liga bomba2
  43. delay(10); // Delay 10mSeg
  44. Tempo++; // Incrementa tempo
  45. }
  46. else // Se passou de 10 seg desliga bombas e impede ligar qq bomba
  47. {
  48. digitalWrite(Bomba1 , HIGH); // Desliiga bomba1
  49. digitalWrite(Bomba2 , HIGH); // Desliiga bomba2
  50. digitalWrite(LED , LOW); // Liga LED indicativo de 2 bombas ligadas
  51. DuasBombas = 1; // Indica que as 2 bombas estão ligadas
  52. }
  53. }
  54. else // Se tiver pressão
  55. {
  56. if (BombaON == 0) // Se não tem bomba ligada
  57. {
  58. BombaON = 1; // Informa que tem bomba ligada
  59. Bomba1Ligada = !Bomba1Ligada; // Inverte bomba a ser usada
  60. if (Bomba1Ligada == 1) // Verifica se o flag da bomba1 está ligado
  61. Bomba2Ligada = 0; // Se tiver desliga o flag da bomba2
  62. else // Se o flag da bomba1 está desligado
  63. Bomba2Ligada = 1; // Liga o flag da bomba2
  64. if (Bomba1Ligada == 0) // Se o flag da bomba1 estiver desligado
  65. digitalWrite(Bomba1 , Bomba1Ligada); // Desliga uma bomba antes de ligar outra
  66. if (Bomba2Ligada == 0) // Se o flag da bomba2 estiver desligado
  67. digitalWrite(Bomba2 , Bomba2Ligada); // Desliga uma bomba antes de ligar outra
  68.  
  69. digitalWrite(Bomba1 , Bomba1Ligada); // Liga só bomba que estiver definida
  70. digitalWrite(Bomba2 , Bomba2Ligada); // Liga só bomba que estiver definida
  71. }
  72. }
  73. }
  74. else // Se torneira foi fechada
  75. {
  76. digitalWrite(Bomba1 , HIGH); // Desliga bomba1
  77. digitalWrite(Bomba2 , HIGH); // Desliga bomba2
  78. BombaON = 0; // Informa que não tem bomba ligada
  79. }
  80. }
  81. }
  82. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement