Guten Abend, ich versuche gerade eine 44-Tasten-RGB-Fernbedienung eines 5m LED-Streifens am Atmega88 zum laufen zu kriegen. Der RGB Streifen wurde in der Bucht gekauft und beinhaltet bereits einen Controller und eine Fernbedienung. Ich will nun den Streifen und die Fernbedienung am Atmega einsetzen. Das IR-Protokoll ist das NEC-Protokoll. Im Anhang habe ich das Timing für die "Rot"-Taste. In der IRMPconfig.h wurde nur das NEC-Protokoll aktiviert. Der Atmega88 wurde, wie in der main.c beschrieben, für interne 8MHz gefused. Für die Übertragung der "Rot"-Taste habe ich folgende Werte erhalten: Startbit > 0x00 (Adressbyte) > 0xFF (inv. Adressbyte) > 0x1A (Commandbyte) > 0xE5 (inv. Commandbyte) > Stopbit Könnt ihr bitte mal über meine Switch-Case-Anweisung drüber schauen, ob die Abfrage des irmp_data.command richtig ist?
1 | Gruß Martin |
2 | #define F_CPU 8000000UL
|
3 | #include <inttypes.h> |
4 | #include <avr/io.h> |
5 | #include <util/delay.h> |
6 | #include <avr/pgmspace.h> |
7 | #include <avr/interrupt.h> |
8 | |
9 | #include "irmpconfig.h" |
10 | #include "irmp.c" |
11 | |
12 | ...
|
13 | |
14 | int
|
15 | main (void) |
16 | {
|
17 | IRMP_DATA irmp_data; |
18 | |
19 | irmp_init(); // initialize irmp |
20 | timer1_init(); // initialize timer 1 |
21 | sei (); // enable interrupts |
22 | |
23 | DDRC |= (1 << DDC1) | (1 << DDC2) | (1<<DDC3); |
24 | |
25 | for (;;) |
26 | {
|
27 | if (irmp_get_data (&irmp_data)) |
28 | {
|
29 | //if (irmp_data.protocol == IRMP_NEC_PROTOCOL)// && // NEC-Protokoll
|
30 | //irmp_data.address == 0x00FF) // Adresse 0x1234
|
31 | //{
|
32 | switch (irmp_data.command) |
33 | {
|
34 | case 0x9A65: PORTC|=(1<<PC1); break; // Taste grün |
35 | case 0x18E7: PORTC|=(1<<PC2); break; // Taste gelb |
36 | case 0x1AE5: PORTC|=(1<<PC3); break; // Taste rot |
37 | }
|
38 | }
|
39 | }
|
40 | }
|