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

Committer:
Enenkel
Date:
Sun May 31 16:34:40 2015 +0000
Revision:
1:d646fe79bc6c
Parent:
0:a8a0195ed7dc
Child:
2:90c675f0505a
B15 Line Sensor Test

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Enenkel 0:a8a0195ed7dc 1 /***********************************
Enenkel 1:d646fe79bc6c 2 name: BERTL15_LINE SENSOR_TEST
Enenkel 1:d646fe79bc6c 3 author: Enenkel
Enenkel 0:a8a0195ed7dc 4 description:
Enenkel 0:a8a0195ed7dc 5 Die Taster vom I2C Expander werden direkt auf die LED's des Expander geschalten
Enenkel 0:a8a0195ed7dc 6 ***********************************/
Enenkel 0:a8a0195ed7dc 7 #include "mbed.h"
Enenkel 1:d646fe79bc6c 8
Enenkel 1:d646fe79bc6c 9 DigitalOut Von (P1_2); // Motor Spannung ON
Enenkel 1:d646fe79bc6c 10 DigitalOut LineON (P1_16);// Line Sensor aktivieren
Enenkel 1:d646fe79bc6c 11 DigitalIn OSI1 (P0_14); // OSI1
Enenkel 1:d646fe79bc6c 12 DigitalIn OSI2 (P0_12);
Enenkel 1:d646fe79bc6c 13 DigitalIn OSI3 (P0_16);
Enenkel 1:d646fe79bc6c 14 DigitalIn OSI4 (P0_13);
Enenkel 1:d646fe79bc6c 15 DigitalIn OSI5 (P0_22); // OSI5
Enenkel 0:a8a0195ed7dc 16 I2C i2c(p28, p27); // die Adressen des I2C Busses am uP
Enenkel 0:a8a0195ed7dc 17 // p28 -> SDA
Enenkel 0:a8a0195ed7dc 18 // p27 -> SCL
Enenkel 1:d646fe79bc6c 19
Enenkel 1:d646fe79bc6c 20 char anzeige;
Enenkel 1:d646fe79bc6c 21
Enenkel 0:a8a0195ed7dc 22 int main() {
Enenkel 1:d646fe79bc6c 23 anzeige = 0x00; // Anzeige der LED's
Enenkel 0:a8a0195ed7dc 24 char btn = 0;
Enenkel 0:a8a0195ed7dc 25 // **** Config PCA9555 I0 as output *******
Enenkel 0:a8a0195ed7dc 26 i2c.start();
Enenkel 0:a8a0195ed7dc 27 i2c.write(0x40); // Adresse des PCA9555 = 40
Enenkel 0:a8a0195ed7dc 28 // das letzte Bit = 0 -> schreiben 0040 0000
Enenkel 0:a8a0195ed7dc 29 i2c.write(0x06); // Befehl für das IO Port 0 -> siehe SCHEMA des PCA9555
Enenkel 0:a8a0195ed7dc 30 i2c.write(0x00); // Schalte alle Pins des Ports als OUTPUT
Enenkel 0:a8a0195ed7dc 31 i2c.stop();
Enenkel 0:a8a0195ed7dc 32
Enenkel 0:a8a0195ed7dc 33 while(1) {
Enenkel 1:d646fe79bc6c 34 anzeige = 0x00; // Anzeige LED'y auf 0 setzen
Enenkel 0:a8a0195ed7dc 35 // Einlesen der Taster und speichern unter btn
Enenkel 0:a8a0195ed7dc 36 i2c.start();
Enenkel 1:d646fe79bc6c 37 /* Das letzte Bit der Adresse entscheidet
Enenkel 0:a8a0195ed7dc 38 ob geschrieben oder gelesen wird.
Enenkel 0:a8a0195ed7dc 39 0 => schreiben; 1 => lesen */
Enenkel 1:d646fe79bc6c 40 i2c.write(0x40); //Adresse & schreiben 0100 0000
Enenkel 1:d646fe79bc6c 41 i2c.write(0x01); //aktivate Port 1
Enenkel 0:a8a0195ed7dc 42
Enenkel 0:a8a0195ed7dc 43 i2c.start();
Enenkel 1:d646fe79bc6c 44 i2c.write(0x41); // Adresse & LESEN 0100 0001
Enenkel 1:d646fe79bc6c 45 btn = i2c.read(0); // Einlesen des Ports 1 und speichern unter btn
Enenkel 0:a8a0195ed7dc 46 i2c.stop();
Enenkel 1:d646fe79bc6c 47 // Auswertung der LINE SENSOREN
Enenkel 1:d646fe79bc6c 48 if (OSI1 == 1 ) // Line Sensor ganz LINKS
Enenkel 1:d646fe79bc6c 49 {
Enenkel 1:d646fe79bc6c 50 anzeige = anzeige & 0x80;
Enenkel 1:d646fe79bc6c 51 }
Enenkel 1:d646fe79bc6c 52 if (OSI2 == 1) // Line Sensor LINKS
Enenkel 1:d646fe79bc6c 53 {
Enenkel 1:d646fe79bc6c 54 anzeige = anzeige & 0x40;
Enenkel 1:d646fe79bc6c 55 }
Enenkel 1:d646fe79bc6c 56 if (OSI3 == 1) // Line Sensor RECHTS
Enenkel 1:d646fe79bc6c 57 {
Enenkel 1:d646fe79bc6c 58 anzeige = anzeige & 0x20;
Enenkel 1:d646fe79bc6c 59 }
Enenkel 1:d646fe79bc6c 60 if (OSI4 == 1) // Line Sensor ganz RECHT
Enenkel 1:d646fe79bc6c 61 {
Enenkel 1:d646fe79bc6c 62 anzeige = anzeige & 0x08;
Enenkel 1:d646fe79bc6c 63 }
Enenkel 1:d646fe79bc6c 64 if (OSI5 == 1) // Line Sensor MITTE
Enenkel 1:d646fe79bc6c 65 {
Enenkel 1:d646fe79bc6c 66 anzeige = anzeige & 0x40;
Enenkel 1:d646fe79bc6c 67 }
Enenkel 1:d646fe79bc6c 68
Enenkel 0:a8a0195ed7dc 69 // Schreiben auf Port 0 und damit auf die LED's
Enenkel 0:a8a0195ed7dc 70 i2c.start();
Enenkel 1:d646fe79bc6c 71 i2c.write(0x40); // Adresse & schreiben
Enenkel 1:d646fe79bc6c 72 i2c.write(0x02); //
Enenkel 1:d646fe79bc6c 73 i2c.write(~anzeige); // schriebn auf Port 0 den INVERSEN Wert von btn
Enenkel 0:a8a0195ed7dc 74 i2c.stop();
Enenkel 0:a8a0195ed7dc 75 }
Enenkel 0:a8a0195ed7dc 76 }
Enenkel 0:a8a0195ed7dc 77