Der BERTL fährt vorwärts wenn einer der hinteren Knöpfe gedrückt wird und rückwärts wenn einer der vorderen gedrückt wird. Drückt man einen der Knöpfe die vorne an der Unterseite sind, dann bleibt er wieder stehen. Während der BERTL fährt, leuchten je nach Richtung die vorderen oder hinteren LEDs.

Dependencies:   mbed

main.cpp

Committer:
EliasN
Date:
2017-07-01
Revision:
0:0672b607559c

File content as of revision 0:0672b607559c:

/***********************************
name: BULME_BERTL17_automatischer_Umdreher July 1st 2017
author: Elias Nestl, einige Codesnippets von Gottfried Enenkel   HTL BULME
description:
    Der BERTL fährt vorwärts wenn einer der hinteren Knöpfe gedrückt wird und rückwärts wenn einer der vorderen gedrückt wird.
    Drückt man einen der Knöpfe die vorne an der Unterseite sind, dann bleibt er wieder stehen.
    Während der BERTL fährt, leuchten je nach Richtung die vorderen oder hinteren LEDs.

***********************************/
#include "mbed.h"

/************** DEKLARATIONEN **************/
DigitalOut Von (P2_13);                              // Motor Spannung ab BERTL15 nötig!
DigitalOut MotorL_EN(P1_19);                         // Enable
DigitalOut MotorL_FORWARD(P2_14);                    // Vorwärts
DigitalOut MotorL_REVERSE(P2_15);                    // Rückwärts

DigitalOut MotorR_EN(P2_19);                         // Die Leitung führt zum Pin PO_21 am Prozessor
DigitalOut MotorR_FORWARD(P2_21);                    // Die Leitung führt zum Pin P1_3 am Prozessor
DigitalOut MotorR_REVERSE(P2_20);

// Definition der Schalter als Eingänge
DigitalIn TA1 (P1_23);
DigitalIn TA2 (P1_24);
DigitalIn TA3 (P1_25);
DigitalIn TA4 (P1_26);
DigitalIn TA5 (P1_27);
DigitalIn TA6 (P1_28);
DigitalIn TA7 (P1_30);
DigitalIn TA8 (P1_31);

// Definition der LEDS als Ausgänge
DigitalOut LedD1 (P1_10);
DigitalOut LedD4 (P1_12);
DigitalOut LedD7 (P1_15);
DigitalOut LedD9 (P1_17);

void setforw(bool val);
void setrev(bool val);
void ledf(bool val);
void ledb(bool val);

// *************  Hauptprogramm ************
int main()
{
    Von=1;                                           // Motor Spannung ein
    wait (1.0);                                      // 1 Sekunde warten
    MotorR_EN=MotorL_EN=1;                           // Beide Motoren enablen
    LedD1=LedD4=LedD7=LedD9=1;                       // Alle LEDs aus

    while(1) {                                       // Endlosschleife
        if(TA1 == 0 || TA2 == 0 || TA3 == 0) {       // Vordere Tasten gedrückt
            setforw(0);                              // Motoren vorwärts aus
            ledf(0);                                 // Vordere LEDs aus
            ledb(1);                                 // Hintere LEDs an
            setrev(1);                               // Motoren rückwärts ein
        } else if(TA4 == 0 || TA5 == 0 || TA6 == 0) {// Hintere Tasten gedrueckt
            setrev(0);                               // Motoren rückwärts aus
            ledb(0);                                 // Hintere LEDs aus
            ledf(1);                                 // Vordere LEDs an
            setforw(1);                              // Motoren vorwärts ein
        } else if(TA7 == 0 || TA8 == 0) {
            setforw(0);                              // Motoren vorwärts aus
            ledf(0);                                 // Vordere LEDs aus
            ledb(0);                                 // Hintere LEDs aus
            setrev(0);                               // Motoren rückwärts aus
        }
    }
}

void setforw(bool val)                               // 0 = EIN, 1 = AUS
{
    MotorR_FORWARD = !val;                           // Rechter Motor vorwärts zu val
    MotorL_FORWARD = !val;                           // Linker Motor vorwärts zu val
}

void setrev(bool val)                                // 0 = EIN, 1 = AUS
{
    MotorR_REVERSE = !val;                           // Rechter Motor rückwärts zu val
    MotorL_REVERSE = !val;                           // Linker Motor rückwärts zu val
}

void ledf(bool val)                                  // Schaltet vordere LEDs zu val, 0 = EIN, 1 = AUS
{
    LedD1 = !val;
    LedD4 = !val;
}

void ledb(bool val)                                  // Schaltet hintere LEDs zu val, 0 = EIN, 1 = AUS
{
    LedD7 = !val;
    LedD9 = !val;
}

/**************     ENDE     **************/