Hey guys i want use Irremote with pushbutton in case of losing pilot.
I've tried to use Switch case but it is blocking irremote commands.
Thanks for reply.
Edit:Problem solved topic Closed
#include <IRremote.h>
#define irPin 11
IRrecv irrecv(irPin);
decode_results results;
#define onPin 7
#define trybPin 6
#define ldrPin 8
#define on_off 0x65335A55
#define tryb_pwm 0x25D160F5
#define STOP 0x75CAAFB9
#define dhtpin 0xEF3D2F93
#define rozjasnianie 0xDADA4835
#define przyciemnianie 0x4EBAE6FB
#define PWM_PIN 9
#define switchPin 10
#define redled 3
int LDR_pin = A1;
int back_light = 5;;
//int led = 10;
int LDR_out;
int pwm_back_light;
int pwm_led;
int onStatus = 0;
int trybStatus = 0;
int ldrStatus = 0;
//int ledStatus = 0;
int redstatus = 0;
int mode=0;
int PWM_VAL = 100;
void setup() {
Serial.begin(9600);
irrecv.enableIRIn();
pinMode(LDR_pin, INPUT);
pinMode(switchPin, INPUT);
pinMode(back_light, OUTPUT);
// pinMode(led, OUTPUT);
pinMode(redled, OUTPUT);
pinMode(onPin, OUTPUT);
pinMode(trybPin, OUTPUT);
pinMode(ldrPin, OUTPUT);
onStatus = 0;
trybStatus = -1;
ldrStatus = -1;
// ledStatus = -1;
redstatus = 0;
digitalWrite(onPin, onStatus);
digitalWrite(trybPin, trybStatus);
digitalWrite(ldrPin, ldrStatus);
//digitalWrite(led, ledStatus);
digitalWrite(redled, redstatus);
irrecv.blink13(true);
pinMode(PWM_PIN, OUTPUT);
analogWrite(PWM_PIN,PWM_VAL);
}
void loop() {
if (irrecv.decode(&results)) {
switch (results.value) {
case on_off:
Serial.println("srodek");
onStatus = -1;
trybStatus = 0;
ldrStatus = -1;
redstatus = 0;
digitalWrite(onPin, onStatus);
digitalWrite(trybPin, trybStatus);
digitalWrite(ldrPin, ldrStatus);
digitalWrite(redled, redstatus);
delay(250);
break;
case tryb_pwm:
Serial.println("ee");
trybStatus = ~trybStatus;
ldrStatus = ~ldrStatus;
redstatus = ~redstatus;
digitalWrite(trybPin, trybStatus);
digitalWrite(ldrPin, ldrStatus);
digitalWrite(redled, redstatus);
delay(250);
break;
//case dhtpin:
//Serial.println("ee");
// ledStatus = ~ledStatus;
// digitalWrite(led, ledStatus);
// delay(250);
// break;
case STOP:
Serial.println("srodek");
onStatus = 0;
trybStatus = -1;
ldrStatus = -1;
redstatus = 0;
digitalWrite(onPin, onStatus);
digitalWrite(trybPin, trybStatus);
digitalWrite(ldrPin, ldrStatus);
digitalWrite(redled, redstatus);
delay(250);
break;
}
if (results.value == rozjasnianie){
if (PWM_VAL < 255){
Serial.println("Vol +");
PWM_VAL ++;
}
}
else if(results.value == przyciemnianie){
if (PWM_VAL > 0)
{
Serial.println("Vol -");
PWM_VAL --;
}
}
//Dumping all codes!
Serial.println(PWM_VAL);
Serial.println(onStatus);
//Serial.println(results.value);
analogWrite(PWM_PIN,PWM_VAL);
Serial.print("0x");
Serial.println(results.value, HEX);
if (digitalRead(switchPin) == LOW){
delay(500); // delay to debounce switch
mode++;
}
if(mode > 2){
mode = 1;
}
switch (mode)
{
case 1:
Serial.println("srodek");
onStatus = -1;
trybStatus = -1;
ldrStatus = 0;
redstatus = 0;
digitalWrite(onPin, onStatus);
digitalWrite(trybPin, trybStatus);
digitalWrite(ldrPin, ldrStatus);
digitalWrite(redled, redstatus);
delay(250);
break;
case 2:
Serial.println("srodek");
onStatus = 0;
trybStatus = -1;
ldrStatus = -1;
redstatus = 0;
digitalWrite(onPin, onStatus);
digitalWrite(trybPin, trybStatus);
digitalWrite(ldrPin, ldrStatus);
digitalWrite(redled, redstatus);
delay(250);
break;
}
// loop();
irrecv.resume();
}
ldrbacklight();
} void ldrbacklight()
{
LDR_out = analogRead(LDR_pin);
pwm_led = map(LDR_out, 20, 1023, 0, 230);
pwm_back_light = 255 - (pwm_led);
pwm_back_light = constrain(pwm_back_light, 0, 255);
Serial.println("Podswietlenie");
Serial.println(pwm_back_light);
analogWrite(back_light, pwm_back_light);
//analogWrite(led, pwm_back_light);
delay(2);
}
Moderator edit: code inlined
IRrelay2.ino (4.82 KB)