demo for p5201
This commit is contained in:
parent
d2174e58fd
commit
043682c2a8
1 changed files with 84 additions and 0 deletions
84
ANO_encoder_demo/ANO_encoder_demo.ino
Normal file
84
ANO_encoder_demo/ANO_encoder_demo.ino
Normal file
|
|
@ -0,0 +1,84 @@
|
|||
#include <Adafruit_NeoPixel.h>
|
||||
#include <RotaryEncoder.h>
|
||||
|
||||
#define PIN_ENCODER_A 12
|
||||
#define PIN_ENCODER_B 13
|
||||
#define COM_A 11 // for wiring simplicity we set these output LOW
|
||||
#define COM_B SDA // ... but you can just wire these to GND instead!
|
||||
#define BUTTON_UP SCL
|
||||
#define BUTTON_LEFT 5
|
||||
#define BUTTON_DOWN 6
|
||||
#define BUTTON_RIGHT 9
|
||||
#define BUTTON_IN 10
|
||||
|
||||
RotaryEncoder encoder(PIN_ENCODER_A, PIN_ENCODER_B, RotaryEncoder::LatchMode::TWO03);
|
||||
// This interrupt will do our encoder reading/checking!
|
||||
void checkPosition() {
|
||||
encoder.tick(); // just call tick() to check the state.
|
||||
}
|
||||
int last_rotary = 0;
|
||||
|
||||
|
||||
#define NUMPIXELS 12
|
||||
Adafruit_NeoPixel pixels(NUMPIXELS, A0, NEO_GRB + NEO_KHZ800);
|
||||
|
||||
|
||||
void setup(void) {
|
||||
Serial.begin(115200);
|
||||
// while (!Serial);
|
||||
Serial.println("ANO encoder + NeoPixel test");
|
||||
|
||||
pinMode(COM_A, OUTPUT);
|
||||
digitalWrite(COM_A, LOW);
|
||||
pinMode(COM_B, OUTPUT);
|
||||
digitalWrite(COM_B, LOW);
|
||||
|
||||
attachInterrupt(PIN_ENCODER_A, checkPosition, CHANGE);
|
||||
attachInterrupt(PIN_ENCODER_B, checkPosition, CHANGE);
|
||||
|
||||
pinMode(BUTTON_UP, INPUT_PULLUP);
|
||||
pinMode(BUTTON_DOWN, INPUT_PULLUP);
|
||||
pinMode(BUTTON_LEFT, INPUT_PULLUP);
|
||||
pinMode(BUTTON_RIGHT, INPUT_PULLUP);
|
||||
pinMode(BUTTON_IN, INPUT_PULLUP);
|
||||
pixels.begin();
|
||||
pixels.setBrightness(30);
|
||||
pixels.show();
|
||||
}
|
||||
|
||||
|
||||
void loop(void) {
|
||||
// read encoder
|
||||
int curr_rotary = encoder.getPosition();
|
||||
RotaryEncoder::Direction direction = encoder.getDirection();
|
||||
|
||||
pixels.clear();
|
||||
if (curr_rotary != last_rotary) {
|
||||
Serial.print("Encoder value: ");
|
||||
Serial.print(curr_rotary);
|
||||
Serial.print(" direction: ");
|
||||
Serial.println((int)direction);
|
||||
}
|
||||
last_rotary = curr_rotary;
|
||||
|
||||
pixels.setPixelColor((curr_rotary + (1000*NUMPIXELS)) % NUMPIXELS, pixels.Color(0, 150, 0));
|
||||
|
||||
if (! digitalRead(BUTTON_UP)) {
|
||||
pixels.setPixelColor(0, pixels.Color(150, 0, 0));
|
||||
}
|
||||
if (! digitalRead(BUTTON_LEFT)) {
|
||||
pixels.setPixelColor(NUMPIXELS/4, pixels.Color(150, 0, 0));
|
||||
}
|
||||
if (! digitalRead(BUTTON_DOWN)) {
|
||||
pixels.setPixelColor(NUMPIXELS/2, pixels.Color(150, 0, 0));
|
||||
}
|
||||
if (! digitalRead(BUTTON_RIGHT)) {
|
||||
pixels.setPixelColor(NUMPIXELS*3/4, pixels.Color(150, 0, 0));
|
||||
}
|
||||
if (! digitalRead(BUTTON_IN)) {
|
||||
pixels.fill(pixels.Color(50, 50, 50));
|
||||
}
|
||||
pixels.show();
|
||||
|
||||
delay(20);
|
||||
}
|
||||
Loading…
Reference in a new issue