PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Nibo1 RC5-Code



ehenkes
09.07.2020, 12:01
Ich reagiere auf Code der Fernbedienung. Das funktioniert auch gut.

Wenn ich mit


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;
}

und


// 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;
}
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?

Moppi
09.07.2020, 14:36
Indem Du z.B. die WHILE-Schleife mit einer Bedingung verknüpfst, die Du in dem Programmcode änderst.




while(status == 0){
i++;
if (i==147) status =1;
}

ehenkes
09.07.2020, 17:58
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?

oberallgeier
09.07.2020, 18:43
.. Gibt es .. die Möglichkeit, die letzte empfangene RC5-Nachricht nach Verarbeitung dauerhaft(!) bis zum nächsten Tastendruck ..Hallo ehenkes.

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:
...
RCDCO2 = RCDECO; // dekodiertes Befehlsbyte sichern
RCTold = RCTGGB; // Toggelbit old für nächstes Lesen sichern
...
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".

Ich glaube das geht in die Richtung die Du suchst!?

ehenkes
09.07.2020, 20:08
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.

oberallgeier
09.07.2020, 23:21
.. Danke! Was kam bei dir nach dem Nibo? Ich suche eigentlich einen etwas raffinierteren und moderneren Hobby-Roboter.Gern geschehen.

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 (https://www.roboternetz.de/community/threads/45237-NIBObee-Erfahrungsberichte?p=435341&viewfull=1#post435341).

Ich bin aber mehr für Kür - und mein WALL R (https://www.roboternetz.de/community/threads/36121-Autonom-in-kleinen-Dosen-R2_D03-Nachfolger-R3D01?p=382774&viewfull=1#post382774) kam sozusagen nach dem Nibobee. Der war schon ne andere Herausforderung aber eigentlich (nur) ne Zwischenstation (https://www.roboternetz.de/community/threads/40453-WALL-R-l%C3%A4uft-%28autonomes-Fahrzeug%29?p=385717&viewfull=1#post385717) nach Dottie (https://www.roboternetz.de/community/threads/36121-Autonom-in-kleinen-Dosen-R2_D03-Nachfolger-R3D01?p=358097&viewfull=1#post358097) auf dem Weg zum MiniD0 (https://www.roboternetz.de/community/threads/36121-Autonom-in-kleinen-Dosen-R2_D03-Nachfolger-R3D01?p=495507&viewfull=1#post495507). Und ne richtige Herausforderung war natürlich archie - so von sec10 bis sec15 (https://www.roboternetz.de/community/threads/61379-Kopfsache-und-ein-m1284-etliche-Servos-viel-Alu?p=639031&viewfull=1#post639031) oder hier bei den ersten Fingerübungen (https://www.roboternetz.de/community/threads/61379-Kopfsache-und-ein-m1284-etliche-Servos-viel-Alu?p=638683&viewfull=1#post638683).

Na jedenfalls viel Erfolg bei Deinen/-m weiteren Projekt(en).

ehenkes
10.07.2020, 15:28
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.