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
Até mais pessoal!
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?!
ResponderExcluirObrigado!