Prezados amigos,
estou tentando escrever um programinha que, tendo como referência uma entrada analógica, ele dispare um Led quando ela chegar no limite mais baixo ( definido por SetPoint_vazio ) e desligue o Led quando a referênca chegar no nível mais alto ( definido por SetPoint_vazio ).
Eu simulo a entrada com um potenciometro como divisor de tensão e isso está funcionando bem..
O problema é que não sei escrever a função while para isso..
O mais perto que cheguei foi:
/*Inicio dos testes para o controlador de nível de solução hidroponica*/
int PinoSensor = A0; // Pino no qual o sensor está conectado, no caso A0
int Led_enche = 11; // Pino no qual o Led que representa o solenóide que enche está conectado, no caso 11
int ValorSensor = 0; // Variável para guardar a leitura do sensor
int SetPoint_cheio = 300; // Set point de cheio, acima desse valor apaga o Led_enche
int SetPoint_vazio = 100; // set point de vazio, acima desse valor apaga o Led_enche
void setup() {
pinMode(Led_enche, OUTPUT); // Configura o pino como saída
Serial.begin(9600); // Cria a comunicação serial
}
void loop() {
ValorSensor = analogRead(PinoSensor); // Lê o valor do sensor
Serial.print("Valor do Sensor = "); // Escreve Valor do Sensor = na serial
Serial.println(ValorSensor); // Escreve o valor do sensor na serial
if (ValorSensor < SetPoint_vazio); {
digitalWrite(Led_enche, HIGH); // O valor lido é maior que o set point, aciona o alarme
while (ValorSensor > SetPoint_cheio);
digitalWrite (Led_enche, HIGH);
}
}
Onde está errado? Alguém pode ajudar-me?
Desculpe a pergunta tão básica.
Tags:
if (ValorSensor <= SetPoint_vazio)
{
digitalWrite(Led_enche, HIGH);
}
if (ValorSensor >= SetPoint_cheio)
{
digitalWrite (Led_enche, LOW);
}
acho que é isso que vc quer, mas nao precisa de while, no intervalo entre 100 e 300 ele vai manter o estado anterior
Muito obrigado por sua atenção, Luiz.. tentei e não funcionou.. quando eu reinicializo o Arduino com o potenciometro abaixo de 300 o led fica apagado ( como esperado ) mas qdo passa disso o Led acende e trava e a leitura da serial tb para...
/*Inicio dos testes para o controlador de nível de solução hidroponica*/
int PinoSensor = A0; // Pino no qual o sensor está conectado, no caso A0
int Led_enche = 11; // Pino no qual o Led que representa o solenóide que enche está conectado, no caso 11
int ValorSensor = 0; // Variável para guardar a leitura do sensor
int SetPoint_cheio = 300; // Set point de cheio, acima desse valor apaga o Led_enche
int SetPoint_vazio = 100; // set point de vazio, acima desse valor apaga o Led_enche
void setup() {
pinMode(Led_enche, OUTPUT); // Configura o pino como saída
Serial.begin(9600); // Cria a comunicação serial
}
void loop() {
ValorSensor = analogRead(PinoSensor); // Lê o valor do sensor
Serial.print("Valor do Sensor = "); // Escreve Valor do Sensor = na serial
Serial.println(ValorSensor); // Escreve o valor do sensor na serial
if (ValorSensor <= SetPoint_vazio)
{
digitalWrite(Led_enche, HIGH);
}
if (ValorSensor >= SetPoint_cheio)
{
digitalWrite (Led_enche, LOW);
}
}
quantos volts vc ta aplicando na entrada? e 300 é o seu nivel maximo ou minimo?
A serial lê, sem problemas, de 0 a mais de 440..
Esta travando por software..
Obrigado
Ela lê de 0 a 5 volts, ou 0 a 1023 na escala do arduino, mas é estranho o arduino travar, NAO TEM NADA NO CODIGO PARA JUSTIFICAR ISSO
Tenta refazer a leitura do sensor também dentro de cada um dos if's...
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por