24 #include "Adafruit_I2CDevice.h" 31 #define SEESAW_ADDRESS (0x49) 42 SEESAW_STATUS_BASE = 0x00,
43 SEESAW_GPIO_BASE = 0x01,
44 SEESAW_SERCOM0_BASE = 0x02,
46 SEESAW_TIMER_BASE = 0x08,
47 SEESAW_ADC_BASE = 0x09,
48 SEESAW_DAC_BASE = 0x0A,
49 SEESAW_INTERRUPT_BASE = 0x0B,
50 SEESAW_DAP_BASE = 0x0C,
51 SEESAW_EEPROM_BASE = 0x0D,
52 SEESAW_NEOPIXEL_BASE = 0x0E,
53 SEESAW_TOUCH_BASE = 0x0F,
54 SEESAW_KEYPAD_BASE = 0x10,
55 SEESAW_ENCODER_BASE = 0x11,
56 SEESAW_SPECTRUM_BASE = 0x12,
64 SEESAW_GPIO_DIRSET_BULK = 0x02,
65 SEESAW_GPIO_DIRCLR_BULK = 0x03,
66 SEESAW_GPIO_BULK = 0x04,
67 SEESAW_GPIO_BULK_SET = 0x05,
68 SEESAW_GPIO_BULK_CLR = 0x06,
69 SEESAW_GPIO_BULK_TOGGLE = 0x07,
70 SEESAW_GPIO_INTENSET = 0x08,
71 SEESAW_GPIO_INTENCLR = 0x09,
72 SEESAW_GPIO_INTFLAG = 0x0A,
73 SEESAW_GPIO_PULLENSET = 0x0B,
74 SEESAW_GPIO_PULLENCLR = 0x0C,
80 SEESAW_STATUS_HW_ID = 0x01,
81 SEESAW_STATUS_VERSION = 0x02,
82 SEESAW_STATUS_OPTIONS = 0x03,
83 SEESAW_STATUS_TEMP = 0x04,
84 SEESAW_STATUS_SWRST = 0x7F,
90 SEESAW_TIMER_STATUS = 0x00,
91 SEESAW_TIMER_PWM = 0x01,
92 SEESAW_TIMER_FREQ = 0x02,
98 SEESAW_ADC_STATUS = 0x00,
99 SEESAW_ADC_INTEN = 0x02,
100 SEESAW_ADC_INTENCLR = 0x03,
101 SEESAW_ADC_WINMODE = 0x04,
102 SEESAW_ADC_WINTHRESH = 0x05,
103 SEESAW_ADC_CHANNEL_OFFSET = 0x07,
109 SEESAW_SERCOM_STATUS = 0x00,
110 SEESAW_SERCOM_INTEN = 0x02,
111 SEESAW_SERCOM_INTENCLR = 0x03,
112 SEESAW_SERCOM_BAUD = 0x04,
113 SEESAW_SERCOM_DATA = 0x05,
119 SEESAW_NEOPIXEL_STATUS = 0x00,
120 SEESAW_NEOPIXEL_PIN = 0x01,
121 SEESAW_NEOPIXEL_SPEED = 0x02,
122 SEESAW_NEOPIXEL_BUF_LENGTH = 0x03,
123 SEESAW_NEOPIXEL_BUF = 0x04,
124 SEESAW_NEOPIXEL_SHOW = 0x05,
130 SEESAW_TOUCH_CHANNEL_OFFSET = 0x10,
136 SEESAW_KEYPAD_STATUS = 0x00,
137 SEESAW_KEYPAD_EVENT = 0x01,
138 SEESAW_KEYPAD_INTENSET = 0x02,
139 SEESAW_KEYPAD_INTENCLR = 0x03,
140 SEESAW_KEYPAD_COUNT = 0x04,
141 SEESAW_KEYPAD_FIFO = 0x10,
147 SEESAW_KEYPAD_EDGE_HIGH = 0,
148 SEESAW_KEYPAD_EDGE_LOW,
149 SEESAW_KEYPAD_EDGE_FALLING,
150 SEESAW_KEYPAD_EDGE_RISING,
156 SEESAW_ENCODER_STATUS = 0x00,
157 SEESAW_ENCODER_INTENSET = 0x10,
158 SEESAW_ENCODER_INTENCLR = 0x20,
159 SEESAW_ENCODER_POSITION = 0x30,
160 SEESAW_ENCODER_DELTA = 0x40,
166 SEESAW_SPECTRUM_RESULTS_LOWER = 0x00,
167 SEESAW_SPECTRUM_RESULTS_UPPER = 0x01,
172 SEESAW_SPECTRUM_CHANNEL = 0xFD,
173 SEESAW_SPECTRUM_RATE = 0xFE,
174 SEESAW_SPECTRUM_STATUS = 0xFF,
177 #define ADC_INPUT_0_PIN 2 178 #define ADC_INPUT_1_PIN 3 179 #define ADC_INPUT_2_PIN 4 180 #define ADC_INPUT_3_PIN 5 187 #ifndef INPUT_PULLDOWN 188 #define INPUT_PULLDOWN \ 195 #define SEESAW_HW_ID_CODE_SAMD09 0x55 196 #define SEESAW_HW_ID_CODE_TINY416 0x46 197 #define SEESAW_HW_ID_CODE_TINY806 0x84 198 #define SEESAW_HW_ID_CODE_TINY807 0x85 199 #define SEESAW_HW_ID_CODE_TINY816 0x86 200 #define SEESAW_HW_ID_CODE_TINY817 0x87 201 #define SEESAW_HW_ID_CODE_TINY1616 0x88 202 #define SEESAW_HW_ID_CODE_TINY1617 0x89 203 #define SEESAW_HW_ID_CODE_STM32C011 0x90 204 #define SEESAW_HW_ID_CODE_STM32C031 0x91 205 #define SEESAW_HW_ID_CODE_STM32C051 0x92 206 #define SEESAW_HW_ID_CODE_STM32G071 0x93 250 uint32_t getOptions();
251 uint32_t getVersion();
252 bool getProdDatecode(uint16_t *pid, uint8_t *year, uint8_t *mon,
257 void pinMode(uint8_t pin, uint8_t mode);
258 void pinModeBulk(uint32_t pins, uint8_t mode);
259 void pinModeBulk(uint32_t pinsa, uint32_t pinsb, uint8_t mode);
260 virtual void analogWrite(uint8_t pin, uint16_t value, uint8_t width = 8);
261 void digitalWrite(uint8_t pin, uint8_t value);
262 void digitalWriteBulk(uint32_t port_values);
263 void digitalWriteBulk(uint32_t pins, uint8_t value);
264 void digitalWriteBulk(uint32_t pinsa, uint32_t pinsb, uint8_t value);
266 bool digitalRead(uint8_t pin);
267 uint32_t digitalReadBulk(uint32_t pins);
268 uint32_t digitalReadBulkB(uint32_t pins);
270 void setGPIOInterrupts(uint32_t pins,
bool enabled);
272 virtual uint16_t analogRead(uint8_t pin);
274 uint16_t touchRead(uint8_t pin);
276 virtual void setPWMFreq(uint8_t pin, uint16_t freq);
278 void enableSercomDataRdyInterrupt(uint8_t sercom = 0);
279 void disableSercomDataRdyInterrupt(uint8_t sercom = 0);
281 char readSercomData(uint8_t sercom = 0);
283 void EEPROMWrite8(uint8_t addr, uint8_t val);
284 void EEPROMWrite(uint8_t addr, uint8_t *buf, uint8_t size);
285 uint8_t EEPROMRead8(uint8_t addr);
287 void setI2CAddr(uint8_t addr);
288 uint8_t getI2CAddr();
290 void UARTSetBaud(uint32_t baud);
292 void setKeypadEvent(uint8_t key, uint8_t edge,
bool enable =
true);
293 void enableKeypadInterrupt();
294 void disableKeypadInterrupt();
295 uint8_t getKeypadCount();
300 int32_t getEncoderPosition(uint8_t encoder = 0);
301 int32_t getEncoderDelta(uint8_t encoder = 0);
302 bool enableEncoderInterrupt(uint8_t encoder = 0);
303 bool disableEncoderInterrupt(uint8_t encoder = 0);
304 void setEncoderPosition(int32_t pos, uint8_t encoder = 0);
307 virtual size_t write(uint8_t)
override;
308 virtual size_t write(
const char *str);
312 Adafruit_I2CDevice *_i2c_dev = NULL;
316 uint8_t _hardwaretype = 0;
317 uint8_t getI2CaddrEEPROMloc();
319 bool write8(byte regHigh, byte regLow, byte value);
320 uint8_t read8(byte regHigh, byte regLow, uint16_t delay = 250);
322 bool read(uint8_t regHigh, uint8_t regLow, uint8_t *buf, uint8_t num,
323 uint16_t delay = 250);
324 bool write(uint8_t regHigh, uint8_t regLow, uint8_t *buf, uint8_t num);
Definition: Adafruit_seesaw.h:228
uint8_t DATA_RDY
this bit is set when data becomes available
Definition: Adafruit_seesaw.h:334
int8_t _flow
Definition: Adafruit_seesaw.h:314
Definition: Adafruit_seesaw.h:332
struct keyEventRaw::@12 bit
bitfield format
uint8_t NUM
the event number
Definition: Adafruit_seesaw.h:213
Experimental SPI controller bridge, not SPI slave transport.
Definition: Adafruit_seesaw.h:57
uint8_t reg
register format
Definition: Adafruit_seesaw.h:215
uint8_t ACTIVE
the registered events for that key
Definition: Adafruit_seesaw.h:231
uint8_t STATE
the current state of the key
Definition: Adafruit_seesaw.h:230
uint16_t NUM
the event number
Definition: Adafruit_seesaw.h:222
Class that stores state and functions for interacting with seesaw helper IC.
Definition: Adafruit_seesaw.h:242
uint16_t reg
register format
Definition: Adafruit_seesaw.h:224
uint8_t EDGE
the edge that was triggered
Definition: Adafruit_seesaw.h:212
uint8_t reg
full register
Definition: Adafruit_seesaw.h:336
#define SEESAW_ADDRESS
Default Seesaw I2C address.
Definition: Adafruit_seesaw.h:31
TwoWire * _i2cbus
Definition: Adafruit_seesaw.h:311
Definition: Adafruit_seesaw.h:219
uint8_t EDGE
the edge that was triggered
Definition: Adafruit_seesaw.h:221
Definition: Adafruit_seesaw.h:210
uint8_t reg
register format
Definition: Adafruit_seesaw.h:233
sercom_inten _sercom_inten
sercom interrupt enable register instance
Definition: Adafruit_seesaw.h:338