sábado, 25 de abril de 2015

Monitoramento de tensão - código

Olá pessoal,

Continuando o projeto de monitoramento de tensão vamos ao código:

byte LEDNORMAL = 3; //pino do Led verde (ENERGIA NORMAL)
byte LEDFALTA = 4; //pino do Led vermelho (FALTA DE ENERGIA)

volatile unsigned long contador; //variável controlada através da interrupção na porta 2

void setup() {
     pinMode(LEDNORMAL, OUTPUT);
     digitalWrite (LEDNORMAL, LOW);
     pinMode(LEDFALTA, OUTPUT);
     digitalWrite(LEDFALTA, LOW);

     pinMode(2,INPUT); //porta 2 que detecta se está em estado alto ou baixo
     digitalWrite(2,LOW); 
     contador = 0;
     attachInterrupt(0, detect, RISING); //a interrupção 0 utiliza a porta 2 para atender a interrupção e caso haja a interrupção chama a função detect na subida do estado (LOW para HIGH)
}

void loop() {
  unsigned long contador_loop = contador;
  unsigned long tempo = millis()+100;
  while (tempo > millis());
  if (contador > contador_loop) //se chamar a interrupção detect contador ficará maior que contador_loop
  {
     digitalWrite(LEDNORMAL, HIGH); //se tiver tensão no circuito acende Led Verde
     digitalWrite(LEDFALTA, LOW); //se tiver tensão no circuito apaga Led vermelho
  }
  else
  {
     contador = 0;
     digitalWrite(LEDFALTA, HIGH);
//se não tiver tensão no circuito acende Led vermelho

      digitalWrite(LEDNORMAL, LOW); //se não tiver tensão no circuito apaga Led verde   }
}

void detect() {
   contador++;
}



Créditos do código: Renato Aloi

Qualquer dúvida postem aqui ou no Facebook ok?

No próximo post vamos ver como utilizar o Agentuino + Zabbix também para apresentar graficamente o monitoramento de tensão.

Até mais pessoal!
 

 

Um comentário:

  1. Olá bom dia, gostaria de saber como posso estar realizando o monitoramento de várias tensões de bateria de lítio com Arduino, alguma ideia?!
    Obrigado!

    ResponderExcluir