<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Unit 8 encoder]]></title><description><![CDATA[<p dir="auto">Hi</p>
<p dir="auto">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?</p>
<p dir="auto">Here is my code:</p>
<p dir="auto">#include "UNIT_8ENCODER.h"<br />
#include &lt;M5EPD.h&gt;</p>
<p dir="auto">UNIT_8ENCODER sensor;<br />
M5EPD_Canvas canvas(&amp;M5.EPD);</p>
<p dir="auto">int32_t encoder[8]  = {0};<br />
uint8_t btn_status[8] = {0};</p>
<p dir="auto">void show_encoder_value(void) {</p>
<p dir="auto">for (int i = 0; i &lt; 8; i++) {</p>
<pre><code>    btn_status[i] = sensor.getButtonStatus(i);
      encoder[i] = sensor.getEncoderValue(i);
</code></pre>
<p dir="auto">}<br />
if (btn_status[i] ==true) {<br />
sensor.setLEDColor(i, 0x00ff00);<br />
}<br />
else {<br />
sensor.setLEDColor(i, 0xff0000);<br />
}<br />
}<br />
}</p>
<p dir="auto">void setup() {<br />
sensor.begin(&amp;Wire, ENCODER_ADDR, 25, 32, 100000UL);<br />
M5.begin(true,true,true,true,true);<br />
M5.RTC.begin();<br />
M5.EPD.SetRotation(90);<br />
M5.EPD.Clear(true);<br />
canvas.createCanvas(540, 960);<br />
}</p>
<p dir="auto">void loop() {<br />
// put your main code here, to run repeatedly:<br />
show_encoder_value();</p>
<pre><code>canvas.setTextSize(3);
</code></pre>
<p dir="auto">canvas.drawString(String(encoder[0]), 60, 30);<br />
canvas.drawString(String(encoder[1]), 125, 30);<br />
canvas.drawString(String(encoder[2]), 190, 30);<br />
canvas.drawString(String(encoder[3]), 255, 30);<br />
canvas.drawString(String(encoder[4]), 60, 60);<br />
canvas.drawString(String(encoder[5]), 125, 60);<br />
canvas.drawString(String(encoder[6]), 190, 60);<br />
canvas.drawString(String(encoder[7]), 255, 60);</p>
<pre><code> 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);
</code></pre>
<p dir="auto">delay(100);</p>
<p dir="auto">}</p>
<p dir="auto">Thanks</p>
<p dir="auto">David</p>
]]></description><link>https://community.m5stack.com/topic/5799/unit-8-encoder</link><generator>RSS for Node</generator><lastBuildDate>Wed, 29 Apr 2026 11:29:45 GMT</lastBuildDate><atom:link href="https://community.m5stack.com/topic/5799.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 12 Nov 2023 21:19:47 GMT</pubDate><ttl>60</ttl></channel></rss>