<?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[8encoder bug on cores3]]></title><description><![CDATA[<p dir="auto">There is a bug in 8encoder.<br />
The method get_counter_value at line 68 throws an error when the encoder is left &gt; 30 secs and a rotary encoder is turned<br />
(<img src="/assets/uploads/files/1688749481214-8encoderbug.png" alt="0_1688749491229_8encoderbug.PNG" class=" img-fluid img-markdown" /> image url)<br />
not sure if it just happens with debugger attached<br />
works fine when restarted until its next left a while then rotated</p>
<p dir="auto">Here is my code</p>
<p dir="auto">import os, sys, io<br />
import M5<br />
from M5 import *<br />
from hardware import *<br />
from unit import *</p>
<p dir="auto">label1 = None<br />
title0 = None<br />
label2 = None<br />
label3 = None<br />
label4 = None<br />
label5 = None<br />
label6 = None<br />
label7 = None<br />
label8 = None<br />
label9 = None<br />
label11 = None<br />
label12 = None<br />
label13 = None<br />
label10 = None<br />
label14 = None<br />
label15 = None<br />
label16 = None<br />
label17 = None<br />
label18 = None<br />
label19 = None<br />
label20 = None<br />
label21 = None<br />
label22 = None<br />
label23 = None<br />
label24 = None<br />
label25 = None<br />
label26 = None<br />
label27 = None<br />
label28 = None<br />
i2c0 = None<br />
encoder8_0 = None</p>
<p dir="auto">btnNo = None<br />
btn = None<br />
val = None</p>
<h1>Describe this function...</h1>
<p dir="auto">def dosomething(btnNo):<br />
global btn, val, label1, title0, label2, label3, label4, label5, label6, label7, label8, label9, label11, label12, label13, label10, label14, label15, label16, label17, label18, label19, label20, label21, label22, label23, label24, label25, label26, label27, label28, i2c0, encoder8_0<br />
if btnNo == 1:<br />
btn = encoder8_0.get_button_status(btnNo)<br />
val = encoder8_0.get_counter_value(btnNo)<br />
label11.setText(str((str(btn))))<br />
label21.setText(str((str(val))))<br />
if btnNo == 2:<br />
btn = encoder8_0.get_button_status(btnNo)<br />
val = encoder8_0.get_counter_value(btnNo)<br />
label12.setText(str((str(btn))))<br />
label22.setText(str((str(val))))<br />
if btnNo == 3:<br />
btn = encoder8_0.get_button_status(btnNo)<br />
val = encoder8_0.get_counter_value(btnNo)<br />
label13.setText(str((str(btn))))<br />
label23.setText(str((str(val))))<br />
if btnNo == 4:<br />
btn = encoder8_0.get_button_status(btnNo)<br />
val = encoder8_0.get_counter_value(btnNo)<br />
label14.setText(str((str(btn))))<br />
label24.setText(str((str(val))))<br />
if btnNo == 5:<br />
btn = encoder8_0.get_button_status(btnNo)<br />
val = encoder8_0.get_counter_value(btnNo)<br />
label15.setText(str((str(btn))))<br />
label25.setText(str((str(val))))<br />
if btnNo == 6:<br />
btn = encoder8_0.get_button_status(btnNo)<br />
val = encoder8_0.get_counter_value(btnNo)<br />
label16.setText(str((str(btn))))<br />
label26.setText(str((str(val))))<br />
if btnNo == 7:<br />
btn = encoder8_0.get_button_status(btnNo)<br />
val = encoder8_0.get_counter_value(btnNo)<br />
label17.setText(str((str(btn))))<br />
label27.setText(str((str(val))))<br />
if btnNo == 8:<br />
btn = encoder8_0.get_button_status(btnNo)<br />
val = encoder8_0.get_counter_value(btnNo)<br />
label18.setText(str((str(btn))))<br />
label28.setText(str((str(val))))</p>
<p dir="auto">def setup():<br />
global label1, title0, label2, label3, label4, label5, label6, label7, label8, label9, label11, label12, label13, label10, label14, label15, label16, label17, label18, label19, label20, label21, label22, label23, label24, label25, label26, label27, label28, i2c0, encoder8_0, btn, btnNo, val</p>
<p dir="auto">i2c0 = I2C(0, scl=Pin(1), sda=Pin(2), freq=100000)<br />
encoder8_0 = ENCODER8(i2c0, 0x41)<br />
M5.begin()<br />
Widgets.fillScreen(0xffe834)<br />
label1 = Widgets.Label("#1", 25, 50, 1.0, 0xffffff, 0x222222, Widgets.FONTS.DejaVu12)<br />
title0 = Widgets.Title("Encoder Test", 3, 0xFFFFFF, 0x0000FF, Widgets.FONTS.DejaVu18)<br />
label2 = Widgets.Label("#2", 25, 69, 1.0, 0xffffff, 0x222222, Widgets.FONTS.DejaVu12)<br />
label3 = Widgets.Label("#3", 25, 92, 1.0, 0xffffff, 0x222222, Widgets.FONTS.DejaVu12)<br />
label4 = Widgets.Label("#4", 25, 116, 1.0, 0xffffff, 0x222222, Widgets.FONTS.DejaVu12)<br />
label5 = Widgets.Label("#5", 25, 141, 1.0, 0xffffff, 0x222222, Widgets.FONTS.DejaVu12)<br />
label6 = Widgets.Label("#6", 25, 166, 1.0, 0xffffff, 0x222222, Widgets.FONTS.DejaVu12)<br />
label7 = Widgets.Label("#7", 25, 189, 1.0, 0xffffff, 0x222222, Widgets.FONTS.DejaVu12)<br />
label8 = Widgets.Label("#8", 25, 215, 1.0, 0xffffff, 0x222222, Widgets.FONTS.DejaVu12)<br />
label9 = Widgets.Label("Btn", 24, 34, 1.0, 0x000008, 0xf1e68d, Widgets.FONTS.DejaVu12)<br />
label11 = Widgets.Label("Text", 108, 50, 1.0, 0xffffff, 0x222222, Widgets.FONTS.DejaVu12)<br />
label12 = Widgets.Label("Text", 108, 68, 1.0, 0xffffff, 0x222222, Widgets.FONTS.DejaVu12)<br />
label13 = Widgets.Label("Text", 108, 95, 1.0, 0xffffff, 0x222222, Widgets.FONTS.DejaVu12)<br />
label10 = Widgets.Label("v1.0", 277, 1, 1.0, 0xffffff, 0x222222, Widgets.FONTS.DejaVu18)<br />
label14 = Widgets.Label("Text", 108, 120, 1.0, 0xffffff, 0x222222, Widgets.FONTS.DejaVu12)<br />
label15 = Widgets.Label("Text", 108, 143, 1.0, 0xffffff, 0x222222, Widgets.FONTS.DejaVu12)<br />
label16 = Widgets.Label("Text", 108, 166, 1.0, 0xffffff, 0x222222, Widgets.FONTS.DejaVu12)<br />
label17 = Widgets.Label("Text", 108, 189, 1.0, 0xffffff, 0x222222, Widgets.FONTS.DejaVu12)<br />
label18 = Widgets.Label("Text", 108, 215, 1.0, 0xffffff, 0x222222, Widgets.FONTS.DejaVu12)<br />
label19 = Widgets.Label("Text", 365, -164, 1.0, 0xffffff, 0x222222, Widgets.FONTS.DejaVu18)<br />
label20 = Widgets.Label("Text", 328, -105, 1.0, 0xffffff, 0x222222, Widgets.FONTS.DejaVu18)<br />
label21 = Widgets.Label("Text", 181, 52, 1.0, 0xffffff, 0x222222, Widgets.FONTS.DejaVu12)<br />
label22 = Widgets.Label("Text", 181, 70, 1.0, 0xffffff, 0x222222, Widgets.FONTS.DejaVu12)<br />
label23 = Widgets.Label("Text", 181, 95, 1.0, 0xffffff, 0x222222, Widgets.FONTS.DejaVu12)<br />
label24 = Widgets.Label("Text", 181, 120, 1.0, 0xffffff, 0x222222, Widgets.FONTS.DejaVu12)<br />
label25 = Widgets.Label("Text", 180, 145, 1.0, 0xffffff, 0x222222, Widgets.FONTS.DejaVu12)<br />
label26 = Widgets.Label("Text", 180, 166, 1.0, 0xffffff, 0x222222, Widgets.FONTS.DejaVu12)<br />
label27 = Widgets.Label("Text", 180, 189, 1.0, 0xffffff, 0x222222, Widgets.FONTS.DejaVu12)<br />
label28 = Widgets.Label("Text", 180, 215, 1.0, 0xffffff, 0x222222, Widgets.FONTS.DejaVu12)</p>
<p dir="auto">def loop():<br />
global label1, title0, label2, label3, label4, label5, label6, label7, label8, label9, label11, label12, label13, label10, label14, label15, label16, label17, label18, label19, label20, label21, label22, label23, label24, label25, label26, label27, label28, i2c0, encoder8_0, btn, btnNo, val<br />
M5.update()<br />
dosomething(1)<br />
dosomething(2)<br />
dosomething(3)<br />
dosomething(4)<br />
dosomething(5)<br />
dosomething(6)<br />
dosomething(7)<br />
dosomething(8)</p>
<p dir="auto">if <strong>name</strong> == '<strong>main</strong>':<br />
try:<br />
setup()<br />
while True:<br />
loop()<br />
except (Exception, KeyboardInterrupt) as e:<br />
try:<br />
from utility import print_error_msg<br />
print_error_msg(e)<br />
except ImportError:<br />
print("please update to latest firmware")</p>
<p dir="auto">Im using uiflow 2.0 alpha 19 with cores3</p>
]]></description><link>https://community.m5stack.com/topic/5472/8encoder-bug-on-cores3</link><generator>RSS for Node</generator><lastBuildDate>Wed, 29 Apr 2026 00:41:25 GMT</lastBuildDate><atom:link href="https://community.m5stack.com/topic/5472.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 07 Jul 2023 16:51:08 GMT</pubDate><ttl>60</ttl></channel></rss>