kramann.info
© Guido Kramann

Login: Passwort:










7.1.4.10 Test des Vehikels mit Motoren
  • Mit dem Programm im ersten Projekt, kann der Antrieb durch Drücken der Taster auf Vorwärtsfahrt oder Rückwärtsfahrt geschaltet werden:
Hier kann das Projekt 5a heruntergeladen werden ( 007protoneu_motortest.zip ).
  • Beim folgenden Programm fährt das Vehikel autonom und weicht Hindernissen aus:
Hier kann das Projekt 5b heruntergeladen werden ( 101protoneu_ausweichen.zip ).
  • Mit dem nun folgenden Programm verfolgt das Vehikel eine Linie (schwarzer Klebestreifen / Isolierband auf hellem Grund, z.B. Tischplatte):
Hier kann das Projekt 5c heruntergeladen werden ( 102protoneu_linienfahrt_diskret.zip ).
  • Im letzten Programm erfolgt das Linienverfolgen über einen PID-Regler und ist mit dem Ausweichen kombiniert:
Hier kann das Projekt 5d heruntergeladen werden ( 105protoneu_linien_ausweichen.zip ).

Gesonderte Auflistung der Befehle des Anwendungsprogramms aus muecb.c in 007protoneu_motortest.zip (Test 5a)

//****************************** Anwenderprogramme **************************************
//Programmbeschreibung: Alle Motoren laufen vorwärts und LED leuchtet, wenn Taster 1 gedrückt.
//                      Alle Motoren laufen rückwärts und LED leuchtet nicht, wenn Taster 2 gedrückt.
//Hinweis: Sollte eine oder beide Motorseiten in einer oder beiden Richtungen nicht funktionieren, sofort ausschalten wg. Kurzschluß!
//         Denn dann ist wahrscheinlich eine Strombrücke zwischen den Motorleiterbahnen und der Masse oder der Versorgungsspannung beim Löten entstanden.
//         Untersuchen Sie die Leiterplatine mit Hilfe der Augenklemmlupe und verbessern Sie ggf. die defekte Lötstelle.
    while(true)
    {
        if(taster.taster1_gedrueckt())
        {
            lampe.ein();
            antrieb.rechts_vor();
            antrieb.links_vor();
        }
        else if(taster.taster2_gedrueckt())
        {
            lampe.aus();
            antrieb.rechts_rueck();
            antrieb.links_rueck();
        }
        else
        {
            lampe.aus();
            antrieb.rechts_stop();
            antrieb.links_stop();
        }
		
    }
//****************************** ENDE Anwenderprogramme *********************************
 

Code 7.1.4.10-1: Anwendungsprogramm aus muecb.c in 007protoneu_motortest.zip (Test 5a).

Aufgaben
  • Sumo-Ringen: Schreiben Sie ein Programm, bei dem sich das Vehikel ständig dreht und sich auf ein Hindernis zu bewegt, das durch den Frontalsensor erkannt wird.
  • Sumo-Ringen2: Der "Sumo-Ringer" soll aber in jedem Fall innerhalb eines mit schwarzem Klebeband markierten Kreises bleiben.

Gesonderte Auflistung der Befehle des Anwendungsprogramms aus muecb.c in 101protoneu_ausweichen.zip (Test 5b)

//****************************** Anwenderprogramme **************************************
//Programmbeschreibung: Warte, solange Taster 1 noch nicht gedrückt wurde.
    while(!taster.taster1_gedrueckt());

//Programmbeschreibung: Anwendungsprogramm, wenn kein Hindernis, fahre geradeaus, sonst drehe rechts herum.
    while(true)
    {
            if(frontsensor.objekt_vorhanden())
            {
                lampe.ein();
                antrieb.rechts_vor();
                antrieb.links_rueck();
            }
            else
            {
                lampe.aus();
                antrieb.rechts_vor();
                antrieb.links_vor();
            }
    }
//****************************** ENDE Anwenderprogramme *********************************
 

Code 7.1.4.10-1: Anwendungsprogramm aus muecb.c in 101protoneu_ausweichen.zip (Test 5b).

Aufgaben
  • Testen Sie, ob das Vehikel an allen Hindernissen vorbeikommt. Sorgen Sie ev. dafür, dass die Phase des Wegdrehens von einem Hindernis verlängert wird.

Gesonderte Auflistung der Befehle des Anwendungsprogramms aus muecb.c in 102protoneu_linienfahrt_diskret.zip (Test 5c)

//****************************** Anwenderprogramme **************************************
//Programmbeschreibung: Warte, solange Taster 1 noch nicht gedrückt wurde.
    while(!taster.taster1_gedrueckt());

//Programmbeschreibung: Wenn Helligkeits wert <50 drehe links, >50 drehe rechts, sonst geradeaus.
    while(true)
    {
        adw.waehlePinHigh(36);
        x = adw.holeGemitteltenWertHigh();

        if(x<50) //Linkskurve
        {
            antrieb.rechts_vor();
            antrieb.links_stop();
        }
        else if(x>50) //Rechtskurve
        {
            antrieb.rechts_stop();
            antrieb.links_vor();
        }
        else
        {
            antrieb.rechts_vor();
            antrieb.links_vor();
        }
    }
//****************************** ENDE Anwenderprogramme *********************************
 

Code 7.1.4.10-1: Anwendungsprogramm aus muecb.c in 102protoneu_linienfahrt_diskret.zip (Test 5c).

Aufgaben
  • Versuchen Sie das Programm so zu verbessern, dass die Linienverfolgung schneller von statten geht.