-         

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

Thema: CCRP5 -> CC2 - LCD Ansteurung

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    10.01.2006
    Ort
    Erfurt
    Alter
    32
    Beiträge
    27

    CCRP5 -> CC2 - LCD Ansteurung

    Anzeige

    Hallo liebe Freunde,
    habe heute das LC-Display für den Robby bekommen.
    Habe es auf der Basiserweiterung montiert doch es reagiert nicht.
    Ich habe es an LCD1 angeschlossen.
    Hier ein Code ausschnitt.

    thread main
    {
    ccrp5.init ( );
    ccrp5.initLCD();
    ccrp5.clearLCD();
    ccrp5.writeLCD(1);
    ccrp5.printLCD("LCD Ausgabe");
    }

    Benötigt das LCD eine externe Stromverbindung?`
    Bitte helft mir.

    Vielen Dank.
    Gruß Ronny

  2. #2
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.791

    LCD am Robby

    Hallo Ronny,

    ich sehe schon, du bist weiter fleissig!

    An der BE des RP5 kann man ja 2 LCDs anschließen:

    Am Stecker LCD1 (der rechte) wird das LCD von der CC1 auf dem Robby angesteuert.
    Mit deinem Codeschnipsel sprichst du dieses LCD an, und zwar von der CC2 aus, über die serielle Schnittstelle zur CC1, die dann den Text ausgibt. Wenn nix zu sehen ist, dreh mal den Kontrast höher am Poti auf der BE rechts hinten.

    An den Stecker LCD2 (links) wird das LCD für die CC2 angeschlossen. Sie kann darauf direkt über die Lib lcdext zugreifen. Alle Befehle fangen also mit z.B. lcdext.init(); o.ä. an. Wenn du nur ein LCD hast, solltest du es hier anschliessen (schneller und ohne den Umweg über die CC1).

    P.S.:
    Ein Tip noch für deine Test-Progs:
    Du solltest sie mit loop {} beenden, damit das Programm in einer Endlosschleife stehen bleibt. Ein Neustart geht dann über RESET.
    Alternativ kannst du deinen ganzen Code in
    loop
    {
    Code
    }
    einschließen, dann wird er immer von vorn ausgeführt (z.B. ein Lauflicht o.ä.

    Gruß Dirk

    In der Anlage noch ein Ladeprogramm für den Robby mit BE und LCD (an LCD2)! Ich nehme es immer, wenn der RP5 geladen werden muss (.txt entfernen!).
    Angehängte Dateien Angehängte Dateien

  3. #3
    Gast
    Hallo Dirk,
    vielen Dank werde es gleich mal ausprobieren .
    Kurze Frage noch zu den Loops.
    wenn ich das in einen eigenen Thread schreibe benötige ich die Loop-Anweisung doch nicht oder?
    Wenn ich in den Thread schreibe lcdext.init ...
    wird doch eigentlich der init bei jedem durchlauf neu ausgeführt.ist denn das überhaupt notwendig.es sollte doch reichen wenn er einmal ausgeführt wird oder?

    Vielen Dank.
    Grüße Ronny

  4. #4
    Gast
    Hi Dirk,

    Super es lag am Poti

    ps. Wie bekomme ich es denn hin das der Text aufhört zu blinken?

    Vielen Dank

  5. #5
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.791

    Loop

    Hallo Ronny,

    ps. Wie bekomme ich es denn hin das der Text aufhört zu blinken?
    ... eben durch loop {} am Ende!!

    Wenn du das Programm nicht beendest, fängt es immer wieder von vorn an.

    Gruß Dirk

  6. #6
    Gast
    ... also müsste ich praktisch das ganze in einen thread packen und anschließend loop{} schreiben.

  7. #7
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.791

    threads

    ... so isses.


    Gruß Dirk

  8. #8
    Gast
    Aber genau das macht er nicht

    // Thread für LCD-Ansteuerung
    thread lcd
    {
    lcdext.print("C-CONTROL ROBOT");
    lcdext.line(2);
    lcdext.print(" AKKU-LADER 2.2");
    loop {}
    }

    // Einsprungspunkt
    thread main
    {
    // Prüfen ob CCRP5 erfolgreich initialisiert wurde
    if ( Initialize ( ) == 1 )
    {
    run lcd;
    }
    }

    Vielen Dank für deine Hilfe

  9. #9
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.791

    C2

    Hallo Ronny,

    jetzt müßtest du dich erst einmal mit c2 beschäftigen (Anleitung der CC2).
    Dann sieh dir ccrp5.html an, die Hilfe zum Modul.

    Es gibt nur einen Thread main, siehe Demos oder auch das charge.c2.

    Dein Prog wird besser, wenn du lcd als function deklarierst:
    function lcd();
    {}
    (In charge.c2 wäre das wie die Funktion showCHARGING!)

    Im Hauptprogramm thread main wird die Funktion dann mit lcd(); aufgerufen.

    Probiers aus.

    Die Zeile "if ( Initialize ( ) == 1 )" verstehe ich nicht. Was soll da bewirkt werden?

    Gruß Dirk

  10. #10
    Neuer Benutzer Öfters hier
    Registriert seit
    10.01.2006
    Ort
    Erfurt
    Alter
    32
    Beiträge
    27
    Hallo Dirk,

    die Funktion Initialize () ist von mir.

    Codeschnippsel:

    // CCRP5 initialisieren
    function Initialize ( ) returns int
    {
    int result;

    result = 0;

    ccrp5.init ( ); // CCRP5 initialisieren

    // Prüfen ob die Softwareschnittstelle korrekt arbeitet
    if ( ccrp5.checkFAIL ( ) == 0 )
    {
    result = 1;
    }

    return result;
    }

    ... damit der Mainthread nicht zulang wird.

    Wenn ich keinen Thread verwende dann wird aber kein nachfolgender Befehl mehr durchlaufen. Da ja in der lcd-Funktion ein loop {} steht damit der Text nicht blinkt. Also müsste das ja irgendwie mit einem Thread zu machen sein.Oder gibt es da einen andere Möglichkeit?

    Codeschnippsel:

    // Thread für LCD-Ansteuerung
    function lcd ( )
    {
    lcdext.print("LCD Ausgabe");
    loop {};
    }

    thread main
    {
    // Prüfen ob CCRP5 erfolgreich initialisiert wurde
    if ( Initialize ( ) == 1 )
    {
    lcd ( );
    ccrp5.Lon ( 1 );
    }
    }

    Das Programm kommt durch denn Loop nicht zu dem Schritt das ccrp5.Lon ( 1 ) auszuführen.

    Vielen Dank für Eure Hilfe.
    Gruß Ronny

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

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