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()