Gottfried Enenkel
/
_B16_T4_Line
BERTL16 Line Test
Diff: main.cpp
- 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(); } }