IRMP

│ │          Load a Default Configuration  --->
│ │          General Setup  --->
│ │              [*] Status LEDs  --->
│ │                  [*] Status LED (Received)
│ │                  [-]    RFM12 RX
│ │                  [ ]    ZBUS RX
│ │                  [*]    IRMP RX
│ │          I/O --->
│ │              [*] IR Receivers --->
│ │                  [*] IRMP IR --->
│ │                      [*] Receive IR-codes
│ │                      [*] Send IR-codes
│ │                      [*] IRMP ecmd
│ │                      --- Protocols
│ │                      [ ] SIRCS
│ │                      [ ] NEC
│ │                      [ ] JVC
│ │                      [ ] SAMSUNG
│ │                      [ ] MATSUSHITA
│ │                      [ ] KASEIKYO
│ │                      [*] DENON
│ │                      [ ] RECS80
│ │                      [ ] RECS80EXT
│ │                      [*] RC5(X)
│ │                      [ ] RC6
│ │                      [ ] NUBERT
│ │                      [ ] BANG&OLUFSEN
│ │                      [*] GRUNDIG
│ │                      [ ] NOKIA
│ │                      [ ] SIEMENS
│ │                      [ ] FDC
│ │                      [ ] RCCAR
│ │                      [ ] NIKON
│ │                      --- Debugging Flags
│ │                      [ ] IRMP Debug

Infos

Testcpu: m644
Board: etherrape

(vorsicht, protokoll ist dezimal, adresse hexadezimal in der ausgabe)

Modifikationen

Datei: pinning/hardware/etherrape.m4

  ifdef(`conf_IRMP', `dnl
    pin(IRMP_RX, PD2)
  #define IRMP_USE_TIMER2
  #define IRMP_RX_LOW_ACTIVE
  #undef IRMP_RX_LED_LOW_ACTIVE
    pin(IRMP_TX, PD7) dnl OC2/OC2A
  #undef IRMP_TX_LED_LOW_ACTIVE
  ')

Control6 Scripte

Funktion: Via IR tasten die stella kanäle steuern. anfang 0 bis 255, kein überlauf wenn 255 erreicht. –> http://paste2.org/p/1181590

oder

 C6_HEADER(`/* This will be in control6.h */')
 
 CONTROL_START
 THREAD(blink)
 
 ON IRMP_READ > 0 DO
 if(IRMP_PROTOCOL==8 && IRMP_ADDRESS==0x0002 && IRMP_COMMAND==0x0268)
 {
        PIN_SET(LED1);
        break;
 }
 if(IRMP_PROTOCOL==8 && IRMP_ADDRESS==0x0002 && IRMP_COMMAND==0x0068)
 {
        PIN_CLEAR(LED1);
        break;
 }
 
 END
 THREAD_END(blink)
 THREAD_START(blink)
 CONTROL_END

oder

 C6_HEADER(`/* This will be in control6.h */')
 
 CONTROL_START
 THREAD(blink)
 
 ON IRMP_READ > 0 DO
 
 if(IRMP_PROTOCOL==8 && IRMP_ADDRESS==0x0002 && IRMP_COMMAND==0x0268)
 ESEND(192.168.123.51, "channel 0 255 f\n");
  
 if(IRMP_PROTOCOL==8 && IRMP_ADDRESS==0x0002 && IRMP_COMMAND==0x0068)
 ESEND(192.168.123.51, "channel 0 0 f\n");
  
 END
 
 THREAD_END(blink)
 THREAD_START(blink)
 CONTROL_END

oder (nicht getestet)

 ON IRMP_READ>0 DO
  if(IRMP_PROTOCOL==meinprotokoll && IRMP_ADDRESS==0xmeineadresse) switch(IRMP_COMMAND)
  {
     case 0x268:
      PIN_TOGGLE(pin_irgendwas);
      break;
  }
 END

Steuern von Stella/Pins durch IR-Zeichen

C6_HEADER(`/* This will be in control6.h */')
#include "services/stella/stella.h"
CONTROL_START
 
THREAD(control_stella)
ON IRMP_READ > 0 DO
  if(IRMP_PROTOCOL==8 && IRMP_ADDRESS==0x0002)
  {
    switch(IRMP_COMMAND)
    {
       case 0x0268:
          stella_setValue(STELLA_SET_IMMEDIATELY, 0, 255);
          break;

       case 0x0068:
          stella_setValue(STELLA_SET_IMMEDIATELY, 0, 0);
          break;
    }
  }
END
THREAD_END(control_stella)
 
ON STARTUP DO
  THREAD_START(control_stella);
END
 
CONTROL_END

Das Script schaltet den Stella Channel 0 auf 255 oder auf 0, die Fernbedienung ist hier eine Denon (Protocol 8). Mit include wurde dem Script der Zugriff auf die Stellasourcen gestattet.
Statt „stella_setValue(STELLA_SET_IMMEDIATELY, 0, 255);“ kann auch „PIN_SET(LED)“ und „PIN_CLEAR(LED)“ verwendet werden (Named_PIN|Named PIN).