Hi,
hab zwar schon lange nichts mehr mit dem RP5 gemacht, die zweite Zeile sticht mir aber sofort ins Auge. Zuerst definierst du den Port, danach deaktivierst du ihn... das kann nicht funktionieren.
Viele Grüße
Hi,
überall steht, dass man die Ports (z.B. Port 14) auch als Eingang abfragen kann.
Ich habe das ganze ausprobiert(Drahtverbindung zwischen Y1[Masse] und port 14). Mein Code sieht wie folgt auf:
Wenn ich nun die Drahtverbindung herstelle leuchtet die LEDE nicht! Ich verstehe nicht was ich falsch mache, überall (auch hier im Forum) kann man lesen, dass es genau so geht!Code:define p14 port[14] deact p14 gosub SUBSYS_PWR_ON #loop if p14=on then LED1_F=on else LED1_F=off SYS SYSTEM goto loop
Hi,
hab zwar schon lange nichts mehr mit dem RP5 gemacht, die zweite Zeile sticht mir aber sofort ins Auge. Zuerst definierst du den Port, danach deaktivierst du ihn... das kann nicht funktionieren.
Viele Grüße
Hallo Max,
probier mal:
Du solltest für die LED-Ansteuerung die Unterprogramme benutzen, die dafür angegeben sind (LED1ON, LED1OFF ...).Code:define p14 port[14] deact p14 gosub SUBSYS_PWR_ON #loop if p14=on then LED1_F=on else LED1_F=off LBYTE=EXTPORT SYS SYSTEM goto loop
Gruß Dirk
Erstmal danke für die Antworten.
Zum Ausprobieren hatte ich noch keine Zeit, aber vorab nochmal eine kurze Frage zum Code:
Was bewirkt das "LBYTE=EXTPORT" genau? Ich möchte ja am Ende wirklich verstehen, was ich da eigentlich für einen Code benutze!
So, ich habe es nun getestet: Es führt zu einer (für mich) sehr komischen Reaktion:
Zuerst sind alle LEDs aus, wie es sein soll. Wenn ich nun meinen Draht in die Buchse Y14 (Port 14) stecke, geht LED1 an (es flackert ein Bischen, ist aber die meiste Zeit an), wenn ich das andere Ende des Drahtes mit Y1 (Masse) verbinde, geht LED1 wieder aus. Ich kann das nicht nachvollziehen, da mir unerklärlich ist, wie der Roboter das bloße Einstecken des Drahts in die Buchse bemerken kann, wenn der Draht mit sonst garnichts verbunden ist. Es fließt ja kein Strom. Wenn ich nun den Strom jedoch zum fließen bringe, geht LED1 wieder aus.
Wenn ich nun aber den Port 14 mit Y20 (beides +BATT) verbinde, hört das leichte Geflacker auf und LED1 leuchtet gleichmäßig.
Ich verstehe überhaupt nichts mehr, wie kann das sein?
@ikarus_177
Das "deact" macht das "define" nicht rückgängig, es verhindert nur, dass der Port manuell auf on bzw. off gesetzt ist (kann man in dem Fall auch weglassen, habe ich getestet, ändert nichts).
Doch, das kann er merken, und zwar über Wechselspannungseinstreuungen, die von deinem Körper kommen. Da der Eingang sehr hochohmig ist, hält er das teilweise für einen H-Pegel und die LED flackert.Ich kann das nicht nachvollziehen, da mir unerklärlich ist, wie der Roboter das bloße Einstecken des Drahts in die Buchse bemerken kann, wenn der Draht mit sonst garnichts verbunden ist.
Normalerweise vermeidet man das, indem man einen Pullup-Widerstand (zwischen +5V und dem Eingang, z.B. 4,7 kOhm) schaltet und den Taster dann nach Masse. Oder: Man machts umgekehrt und verwendet einen Pulldown-Widerstand nach Masse und legt den Taster zwischen +5V und den Eingang.
Dann kriegt man ein definiertes Potenzial am Eingang.
Gruß Dirk
Ich habe nun noch etwas heraus gefunden:
Das Problem tritt nur auf, wenn ich "gosub SUBSYS_PWR_ON" und/oder "SYS SYSTEM" aufrufe.
Nun kann ich das ja nicht einfach vermeiden, da dann die LEDs nicht funktionieren.
Ich weiß absolut nicht weiter! Weiß jemand vielleicht warum das Problem im Zusammenhang mit diesen Befehlen auftritt und wie ich das ganze umgehen kann?
Unsinn. Wenn du diese Systemprogramme nicht aufrufst, funktioniert dein Programm auch nicht, daher kannst du dann auch nichts beobachten.Das Problem tritt nur auf, wenn ich "gosub SUBSYS_PWR_ON" und/oder "SYS SYSTEM" aufrufe.
Den Grund für deine Beobachtungen habe ich schon oben erklärt.
Gruß Dirk
Srry, ich habe meine Antwort geschrieben, ehe ich deine kannte (du hast gepostet, während ich schrieb).
Ich glaube ich habe die ganze Zeit etwas falsch verstanden: Ich dachte, ich muss den Port nur mit Y1(Masse) verbinden (Gleichstrom, 2 Pole, einer Y1, der andere der Port). Verstehe ich das jetzt richtig, dass ich den Port (über einen Wiederstand) mit Y20 (+BATT) und mit Y1 (Masse) verbinden muss?
Falls es beim Beantworten hilft:
Letztendlich möchte ich für den Robby einen Bumper bauen (z.B. mit einem (umgebauten) Taster). Ich möchte nun eigentlich nur wissen an was ich den Taster anschließen muss, um beim drücken einen geschlossenen Stromkreis zu haben, den ich über mein Programm feststellen kann und somit auf eine potenzielle Kollision reagieren kann.
Auf jeden Fall schonmal danke für die Antworten, ich stand irgendwie total auf dem Schlauch (bin auch noch etwas neu in Robotik und Hardwarenahem)!!!!!! =D>
Am besten finde ich immer die Lösung mit Pullup-Widerstand.Ich möchte nun eigentlich nur wissen an was ich den Taster anschließen muss, um beim drücken einen geschlossenen Stromkreis zu haben, den ich über mein Programm feststellen kann ...
Also:
4,7 kOhm zwischen +5V und dem Eingangs-Pin,
Taster (Bumper) zwischen Eingangs-Pin und GND/Masse.
Stößt der CCRP5 irgendwo an, schließt der Bumper und der Eingang hat Low-Pegel. Sonst: High-Pegel.
Gruß Dirk
Lesezeichen