I2C Einlesen der Tasten und Ausgabe auf die LED

Dependencies:   mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 /***********************************
00002 name:   BERTL14_I2C_TEST
00003 author: Enenkel modifizert von  Wolfgang Raimann
00004 description:
00005     Die Taster vom I2C Expander werden direkt auf die LED's des Expander geschalten
00006 ***********************************/
00007  
00008 #include "mbed.h"
00009 I2C i2c(p28, p27);        // die Adressen des I2C Busses am uP 
00010                           // p28 -> SDA
00011                           // p27 -> SCL 
00012 int main() {
00013     char btn = 0;
00014     //     ****  Config PCA9555 I0 as output *******
00015     i2c.start();
00016        i2c.write(0x40);   // Adresse des PCA9555 = 40 
00017                           // das letzte Bit = 0 -> schreiben  0040 0000
00018        i2c.write(0x06);   // Befehl für das IO Port 0 -> siehe SCHEMA des PCA9555
00019        i2c.write(0x00);   // Schalte alle Pins des Ports als OUTPUT
00020     i2c.stop();    
00021     
00022     while(1) {
00023         // Einlesen der Taster und speichern unter btn
00024         i2c.start();
00025                             /* Das letzte Bit der Adresse entscheidet 
00026                                ob geschrieben oder gelesen wird. 
00027                                0 => schreiben;   1 => lesen  */
00028         i2c.write(0x40);    //Adresse & schreiben   0100 0000 
00029         i2c.write(0x01);    //aktivate Port 1        
00030        
00031         i2c.start();
00032           i2c.write(0x41);  // Adresse & LESEN    0100 0001  
00033           btn = i2c.read(0);// Einlesen des Ports 1 und speichern unter btn
00034         i2c.stop();
00035         
00036         // Schreiben auf Port 0 und damit auf die LED's
00037         i2c.start();
00038           i2c.write(0x40);  // Adresse & schreiben
00039           i2c.write(0x02);  // 
00040           i2c.write(~btn);  // schriebn auf Port 0 den INVERSEN Wert von btn
00041         i2c.stop();
00042     }
00043 }
00044