Dúvida de quem é muito iniciante.. Função While

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.

Exibições: 1035

Responder esta

Respostas a este tópico

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...

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço