Hallo,
ich habe an meinen AVR NET IO ein 433Mhz Sendemodul FS1000A
angeschlossen. Ich will einfach nur eine Funksteckdose ein- und
ausschalten. Den Sendecode kenn ich (siehe Bild). Eine "1" besteht aus
545us HIGH und 182us LOW, eine "0" aus 182us HIGH und 545us LOW, und zum
Schluss noch 5215us LOW. (ich habe die Samples in Audacity gemessen und
dann durch die Samplerate dividiert)
So nun zum Problem. Bei meinem Programmcode habe ich diese Zeiten
verwendet, aber das selber gesendete Signal hat, wie auf dem Bild
ersichtlich, viel zu lange LOW Zeiten.
Mein Code sieht so aus:
1 | //***************433mhz senden***********************
|
2 | char send_code[] = { "1111111111010100010100012" };
|
3 | void senden(void) {
|
4 |
|
5 | lcd_clear();
|
6 | lcd_print(0,0,0, "Sende Code:");
|
7 | for (x=0; x<6; x++) {
|
8 | for (i=0; i<25 ; i++) {
|
9 | lcd_print(1,i,0, "%i", send_code[i]);
|
10 | if ('1'==send_code[i]) {
|
11 | PORTC |= (1<< PC6); //ein
|
12 | _delay_us(545);
|
13 | PORTC &= ~(1<< PC6); //aus
|
14 | _delay_us(182);
|
15 | }
|
16 |
|
17 | if ('0'==send_code[i]) {
|
18 | PORTC |= (1<< PC6); //ein
|
19 | _delay_us(182);
|
20 | PORTC &= ~(1<< PC6); //aus
|
21 | _delay_us(545);
|
22 | }
|
23 |
|
24 | if ('2'==send_code[i]) {
|
25 | PORTC |= (1<< PC6); //ein
|
26 | _delay_us(182);
|
27 | PORTC &= ~(1<< PC6); //aus
|
28 | _delay_us(5215);
|
29 | }
|
30 | }
|
31 | }
|
32 | PORTC &= ~(1<< PC6); //aus
|
33 | lcd_print(1,0,1, "Code gesendet.");
|
34 | _delay_ms(5000);
|
35 | lcd_clear();
|
36 | }
|
Auf meinem Raspberry Pi habe ich dies in Python geschrieben und es
klappte einwandfrei.
Kann mir vielleicht jemand einen Tipp geben?