Testen #2

Dependencies:   mbed

Revision:
0:1fbaaa6da00a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Mon Jan 11 11:58:37 2016 +0000
@@ -0,0 +1,96 @@
+// Kevin Heinrich, 3AHEL, 21.12.2015
+// engine-test  PWM for engines
+// BERTL14
+
+//Aufgabenstellung:
+//1)  Schreiben Sie eine Funktion void bertl_engine (int left, int right);
+//    Wobei die Variablen left bzw. right den linken bzw. rechten engine ansteuern
+//    und Werte von -255 bis +255 einnehmen koennen.Der Wert 0 bedeutet ausgeschaltet.
+//    Ein positiver Wert bedeutet vorwaerts, negativer Wert rueckwaerts.
+    
+//2)  Schreiben Sie eine Funktion bertl_engine_test()zum Testen der Funktion bertl_engine().
+//    Dreht sich das richtige Rad in die richtige Richtung?
+    
+//3)  Verwenden Sie die Funktion bertl_engine() um den BERTL einen 8er fahren zu lassen.
+
+//Anmerkung:
+
+//Ich konnte leider den letzten Teil(8 Fahrt Rueckwaerts) selber nicht mehr testen. Mein BERTL hat Hardwaretechnische
+//Probleme. Er laesst sich nicht mehr ueber PWM ansteuern. Außerdem funktioniert das andere Programm mit den LEDs auch nicht mehr.
+//Ich werde nach den Ferien versuchen, das Problem zu beheben.
+
+#include <mbed.h>
+//#include "bertl.h"
+
+DigitalOut engineLR(P1_0);     //IN1, EP10, MG1A => MG1 engine-Pin 2, left_Reverse
+DigitalOut engineLF(P1_1);     //IN2, EP11, MG1B => MG1 engine-Pin 1, left_Forward
+PwmOut engineLEN(p34);       //EN1, P34, left_ENABLE
+DigitalOut engineRR(P1_4);    //IN4, EP13, MG2A => MG2 engine-Pin 2, right_Reverse
+DigitalOut engineRF(P1_3);    //IN3, EP14, MG2B => MG2 engine-Pin 1, right_Forward
+PwmOut engineREN(p36);      //EN2, P36, right_ENABLE
+
+void bertl_engine(int left, int right)
+{  
+    // If the left engines-value is greater than 0, the left engine turn FORWARD
+    if(left > 0)
+    {
+        engineLF=1;
+        engineLR=0;
+    }
+    // Or if the left engines-value is less than 0, the left engine turn REVERSE
+    else if(left < 0)
+    {
+        engineLF=0;
+        engineLR=1;
+        left = left * (-1);         // For PWM the Value have to be positive
+    }
+    // If the right engines-value is greater than 0, the right engine turn FORWARD
+    if(right > 0)
+    {
+        engineRF=1;  
+        engineRR=0;
+    }
+    // Or if the right engines-value is less than 0, the right engine turn REVERSE
+    else if(right < 0)
+    {
+        engineRF=0;
+        engineRR=1;
+        right = right * (-1);       // For PWM the Value have to be positive
+    }
+    // Or if the right- or/and the left engines value equals 0, the ENABLE-Pin turn off (ENABLE Pin equals 0)
+    engineLEN=(left/255);      // PWM Value : 0 ... 1
+    engineREN=(right/255);    // PWM Value : 0 ... 1
+}
+/*Begin Testing bertl-engines
+void bertl_engine_test()
+{
+    bertl_engine(100, 0);     //The left engine must turn FORWARD for 2 seconds
+    wait(2);
+    bertl_engine(0, 100);     //The right engine must turn FORWARD for 2 seconds
+    wait(2);
+    bertl_engine(-100, 0);    //The left engine must turn REVERSE for 2 seconds
+    wait(2);
+    bertl_engine(0, -100);    //The right engine must turn REVERSE for 2 seconds
+    wait(2);
+}
+*/
+//End Testing bertl-engines
+int main() 
+{
+    //bertl_engine_test();    // Test the engines 
+    while(1) 
+    {     
+        //BEGIN "Drive the Number 8: FORWARD"
+        bertl_engine(255, 50);
+        wait_ms(4900);
+        bertl_engine(50, 255);
+        wait_ms(4900);
+        //END "Drive the Number 8: FORWARD"
+        //BEGIN "Drive the Number 8: REVERSE"
+        //bertl_engine(-255, -50);
+        //wait_ms(4900);
+        //bertl_engine(-50, -255);
+        //wait_ms(4900);
+        //END "Drive the Number 8: REVERSE"
+    }
+}