Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Dayana Mendes de Lima LDG
- // dayanamendesdelima@gmail.com
- // 2016-08-17
- int sinalpararele = 2; //Porta para o acionamento do relé
- int botao = 12; //Porta utilizada para o botão de acionamento
- int retornopararele = 3; //Porta utilizada para o sinal de retorno do relé
- int leitura; //Armazena informações sobre a leitura do botão
- int confirmacao = LOW; //Armazena informações sobre a confirmação do sinal de retorno
- int estadorele = 0; //Armazena o estado do relé (ligado/desligado)
- //------------------------------------
- void setup()
- {
- Serial.begin(9600);
- pinMode(sinalpararele, OUTPUT); //Pino como saida (sinal para o relé)
- pinMode(botao, INPUT_PULLUP); //Pino como entrada (pino do botão)
- pinMode(retornopararele, INPUT_PULLUP); //Pino como entrada (retorno para relé)
- }
- //------------------------------------
- void loop()
- {
- if (!(digitalRead(botao))) // se o botao esta pressionado
- {
- Serial.println(digitalRead(botao));
- delay(20); // tempo acontecendo efeito bounce
- if (!(digitalRead(botao))) // depois do bounce, confirma que botao esta pressionado
- {
- Serial.println("Botao pressionado, chaveando o relay");
- estadorele = !estadorele; // alterna a variavel do estado do rele
- digitalWrite(sinalpararele, estadorele); // atualiza o pino do sinal do rele
- Serial.print("Relay esta agora ");
- Serial.println(estadorele);
- delay(20); // espera o comando acionar os contatores, etc antes de verificar se ligaram
- if (estadorele && (!digitalRead(retornopararele))) // se estado rele = ligado e não confirmou o acionamento dos contatores
- {
- estadorele = 0; // algo saiu errado e prepara para desligar o rele
- digitalWrite(sinalpararele, estadorele); // desliga o rele
- Serial.println("retornopararele provocou desligamento logo apos ligar relay");
- }
- }
- }
- while (!(digitalRead(botao))) // se porventua o botao ainda estiver sendo pressionado
- {
- delay(20); // espera um pouco para verificar novamente
- Serial.println("Botao ainda esta pressionado");
- }
- if (estadorele && (!digitalRead(retornopararele))) // se detectou que o contato abriu
- {
- estadorele = 0; // algo saiu errado e prepara para desligar o rele
- digitalWrite(sinalpararele, estadorele); // desliga o rele
- Serial.println("retornopararele provocou desligamento do relay");
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement