BERTL16 Line Test

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