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.
main.cpp
00001 // B16_TEST V0.9 Alles 00002 // SHOW SOFTWARE für B16 00003 // BULME Graz, by Enenkel 26.5.2016 00004 /* 00005 */ 00006 00007 #include "mbed.h" 00008 // ******** Definitionen ********** 00009 DigitalOut Von(P2_13); // 12V on 00010 // Definition der 12 LED's 00011 DigitalOut WSLI(P1_10); //wsS links D1 00012 DigitalOut WSRE(P1_12); //wsS rechts D4 00013 DigitalOut GELIVO (P1_11); //ge links vorn D2 00014 DigitalOut GEREVO (P1_13); //ge rechts vorn D5 00015 DigitalOut GELIHI(P1_14); //ge links hinten D6 00016 DigitalOut RTLIHI(P1_15); // rt links hinbten D7 00017 DigitalOut GEREHI(P1_16); //ge rechts hinten D8 00018 DigitalOut RTREHI(P1_17); //rt rechts hinten D9 00019 00020 DigitalOut ledD10(P1_18); 00021 DigitalOut ledD11(P2_16); 00022 DigitalOut ledD12(P1_20); 00023 DigitalOut ledD13(P1_21); 00024 // LDR 00025 AnalogIn LDR(P0_14); 00026 // RGB LED 00027 DigitalOut RGB(P1_22); 00028 // Motor Steuerung Schaltung Pg 2 00029 DigitalOut MG1_EN(P2_16);// NUR DIGITAL ohne PWM ! ! ! 00030 DigitalOut MG1_F(P2_15); 00031 DigitalOut MG1_R(P2_14); 00032 DigitalOut MG2_EN(P2_19); 00033 DigitalOut MG2_F(P2_20); 00034 DigitalOut MG2_R(P2_21); 00035 //ULTRASCHALL ABSTANDSMESSER 00036 DigitalOut TRIG(P2_22); 00037 DigitalIn ECHO(P2_23); 00038 // Definition der Taster **************** Schaltplan Pg5 00039 DigitalIn TA1(P1_23); //TA1 00040 DigitalIn TA2(P1_24); // 00041 DigitalIn TA3(P1_25); // 00042 DigitalIn TA4(P1_26); // 00043 DigitalIn TA5(P1_27); // 00044 DigitalIn TA6(P1_28); // 00045 DigitalIn TA7(P1_30); // 00046 DigitalIn TA8(P1_31); // 00047 // INCREMENTGEBER *********************** Schaltplan Pg 6 00048 DigitalOut EN_INCR (P2_2); //Incrementgeber Enable 00049 DigitalIn INCR_L1 (P2_6); 00050 DigitalIn INCR_L2 (P2_7); 00051 DigitalIn INCR_R1 (P2_8); 00052 DigitalIn INCR_R2 (P2_9); 00053 // LINE SENSOR *************************** Schaltplan Pg 7 00054 DigitalOut EN_Line (P2_5); //Enable LINE Sensor 00055 DigitalIn ISO1 (P1_9); // Statt ANALOG hier DIGITAL 00056 DigitalIn ISO2 (P0_23); // nur für einfachen TEST! 00057 DigitalIn ISO3 (P0_16); 00058 DigitalIn ISO4 (P0_15); 00059 DigitalIn ISO5 (P1_3); 00060 // Blue LED ****************************** Schaltplan Pg 8 00061 DigitalOut LedBl (P1_5); 00062 00063 // WLAN fehlt 00064 // RS232 via FT232Modul fehlt 00065 00066 //******************************************************** 00067 // Konstante 00068 int t; //time const 00069 int t2; 00070 int b; //LedTest 00071 int a; //LedTest 00072 int j; 00073 00074 void LedTest(); // Testet alle LED des B16 ********** 00075 void vor(); 00076 void ret(); // Rechts Turn 90^ 00077 void retu(); 00078 void litu(); 00079 void lituf(); 00080 void retuf(); 00081 void TasterTest(); 00082 void LDRTest(); // Test für den LDR 00083 00084 void RGBTest(); // RGB Test ruft writeled und writebit 00085 void writeled(uint32_t leddata); // schreibt 3 Byte aufs LED 00086 void writeledbit(char wert); // schreibet 1 BIT aufs LED 00087 //ab hier 12V und 6V Tests 00088 void BlueTest(); // BLUE LEDS 00089 void MotorTest(); // Motor Test 00090 void testOK(); // alle Led blinken 3 mal 00091 void LineTest(); // Line Test 00092 void tu90r(); 00093 // Konstante 00094 int T1,T2,T3,T4,T5,T6,T7,T8; 00095 // ******************* HAUPTPROGRAMM ******************* 00096 int main() { 00097 t=200; // 0,2 sec 00098 t2=500; 00099 Von=1; 00100 while(t) 00101 { 00102 WSLI=WSRE=GELIVO=GEREVO=GEREHI=GELIHI=RTREHI=RTLIHI=1; 00103 ledD10=ledD11=ledD12=ledD13=1; 00104 BlueTest(); 00105 LedTest(); 00106 b=0; 00107 while (b<2) 00108 { vor(); 00109 tu90r(); 00110 vor(); 00111 tu90r(); 00112 vor(); 00113 tu90r(); 00114 vor(); 00115 tu90r(); 00116 b++; 00117 } 00118 00119 retu(); 00120 lituf(); 00121 retuf(); 00122 vor(); 00123 tu90r(); 00124 vor(); 00125 tu90r(); 00126 vor(); 00127 tu90r(); 00128 vor(); 00129 } 00130 00131 00132 } 00133 00134 //******************** Unterprogramme ******************* 00135 void tu90r() 00136 { 00137 Von=1; 00138 WSLI=WSRE=0; 00139 MG1_F=1; 00140 MG1_EN=1; 00141 GEREVO=GEREHI=0; 00142 wait (0.3); 00143 WSLI=WSRE=1; 00144 MG1_F = MG1_EN = 0; 00145 GEREVO=GEREHI=1; 00146 } 00147 00148 00149 void vor() 00150 { a=0; 00151 while (a<3) 00152 { Von=1; 00153 WSLI=WSRE=0; 00154 MG1_F=MG2_F=1; 00155 MG1_EN=MG2_EN=1; 00156 wait_ms(t); 00157 WSLI=WSRE=1; 00158 MG1_F=MG2_F=0; 00159 a++; 00160 } 00161 } 00162 00163 void ret() 00164 { a=0; 00165 while (a<3) 00166 { Von=1; 00167 WSLI=WSRE=0; 00168 RTLIHI=RTREHI=0; 00169 MG1_R=MG2_R=1; 00170 MG1_EN=MG2_EN=1; 00171 wait_ms(t); 00172 WSLI=WSRE=1; 00173 MG1_R=MG2_R=0; 00174 RTLIHI=RTREHI=1; 00175 a++; 00176 } 00177 } 00178 00179 void retu() 00180 { 00181 a=0; 00182 while (a<5) 00183 { Von=1; 00184 WSLI=WSRE=0; 00185 GEREVO=GEREHI=0; 00186 MG1_R=1; 00187 MG1_EN=1; 00188 wait (0.3); 00189 GEREVO=GEREHI=1; 00190 wait (0.3); 00191 a++; 00192 } 00193 WSLI=WSRE=1; 00194 MG1_R=MG2_R=0; 00195 00196 } 00197 00198 void lituf() 00199 { 00200 a=0; 00201 while (a<6) 00202 { Von=1; 00203 WSLI=WSRE=GELIVO=GEREVO=GEREHI=GELIHI=RTREHI=RTLIHI=0; 00204 ledD10=ledD11=ledD12=ledD13=0; 00205 MG1_F=1; 00206 MG2_R=1; 00207 MG1_EN=MG2_EN=1; 00208 wait (0.3); 00209 WSLI=WSRE=GELIVO=GEREVO=GEREHI=GELIHI=RTREHI=RTLIHI=1; 00210 ledD10=ledD11=ledD12=ledD13=1; 00211 wait (0.3); 00212 a++; 00213 } 00214 WSLI=WSRE=1; 00215 MG1_F=MG2_R=0; 00216 MG1_EN=MG2_EN=0; 00217 } 00218 00219 00220 void retuf() 00221 { 00222 a=0; 00223 while (a<6) 00224 { Von=1; 00225 WSLI=WSRE=GELIVO=GEREVO=GEREHI=GELIHI=RTREHI=RTLIHI=0; 00226 ledD10=ledD11=ledD12=ledD13=0; 00227 00228 MG1_R=1; 00229 MG2_F=1; 00230 MG1_EN=MG2_EN=1; 00231 wait (0.3); 00232 WSLI=WSRE=GELIVO=GEREVO=GEREHI=GELIHI=RTREHI=RTLIHI=1; 00233 ledD10=ledD11=ledD12=ledD13=1; 00234 wait (0.3); 00235 a++; 00236 } 00237 WSLI=WSRE=1; 00238 MG1_R=MG2_F=0; 00239 MG1_EN=MG2_EN=0; 00240 } 00241 00242 void LedTest() // Testet alle LED des B16 *************** 00243 { 00244 a=0; 00245 while(a<5) 00246 { 00247 GELIVO=0; 00248 wait_ms(t); 00249 GELIVO=1; 00250 GEREVO=0; 00251 wait_ms (t); 00252 GEREVO=1; 00253 GEREHI=0; 00254 wait_ms (t); 00255 GEREHI=1; 00256 GELIHI=0; 00257 wait_ms (t); 00258 GELIHI=1; 00259 a++; 00260 } 00261 a=0; 00262 while (a<4) 00263 { 00264 WSLI=WSRE=RTLIHI=RTREHI=0; 00265 wait (0.3); 00266 WSLI=WSRE=RTLIHI=RTREHI=1; 00267 wait (0.3); 00268 a++; 00269 } 00270 a=0; 00271 00272 while (a<4) 00273 { 00274 WSLI=0; 00275 wait (0.25); 00276 WSLI=1; 00277 WSRE=0; 00278 wait (0.25); 00279 WSRE=1; 00280 a++; 00281 } 00282 } 00283 // ********************* BLAUE LED TESTEN ************** 00284 void BlueTest() // BLAUE LED TESTEN ***** + 5V ***** 00285 { a=0; 00286 while (a<4) 00287 { 00288 LedBl=1; 00289 wait_ms(t); 00290 LedBl=0; 00291 wait_ms(t); 00292 a=a++; 00293 } 00294 LedBl=1; 00295 } 00296 00297 // ******************** Motor Test ********************** 00298 void MotorTest() // MOTOR TEST ******* + 12 V ***** 00299 { 00300 a=0; 00301 MG1_EN=MG2_EN=1; 00302 Von=1; 00303 while (a<5) 00304 { 00305 MG1_F=MG2_F=1; //vor fahren 00306 wait (1.5); 00307 MG1_F=MG2_F=0; 00308 MG1_R=MG2_R=1; //retour fahren 00309 wait (1); 00310 MG1_R=MG2_R=0; 00311 a++; 00312 } 00313 MG1_EN=MG2_EN=0; 00314 Von=0; 00315 } 00316 00317 00318 // **************** TASTER TEST ******************** 00319 00320 // **************************** RGB TEST ******************************** 00321 void RGBTest() 00322 { 00323 writeled(0x000000); // setze alle LED AUS ! 00324 writeled(0x000000); 00325 writeled(0x000000); // 00326 a=0; 00327 while(a<5) // geht 5 mal durch die Schleife ! 00328 { 00329 writeled(0xFF0000); // BLAU! 00330 wait(1); 00331 writeled(0x00FF00); // ROT ! 00332 wait (1); 00333 writeled(0x0000FF); // GRÜN ! 00334 wait(1); 00335 writeled(0x000000); // Finster 00336 wait(1); 00337 wait(1); 00338 a=a++; 00339 } 00340 } 00341 00342 void writeled(uint32_t leddata) 00343 { int i; 00344 for(i=0;i<24;i++) 00345 { 00346 // writeledbit(((leddata>>i)&0x000001)==1); //lt jan 00347 writeledbit(((leddata>>i)&0x000001)==0x000001); 00348 } 00349 } 00350 void writeledbit(char wert) // Funktion schreibe bit 00351 { 00352 int j; 00353 if(wert) 00354 { // kritische Zeiteinstellung ! 00355 // hab einiges versucht -> leuchten nicht konstant ! 00356 // bringen verschiedene Farben nicht wiederholbares Ergebnis! 00357 RGB=1; // schreibe eine 1 00358 for(j=0;j<5;j++) //war 5 00359 { 00360 __nop(); 00361 } 00362 RGB=0; 00363 for(j=0;j<1;j++) // war 1 00364 { 00365 __nop(); 00366 } 00367 } 00368 else 00369 { 00370 RGB=1; // schreiben eine 0 00371 for(j=0;j<1;j++) // war 1 00372 { 00373 __nop(); 00374 } 00375 RGB=0; 00376 for(j=0;j<5;j++) // war 5 00377 { 00378 __nop(); 00379 } 00380 } 00381 } 00382 // ****************** LINE TEST ********************** 00383 00384 /* 00385 void LineTest() 00386 { 00387 Von=1; 00388 EN_Line=1; 00389 T1=T2=T3=T4=T5=T6=T7=T8=0; 00390 a=0; 00391 while(a<4) 00392 { 00393 if (ISO1==1) 00394 { ledD2=1; 00395 T1=1; 00396 } 00397 else ledD2=0; 00398 if (ISO2==1) 00399 { ledD1=1; 00400 T2=1; 00401 } 00402 else ledD1=0; 00403 if (ISO3==1) 00404 { ledD4=1; 00405 T3=1; 00406 } 00407 else ledD4=0; 00408 if (ISO4==1) 00409 { ledD5=1; 00410 T4=1; 00411 } 00412 else ledD5=0; 00413 if (ISO5==1) 00414 { ledD6=1; 00415 ledD8=1; 00416 T5=1; 00417 } 00418 else 00419 { ledD6=0; 00420 ledD8=0; 00421 } 00422 if (T1==T2==T3==T4==T5==1) 00423 { 00424 a++; 00425 T1=T2=T3=T4=T5=T6=T7=T8=0; 00426 } 00427 00428 } 00429 testOK(); 00430 } 00431 */ 00432 00433 // ******************** ENDE ***********************
Generated on Sun Jul 31 2022 12:15:23 by
1.7.2