-
        

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 11

Thema: Port abfragen

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    08.03.2009
    Beiträge
    14

    Port abfragen

    Anzeige

    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:
    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
    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!

  2. #2
    Erfahrener Benutzer Roboter Experte Avatar von ikarus_177
    Registriert seit
    31.12.2007
    Ort
    Grein
    Alter
    24
    Beiträge
    601
    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

  3. #3
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.791
    Hallo Max,

    probier mal:
    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
    Du solltest für die LED-Ansteuerung die Unterprogramme benutzen, die dafür angegeben sind (LED1ON, LED1OFF ...).

    Gruß Dirk

  4. #4
    Neuer Benutzer Öfters hier
    Registriert seit
    08.03.2009
    Beiträge
    14
    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!

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    08.03.2009
    Beiträge
    14
    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).

  6. #6
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.791
    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.
    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.
    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

  7. #7
    Neuer Benutzer Öfters hier
    Registriert seit
    08.03.2009
    Beiträge
    14
    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?

  8. #8
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.791
    Das Problem tritt nur auf, wenn ich "gosub SUBSYS_PWR_ON" und/oder "SYS SYSTEM" aufrufe.
    Unsinn. Wenn du diese Systemprogramme nicht aufrufst, funktioniert dein Programm auch nicht, daher kannst du dann auch nichts beobachten.

    Den Grund für deine Beobachtungen habe ich schon oben erklärt.

    Gruß Dirk

  9. #9
    Neuer Benutzer Öfters hier
    Registriert seit
    08.03.2009
    Beiträge
    14
    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>

  10. #10
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.791
    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 ...
    Am besten finde ich immer die Lösung mit Pullup-Widerstand.
    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

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •