Gottfried Enenkel
/
B16_SHOW2
b16 Show2
Revision 3:ca2a3ef9ab9c, committed 2016-10-20
- Comitter:
- Enenkel
- Date:
- Thu Oct 20 11:05:14 2016 +0000
- Parent:
- 2:f799412fe395
- Commit message:
- b16 Show2
Changed in this revision
LM75B.lib | Show diff for this revision Revisions of this file |
main.cpp | Show annotated file Show diff for this revision Revisions of this file |
diff -r f799412fe395 -r ca2a3ef9ab9c LM75B.lib --- a/LM75B.lib Wed Jan 13 08:25:45 2016 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1 +0,0 @@ -http://mbed.org/users/neilt6/code/LM75B/#7ac462ba84ac
diff -r f799412fe395 -r ca2a3ef9ab9c main.cpp --- a/main.cpp Wed Jan 13 08:25:45 2016 +0000 +++ b/main.cpp Thu Oct 20 11:05:14 2016 +0000 @@ -1,213 +1,421 @@ -// HIMBED _TEST1_V2 -// Diese Software testet die verschiedenen Funktionen des M0 Boards -// BULME Graz, by Enenkel 26.12.2015 -/* zuerst __ RGB TEST; dann ___ D1 bis D13 2x getestet - __ Taster Testen ___ LDR Testen - __ FTDI TEST (mit RES) ___ POTI Test - __ TEMP Test --- fehlt nur noch UHR und RAM */ +// B16_TEST V0.9 Alles +// SHOW SOFTWARE für B16 +// BULME Graz, by Enenkel 26.5.2016 +/* + */ #include "mbed.h" -#include "LM75B.h" // ******** Definitionen ********** -Serial pc(USBTX, USBRX); +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 -// Definition der Taster (Switches) -DigitalIn sw1(P0_10); //SW1 -DigitalIn sw2(P0_15); //SW2 -> sein IO Pin ist laut Schaltplan der P0_15 -DigitalIn sw3(P0_23); //SW3 -DigitalIn sw4(P1_16); //SW4 +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 -// Definition der 12 LED's -DigitalOut ledD1(P1_8); -DigitalOut ledD2(P1_9); -DigitalOut ledD3(P1_10); -DigitalOut ledD4(P1_11); -DigitalOut ledD13(P1_0); -DigitalOut ledD14(P1_1); -DigitalOut ledD15(P1_3); -DigitalOut ledD16(P1_4); -DigitalOut ledD17(P1_6); -DigitalOut ledD18(P1_7); -DigitalOut ledD19(P1_12); -DigitalOut ledD20(P1_13); +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; + } + + + } + + +} -// RGB LED -DigitalOut ledGR(P0_9); // grüne LED wenn es anders ist bitte mir melden ! ! ! -DigitalOut ledBL(P1_15); // blaue LED -DigitalOut ledRT(P0_21); // rote LED -// LDR Input -AnalogIn LDR(P0_12); // Analoges einlesen des LDR -AnalogIn POTI (P0_11); // Analog in des POTI -//Create an LM75B object at the default address (ADDRESS_0) -LM75B sensor(p28, p27); //i²C Sensor Leitungen - -int b; // Wert für POTI -int a; +//******************** 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; +} -// ********** Hauptprogramm ************** -int main() +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() { -// char readChar = 0; - pc.printf("Welcome to HIMBED TEST V2 \n\r"); - wait (2); + 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; +} + -/******************** RGB & LED TEST *********************/ -/***********************************************************/ - pc.printf("RGB TEST WEIS - ROT GRUN BLAU\n\r"); - ledGR = 0; // Alle RGB LED EIN - ledBL = 0; - ledRT = 0; - wait(2); // Warte 1 sec. - - ledRT = 0; // Rote LED einschalten -> INVERSE LOGIG ! - ledGR = 1; // andere LED ausschalten - ledBL = 1; // (nicht nötig, da sie schon AUS sind !) - wait(1); - - ledRT = 1; // Alle LED ausschalten -> INVERSE LOGIG ! - ledGR = 0; // Grüne LED = EIN - ledBL = 1; - wait(1); - - ledRT = 1; // Alle LED ausschalten -> INVERSE LOGIG ! - ledGR = 1; - ledBL = 0; // Blaue LED = EIN - wait(1); - - ledRT = 1; // Alle LED ausschalten -> INVERSE LOGIG ! - ledGR = 1; - ledBL = 1; - wait(0.1); - /********************* 2x Lauflicht der LEDS *************/ - pc.printf("LAUFLICHT UBER 12 LED \n\r"); - a=1; - while (a<3) { - ledD1=1; - wait(0.5); - ledD1=0; - ledD2=1; - wait (0.2); - ledD2=0; - ledD3=1; - wait (0.2); - ledD3=0; - ledD4=1; - wait (0.2); - ledD4=0; - ledD13=1; - wait (0.2); - ledD13=0; - ledD14=1; - wait (0.2); - ledD14=0; - ledD15=1; - wait (0.2); - ledD15=0; - ledD16=1; - wait (0.2); - ledD16=0; - ledD17=1; - wait (0.2); - ledD17=0; - ledD18=1; - wait (0.2); - ledD18=0; - ledD19=1; - wait (0.2); - ledD19=0; - ledD20=1; - wait (0.2); - ledD20=0; - a=a++; - } - +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 ******************** - pc.printf("TASTER und LDR TEST\n\r"); - pc.printf(" für POTI TEST drücke sw1 & sw2 \n\r"); - pc.printf(" -- POTI von 0-1 regelbar !\n\r"); - while(1) { - if (sw4==1) // SW4 (die Taste1) gedrückt ist, dann: - ledD1=1; - else { - ledD1=0; // LED1 off - } - wait (0.001); // Pause von 0,1 sec vor nächster Abfrage. - - if (sw3==1) - ledD2=1; - else { // beginn der ELSE Bedingung... wenn die Taste NICHT gedrückt ist - ledD2=0; - } - wait (0.001); - if (sw2==1) //IF .... ELSE ... - ledD4=1; - else { // beginn der ELSE Bedingung... wenn die Taste NICHT gedrückt ist - ledD4=0; } - wait (0.001); - - if (sw1==1) //IF .... ELSE ... - ledD3=1; // LED1 on - else { // beginn der ELSE Bedingung... wenn die Taste NICHT gedrückt ist - ledD3=0; - } // } beendet die Anweisungen für die else - Bedingungen - wait (0.001); // Pause von 0,1 sec vor nächster Abfrage. - -/*************** LDR TEST *******************************/ - if(LDR <= 0.2) - ledD1=1; - else - ledD1=0; - - if(LDR <= 0.07) // Ab einer Lichtstärke von 0.15 oder kleiner - ledD4 = 1; // Ist die LED D1 EIN - else - ledD4 = 0; - - if (LDR <= 0.1) - ledD3=1; - else - ledD3=0; - - if (LDR <= 0.15) - ledD2=1; - else - ledD2=0; - - wait (0.01); - -/*********** POTI - TEST ***********/ -// Printet den Wert des POTI auf den CRT -// Poti Wert verändern, Ändert Wert - if (sw1==1) { - if (sw2==1) { - printf ("POTI = %.3f \n\r",(float)POTI); - wait(2); - } - } -// LM75B Temperatur auslesen und anzeigen -// Finger auf den BIM und Wert ändert sich - if (sw2==1) { - if (sw3==1) { - pc.printf ("Temp = %.3f \n\r",(float)sensor); - // pc.printf ("Temp= %.3f \n\r",LM75B_Temp); - - wait(2); - } - } - - - /* readChar = pc.getc(); - if(readChar >= 65 && readChar <= 90){ // Großbuchstaben in Kleinbuchstaben umwandeln - pc.putc(readChar + 32); - } else if(readChar >= 97 && readChar <= 122){ // Kleinbuchstaben in Großbuchstaben umwandeln - pc.putc(readChar - 32); - } else { // Sonst schicke was gekommen ist - pc.putc(readChar); - } - */ - + +// **************************** 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 ***********************/ \ No newline at end of file + + +// ******************** ENDE *********************** \ No newline at end of file