Olá, comunidade!
Gostaria de solicitar um tempo de sua atenção e ajuda para solucionar ou indicar o motivo do meu código abaixo não efetuar as ações que preciso quando estou utilizando um potênciometro.
Trata-se de uma leitura analógica de corrente, onde os parâmetros Min/Max acendam um led verde, indicando que está normal e caso neste "range" tenha leitura diferente, faça acender um led vermelho.
Aguardo sua ajuda!
int potenciometro_1 = A0;
int ledPin_1 = 10;
int ledPin_2 = 11;
void setup()
{
// put your setup code here, to run once:
pinMode(ledPin_1, OUTPUT); //led verde
pinMode(ledPin_2, OUTPUT); //led vermelho
}
void loop()
{
// put your main code here, to run repeatedly:
for (int pos = 0; pos < 3; pos++)
{
int dados[pos];
float mA_1 = 0;
dados[0] = analogRead(potenciometro_1);
float valorPotenciometroMin_1 = 10.0;
float valorPotenciometroMax_1 = 150.0;
float valorPotenciometroOldMin_1 = 9.99;
float valorPotenciometroOldMax_1 = 150.1;
if (mA_1 >= valorPotenciometroMin_1 && mA_1 <= valorPotenciometroMax_1)
{
digitalWrite(ledPin_1, HIGH);
} else {
digitalWrite(ledPin_1, LOW);
}
if (mA_1 <= valorPotenciometroOldMin_1 && mA_1 >= valorPotenciometroOldMax_1)
{
digitalWrite(ledPin_2, HIGH);
} else {
digitalWrite(ledPin_2, LOW);
}
}
}
Fiz algumas correções no seu código.
O primeiro if funciona, mas o segundo if não é possível funcionar,
pois se mA_1 for menor que 9.99 nunca será maior que 150.1.
int potenciometro_1 = A0;
int ledPin_1 = 10;
int ledPin_2 = 11;
//-----------------------------------------------------------------
void setup()
{
// put your setup code here, to run once:
pinMode(ledPin_1, OUTPUT); //led verde
pinMode(ledPin_2, OUTPUT); //led vermelho
}
//-----------------------------------------------------------------
void loop()
{
// put your main code here, to run repeatedly:
// for (int pos = 0; pos < 3; pos++)
// {
//int dados[pos];
float mA_1 = analogRead(potenciometro_1);
//dados[0] = analogRead(potenciometro_1);
float valorPotenciometroMin_1 = 10.0;
float valorPotenciometroMax_1 = 150.0;
float valorPotenciometroOldMin_1 = 9.99;
float valorPotenciometroOldMax_1 = 150.1;
// if (mA_1 >= 10.0 && mA_1 >= 150.0) //
if (mA_1 >= valorPotenciometroMin_1 && mA_1 <= valorPotenciometroMax_1)
{
digitalWrite(ledPin_1, HIGH);
} else {
digitalWrite(ledPin_1, LOW);
}
// if (mA_1 <= 9.99 && mA_1 >= 150.1) // Impossível
if (mA_1 <= valorPotenciometroOldMin_1 && mA_1 >= valorPotenciometroOldMax_1)
{
digitalWrite(ledPin_2, HIGH);
} else {
digitalWrite(ledPin_2, LOW);
}
//}
}