É o seguinte galera estou com um projeto de bafômetro aqui, e no final ali dos códigos que mandarei precisaria adicionar um controle de infravermelho que quando acionado desliga o relé, mas não estou conseguindo, vocês poderiam me ajudar pois sou iniciante.
[Code]
#define qtdLED 6 //Declaração da quantidade de LEDs da aplicação
int LEDs[qtdLED]; //Vetor que guardará em cada posição o pino de saída para cada LED
int sensorPin=0; //Variável para guardar o valor lido pelo sensor
int tempo; //Variável para o tempo de leitura do sensor
int lidomaximo; //Variável para armazenar o maior valor lido durante a leitura
int i; //Variável de contagem
int j; //Variável de contagem
const byte rele = 8; //pino do rele

void setup()
{
pinMode(rele,OUTPUT); //configura pino do rele como saída

i=0;
j=2;

while(i < qtdLED) //Enquanto i for menor que a quantidade de LEDs que foi definida...
{ //...guarda no vetor um valor(começando de 2 e incrementando) equivalente a um pino digital
LEDs[i] = j;
i++;
j++;
}

for(i=0;i
{
pinMode(LEDs[i], OUTPUT);
}
pinMode(13, OUTPUT); //Define o pino 13 como saída para nos indicar quando pode fazer-se o teste (LED Piscando)...
//...e quando o circuito estiver fazendo a leitura do sensor (LED Aceso)
}
void loop()
{
PORTB = PORTB ^ 100000; //Inverte o estado do pino digital 13 para dar o efeito de Blink(Piscagem)
delay(100); //Delay para efeito de blink do LED, indicado que o teste pode ser feito pelo usuário
int sensor = analogRead(sensorPin); //Lê o sensor e guarda na variável
if(sensor >= 40) //Se a leitura for maior que 40 (valor escolhido para a demonstração utilizando-se um...
{ //...antisséptico bucal)
digitalWrite(13, HIGH); //Acende o LED Azul(Indicando que o sensor detectou um mínimo de álcool (sensor >= 40)
lidomaximo = 0; //Iniciar o valor máximo lido pelo sensor como 0
for(tempo=0;tempo<=5000;tempo++) //Faz a leitura do sensor por 5 segundos...
{ //...a cada 1 milissegundo atualiza o maior valor lido pelo sensor.
int sensor = analogRead(sensorPin);
delay(1);
if(sensor > lidomaximo)
{
lidomaximo = sensor;
}
}
digitalWrite(13, LOW); //Após o termino da leitura, apaga o LED Azul
int nivel = map(lidomaximo, 0, 200, 0, qtdLED); //Converte a escala de 0 a 200 do sensor em...
//...0 a 6(LEDs) e armazena na variável nível.
//OBS: Lembrando o que o sensor lê de 0 a 1023, pelo antisséptico...
//...ter um teor de álcool relativamente baixo, foi utilizado...
//...a escala de 0 a 200
for(i=0;i
{ //...Ex: Se meu nível convertido foi 5, então o os leds dos pinos 2 ao 6 irão acender
if (i < nivel) //Compara o pino atual da contagem, e se for menor que o nível máximo convertido...
{
digitalWrite(LEDs[i], HIGH); //...Acende o LED
}
else //Compara o pino atual da contagem, e se for maior que o nível máximo convertido ...
{
digitalWrite(LEDs[i], LOW); //...Apaga o LED
}
}
delay(10000); //Aguarda 10 segundos para o usuário conseguir fazer a leitura do bargraph
for(i=0;i
{
digitalWrite(LEDs[i],LOW);
{
if (sensorPin > 0)
{
digitalWrite(rele,LOW); //desliga rele
delay(1800000);
{
if (sensorPin == 0)
digitalWrite(rele,HIGH); //liga rele
}
}
}
}
}
}
[/Code]
estou com problemas aqui:
if (sensorPin == 0)
digitalWrite(rele,HIGH); //liga rele
onde após isso se ele receber sinal do controle ele desliga o relé, vcs podem me ajudar?

Exibições: 79

Responder esta

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço