Schaltet die LINE Sensoren ein -> die Sensoren sind auf LED gelegt. Durch anheben bzw am Tisch aufsetzen können die LED geschalten werden. Kannst auch mit dem Finger über die LINE Sensoren fahren. Durch drehen der MONTIERTEN Räder blinken die 4 INCREMENT LED's

Dependencies:   mbed

Revision:
1:d646fe79bc6c
Parent:
0:a8a0195ed7dc
Child:
2:90c675f0505a
--- a/main.cpp	Mon Jan 26 21:46:32 2015 +0000
+++ b/main.cpp	Sun May 31 16:34:40 2015 +0000
@@ -1,15 +1,26 @@
 /***********************************
-name:   BERTL14_I2C_TEST
-author: Enenkel modifizert von  Wolfgang Raimann
+name:   BERTL15_LINE SENSOR_TEST
+author: Enenkel 
 description:
     Die Taster vom I2C Expander werden direkt auf die LED's des Expander geschalten
 ***********************************/
- 
 #include "mbed.h"
+
+DigitalOut Von (P1_2);    // Motor Spannung ON 
+DigitalOut LineON (P1_16);// Line Sensor aktivieren
+DigitalIn OSI1 (P0_14);   // OSI1
+DigitalIn OSI2 (P0_12);
+DigitalIn OSI3 (P0_16);
+DigitalIn OSI4 (P0_13);
+DigitalIn OSI5 (P0_22);   // OSI5
 I2C i2c(p28, p27);        // die Adressen des I2C Busses am uP 
                           // p28 -> SDA
                           // p27 -> SCL 
+                        
+char anzeige;                          
+                          
 int main() {
+    anzeige = 0x00;       // Anzeige der LED's 
     char btn = 0;
     //     ****  Config PCA9555 I0 as output *******
     i2c.start();
@@ -20,24 +31,46 @@
     i2c.stop();    
     
     while(1) {
+        anzeige = 0x00;        // Anzeige LED'y auf 0 setzen
         // Einlesen der Taster und speichern unter btn
         i2c.start();
-                            /* Das letzte Bit der Adresse entscheidet 
+                               /* Das letzte Bit der Adresse entscheidet 
                                ob geschrieben oder gelesen wird. 
                                0 => schreiben;   1 => lesen  */
-        i2c.write(0x40);    //Adresse & schreiben   0100 0000 
-        i2c.write(0x01);    //aktivate Port 1        
+        i2c.write(0x40);       //Adresse & schreiben   0100 0000 
+        i2c.write(0x01);       //aktivate Port 1        
        
         i2c.start();
-          i2c.write(0x41);  // Adresse & LESEN    0100 0001  
-          btn = i2c.read(0);// Einlesen des Ports 1 und speichern unter btn
+          i2c.write(0x41);     // Adresse & LESEN    0100 0001  
+          btn = i2c.read(0);   // Einlesen des Ports 1 und speichern unter btn
         i2c.stop();
-        
+        // Auswertung der LINE SENSOREN
+        if (OSI1 == 1 )        // Line Sensor ganz LINKS
+           {
+              anzeige = anzeige & 0x80; 
+           }          
+        if (OSI2 == 1)         // Line Sensor LINKS
+           {
+              anzeige = anzeige & 0x40; 
+           }                 
+        if (OSI3 == 1)         // Line Sensor RECHTS
+           {
+              anzeige = anzeige & 0x20;
+           }
+        if (OSI4 == 1)         // Line Sensor ganz RECHT
+           {
+              anzeige = anzeige & 0x08;    
+           }   
+        if (OSI5 == 1)         // Line Sensor MITTE
+           {
+              anzeige = anzeige & 0x40;    
+           }  
+           
         // Schreiben auf Port 0 und damit auf die LED's
         i2c.start();
-          i2c.write(0x40);  // Adresse & schreiben
-          i2c.write(0x02);  // 
-          i2c.write(~btn);  // schriebn auf Port 0 den INVERSEN Wert von btn
+          i2c.write(0x40);      // Adresse & schreiben
+          i2c.write(0x02);      // 
+          i2c.write(~anzeige);  // schriebn auf Port 0 den INVERSEN Wert von btn
         i2c.stop();
     }
 }