Indem Du z.B. die WHILE-Schleife mit einer Bedingung verknüpfst, die Du in dem Programmcode änderst.
Code:while(status == 0){ i++; if (i==147) status =1; }
Ich reagiere auf Code der Fernbedienung. Das funktioniert auch gut.
Wenn ich mit
undCode:uint8_t getTaste(void) { uint8_t FB_TASTE = 0; irco_update(); gfx_move(0,0); gfx_print_text("RC5: "); uint8_t REMOTE_CODE = LOBYTE(irco_rc5_cmd); gfx_move(30,0); print_hex(HIBYTE(irco_rc5_cmd)); //erster Druck: 0x38 zweiter Druck: 0x30 (für zweistellige Zahlen) print_hex(REMOTE_CODE); // Fernbedienung Einstellung: TV1, 023 switch(REMOTE_CODE) { case 0x01: //1 (Ziffernblock der Fernbedienung) FB_TASTE = 1; break; case 0x02: //2 FB_TASTE = 2; break; case 0x03: //3 FB_TASTE = 3; break; case 0x04: //4 FB_TASTE = 4; break; case 0x05: //5 FB_TASTE = 5; break; case 0x06: //6 FB_TASTE = 6; break; case 0x07: //7 FB_TASTE = 7; break; case 0x08: //8 FB_TASTE = 8; break; case 0x09: //9 FB_TASTE = 9; break; case 0x00: //0 FB_TASTE = 0; break; case 0x20: //CH+ (Sonstige Tasten der Fernbedienung) FB_TASTE = 10; break; case 0x21: //CH- FB_TASTE = 11; break; case 0x10: //VOL+ FB_TASTE = 12; break; case 0x11: //VOL- FB_TASTE = 13; break; case 0x0d: //LOUDSPEAKER OFF (green) FB_TASTE = 14; break; case 0x0c: //ON/OFF (red) FB_TASTE = 15; break; case 0x29: //PAUSE FB_TASTE = 16; break; case 0x36: //STOP FB_TASTE = 17; break; case 0x32: //RECORD (red point) FB_TASTE = 18; break; case 0x3c: //REWIND (red) FB_TASTE = 19; break; case 0x3f: //PLAY (yellow) FB_TASTE = 20; break; case 0x2b: //FAST-FORWARD (blue) FB_TASTE = 21; break; case 0x0b: //OK (green) FB_TASTE = 22; break; case 0x37: //SCREEN2 FB_TASTE = 23; break; case 0x34: //SCREEN4 FB_TASTE = 24; break; } return FB_TASTE; }
in einer Endlos-while(1)-Schleife auf einen Tastendruck reagiere, wie kann ich das Signal/den RC5-Code auf einen Wert ohne Funktion zurücksetzen, damit es nicht bis zum Extremwert durchläuft? Geht das überhaupt?Code:// Fernbedienung abfragen FB_TASTE = getTaste(); textout(20,56," ",0); gfx_move(20,56); print_hex(FB_TASTE); // Reaktion auf Taste switch(FB_TASTE) { case 12: //VOL+ SPEEDFACTOR++; if(SPEEDFACTOR>MAXSPEEDFACTOR) SPEEDFACTOR = MAXSPEEDFACTOR; break; case 13: //VOL- if(SPEEDFACTOR>0) SPEEDFACTOR--; break; }
Indem Du z.B. die WHILE-Schleife mit einer Bedingung verknüpfst, die Du in dem Programmcode änderst.
Code:while(status == 0){ i++; if (i==147) status =1; }
Danke für den Tipp! Gibt es auch die Möglichkeit, die letzte empfangene RC5-Nachricht nach Verarbeitung dauerhaft(!) bis zum nächsten Tastendruck auf die Fernbedienung auf einen nicht-wirkenden Wert umzusetzen?
Hallo ehenkes... Gibt es .. die Möglichkeit, die letzte empfangene RC5-Nachricht nach Verarbeitung dauerhaft(!) bis zum nächsten Tastendruck ..
Meine letzten nibozeiten sind schon längst vorbei. Aber es dürfte ja kein sooo großer Unterschied zu andern Verfahren sein: ich sichere mir nach der Dekodierung zwei Bytes:und kann damit mehrere, für mich sinnvolle Operationen durchführen. Einmal das Doppeln der Tasten verhindern - genau dafür ist ja das Toggelbit gedacht. Ausserdem habe ich ne Taste dafür vorgesehen, den letzten Befehl zu wiederholen - dazu dient der Speicher "RCDCO2".Code:... RCDCO2 = RCDECO; // dekodiertes Befehlsbyte sichern RCTold = RCTGGB; // Toggelbit old für nächstes Lesen sichern ...
Ich glaube das geht in die Richtung die Du suchst!?
Ciao sagt der JoeamBerg
Ja, zweite Ebene schaffen ist genau richtig. Danke!
Was kam bei dir nach dem Nibo? Ich Suche eigentlich einen etwas raffinierteren und moderneren Hobby-Roboter.
Geändert von ehenkes (09.07.2020 um 23:12 Uhr)
Gern geschehen... Danke! Was kam bei dir nach dem Nibo? Ich Suche eigentlich einen etwas raffinierteren und moderneren Hobby-Roboter.
Ein raffinierteres Projekt. Hmmm, na ja, bei mir war der Nibo ja kein "richtiger" NIBO, war die Nibobee, die hatte ich als Testobjekt bekommen. Das war also mehr eine Pflicht(übung), die aber recht viel Spass machte und manche Feinheit bekam.
Ich bin aber mehr für Kür - und mein WALL R kam sozusagen nach dem Nibobee. Der war schon ne andere Herausforderung aber eigentlich (nur) ne Zwischenstation nach Dottie auf dem Weg zum MiniD0. Und ne richtige Herausforderung war natürlich archie - so von sec10 bis sec15 oder hier bei den ersten Fingerübungen.
Na jedenfalls viel Erfolg bei Deinen/-m weiteren Projekt(en).
Ciao sagt der JoeamBerg
Danke für die Anregungen! Gefällt mir gut, wobei ich lieber etwas für den Swimming-Pool hätte (allerdings Wasserproblematik). Sind das alles 8-bit-µC?
Was findest du bei den käuflichen Systemen interessant? Nibo2 hat offenbar keinen modernen Nachfolger gefunden.
Lesezeichen