I am having issues with this part of the code. What I would like to happen is that when I press IR button 0xFF629D, I would like it to run forever unless I press the same button again. What I am trying to do is if the value of voltage is > 0.30 , the relay will turn on. After, it will continue looping until I want to exit the case by pressing the same button.
Is this possible to do?
I will not copy the entire code but this is the switch case part:
void translateIR() // takes action based on IR code received
{
switch(results.value)
{
case 0xFFA25D:
Serial.println(" TOGGLE RELAY ON ");
digitalWrite(LEDACT, HIGH); // turn the LED on (HIGH is the voltage level)
delay(1000); // wait for a second
digitalWrite(LEDACT, LOW); // turn the LED off by making the voltage LOW
delay(1000);
digitalWrite(RELAY, HIGH);
digitalWrite(LEDACT, HIGH);
break;
case 0xFFE21D:
Serial.println(" 1h30 ");
for (int i = 0; i <= 2; i++) {
digitalWrite(LEDACT, HIGH); // turn the LED on (HIGH is the voltage level)
delay(1000); // wait for a second
digitalWrite(LEDACT, LOW); // turn the LED off by making the voltage LOW
delay(1000);
}
digitalWrite(LEDACT, HIGH);
digitalWrite(RELAY, HIGH);
Serial.println(" RELAY ON");
delay(10000); //1h30
Serial.println(" RELAY OFF");
digitalWrite(RELAY, LOW);
digitalWrite(LEDACT, LOW);
break;
case 0xFF22DD:
Serial.println(" 12h ");
for (int i = 0; i <= 3; i++) {
digitalWrite(LEDACT, HIGH); // turn the LED on (HIGH is the voltage level)
delay(1000); // wait for a second
digitalWrite(LEDACT, LOW); // turn the LED off by making the voltage LOW
delay(1000);
}
digitalWrite(LEDACT, HIGH);
digitalWrite(RELAY, HIGH);
Serial.println(" RELAY ON");
delay(10000); //12 hour
Serial.println(" RELAY OFF");
digitalWrite(RELAY, LOW);
digitalWrite(LEDACT, LOW);
break;
case 0xFF02FD:
Serial.println(" TOGGLE RELAY OFF ");
for (int i = 0; i <= 3; i++) {
digitalWrite(LEDACT, HIGH); // turn the LED on (HIGH is the voltage level)
delay(250); // wait for a second
digitalWrite(LEDACT, LOW); // turn the LED off by making the voltage LOW
delay(250);
}
digitalWrite(RELAY, LOW);
digitalWrite(LEDACT, LOW);
break;
case 0xFF629D:
int sensorValue = analogRead(A0);
float voltage = sensorValue * (5.0 / 1023.0);
Serial.println(" Automatic mode ");
digitalWrite(LEDACT, HIGH); // turn the LED on (HIGH is the voltage level)
if (voltage > 0.30) {
digitalWrite(RELAY, HIGH);
Serial.println(" RELAY ON");
delay(1000);
digitalWrite(RELAY, LOW);
Serial.println(" RELAY OFF");
digitalWrite(LEDACT, LOW);
}
break;
default:
Serial.println(" other button ");
}