Advertisement
RuiViana

Code_Srta_D

Aug 18th, 2016
340
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.91 KB | None | 0 0
  1. // Dayana Mendes de Lima LDG
  2. // dayanamendesdelima@gmail.com
  3. // 2016-08-17
  4.  
  5.  
  6. int sinalpararele = 2;        //Porta para o acionamento do relé
  7. int botao = 12;               //Porta utilizada para o botão de acionamento
  8. int retornopararele = 3;      //Porta utilizada para o sinal de retorno do relé
  9. int leitura;                  //Armazena informações sobre a leitura do botão
  10. int confirmacao = LOW;        //Armazena informações sobre a confirmação do sinal de retorno
  11. int estadorele = 0;           //Armazena o estado do relé (ligado/desligado)
  12. //------------------------------------
  13. void setup()
  14. {
  15.   Serial.begin(9600);
  16.   pinMode(sinalpararele, OUTPUT);                           //Pino como saida (sinal para o relé)
  17.   pinMode(botao, INPUT_PULLUP);                             //Pino como entrada (pino do botão)
  18.   pinMode(retornopararele, INPUT_PULLUP);                   //Pino como entrada (retorno para relé)
  19. }
  20. //------------------------------------
  21. void loop()
  22. {
  23.   if (!(digitalRead(botao)))                                     // se o botao esta pressionado
  24.   {
  25.     Serial.println(digitalRead(botao));
  26.     delay(20);                                               // tempo acontecendo efeito bounce
  27.     if (!(digitalRead(botao)))                                   // depois do bounce, confirma que botao esta pressionado
  28.     {
  29.       Serial.println("Botao pressionado, chaveando o relay");
  30.       estadorele = !estadorele;                               // alterna a variavel do estado do rele
  31.       digitalWrite(sinalpararele, estadorele);                // atualiza o pino do sinal do rele
  32.       Serial.print("Relay esta agora ");
  33.       Serial.println(estadorele);
  34.       delay(20);                                             // espera o comando acionar os contatores, etc antes de verificar se ligaram
  35.       if (estadorele && (!digitalRead(retornopararele)))      // se estado rele = ligado e não confirmou o acionamento dos contatores
  36.       {
  37.         estadorele = 0;                                       // algo saiu errado e prepara para desligar o rele
  38.         digitalWrite(sinalpararele, estadorele);              // desliga o rele
  39.         Serial.println("retornopararele provocou desligamento logo apos ligar relay");
  40.       }
  41.     }
  42.   }
  43.   while (!(digitalRead(botao)))                                  // se porventua o botao ainda estiver sendo pressionado
  44.   {
  45.     delay(20);                                               // espera um pouco para verificar novamente
  46.     Serial.println("Botao ainda esta pressionado");
  47.   }
  48.   if (estadorele && (!digitalRead(retornopararele)))          // se detectou que o contato abriu
  49.   {
  50.     estadorele = 0;                                           // algo saiu errado e prepara para desligar o rele
  51.     digitalWrite(sinalpararele, estadorele);                  // desliga o rele
  52.     Serial.println("retornopararele provocou desligamento do relay");
  53.   }
  54. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement