Освой MicroPython играючи
/* Моя кошка замечательно разбирается в программировании. Стоит мне объяснить проблему ей - и все становится ясно. */
John Robbins, Debugging Applications, Microsoft Press, 2000
По мотивам видео от M5Stack Micropython tutorial: Computer science basics - M5Stack Binary Calculator
Я пытался повторить в точности код из видео, но почему-то пример не работал. Пришлось немного переписать код.
Приложение позволяет вводить число в двоичном виде. Первая кнопка вводит 0, вторая 1. Третья кнопка конвертирует число в десятичный, шестнадцатеричный и символьный вид.
from m5stack import *
from m5ui import *
from uiflow import *
binaryNum = []
label0 = M5TextBox(10, 70, "", lcd.FONT_Default, 0xFFFFFF, rotate=0)
label1 = M5TextBox(10, 100, "", lcd.FONT_Default, 0xFFFFFF, rotate=0)
label2 = M5TextBox(10, 130, "", lcd.FONT_Default, 0xFFFFFF, rotate=0)
label3 = M5TextBox(10, 160, "", lcd.FONT_Default, 0xFFFFFF, rotate=0)
lcd.clear()
label0.setText(str(binaryNum))
btnA.wasPressed(buttonA_wasPressed)
btnB.wasPressed(buttonB_wasPressed)
btnC.wasPressed(buttonC_wasPressed)
def buttonA_wasPressed():
binaryNum.append(0)
label0.setText(str(binaryNum))
pass
def buttonB_wasPressed():
binaryNum.append(1)
label0.setText(str(binaryNum))
pass
def buttonC_wasPressed():
value = 0
for i in range(len(binaryNum)):
digit = binaryNum.pop()
if digit == 1:
value = value + pow(2, i)
label1.setText(str(value))
label2.setText(str(hex(value)))
label3.setText(str(chr(value)))
pass