I2C Einlesen der Tasten und Ausgabe auf die LED
Dependencies: mbed
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
Generated on Fri Jul 15 2022 01:51:48 by 1.7.2