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:
Mon Jan 26 21:46:32 2015 +0000
Revision:
0:a8a0195ed7dc
Child:
1:d646fe79bc6c
I2C Einlesen der Tasten und Ausgabe auf die LED

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Enenkel 0:a8a0195ed7dc 1 /***********************************
Enenkel 0:a8a0195ed7dc 2 name: BERTL14_I2C_TEST
Enenkel 0:a8a0195ed7dc 3 author: Enenkel modifizert von Wolfgang Raimann
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
Enenkel 0:a8a0195ed7dc 8 #include "mbed.h"
Enenkel 0:a8a0195ed7dc 9 I2C i2c(p28, p27); // die Adressen des I2C Busses am uP
Enenkel 0:a8a0195ed7dc 10 // p28 -> SDA
Enenkel 0:a8a0195ed7dc 11 // p27 -> SCL
Enenkel 0:a8a0195ed7dc 12 int main() {
Enenkel 0:a8a0195ed7dc 13 char btn = 0;
Enenkel 0:a8a0195ed7dc 14 // **** Config PCA9555 I0 as output *******
Enenkel 0:a8a0195ed7dc 15 i2c.start();
Enenkel 0:a8a0195ed7dc 16 i2c.write(0x40); // Adresse des PCA9555 = 40
Enenkel 0:a8a0195ed7dc 17 // das letzte Bit = 0 -> schreiben 0040 0000
Enenkel 0:a8a0195ed7dc 18 i2c.write(0x06); // Befehl für das IO Port 0 -> siehe SCHEMA des PCA9555
Enenkel 0:a8a0195ed7dc 19 i2c.write(0x00); // Schalte alle Pins des Ports als OUTPUT
Enenkel 0:a8a0195ed7dc 20 i2c.stop();
Enenkel 0:a8a0195ed7dc 21
Enenkel 0:a8a0195ed7dc 22 while(1) {
Enenkel 0:a8a0195ed7dc 23 // Einlesen der Taster und speichern unter btn
Enenkel 0:a8a0195ed7dc 24 i2c.start();
Enenkel 0:a8a0195ed7dc 25 /* Das letzte Bit der Adresse entscheidet
Enenkel 0:a8a0195ed7dc 26 ob geschrieben oder gelesen wird.
Enenkel 0:a8a0195ed7dc 27 0 => schreiben; 1 => lesen */
Enenkel 0:a8a0195ed7dc 28 i2c.write(0x40); //Adresse & schreiben 0100 0000
Enenkel 0:a8a0195ed7dc 29 i2c.write(0x01); //aktivate Port 1
Enenkel 0:a8a0195ed7dc 30
Enenkel 0:a8a0195ed7dc 31 i2c.start();
Enenkel 0:a8a0195ed7dc 32 i2c.write(0x41); // Adresse & LESEN 0100 0001
Enenkel 0:a8a0195ed7dc 33 btn = i2c.read(0);// Einlesen des Ports 1 und speichern unter btn
Enenkel 0:a8a0195ed7dc 34 i2c.stop();
Enenkel 0:a8a0195ed7dc 35
Enenkel 0:a8a0195ed7dc 36 // Schreiben auf Port 0 und damit auf die LED's
Enenkel 0:a8a0195ed7dc 37 i2c.start();
Enenkel 0:a8a0195ed7dc 38 i2c.write(0x40); // Adresse & schreiben
Enenkel 0:a8a0195ed7dc 39 i2c.write(0x02); //
Enenkel 0:a8a0195ed7dc 40 i2c.write(~btn); // schriebn auf Port 0 den INVERSEN Wert von btn
Enenkel 0:a8a0195ed7dc 41 i2c.stop();
Enenkel 0:a8a0195ed7dc 42 }
Enenkel 0:a8a0195ed7dc 43 }
Enenkel 0:a8a0195ed7dc 44