|
28 | 28 | def init():
|
29 | 29 | global bus;
|
30 | 30 | bus = smbus.SMBus(I2C_BUS)
|
31 |
| - |
32 |
| - bus.write_byte_data(I2C_ADDR, MCP23017_IODIRA, GPIOA_SETUP_MASK) |
33 |
| - bus.write_byte_data(I2C_ADDR, MCP23017_GPPUA, GPIOA_SETUP_MASK) |
34 |
| - bus.write_byte_data(I2C_ADDR, MCP23017_IPOLA, GPIOA_SETUP_MASK) |
| 31 | + |
| 32 | + try: |
| 33 | + bus.write_byte_data(I2C_ADDR, MCP23017_IODIRA, GPIOA_SETUP_MASK) |
| 34 | + bus.write_byte_data(I2C_ADDR, MCP23017_GPPUA, GPIOA_SETUP_MASK) |
| 35 | + bus.write_byte_data(I2C_ADDR, MCP23017_IPOLA, GPIOA_SETUP_MASK) |
| 36 | + except IOError: |
| 37 | + pass |
35 | 38 |
|
36 | 39 | def poll_keys():
|
37 |
| - bus.write_byte_data(I2C_ADDR, MCP23017_GPIOA, GPIOA_POLL_COL1) |
38 |
| - column_data = bus.read_byte_data(I2C_ADDR, MCP23017_GPIOA) & 0x0f |
| 40 | + try: |
| 41 | + bus.write_byte_data(I2C_ADDR, MCP23017_GPIOA, GPIOA_POLL_COL1) |
| 42 | + column_data = bus.read_byte_data(I2C_ADDR, MCP23017_GPIOA) & 0x0f |
39 | 43 |
|
40 |
| - bus.write_byte_data(I2C_ADDR, MCP23017_GPIOA, GPIOA_POLL_COL2) |
41 |
| - column_data = column_data | (bus.read_byte_data(I2C_ADDR, MCP23017_GPIOA) & 0x0f) << 4 |
| 44 | + bus.write_byte_data(I2C_ADDR, MCP23017_GPIOA, GPIOA_POLL_COL2) |
| 45 | + column_data = column_data | (bus.read_byte_data(I2C_ADDR, MCP23017_GPIOA) & 0x0f) << 4 |
42 | 46 |
|
43 |
| - bus.write_byte_data(I2C_ADDR, MCP23017_GPIOA, GPIOA_POLL_COL3) |
44 |
| - column_data = column_data | (bus.read_byte_data(I2C_ADDR, MCP23017_GPIOA) & 0x0f) << 8 |
| 47 | + bus.write_byte_data(I2C_ADDR, MCP23017_GPIOA, GPIOA_POLL_COL3) |
| 48 | + column_data = column_data | (bus.read_byte_data(I2C_ADDR, MCP23017_GPIOA) & 0x0f) << 8 |
| 49 | + except IOError: |
| 50 | + column_data = 0 |
45 | 51 |
|
46 | 52 | return column_data
|
47 | 53 |
|
|
0 commit comments