Resolvido - Duvida - como usar Potenciômetro para selecionar funções

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.

Contudo estou tendo problemas com um if
este if aqui 
  if (valorSensor >= 5 && valorSensor <= 7){
      tempo2();
  }

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

Exibições: 766

Anexos

Responder esta

Respostas a este tópico

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. 

  if (valorSensor >= 5 && valorSensor <= 7){
      tempo2();
  }
Como foi um problema de BIOS o correto era ter utilizado lógicamente o valorModificado que é de 1 a 12. Ficando da seguinte forma
  if (valorModificado >= 5 && valorModificador <= 7){ // chama a função tempo2
      tempo2();
  }
é por isso que fazer as coisas muito perto da meia noite é complicado rsrs.
desta forma está resolvido o mistério.

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço