Damian Herman / Mbed 2 deprecated NetrunnerMain

Dependencies:   mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers EngineDriver.h Source File

EngineDriver.h

00001 #ifndef DRIVER_H
00002 #define DRIVER_H
00003 #include "mbed.h"
00004 #include "SerialPrompt.h"
00005 DigitalOut en1(D2);
00006 DigitalOut en2(D4);
00007 DigitalOut in1(D3);
00008 DigitalOut in2(D5);
00009 DigitalOut in3(D6);
00010 DigitalOut in4(D7);
00011 DigitalIn enableAllButton(USER_BUTTON);
00012 int inState[4] = {0,0,0,0};
00013 bool canDrive = true;
00014 int buttonClicks = 0;
00015 void applyStates()
00016 {
00017         in1 = inState[0];
00018         in2 = inState[1];
00019         in3 = inState[2];
00020         in4 = inState[3];
00021 }
00022 void resetEngines()
00023 {
00024     for(int i = 0; i < 4; ++i)
00025     {
00026         inState[i] = 0;
00027     }
00028     applyStates();
00029 }
00030 void forward()
00031 {
00032     resetEngines();
00033     inState[0] = 0;
00034     inState[1] = 1;
00035     inState[2] = 0;
00036     inState[3] = 1;
00037     applyStates();
00038 }
00039 void testEngines()
00040 {
00041     int i = 0;
00042     while(i < 4)
00043     {
00044         if(i % 2 == 0)
00045         {
00046             inState[i] = 1;
00047         }
00048         i++;
00049     }
00050     applyStates();
00051     wait(5);
00052     resetEngines();
00053     int j = 0;
00054     while(j < 4)
00055     {
00056         if(j % 2 != 0)
00057         {
00058             inState[j] = 1;
00059         }
00060         j++;
00061     }
00062     applyStates();
00063     wait(5);
00064     resetEngines();
00065 }
00066 void checkEnableButtonState()
00067 {
00068     if(enableAllButton == 0)
00069     {
00070         buttonClicks++;
00071         while(enableAllButton == 0);
00072         return;
00073     }
00074      if(buttonClicks == 1)
00075         {
00076             canDrive = false;
00077             resetEngines();
00078             return;
00079         }else if(buttonClicks == 2)
00080         {
00081             canDrive = true;
00082             applyStates();
00083             return;
00084         }else
00085         {
00086             buttonClicks = 0;
00087             return;
00088         }
00089 
00090 }
00091 void enableAll()
00092 {
00093     en1 = 1;
00094     en2 = 1;
00095 }
00096 void enableOne(int which)
00097 {
00098     if(which == 0)
00099     {
00100         en1 = 1;
00101     }else if(which == 1)
00102     {
00103         en2 = 1;
00104     }
00105 }
00106 void disableAll()
00107 {
00108     en1 = 0;
00109     en2 = 0;
00110 }
00111 void disableOne(int which)
00112 {
00113     if(which == 0)
00114     {
00115         en1 = 0;
00116     }else if(which == 1)
00117     {
00118         en2 = 0;
00119     } 
00120 }
00121 #endif //DRIVER_H