X-Git-Url: https://git.realraum.at/?a=blobdiff_plain;f=rf433ctl%2Frf433ctl.pde;h=68d9f08eecf2d8e9028a7ea4202bcafa53ae340d;hb=1b475c3656ae87f9f9d6cc9420b6c80f53eb00ef;hp=543bb1fad18f229f8f485c932b154f1a805970c6;hpb=c3553202389f044616f5625091d5bf6203d8884d;p=svn42.git diff --git a/rf433ctl/rf433ctl.pde b/rf433ctl/rf433ctl.pde index 543bb1f..68d9f08 100644 --- a/rf433ctl/rf433ctl.pde +++ b/rf433ctl/rf433ctl.pde @@ -48,6 +48,7 @@ const char YAMAHA_VCR =0xF0; //Input VCR const char YAMAHA_EXT51DEC =0xE1; //Input Ext. Decoder On/Off const char YAMAHA_TUNER_PLUS =0x08; //Tuner Next Station 1-7 (of A1 - E7) +const char YAMAHA_TUNER_MINUS =0x88; //Tuner Prev Station 1-7 (of A1 - E7) const char YAMAHA_TUNER_ABCDE =0x48; //Tuner Next Station Row A-E (of A1 - E7) const char YAMAHA_MUTE =0x38; @@ -79,17 +80,6 @@ const char YAMAHA_EFFECT5 =0x91; //Effect Toggle 70mm Sci-Fi / 70mm Spectacle const char YAMAHA_EFFECT6 =0x51; //Effect Toggle 70mm General / 70mm Adventure const char YAMAHA_P5 =0xFB; //P5 PRT (1 Main Bypass)? (1587674115) - -void send_yamaha_ir_signal(char codebyte) -{ - unsigned long int code = codebyte & 0xFF; - code <<= 8; - code |= (0xff ^ codebyte) & 0xFF; - code |= YAMAHA_CODE_BASE; - irsend.sendNEC(code,YAMAHA_CODE_BITS); - Serial.println("Ok"); -} - //********************************************************************// typedef struct { @@ -255,8 +245,8 @@ ISR(TIMER1_COMPA_vect) void send_frame(const word_t w) { - if (frame_finished == 0) - for(;;) + if (frame_finished != 1) + for(;;) //wait until sending of previous frame finishes if (frame_finished) { delay(150); @@ -264,7 +254,7 @@ void send_frame(const word_t w) } word_cnt = 0; frame_finished = 0; - init_word(w); + init_word(w); } void check_frame_done() @@ -273,6 +263,7 @@ void check_frame_done() { Serial.println("Ok"); frame_finished=1; + delay(120); } } @@ -391,6 +382,31 @@ void flash_led(unsigned int times, unsigned int brightness_divisor, unsigned int //********************************************************************// +void send_yamaha_ir_signal(char codebyte) +{ + unsigned long int code = codebyte & 0xFF; + code <<= 8; + code |= (0xff ^ codebyte) & 0xFF; + code |= YAMAHA_CODE_BASE; + + //irsend changes PWM Timer Frequency among other things + //.. doesn't go well with PWM output using the same timer + //.. thus we just set output to 255 so whatever frequency is used, led is off for the duration + unsigned int flash_prev_selected = flash_led_selected_; //save prev. selected leds + flash_led_selected_ &= !(1 << BLUELED_PWM_PIN); //prevent calculate_led_level() from setting blueled + analogWrite(BLUELED_PWM_PIN,255); // switch led off + + irsend.sendNEC(code,YAMAHA_CODE_BITS); + + analogWrite(BLUELED_PWM_PIN,255); // switch off led again to be sure + flash_led_selected_ = flash_prev_selected; //restore led settings for calculate_led_level() + //is actually not necessary, since we are not multitasking/using interrupts, but just to be sure in case this might change + + Serial.println("Ok"); +} + +//********************************************************************// + void setup() { pinMode(RF_DATA_OUT_PIN, OUTPUT); @@ -539,29 +555,31 @@ void loop() else if (command == '8') send_yamaha_ir_signal(YAMAHA_MENU); else if (command == '+') - send_yamaha_ir_signal(YAMAHA_PLUS); + send_yamaha_ir_signal(YAMAHA_PLUS); else if (command == '-') - send_yamaha_ir_signal(YAMAHA_MINUS); - else if (command == '§') - send_yamaha_ir_signal(YAMAHA_TEST); + send_yamaha_ir_signal(YAMAHA_MINUS); + else if (command == 0xa7) // § + send_yamaha_ir_signal(YAMAHA_TEST); else if (command == '$') - send_yamaha_ir_signal(YAMAHA_TIME_LEVEL); + send_yamaha_ir_signal(YAMAHA_TIME_LEVEL); else if (command == '%') - send_yamaha_ir_signal(YAMAHA_EFFECT_TOGGLE); + send_yamaha_ir_signal(YAMAHA_EFFECT_TOGGLE); else if (command == '&') - send_yamaha_ir_signal(YAMAHA_PRG_DOWN); + send_yamaha_ir_signal(YAMAHA_PRG_DOWN); else if (command == '/') - send_yamaha_ir_signal(YAMAHA_PRG_UP); + send_yamaha_ir_signal(YAMAHA_PRG_UP); else if (command == '(') - send_yamaha_ir_signal(YAMAHA_TUNER_PLUS); + send_yamaha_ir_signal(YAMAHA_TUNER_PLUS); + else if (command == '[') + send_yamaha_ir_signal(YAMAHA_TUNER_MINUS); else if (command == ')') - send_yamaha_ir_signal(YAMAHA_TUNER_ABCDE); + send_yamaha_ir_signal(YAMAHA_TUNER_ABCDE); else if (command == '9') - send_yamaha_ir_signal(YAMAHA_TAPE); + send_yamaha_ir_signal(YAMAHA_TAPE); else if (command == '?') - send_yamaha_ir_signal(YAMAHA_VCR); + send_yamaha_ir_signal(YAMAHA_VCR); else if (command == '=') - send_yamaha_ir_signal(YAMAHA_EXT51DEC); + send_yamaha_ir_signal(YAMAHA_EXT51DEC); else Serial.println("Error: unknown command"); }