Boa noite
estou brincando com dois potenciômetros, tentando utiliza-los para um potenciômetro para escolher diferentes void's e outro para definir o delay em que o led ira piscar dentro de cada void conforme código abaixo.
simplesmente não funciona, ele pula, a minha ideia é "se valorSensor for maior que 5 e menor que 7 chamar void tempo2", conforme código abaixo, porem ele simplesmente pula para o void tempo3.
//código teste com acionando led com potenciômetros
int valorSensor;
int valorModificado; // valor intervalo de escolha
int valorSensor2;
int valorModificado2; // valor do delay
int motPin2= 12; // teste led
int motState2 = LOW;
int botao = 8; // leitura botão teste
int flag = 0;
void setup() {
Serial.begin(9600);
pinMode(motPin2, OUTPUT);
pinMode(botao,INPUT);
}
void loop() {
potenciometro1();// escolhe void
potenciometro2(); // determina delay do led
teste ();// botão teste
}
void potenciometro1(){ // programa escolhe o void a ser acionado A0
valorSensor = analogRead(A0); // Le valor do pino analógico
valorModificado = map(valorSensor, 0, 1023, 1, 12); // Mapeia o valor lido e converte leitura para valor proposto
Serial.print("intervalo = "); // imprime o intervalo em que se encontra o valor do sensor
Serial.println(valorModificado);
delay(500);
if (valorSensor <= 4){
tempo1();
}
if (valorSensor >= 5 && valorSensor <= 7){ // if problemático
tempo2();
}
if (valorSensor > 8){
tempo3();
}
}
void potenciometro2(){ // programa o tempo que o led ira piscar, potenciometro 2 A1 escolha delay
valorSensor2 = analogRead(A1); // Le valor do pino analógico
valorModificado2 = map(valorSensor2, 0, 1023, 20, 500); // Mapeia o valor lido e converte leitura para valor proposto
Serial.print(" delay = ");
Serial.println(valorModificado2);
delay(500);
}
void tempo1(){
digitalWrite(motPin2, HIGH); // turn the LED on (HIGH is the voltage level)
delay(valorModificado2); // wait for a second
digitalWrite(motPin2, LOW); // turn the LED off by making the voltage LOW
delay(20);
Serial.print("tempo1 ="); // imprime qual void foi chamado pelo potenciometro no monitor serial
}
void tempo2(){
digitalWrite(motPin2, HIGH); // turn the LED on (HIGH is the voltage level)
delay(valorModificado2); // wait for a second
digitalWrite(motPin2, LOW); // turn the LED off by making the voltage LOW
delay(500);
Serial.print("tempo2 ="); //imprime qual void foi chamado pelo potenciometro no monitor serial
}
void tempo3(){
digitalWrite(motPin2, HIGH); // turn the LED on (HIGH is the voltage level)
delay(valorModificado2); // wait for a second
digitalWrite(motPin2, LOW); // turn the LED off by making the voltage LOW
delay(1000);
Serial.print("tempo3 ="); //imprime qual void foi chamado pelo potenciometro no monitor serial
}
void teste (){
flag = digitalRead(botao);
if (flag == 0){// se for igual a 1 liga teste
delay (100);
digitalWrite(motPin2, HIGH);
delay (valorModificado2); // teste delay
Serial.println("ligou teste "); //imprime qual void foi chamado pelo potenciometro no monitor serial
digitalWrite(motPin2, LOW);
delay(2000);
digitalWrite(motPin2, motState2);
}
}
Alguém sabe me ajudar?
desde de já agradeço
Tags:
Ninguém respondeu, mas descobri o erro, pedi para um colega desenvolvedor dar uma olhada.
quando eu fiz o if eu indiquei o valor do sensor, ou seja, de 0 a 1023.
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por