Files
arduino/libraries/Adafruit_seesaw_Library/examples/encoder_delta/encoder_delta.ino
2025-10-12 09:13:56 +02:00

65 lines
1.7 KiB
C++

/*
* This example helps demonstrates getEncoderDelta().
*
* position = the current encoder position
* delta = the change in position since last read
*
* With this sketch running, open the Serial Monitor. It may also help
* to turn on "Show timestamp". Then play with turning the encoder between
* print outs to see how the values change.
*
* If the encoder does ~not~ move between reads, then:
* - position will be the same value
* - delta will be zero
*
* NOTE: reading position or delta resets delta to zero
*/
#include "Adafruit_seesaw.h"
#include <seesaw_neopixel.h>
#define SEESAW_ADDR 0x36
Adafruit_seesaw ss;
void setup() {
Serial.begin(115200);
while (!Serial) delay(10);
Serial.println("Looking for seesaw!");
if (! ss.begin(SEESAW_ADDR)) {
Serial.println("Couldn't find seesaw on default address");
while(1) delay(10);
}
Serial.println("seesaw started");
uint16_t pid;
uint8_t year, mon, day;
ss.getProdDatecode(&pid, &year, &mon, &day);
Serial.print("PID: "); Serial.println(pid);
Serial.print("Firmware:");
Serial.print(2000+year); Serial.print("/");
Serial.print(mon); Serial.print("/");
Serial.println(day);
}
void loop() {
int32_t position;
int32_t delta;
// get delta and position
delta = ss.getEncoderDelta(); // also resets delta to zero
position = ss.getEncoderPosition(); // this also resets delta to zero
// so getEncoderDelta() is called first
// print info
Serial.print("position: "); Serial.println(position);
Serial.print(" delta: "); Serial.println(delta);
// read once every two seconds
// this is intentionally slow to allow user to easily turn encoder between reads
delay(2000);
}