Unit 8 encoder
-
Hi
Im trying to use the unit 8 encoder with M5 Paper. I want to get the LED to change colour with pressing the rotary dial in using getbuttonstatus. I have managed to record the button press however it returns to its previous state without repressing the button. Any advice where Im going wrong?
Here is my code:
#include "UNIT_8ENCODER.h"
#include <M5EPD.h>UNIT_8ENCODER sensor;
M5EPD_Canvas canvas(&M5.EPD);int32_t encoder[8] = {0};
uint8_t btn_status[8] = {0};void show_encoder_value(void) {
for (int i = 0; i < 8; i++) {
btn_status[i] = sensor.getButtonStatus(i); encoder[i] = sensor.getEncoderValue(i);
}
if (btn_status[i] ==true) {
sensor.setLEDColor(i, 0x00ff00);
}
else {
sensor.setLEDColor(i, 0xff0000);
}
}
}void setup() {
sensor.begin(&Wire, ENCODER_ADDR, 25, 32, 100000UL);
M5.begin(true,true,true,true,true);
M5.RTC.begin();
M5.EPD.SetRotation(90);
M5.EPD.Clear(true);
canvas.createCanvas(540, 960);
}void loop() {
// put your main code here, to run repeatedly:
show_encoder_value();canvas.setTextSize(3);
canvas.drawString(String(encoder[0]), 60, 30);
canvas.drawString(String(encoder[1]), 125, 30);
canvas.drawString(String(encoder[2]), 190, 30);
canvas.drawString(String(encoder[3]), 255, 30);
canvas.drawString(String(encoder[4]), 60, 60);
canvas.drawString(String(encoder[5]), 125, 60);
canvas.drawString(String(encoder[6]), 190, 60);
canvas.drawString(String(encoder[7]), 255, 60);canvas.drawString(String(btn_status[0]), 60, 130); canvas.drawString(String(btn_status[1]), 125, 130); canvas.drawString(String(btn_status[2]), 190, 130); canvas.drawString(String(btn_status[3]), 255, 130); canvas.drawString(String(btn_status[4]), 60, 160); canvas.drawString(String(btn_status[5]), 125, 160); canvas.drawString(String(btn_status[6]), 190, 160); canvas.drawString(String(btn_status[7]), 255, 160); canvas.pushCanvas(0, 0, UPDATE_MODE_DU4);
delay(100);
}
Thanks
David