Gottfried Enenkel
/
B16_SHOW2
b16 Show2
main.cpp
- Committer:
- Enenkel
- Date:
- 2016-10-20
- Revision:
- 3:ca2a3ef9ab9c
- Parent:
- 2:f799412fe395
File content as of revision 3:ca2a3ef9ab9c:
// B16_TEST V0.9 Alles // SHOW SOFTWARE für B16 // BULME Graz, by Enenkel 26.5.2016 /* */ #include "mbed.h" // ******** Definitionen ********** DigitalOut Von(P2_13); // 12V on // Definition der 12 LED's DigitalOut WSLI(P1_10); //wsS links D1 DigitalOut WSRE(P1_12); //wsS rechts D4 DigitalOut GELIVO (P1_11); //ge links vorn D2 DigitalOut GEREVO (P1_13); //ge rechts vorn D5 DigitalOut GELIHI(P1_14); //ge links hinten D6 DigitalOut RTLIHI(P1_15); // rt links hinbten D7 DigitalOut GEREHI(P1_16); //ge rechts hinten D8 DigitalOut RTREHI(P1_17); //rt rechts hinten D9 DigitalOut ledD10(P1_18); DigitalOut ledD11(P2_16); DigitalOut ledD12(P1_20); DigitalOut ledD13(P1_21); // LDR AnalogIn LDR(P0_14); // RGB LED DigitalOut RGB(P1_22); // Motor Steuerung Schaltung Pg 2 DigitalOut MG1_EN(P2_16);// NUR DIGITAL ohne PWM ! ! ! DigitalOut MG1_F(P2_15); DigitalOut MG1_R(P2_14); DigitalOut MG2_EN(P2_19); DigitalOut MG2_F(P2_20); DigitalOut MG2_R(P2_21); //ULTRASCHALL ABSTANDSMESSER DigitalOut TRIG(P2_22); DigitalIn ECHO(P2_23); // Definition der Taster **************** Schaltplan Pg5 DigitalIn TA1(P1_23); //TA1 DigitalIn TA2(P1_24); // DigitalIn TA3(P1_25); // DigitalIn TA4(P1_26); // DigitalIn TA5(P1_27); // DigitalIn TA6(P1_28); // DigitalIn TA7(P1_30); // DigitalIn TA8(P1_31); // // INCREMENTGEBER *********************** Schaltplan Pg 6 DigitalOut EN_INCR (P2_2); //Incrementgeber Enable DigitalIn INCR_L1 (P2_6); DigitalIn INCR_L2 (P2_7); DigitalIn INCR_R1 (P2_8); DigitalIn INCR_R2 (P2_9); // LINE SENSOR *************************** Schaltplan Pg 7 DigitalOut EN_Line (P2_5); //Enable LINE Sensor DigitalIn ISO1 (P1_9); // Statt ANALOG hier DIGITAL DigitalIn ISO2 (P0_23); // nur für einfachen TEST! DigitalIn ISO3 (P0_16); DigitalIn ISO4 (P0_15); DigitalIn ISO5 (P1_3); // Blue LED ****************************** Schaltplan Pg 8 DigitalOut LedBl (P1_5); // WLAN fehlt // RS232 via FT232Modul fehlt //******************************************************** // Konstante int t; //time const int t2; int b; //LedTest int a; //LedTest int j; void LedTest(); // Testet alle LED des B16 ********** void vor(); void ret(); // Rechts Turn 90^ void retu(); void litu(); void lituf(); void retuf(); void TasterTest(); void LDRTest(); // Test für den LDR void RGBTest(); // RGB Test ruft writeled und writebit void writeled(uint32_t leddata); // schreibt 3 Byte aufs LED void writeledbit(char wert); // schreibet 1 BIT aufs LED //ab hier 12V und 6V Tests void BlueTest(); // BLUE LEDS void MotorTest(); // Motor Test void testOK(); // alle Led blinken 3 mal void LineTest(); // Line Test void tu90r(); // Konstante int T1,T2,T3,T4,T5,T6,T7,T8; // ******************* HAUPTPROGRAMM ******************* int main() { EN_INCR=1; LedBl=1; t=200; // 0,2 sec t2=500; Von=1; while(t) { WSLI=WSRE=GELIVO=GEREVO=GEREHI=GELIHI=RTREHI=RTLIHI=1; ledD10=ledD11=ledD12=ledD13=1; vor(); WSLI=WSRE=0; if (TA1==0) { RTLIHI=RTREHI=0; ret(); tu90r(); RTLIHI=RTREHI=1; } if (TA1==0) { RTLIHI=RTREHI=0; ret(); tu90r(); RTLIHI=RTREHI=1; } if (TA2==0) { RTLIHI=RTREHI=0; ret(); tu90r(); RTLIHI=RTREHI=1; } if (TA3==0) { RTLIHI=RTREHI=0; ret(); tu90r(); RTLIHI=RTREHI=1; } if (TA4==0) {RTLIHI=RTREHI=0; ret(); tu90r(); RTLIHI=RTREHI=1; } if (TA5==0) {RTLIHI=RTREHI=0; ret(); tu90r(); RTLIHI=RTREHI=1; } if (TA6==0) { ret(); tu90r(); RTLIHI=RTREHI=1; } if (TA7==0) {RTLIHI=RTREHI=0; ret(); tu90r(); RTLIHI=RTREHI=1; } if (TA8==0) {RTLIHI=RTREHI=0; ret(); tu90r(); RTLIHI=RTREHI=1; } } } //******************** Unterprogramme ******************* void tu90r() { Von=1; WSLI=WSRE=0; MG1_F=1; MG1_EN=1; GEREVO=GEREHI=0; wait (0.5); WSLI=WSRE=1; MG1_F = MG1_EN = 0; GEREVO=GEREHI=1; } void vor() { a=0; while (a<3) { Von=1; WSLI=WSRE=0; MG1_F=MG2_F=1; MG1_EN=MG2_EN=1; wait_ms(t); WSLI=WSRE=1; MG1_F=MG2_F=0; a++; } } void ret() { a=0; while (a<3) { Von=1; WSLI=WSRE=0; RTLIHI=RTREHI=0; MG1_R=MG2_R=1; MG1_EN=MG2_EN=1; wait_ms(t); WSLI=WSRE=1; MG1_R=MG2_R=0; RTLIHI=RTREHI=1; a++; } } void retu() { a=0; while (a<5) { Von=1; WSLI=WSRE=0; GEREVO=GEREHI=0; MG1_R=1; MG1_EN=1; wait (0.3); GEREVO=GEREHI=1; wait (0.3); a++; } WSLI=WSRE=1; MG1_R=MG2_R=0; } void lituf() { a=0; while (a<6) { Von=1; WSLI=WSRE=GELIVO=GEREVO=GEREHI=GELIHI=RTREHI=RTLIHI=0; ledD10=ledD11=ledD12=ledD13=0; MG1_F=1; MG2_R=1; MG1_EN=MG2_EN=1; wait (0.3); WSLI=WSRE=GELIVO=GEREVO=GEREHI=GELIHI=RTREHI=RTLIHI=1; ledD10=ledD11=ledD12=ledD13=1; wait (0.3); a++; } WSLI=WSRE=1; MG1_F=MG2_R=0; MG1_EN=MG2_EN=0; } void retuf() { a=0; while (a<6) { Von=1; WSLI=WSRE=GELIVO=GEREVO=GEREHI=GELIHI=RTREHI=RTLIHI=0; ledD10=ledD11=ledD12=ledD13=0; MG1_R=1; MG2_F=1; MG1_EN=MG2_EN=1; wait (0.3); WSLI=WSRE=GELIVO=GEREVO=GEREHI=GELIHI=RTREHI=RTLIHI=1; ledD10=ledD11=ledD12=ledD13=1; wait (0.3); a++; } WSLI=WSRE=1; MG1_R=MG2_F=0; MG1_EN=MG2_EN=0; } void LedTest() // Testet alle LED des B16 *************** { a=0; while(a<5) { GELIVO=0; wait_ms(t); GELIVO=1; GEREVO=0; wait_ms (t); GEREVO=1; GEREHI=0; wait_ms (t); GEREHI=1; GELIHI=0; wait_ms (t); GELIHI=1; a++; } a=0; while (a<4) { WSLI=WSRE=RTLIHI=RTREHI=0; wait (0.3); WSLI=WSRE=RTLIHI=RTREHI=1; wait (0.3); a++; } a=0; while (a<4) { WSLI=0; wait (0.25); WSLI=1; WSRE=0; wait (0.25); WSRE=1; a++; } } // ********************* BLAUE LED TESTEN ************** void BlueTest() // BLAUE LED TESTEN ***** + 5V ***** { a=0; while (a<4) { LedBl=1; wait_ms(t); LedBl=0; wait_ms(t); a=a++; } LedBl=1; } // ******************** Motor Test ********************** void MotorTest() // MOTOR TEST ******* + 12 V ***** { a=0; MG1_EN=MG2_EN=1; Von=1; while (a<5) { MG1_F=MG2_F=1; //vor fahren wait (1.5); MG1_F=MG2_F=0; MG1_R=MG2_R=1; //retour fahren wait (1); MG1_R=MG2_R=0; a++; } MG1_EN=MG2_EN=0; Von=0; } // **************** TASTER TEST ******************** // **************************** RGB TEST ******************************** void RGBTest() { writeled(0x000000); // setze alle LED AUS ! writeled(0x000000); writeled(0x000000); // a=0; while(a<5) // geht 5 mal durch die Schleife ! { writeled(0xFF0000); // BLAU! wait(1); writeled(0x00FF00); // ROT ! wait (1); writeled(0x0000FF); // GRÜN ! wait(1); writeled(0x000000); // Finster wait(1); wait(1); a=a++; } } void writeled(uint32_t leddata) { int i; for(i=0;i<24;i++) { // writeledbit(((leddata>>i)&0x000001)==1); //lt jan writeledbit(((leddata>>i)&0x000001)==0x000001); } } void writeledbit(char wert) // Funktion schreibe bit { int j; if(wert) { // kritische Zeiteinstellung ! // hab einiges versucht -> leuchten nicht konstant ! // bringen verschiedene Farben nicht wiederholbares Ergebnis! RGB=1; // schreibe eine 1 for(j=0;j<5;j++) //war 5 { __nop(); } RGB=0; for(j=0;j<1;j++) // war 1 { __nop(); } } else { RGB=1; // schreiben eine 0 for(j=0;j<1;j++) // war 1 { __nop(); } RGB=0; for(j=0;j<5;j++) // war 5 { __nop(); } } } // ******************** ENDE ***********************