B17 fährt ein 4 ECK mit LICHT (DigitalOut & wait)

Dependencies:   mbed

Fork of _B15_T4_Motor by Gottfried Enenkel

Committer:
Enenkel
Date:
Mon Jan 26 21:46:32 2015 +0000
Revision:
0:a8a0195ed7dc
Child:
1:0f7c167a4f97
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