Advertisement
RuiViana

Code_Srta_D

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