da ich meine Braun Anlage mit einer Universalfernbedienung bedienen will, und keine RC1 habe (hat mir optisch nie gefallen, und ich möchte nur zum Tasten kopieren keine kaufen), habe ich mir schnell mit einem Arduino MEGA2560 Board eine Software geschrieben mit dem man die Codes senden kann. An Hardware ist nur eine Infrarot LED gegen 5V an Pin 9 notwendig. Man kann ueber serielle Schnittstelle einen Tastencode eingeben, der dann gesendet wird. Die Codes sind gleich mit den Codes fuer die serielle Schnittstelle am R4/CC4:
Code: Alles auswählen
01 - 5
02 - 4
03 - 3
04 - 2
05 - 1
06 - Prog +
07 - Prog -
08 - Memo
09 - P10
0a - 9
0b - 8
0c - 7
0d - 6
0e - TAPE1
0f - TAPE2
10 - TREB OFF
11 - FORWARD
12 - REWIND
13 - STOP
14 - PAUSE
15 - START
16 - ?
17 - LBASS
18 - H BLEND
19 - RESET
1a - SET
1b - MEMO
1c - SPACE
1d - REC
1e - MAN TUNE +
1f - MAN TUNE -
20 - BASS OFF
21 - SP1/2 3/4
22 - CLOCK
23 - MONO
24 -
25 - MONITOR
26 - BASS+
27 - BASS-
28 - BAL RESET
29 - BAL R
2a - BAL L
2b - TREB OFF
2c - BASS OFF
2d - LOUDN
2e - TREB +
2f - TREB -
30 - 20 HZ
31 - STBY
32 - VOL+
33 - VOL-
34 - MUTE
35 - EQ OFF
36 - VOL2+
37 - VOL2-
38 - AM
39 - T-
3a - TV
3b - AM/FM
3c - PHONO
3d - CD
3e - SPEAKER 1
3f - SPEAKER 2
Code: Alles auswählen
void setup()
{
Serial.begin(115200);
pinMode(3, OUTPUT);
pinMode(9, OUTPUT);
TCCR2A = _BV(COM2A0) | _BV(COM2B1) | _BV(WGM21) | _BV(WGM20);
TCCR2B = _BV(WGM22) | _BV(CS21);
OCR2A = 0;
OCR2B = 39;
}
void send_bit(uint16_t state)
{
OCR2A=59;
delayMicroseconds(160);
OCR2A=0;
// H: 8.64ms, L=5.76ms
delayMicroseconds(state ? 8340: 5500);
}
volatile uint8_t gtoggle = 0;
void transmit_recs80(uint8_t dev, uint8_t toggle, uint8_t command)
{
uint8_t i;
uint16_t val = (1 << 11) | (toggle << 10) | ((dev & 7) << 7) | ((command & 0x3f) << 1);
for(i = 0; i < 12; i++) {
send_bit(val & (1 << (11 - i)));
}
}
void loop()
{
int i;
String s;
uint8_t val;
for(;;) {
s = Serial.readStringUntil('\n');
if (s.length() > 0) {
val = strtoul(s.c_str(), NULL, 16);
Serial.println(val, 16);
for(i = 0; i < 16; i++) {
transmit_recs80(2, gtoggle, val);
delay(52);
}
gtoggle ^= 1;
}
}
}