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

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 /***********************************
00002 name: BULME_BERTL17_automatischer_Umdreher July 1st 2017
00003 author: Elias Nestl, einige Codesnippets von Gottfried Enenkel   HTL BULME
00004 description:
00005     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.
00006     Drückt man einen der Knöpfe die vorne an der Unterseite sind, dann bleibt er wieder stehen.
00007     Während der BERTL fährt, leuchten je nach Richtung die vorderen oder hinteren LEDs.
00008 
00009 ***********************************/
00010 #include "mbed.h"
00011 
00012 /************** DEKLARATIONEN **************/
00013 DigitalOut Von (P2_13);                              // Motor Spannung ab BERTL15 nötig!
00014 DigitalOut MotorL_EN(P1_19);                         // Enable
00015 DigitalOut MotorL_FORWARD(P2_14);                    // Vorwärts
00016 DigitalOut MotorL_REVERSE(P2_15);                    // Rückwärts
00017 
00018 DigitalOut MotorR_EN(P2_19);                         // Die Leitung führt zum Pin PO_21 am Prozessor
00019 DigitalOut MotorR_FORWARD(P2_21);                    // Die Leitung führt zum Pin P1_3 am Prozessor
00020 DigitalOut MotorR_REVERSE(P2_20);
00021 
00022 // Definition der Schalter als Eingänge
00023 DigitalIn TA1 (P1_23);
00024 DigitalIn TA2 (P1_24);
00025 DigitalIn TA3 (P1_25);
00026 DigitalIn TA4 (P1_26);
00027 DigitalIn TA5 (P1_27);
00028 DigitalIn TA6 (P1_28);
00029 DigitalIn TA7 (P1_30);
00030 DigitalIn TA8 (P1_31);
00031 
00032 // Definition der LEDS als Ausgänge
00033 DigitalOut LedD1 (P1_10);
00034 DigitalOut LedD4 (P1_12);
00035 DigitalOut LedD7 (P1_15);
00036 DigitalOut LedD9 (P1_17);
00037 
00038 void setforw(bool val);
00039 void setrev(bool val);
00040 void ledf(bool val);
00041 void ledb(bool val);
00042 
00043 // *************  Hauptprogramm ************
00044 int main()
00045 {
00046     Von=1;                                           // Motor Spannung ein
00047     wait (1.0);                                      // 1 Sekunde warten
00048     MotorR_EN=MotorL_EN=1;                           // Beide Motoren enablen
00049     LedD1=LedD4=LedD7=LedD9=1;                       // Alle LEDs aus
00050 
00051     while(1) {                                       // Endlosschleife
00052         if(TA1 == 0 || TA2 == 0 || TA3 == 0) {       // Vordere Tasten gedrückt
00053             setforw(0);                              // Motoren vorwärts aus
00054             ledf(0);                                 // Vordere LEDs aus
00055             ledb(1);                                 // Hintere LEDs an
00056             setrev(1);                               // Motoren rückwärts ein
00057         } else if(TA4 == 0 || TA5 == 0 || TA6 == 0) {// Hintere Tasten gedrueckt
00058             setrev(0);                               // Motoren rückwärts aus
00059             ledb(0);                                 // Hintere LEDs aus
00060             ledf(1);                                 // Vordere LEDs an
00061             setforw(1);                              // Motoren vorwärts ein
00062         } else if(TA7 == 0 || TA8 == 0) {
00063             setforw(0);                              // Motoren vorwärts aus
00064             ledf(0);                                 // Vordere LEDs aus
00065             ledb(0);                                 // Hintere LEDs aus
00066             setrev(0);                               // Motoren rückwärts aus
00067         }
00068     }
00069 }
00070 
00071 void setforw(bool val)                               // 0 = EIN, 1 = AUS
00072 {
00073     MotorR_FORWARD = !val;                           // Rechter Motor vorwärts zu val
00074     MotorL_FORWARD = !val;                           // Linker Motor vorwärts zu val
00075 }
00076 
00077 void setrev(bool val)                                // 0 = EIN, 1 = AUS
00078 {
00079     MotorR_REVERSE = !val;                           // Rechter Motor rückwärts zu val
00080     MotorL_REVERSE = !val;                           // Linker Motor rückwärts zu val
00081 }
00082 
00083 void ledf(bool val)                                  // Schaltet vordere LEDs zu val, 0 = EIN, 1 = AUS
00084 {
00085     LedD1 = !val;
00086     LedD4 = !val;
00087 }
00088 
00089 void ledb(bool val)                                  // Schaltet hintere LEDs zu val, 0 = EIN, 1 = AUS
00090 {
00091     LedD7 = !val;
00092     LedD9 = !val;
00093 }
00094 
00095 /**************     ENDE     **************/