b16 Show2

Dependencies:   mbed

Files at this revision

API Documentation at this revision

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