47 lines
1.1 KiB
C++
47 lines
1.1 KiB
C++
/***************************************************
|
|
This is a library for the MCP23008 i2c port expander
|
|
****************************************************/
|
|
|
|
#ifndef MCP23008_H
|
|
#define MCP23008_H
|
|
|
|
#include "Arduino.h"
|
|
|
|
#define MCP23008_ADDRESS 0x20
|
|
|
|
#define MCP23008_IODIR 0x00
|
|
#define MCP23008_IPOL 0x01
|
|
#define MCP23008_GPINTEN 0x02
|
|
#define MCP23008_DEFVAL 0x03
|
|
#define MCP23008_INTCON 0x04
|
|
#define MCP23008_IOCON 0x05
|
|
#define MCP23008_GPPU 0x06
|
|
#define MCP23008_INTF 0x07
|
|
#define MCP23008_INTCAP 0x08
|
|
#define MCP23008_GPIO 0x09
|
|
#define MCP23008_OLAT 0x0A
|
|
|
|
#define NO_INTERRUPT 0x00
|
|
|
|
#endif
|
|
|
|
class MCP23008 {
|
|
|
|
public:
|
|
void begin(uint8_t addr);
|
|
void pinMode(uint8_t mode);
|
|
void pinMode(uint8_t pin, uint8_t mode);
|
|
void setPullup(uint8_t pullup);
|
|
uint8_t read();
|
|
uint8_t read(uint8_t pin);
|
|
void write(uint8_t values);
|
|
void write(uint8_t pin, uint8_t value);
|
|
void enableInterrupt(uint8_t pin, uint8_t mode);
|
|
void disableInterrupt(uint8_t pin);
|
|
|
|
private:
|
|
uint8_t _i2cAddress;
|
|
uint8_t _read(uint8_t addr);
|
|
void _write(uint8_t addr, uint8_t data);
|
|
};
|