Wio Terminal 之 MicroPython 入门学习经验

ArduPy 快速入门主要是在其基础上加入个人补充
参考自此链接https://wiki.seeedstudio.com/ArduPy/#quick-start-with-ardupy

STEP.1 进入引导加载程序模式
通过 USB 连接将设备连接到电脑。通过快速重置设备进入引导加载程序模式。

会**加粗样式**在这里插入图片描述
电脑会出现此图标

STEP.2 下载 ArduPy UF2 固件
以UF2文件的形式下载ArduPy固件。
固件下载链接 https://files.seeedstudio.com/wiki/Wio-Terminal/res/ArduPy_wio_terminal_lastest.uf2
下载完后,将其拖进ARDUPY中,其会自动退出并重新接入在这里插入图片描述
然后重新打开此磁盘,会出现此图
在这里插入图片描述

STEP3:窗口安装aip
您可以在以下会话中下载最新版本的Ardupy for Windows。
对于视窗 64 位
如果你有Python 3环境,你也可以使用安装:pip3
win+r然后输入cmd 然后输入
pip3 install ardupy-aip

如果不安装可能后面会出现部分命令找不到定义,比如 machine 命令
解决方法可以两次复位板子或者重新刷固件库

最后你就可以在main.py中进行程序编写

个人在学习中遇到的问题

1.学习途径
可以在官网中学习链接如下https://wiki.seeedstudio.com/ArduPy/
也可以在Bilibil中通过里面的视频进行学习
视频链接 https://www.bilibili.com/video/BV1U54y1G7zs?p=4
2.视频里可能有问题的地方但是都是小问题,都不影响最后的功能实现,如果我说的有错,请多多指教。
1.视频中,在按键程序时,可以在程序中增加
lcd.setTextColor(lcd.color.WHITE,lcd.color.BLACK)
不知道为什么视频里程序并没有添加但是最后可以实现我下图的效果???可能是剪视频的时候忘了加进去hhh
如下图:

       if (Value_Button_C == 0):  # when button C is press
        if (Value_Button_C_OLD != Value_Button_C):# debounce input to make suce of button            		press
            Value_Button_C_OLD = Value_Button_C
            
            # draw on screen
            lcd.fillRect(0,0,40,240,lcd.color.BLACK)
            *lcd.setTextColor(lcd.color.WHITE,lcd.color.BLACK)*
            lcd.setTextSize(3)# set text size
            lcd.drawString("C",15,180)
            buzz(261)# execute buzz function with 261 as frequency

增加后按下按键的背景和文本颜色,更加好看
按下前,注意第一个C的变化
在这里插入图片描述
按下后

在这里插入图片描述

最后实现的代码,仅供参考,请多多指教嘻嘻嘻

from machine import Pin,Map,LCD
import time

BUZZER = Pin(Map.WIO_BUZZER,Pin.OUT)

# Button pin configuratinos
Button_A = Pin(Map.WIO_KEY_A,Pin.IN)
Button_B = Pin(Map.WIO_KEY_B,Pin.IN)
Button_C = Pin(Map.WIO_KEY_C,Pin.IN)

#  5-way switch pin configurations
SWITCH_UP = Pin(Map.WIO_5S_UP, Pin.IN) #set pin as input
SWITCH_DOWN = Pin(Map.WIO_5S_DOWM, Pin.IN)
SWITCH_LEFT = Pin(Map.WIO_5S_LEFT, Pin.IN)
SWITCH_RIGHT = Pin(Map.WIO_5S_RIGHT, Pin.IN)
SWITCH_PRESS = Pin(Map.WIO_5S_PRESS, Pin.IN)

# variables for reading current button / switch state
Value_Button_A = 0
Value_Button_B = 0
Value_Button_C = 0
Value_SWITCH_UP = 0
Value_SWITCH_DOWN = 0
Value_SWITCH_LEFT = 0
Value_SWITCH_RIGHT = 0
Value_SWITCH_PRESS = 0

# variables for reading perious button / switch state
Value_Button_A_OLD = 0
Value_Button_B_OLD = 0
Value_Button_C_OLD = 0
Value_SWITCH_UP_OLD = 0
Value_SWITCH_DWON_OLD = 0
Value_SWITCH_LEFT_OLD = 0
Value_SWITCH_RIGHT_OLD = 0
Value_SWITCH_PRESS_OLD = 0

lcd = LCD()# TFT init

lcd.fillScreen(lcd.color.WHITE)# fill with screen with white color


#lcd.drawRect(0,0,40,240,lcd.color.BLACK)
#lcd.drawRect(40.0,40,240,lcd.color.BLACK)
#lcd.drawRect(80,0.40,240,lcd.color.BLACK)
#lcd.drawRect(120,0,40,240,lcd.color.BLACK)
#lcd.drawRect(160,0,40,240,lcd.color.BLACK)
#lcd.drawRect(200,0,40,240,lcd.color.BLACK)
#lcd.drawRect(240,0,40,240,lcd,color.BLACK)
#lcd.drawRect(280,0,40,240,lcd.color.BLACK)

## draw upper notes with black fill 
#lcd.fillRect(25,0,30,130,lcd.color.BLACK)
#lcd.fillRect(65,0,30,130,lcd.color.BLACK)
#lcd.fillRect(145,0,30,130,lcd.color.BLACK)
#lcd.fillRect(185,0,30,130,lcd.color.BLACK)
#lcd.fillRect(225,0,30,130,lcd.color.BLACK)
#lcd.fillRect(305,0,30,130,lcd.color.BLACK)

## draw for note labels
#lcd.setTextColor(lcd.color.BLACK)
#lcd.setTextSize(3)
#lcd.drawString("C",15,180)
#lcd.drawString("D",55,180)
#lcd.drawString("E",95,180)
#lcd.drawString("F",135,180)
#lcd.drawString("G",175,180)
#lcd.drawString("A",215,180)
#lcd.drawString("B",255,180)
#lcd.drawString("C",295,180) 

def buzz(frequency):# function to generate buzzer
    cycle = 1000000/ frequency
    half_cycle = int((cycle/2))
    BUZZER.value(1)
    time.sleep_us(half_cycle)
    BUZZER.value(0)
    time.sleep_us(half_cycle)

    
def main():# main function
    # assign gloable varables for reading current button state
    global Value_Button_A 
    global Value_Button_B 
    global Value_Button_C 
    global Value_SWITCH_UP 
    global Value_SWITCH_DOWN 
    global Value_SWITCH_LEFT 
    global Value_SWITCH_RIGHT 
    global Value_SWITCH_PRESS 

    # variables for reading perious button / switch state
    global Value_Button_A_OLD 
    global Value_Button_B_OLD 
    global Value_Button_C_OLD 
    global Value_SWITCH_UP_OLD 
    global Value_SWITCH_DWON_OLD 
    global Value_SWITCH_LEFT_OLD 
    global Value_SWITCH_RIGHT_OLD 
    global Value_SWITCH_PRESS_OLD 

    while True:# while loop 
        # assign variable to read current button state(0 or 1)
        Value_Button_A = Button_A.value()
        Value_Button_B = Button_B.value()
        Value_Button_C = Button_C.value()
        Value_SWITCH_UP = SWITCH_UP.value()
        Value_SWITCH_DOWN = SWITCH_DOWN.value()
        Value_SWITCH_LEFT = SWITCH_LEFT.value()
        Value_SWITCH_RIGHT = SWITCH_RIGHT.value()
        Value_SWITCH_PRESS = SWITCH_PRESS.value()

        # note C
        if (Value_Button_C == 0):  # when button C is press
            if (Value_Button_C_OLD != Value_Button_C):# debounce input to make suce of button press
                Value_Button_C_OLD = Value_Button_C
                
                # draw on screen
                lcd.fillScreen(0,0,40,240,lcd.color.BLACK)
                lcd.setTextSize(3)# set text size
                lcd.drawString("C",15,180)
            buzz(261)# execute buzz function with 261 as frequency

        else:# when button c is not press
            if (Value_Button_C_OLD != Value_Button_C):# debounce input to make suce of button press
                Value_Button_C_OLD = Value_Button_C
                lcd.fillRect(0,0,40,240,lcd.color.WHITE)# fill note c in white
                lcd.drawRect(0,0,40,240,lcd.color.BLACK)# draw note black border
                lcd.fillRect(25,0,30,130,lcd.color.BLACK)# fill note c# in BALCK
                lcd.setTextColor(lcd.color.WHITE,lcd.color.BLACK) # black text
                lcd.setTextSize(3)# set text size
                lcd.drawString("C",15,180)

        #note D        
        if (Value_Button_B == 0):  # when button C is press
            if (Value_Button_B_OLD != Value_Button_B):# debounce input to make suce of button press
                Value_Button_B_OLD = Value_Button_B
                
                # draw on screen
                lcd.fillScreen(40,0,40,240,lcd.color.BLACK)
                lcd.setTextSize(3)# set text size
                lcd.drawString("D",55,180)
            buzz(294)# execute buzz function with 261 as frequency

        else:# when button c is not press
            if (Value_Button_B_OLD != Value_Button_B):# debounce input to make suce of button press
                Value_Button_B_OLD = Value_Button_B
                lcd.fillRect(40,0,40,240,lcd.color.WHITE)# fill note D in white
                lcd.drawRect(40,0,40,240,lcd.color.BLACK)# draw note black border
                lcd.fillRect(25,0,30,130,lcd.color.BLACK)# fill note C# in BALCK
                lcd.fillRect(65,0,30,130,lcd.color.BLACK)# fill note D# in BALCK
                lcd.setTextColor(lcd.color.WHITE,lcd.color.BLACK) # black text
                lcd.setTextSize(3)# set text size
                lcd.drawString("D",55,180)
        
        #note E        
        if (Value_Button_A == 0):  # when button C is press
            if (Value_Button_A_OLD != Value_Button_A):# debounce input to make suce of button press
                Value_Button_A_OLD = Value_Button_A
                
                # draw on screen
                lcd.fillScreen(80,0,40,240,lcd.color.BLACK)
                lcd.setTextSize(3)# set text size
                lcd.drawString("E",95,180)
            buzz(329)# execute buzz function with 261 as frequency

        else:# when button c is not press
            if (Value_Button_A_OLD != Value_Button_A):# debounce input to make suce of button press
                Value_Button_A_OLD = Value_Button_A
                lcd.fillRect(80,0,40,240,lcd.color.WHITE)# fill note D in white
                lcd.drawRect(80,0,40,240,lcd.color.BLACK)# draw note black border
                #
                lcd.fillRect(65,0,30,130,lcd.color.BLACK)# fill note D# in BALCK
                lcd.setTextColor(lcd.color.WHITE,lcd.color.BLACK) # black text
                lcd.setTextSize(3)# set text size
                lcd.drawString("E",95,180)
                

        #note F        
        if (Value_SWITCH_LEFT == 0):  # when SWITCH_LEFT is press
            if (Value_SWITCH_LEFT != Value_SWITCH_LEFT):# debounce input to make suce of button press
                Value_SWITCH_LEFT = Value_SWITCH_LEFT
                
                # draw on screen
                lcd.fillScreen(120,0,40,240,lcd.color.BLACK)
                lcd.setTextSize(3)# set text size
                lcd.drawString("F",135,180)
            buzz(349)# execute buzz function with 261 as frequency

        else:# when button c is not press
            if (Value_SWITCH_LEFT != Value_SWITCH_LEFT):# debounce input to make suce of button press
                Value_SWITCH_LEFT = Value_SWITCH_LEFT
                lcd.fillRect(120,0,40,240,lcd.color.WHITE)# fill note F in white
                lcd.drawRect(120,0,40,240,lcd.color.BLACK)# draw note black border
                #
                lcd.fillRect(145,0,30,130,lcd.color.BLACK)# fill note F# in BALCK
                lcd.setTextColor(lcd.color.WHITE,lcd.color.BLACK) # black text
                lcd.setTextSize(3)# set text size
                lcd.drawString("F",135,180)


        #note G        
        if (Value_SWITCH_RIGHT == 0):  # when SWITCH_RIGHT is press
            if (Value_SWITCH_RIGHT != Value_SWITCH_RIGHT):# debounce input to make suce of button press
                Value_SWITCH_RIGHT = Value_SWITCH_RIGHT
                
                # draw on screen
                lcd.fillScreen(160,0,40,240,lcd.color.BLACK)
                lcd.setTextSize(3)# set text size
                lcd.drawString("G",175,180)
            buzz(392)# execute buzz function with 392 as frequency

        else:# when button c is not press
            if (Value_SWITCH_RIGHT != Value_SWITCH_RIGHT):# debounce input to make suce of button press
                Value_SWITCH_RIGHT = Value_SWITCH_RIGHT
                lcd.fillRect(160,0,40,240,lcd.color.WHITE)# fill note G in white
                lcd.drawRect(160,0,40,240,lcd.color.BLACK)# draw note black border
                lcd.fillRect(145,0,30,130,lcd.color.BLACK)# fill note F# in BALCK
                lcd.fillRect(185,0,30,130,lcd.color.BLACK)# fill note G# in BALCK
                lcd.setTextColor(lcd.color.WHITE,lcd.color.BLACK) # black text
                lcd.setTextSize(3)# set text size
                lcd.drawString("G",175,180)


        #note A        
        if (Value_SWITCH_UP == 0):  # when SWITCH_UP is press
            if (Value_SWITCH_UP != Value_SWITCH_UP):# debounce input to make suce of button press
                Value_SWITCH_UP = Value_SWITCH_UP
                
                # draw on screen
                lcd.fillScreen(200,0,40,240,lcd.color.BLACK)
                lcd.setTextSize(3)# set text size
                lcd.drawString("A",215,180)
            buzz(440)# execute buzz function with 392 as frequency

        else:# when button c is not press
            if (Value_SWITCH_UP != Value_SWITCH_UP):# debounce input to make suce of button press
                Value_SWITCH_UP = Value_SWITCH_UP
                lcd.fillRect(200,0,40,240,lcd.color.WHITE)# fill note A in white
                lcd.drawRect(200,0,40,240,lcd.color.BLACK)# draw note black border
                #lcd.fillRect(145,0,30,130,lcd.color.BLACK)# fill note F# in BALCK
                lcd.fillRect(185,0,30,130,lcd.color.BLACK)# fill note A# in BALCK
                lcd.fillRect(225,0,30,130,lcd.color.BLACK)# fill note G# in BALCK
                lcd.setTextColor(lcd.color.WHITE,lcd.color.BLACK) # black text
                lcd.setTextSize(3)# set text size
                lcd.drawString("A",215,180)
                
                
        #note B        
        if (Value_SWITCH_DOWN == 0):  # when SWITCH_DOWN is press
            if (Value_SWITCH_DOWN != Value_SWITCH_DOWN):# debounce input to make suce of button press
                Value_SWITCH_DOWN = Value_SWITCH_DOWN
                
                # draw on screen
                lcd.fillScreen(240,0,40,240,lcd.color.BLACK)
                lcd.setTextSize(3)# set text size
                lcd.drawString("B",255,180)
            buzz(493)# execute buzz function with 392 as frequency

        else:# when button c is not press
            if (Value_SWITCH_DOWN != Value_SWITCH_DOWN):# debounce input to make suce of button press
                Value_SWITCH_DOWN = Value_SWITCH_DOWN
                lcd.fillRect(240,0,40,240,lcd.color.WHITE)# fill note B in white
                lcd.drawRect(240,0,40,240,lcd.color.BLACK)# draw note black border
                lcd.fillRect(225,0,30,130,lcd.color.BLACK)# fill note B# in BALCK
                lcd.setTextColor(lcd.color.WHITE,lcd.color.BLACK) # black text
                lcd.setTextSize(3)# set text size
                lcd.drawString("B",255,180)

        #note C        
        if (Value_SWITCH_PRESS == 0):  # when SWITCH_PRESS is press
            if (Value_SWITCH_PRESS != Value_SWITCH_PRESS):# debounce input to make suce of button press
                Value_SWITCH_PRESS = Value_SWITCH_PRESS
                
                # draw on screen
                lcd.fillScreen(280,0,40,240,lcd.color.BLACK)
                lcd.setTextSize(3)# set text size
                lcd.drawString("C",295,180)
            buzz(523)# execute buzz function with 392 as frequency

        else:# when button c is not press
            if (Value_SWITCH_PRESS != Value_SWITCH_PRESS):# debounce input to make suce of button press
                Value_SWITCH_PRESS = Value_SWITCH_PRESS
                lcd.fillRect(280,0,40,240,lcd.color.WHITE)# fill note C in white
                lcd.drawRect(280,0,40,240,lcd.color.BLACK)# draw note black border
                lcd.fillRect(305,0,30,130,lcd.color.BLACK)# fill note C# in BALCK
                lcd.setTextColor(lcd.color.WHITE,lcd.color.BLACK) # black text
                lcd.setTextSize(3)# set text size
                lcd.drawString("C",295,180)


if __name__ == "__main__":
    while True:
        main()
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值