Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
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
Generated on Sat Jul 23 2022 13:11:59 by
1.7.2