Advertisement
Guest User

leak-test-debounce

a guest
Oct 16th, 2016
115
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.71 KB | None | 0 0
  1. const byte BOTAO = 2;
  2. const byte INDUTIVO = 3;
  3. const byte CILINDROGRANDE = 4;
  4. const byte CILINDROPEQUENO = 5;
  5.  
  6. unsigned long botaoPressionadoMillis;
  7. unsigned long releAcionado;
  8. unsigned long acionarCilindroGrande = 000;
  9. unsigned long acionarCilindroPequeno = 4000;
  10. unsigned long desacionarCilindroPequeno = 9000;
  11. unsigned long desacionarCilindroGrande = 12000;
  12.  
  13. bool cilindroGdacionado = false;
  14. bool cilindroGdestado = false;
  15. bool cilindroPqacionado = false;
  16. bool cilindroPqestado = false;
  17. int val;                        // variable for reading the pin status
  18. int val2;                       // variable for reading the delayed/debounced status
  19. int botaoEstado;                // variable to hold the button state
  20.  
  21. byte comando = 0;
  22.  
  23. void setup() {//inicio do setup
  24.     pinMode(BOTAO, INPUT_PULLUP);
  25.     pinMode(INDUTIVO, INPUT);
  26.     pinMode(CILINDROGRANDE, OUTPUT);
  27.     pinMode(CILINDROPEQUENO, OUTPUT);
  28.     digitalWrite(CILINDROGRANDE, HIGH);
  29.     digitalWrite(CILINDROPEQUENO, HIGH);
  30.     botaoEstado = digitalRead(BOTAO);
  31. }//fim do setup
  32.  
  33. void loop() { //inicio do loop
  34.     unsigned long atualMillis = millis();
  35.     int estado1 = digitalRead(BOTAO);
  36.     int estado2 = digitalRead(INDUTIVO);
  37.  
  38.     if (estado1 == LOW && estado2 == LOW) {
  39.         comando = 0;
  40.     }
  41.  
  42.     else
  43.         if (estado1 == LOW && estado2 == HIGH) {
  44.             comando = 1;
  45.         }
  46.  
  47.     switch (comando) {
  48.     case 0:
  49.         val = digitalRead(BOTAO);
  50.         delay(10);
  51.         val2 = digitalRead(BOTAO);
  52.  
  53.         if (val == val2) {
  54.             if (val != botaoEstado) {
  55.                 if (val == LOW) {
  56.                     botaoPressionadoMillis = atualMillis;
  57.                     cilindroGdacionado = true;
  58.                     cilindroPqacionado = true;
  59.                 }
  60.             }
  61.         }
  62.  
  63.         if (cilindroGdacionado) {
  64.             if ((unsigned long)(atualMillis - botaoPressionadoMillis) >= acionarCilindroGrande) {
  65.                 digitalWrite(CILINDROGRANDE, LOW);
  66.                 cilindroGdestado = true;
  67.                 releAcionado = atualMillis;
  68.                 cilindroGdacionado = false;
  69.             }
  70.         }
  71.  
  72.         if (cilindroPqacionado) {
  73.             if ((unsigned long)(atualMillis - botaoPressionadoMillis) >= acionarCilindroPequeno) {
  74.                 digitalWrite(CILINDROPEQUENO, LOW);
  75.                 cilindroPqestado = true;
  76.                 releAcionado = atualMillis;
  77.                 cilindroPqacionado = false;
  78.             }
  79.         }
  80.  
  81.         if (cilindroGdestado) {
  82.             if ((unsigned long)(atualMillis - releAcionado) >= desacionarCilindroGrande) {
  83.                 cilindroGdestado = false;
  84.                 digitalWrite(CILINDROGRANDE, HIGH);
  85.             }
  86.         }
  87.  
  88.         if (cilindroPqestado) {
  89.             if ((unsigned)(atualMillis - releAcionado) >= desacionarCilindroPequeno) {
  90.                 cilindroPqestado = false;
  91.                 digitalWrite(CILINDROPEQUENO, HIGH);
  92.             }
  93.         }
  94.  
  95.         break;
  96.  
  97.     case 1:
  98.         val = digitalRead(BOTAO);
  99.         delay(10);
  100.         val2 = digitalRead(BOTAO);
  101.  
  102.         if (val == val2) {
  103.             if (val != botaoEstado) {
  104.                 if (val == LOW) {
  105.                     botaoPressionadoMillis = atualMillis;
  106.                     cilindroGdacionado = true;
  107.                 }
  108.             }
  109.         }
  110.  
  111.         if (cilindroGdacionado) {
  112.             if ((unsigned long)(atualMillis - botaoPressionadoMillis) >= acionarCilindroGrande) {
  113.                 digitalWrite(CILINDROGRANDE, HIGH);
  114.                 cilindroGdestado = false;
  115.                 releAcionado = atualMillis;
  116.                 cilindroGdacionado = false;
  117.             }
  118.         }
  119.  
  120.         break;
  121.     }
  122. }//fim do loop
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement