x
I2CList.cpp@0:a13a2f61b5f1, 2018-07-23 (annotated)
- Committer:
- JackB
- Date:
- Mon Jul 23 12:24:48 2018 +0000
- Revision:
- 0:a13a2f61b5f1
I2CL
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
JackB | 0:a13a2f61b5f1 | 1 | #include "I2CList.h" |
JackB | 0:a13a2f61b5f1 | 2 | |
JackB | 0:a13a2f61b5f1 | 3 | I2CList::I2CList(PinName sda, PinName scl) : i2c(sda, scl) |
JackB | 0:a13a2f61b5f1 | 4 | { |
JackB | 0:a13a2f61b5f1 | 5 | } |
JackB | 0:a13a2f61b5f1 | 6 | |
JackB | 0:a13a2f61b5f1 | 7 | char * I2CList::GetName(int address) |
JackB | 0:a13a2f61b5f1 | 8 | { |
JackB | 0:a13a2f61b5f1 | 9 | strcpy(i2c_name, ""); |
JackB | 0:a13a2f61b5f1 | 10 | if (address == 0x30) |
JackB | 0:a13a2f61b5f1 | 11 | strcpy(i2c_name, "MCP9808 Temp. Sensor"); |
JackB | 0:a13a2f61b5f1 | 12 | if (address == 0x46) |
JackB | 0:a13a2f61b5f1 | 13 | strcpy(i2c_name, "BH1750FVI Light Sensor"); |
JackB | 0:a13a2f61b5f1 | 14 | if (address == 0x52) |
JackB | 0:a13a2f61b5f1 | 15 | strcpy(i2c_name, "TSL2591 Light Sensor"); |
JackB | 0:a13a2f61b5f1 | 16 | if (address == 0x6F) |
JackB | 0:a13a2f61b5f1 | 17 | strcpy(i2c_name, "MCP79412 RTC (Real Time Clock)"); |
JackB | 0:a13a2f61b5f1 | 18 | if (address == 0x70) |
JackB | 0:a13a2f61b5f1 | 19 | strcpy(i2c_name, "FT6206 CTPC (Capacitive Touch Panel Controller)"); |
JackB | 0:a13a2f61b5f1 | 20 | if (address == 0x72) |
JackB | 0:a13a2f61b5f1 | 21 | strcpy(i2c_name, "TSL2561 Light Sensor"); |
JackB | 0:a13a2f61b5f1 | 22 | if (address == 0x78) |
JackB | 0:a13a2f61b5f1 | 23 | strcpy(i2c_name, "SD1306 OLED Display"); |
JackB | 0:a13a2f61b5f1 | 24 | if ((address == 0x80) || (address == 0xE0)) |
JackB | 0:a13a2f61b5f1 | 25 | strcpy(i2c_name, "PCA9685 LED PWM 16x12-bit"); |
JackB | 0:a13a2f61b5f1 | 26 | if ((address == 0x90) || (address == 0x92)) |
JackB | 0:a13a2f61b5f1 | 27 | strcpy(i2c_name, "ADS1115 ADC 4x16-bit"); |
JackB | 0:a13a2f61b5f1 | 28 | if (address == 0xA0) |
JackB | 0:a13a2f61b5f1 | 29 | strcpy(i2c_name, "24C256 EEPROM 32kB"); |
JackB | 0:a13a2f61b5f1 | 30 | if (address == 0xAC) |
JackB | 0:a13a2f61b5f1 | 31 | strcpy(i2c_name, "24C32 EEPROM 4kB"); |
JackB | 0:a13a2f61b5f1 | 32 | if (address == 0xD0) |
JackB | 0:a13a2f61b5f1 | 33 | strcpy(i2c_name, "RTC RTC (Real Time Clock)"); |
JackB | 0:a13a2f61b5f1 | 34 | if (address == 0xD2) |
JackB | 0:a13a2f61b5f1 | 35 | strcpy(i2c_name, "AMG8833 8x8 Infrared Array Sensor"); |
JackB | 0:a13a2f61b5f1 | 36 | if (address == 0xE0) |
JackB | 0:a13a2f61b5f1 | 37 | strcpy(i2c_name, "PCA9685 LED All Call"); |
JackB | 0:a13a2f61b5f1 | 38 | |
JackB | 0:a13a2f61b5f1 | 39 | return i2c_name; |
JackB | 0:a13a2f61b5f1 | 40 | } |
JackB | 0:a13a2f61b5f1 | 41 | |
JackB | 0:a13a2f61b5f1 | 42 | void I2CList::List(void) |
JackB | 0:a13a2f61b5f1 | 43 | { |
JackB | 0:a13a2f61b5f1 | 44 | // 0x80, 0xE0 PCA9685 |
JackB | 0:a13a2f61b5f1 | 45 | printf("Searching for I2C devices...\n"); |
JackB | 0:a13a2f61b5f1 | 46 | printf("I2C Addr Device Description\n"); |
JackB | 0:a13a2f61b5f1 | 47 | wait(0.001); |
JackB | 0:a13a2f61b5f1 | 48 | printf("-----------------------------------------------------------\n"); |
JackB | 0:a13a2f61b5f1 | 49 | wait(0.001); |
JackB | 0:a13a2f61b5f1 | 50 | // i2c1 |
JackB | 0:a13a2f61b5f1 | 51 | int i = 1; |
JackB | 0:a13a2f61b5f1 | 52 | for (int address = 0; address < 256; address += 2) { |
JackB | 0:a13a2f61b5f1 | 53 | if (!i2c.write(address, NULL, 0)) { // 0 returned is ok |
JackB | 0:a13a2f61b5f1 | 54 | printf("1.%02d 0x%02X %s\n", i, address, GetName(address)); |
JackB | 0:a13a2f61b5f1 | 55 | i++; |
JackB | 0:a13a2f61b5f1 | 56 | wait(0.001); |
JackB | 0:a13a2f61b5f1 | 57 | } |
JackB | 0:a13a2f61b5f1 | 58 | } |
JackB | 0:a13a2f61b5f1 | 59 | printf("\n"); |
JackB | 0:a13a2f61b5f1 | 60 | } |