查看树莓派 Pico With MicroPython的源代码
←
树莓派 Pico With MicroPython
跳转至:
导航
、
搜索
因为以下原因,你没有权限编辑本页:
你刚才请求的操作只对属于该用户组的用户开放:
用户
您可以查看并复制此页面的源代码:
== pico with micropython 入门视频教程 == 西瓜视频链接:https://www.ixigua.com/7092304594662851108 * 软件安装与配置 * 程序编译运行 <html> <iframe id='picomicropython' width='40%' src='https://www.ixigua.com/iframe/7092304594662851108?autoplay=0' frameborder=0 referrerpolicy="unsafe-url" allowfullscreen></iframe> <script type="text/javascript"> document.getElementById("picomicropython").style.height=document.getElementById("picomicropython").scrollWidth*0.6+"px"; </script> </html> == Thonny IDE 软件环境配置 == 为了方便在电脑上使用MicroPython开发Pico板,建议下载Thonny IDE. * 下载Thonny IDE并按照步骤安装 ** [https://github.com/thonny/thonny/releases/download/v3.3.3/thonny-3.3.3.exe Thonny IDE下载链接(Windows版本)] ** [https://thonny.org/ Thonny 官网] * 安装完成之后,第一次要配置语言和主板环境,由于我们是为了使用Pico,所以注意主板环境选择Raspberry Pi 选项。 [[File:Pico-R3-Tonny1.png|600px]] * 配置Micrpython环境及选择Pico端口。 ** 先将Raspberry Pi Pico 接入电脑,左键点击Thonny右下角的配置环境选项--》选择configture interpreter ** 在弹出的窗口栏中选择MicroPython(Raspberry Pi Pico),同时选择对应的端口。 [[File:Raspberry-Pi-Pico-Basic-Kit-M-2.png|600px]] [[File:Raspberry-Pi-Pico-Basic-Kit-M-3.png|600px]] * 点击ok后返回到Thonny主界面,下载固件库到Pico里面,然后点击停止按钮,在Shell窗口中即可显示当前使用到的环境。 * Pico在windows下载固件库方法: 按住BOOT键后连接电脑后,松开BOOT键,电脑会出现一个可移动磁盘,将固件库复制进去即可。 * RP2040在windows下载固件库方法: 连接电脑后,同时按下BOOT键跟RESET键,先松开RESET键再松开BOOT键,电脑会出现一个可移动磁盘,将固件库复制进去即可(用Pico的方式也可以)。 [[File:Raspberry-Pi-Pico-Basic-Kit-M-4.png|600px]] == 示例实验 == === External LED 实验 === * 按照下图连接好硬件,连接好接入电脑的Micro USB,在Thonny打开示例程序Lesson-5 External LED中的python文件,运行示例程序可以看到红灯有在闪烁的现象。 * 使用注意事项:LED较长的引脚为正极,较短的为负极,负极应该接GND,正极应该和GPIO输出口相连,使用时必须接上电阻。 [[File:Raspberry-Pi-Pico-Basic-Kit-External-LED-blink.png]] * 代码解析 <source lang="python"> led_external = machine.Pin(15, machine.Pin.OUT) #设置GP15为输出模式 while True: led_external.toggle() #每过5秒钟让LED灯的状态改变一次 utime.sleep(5) </source> === Traffic Light System 实验 === * 按照下图连接好硬件,连接好接入电脑的Micro USB,在Thonny打开示例程序Lesson-9 Traffic-Light-System中的python文件,运行程序可以看到交通灯带正常的运行,当按下按键时会触发蜂鸣器。 * 使用注意事项:LED较长的引脚为正极,较短的为负极,负极应该接GND,正极应该和GPIO输出口相连,使用时必须接上电阻;蜂鸣器的红线接GPIO口输出,黑线接GND。 [[File:Raspberry-Pi-Pico-Basic-Kit-Traffic-Light-System.png]] * 代码解析 <source lang="python"> def button_reader_thread(): #检测按键是否被按下 global button_pressed while True: if button.value() == 1: button_pressed = True _thread.start_new_thread(button_reader_thread, ()) #用开启线程的方式去检测按键 while True: if button_pressed == True: #如果按键被按下,红灯亮起,蜂鸣器响闹 led_red.value(1) for i in range(10): buzzer.value(1) utime.sleep(0.2) buzzer.value(0) utime.sleep(0.2) global button_pressed button_pressed = False led_red.value(1) #正常情况下红灯边绿灯时黄灯会亮两秒,然后黄灯和红灯灭,绿灯亮 utime.sleep(5) #由绿灯边红灯时,绿灯先灭,黄色亮两秒,然后红灯亮 led_amber.value(1) utime.sleep(2) led_red.value(0) led_amber.value(0) led_green.value(1) utime.sleep(5) led_green.value(0) led_amber.value(1) utime.sleep(5) led_amber.value(0) </source> === Burglar Alarm LED Buzzer 实验 === * 按照下图连接好硬件,连接好接入电脑的Micro USB,在Thonny打开示例程序Lesson-14 Burglar Alarm LED Buzzer中的python文件,运行程序可以看到,当人为的在Passive infrared sensor前晃动时,LED灯闪亮的同时蜂鸣器也会报警。 * 使用注意事项:Passive infrared sensor 的中间引脚为数据输出引脚,两边的引脚分别接入VCC和GND即可。 [[File:Raspberry-Pi-Pico-Basic-Kit-Burglar Alarm LED Two Buzzer.png]] * 代码解析 <source lang="python"> def pir_handler(pin): #中断处理函数,蜂鸣器响,led快速闪烁 print("ALARM! Motion detected!") for i in range(50): led.toggle() buzzer.toggle() utime.sleep_ms(100) sensor_pir.irq(trigger=machine.Pin.IRQ_RISING, handler=pir_handler)#开启中断,当人体传感器检测到异常时就会今天中断处理函数处理 while True: #无异常状态下会每隔5秒改变一次LDE的状态 led.toggle() utime.sleep(5) </source> === Potentiometer 实验 === * 按照下图连接好硬件,连接好接入电脑的Micro USB,在Thonny打开示例程序Lesson-16 Potentiometer中的python文件,运行程序,旋转电位器可以看到Sheel窗口中打印出来的电压值也在改变。 * 使用注意事项:Potentiometer的中间引脚为数据输出口,两边的引脚分别接上GND和VCC即可。 [[File:Raspberry-Pi-Pico-Basic-Kit-Potentionmeter.png]] * 代码解析 <source lang="python"> potentiometer = machine.ADC(26) #将GP26作为模拟信号采集引脚 conversion_factor = 3.3 / (65535) while True: voltage = potentiometer.read_u16() * conversion_factor #将采集到的数据进行格式化转换成电压值 print(voltage) #打印电压信息,电压值会随着滑动变阻器旋转而变化 utime.sleep(2) </source> === WS2812 实验 === * 按照下图连接好硬件,连接好接入电脑的Micro USB,在Thonny打开示例程序Lesson-25 WS2812中的WS2812_RGB_LED.py文件,运行程序可以一次看到蓝、红、绿、白的RGB颜色。 [[File:Raspberry-Pi-Pico-Basic-Kit-WS2812.png]] * 代码解析 <source lang="python"> #这一段代码使用到的是状态机机制,如下代码是一个装饰器,在装饰器中我们可以硬件进行初始化、设定引脚的电平等等。 #label("bitloop") 我们可以在代码中定义一下标记,方便我们通过跳转的方式跳到他们这里执行。 #jmp(not_x,"do_zero") 当x=0时,我们就调整到标签“do_zero”。 #nop() .set(0) [T2 - 1] 当x=0时,会跳转到这里执行。 @asm_pio(sideset_init=PIO.OUT_LOW, out_shiftdir=PIO.SHIFT_LEFT, autopull=True, pull_thresh=24) def ws2812(): T1 = 2 T2 = 5 T3 = 1 label("bitloop") out(x, 1) .side(0) [T3 - 1] jmp(not_x, "do_zero") .side(1) [T1 - 1] jmp("bitloop") .side(1) [T2 - 1] label("do_zero") nop() .side(0) [T2 - 1] # Create the StateMachine with the ws2812 program, outputting on Pin(22). sm = StateMachine(0, ws2812, freq=8000000, sideset_base=Pin(0)) #创建状态机 # Start the StateMachine, it will wait for data on its FIFO. sm.active(1) #开始状态机 # Display a pattern on the LEDs via an array of LED RGB values. ar = array.array("I", [0 for _ in range(NUM_LEDS)]) print(ar) print("blue") for j in range(0, 255): for i in range(NUM_LEDS): ar[i] = j sm.put(ar,8) #put()的方法是将数据放入状态机的输出FIFO time.sleep_ms(5) </source> === LCD1602 I2C 实验 === * 按照下图连接好硬件,连接好接入电脑的Micro USB,在Thonny打开示例程序Lesson-21 LCD1602 I2C中的python文件,先将RGB1602.py文件另存为Raspberry Pi Pico中,运行Choose_Color.py可以看到每5秒切换一种不同的颜色;运行Discoloration.py文件可以看到RGB颜色渐变的效果。 [[File:Raspberry-Pi-Pico-Basic-Kit-LCD1602-I2C.jpg]] * 代码解析 Choose_Color.py <source lang="python"> #定义颜色 rgb9 = (0,255,0) #青色’ lcd.setCursor(0, 0) #设置游标位置 # print the number of seconds since reset: lcd.printout("Waveshare") #写入字符 lcd.setCursor(0, 1) #设置游标位置到第二行第零列 lcd.printout("Hello,World!")#写入字符 lcd.setRGB(rgb1[0],rgb1[1],rgb1[2]); #设置背光 </source> Discoloration.py <source lang="python"> t=0 while True: r = int((abs(math.sin(3.14*t/180)))*255); #RGB随着时间的变化而变化 g = int((abs(math.sin(3.14*(t+60)/180)))*255); b = int((abs(math.sin(3.14*(t+120)/180)))*255); t = t + 3; lcd.setRGB(r,g,b);#重新设置RGB的值 # set the cursor to column 0, line 1 lcd.setCursor(0, 0) #定位到第一行第零列 # print the number of seconds since reset: lcd.printout("Waveshare")#写入字符 lcd.setCursor(0, 1) #定位到第二行第零列 lcd.printout("Hello,World!")#写入字符 time.sleep(0.3) </source>
返回
树莓派 Pico With MicroPython
。
导航菜单
个人工具
登录
名字空间
页面
讨论
不转换
变种
不转换
简体
繁體
大陆简体
香港繁體
澳門繁體
大马简体
新加坡简体
台灣正體
查看
阅读
查看源代码
查看历史
操作
搜索
导航
首页
YF-论坛提问
YFRobot-直营店
YFRobot-企业店
Arduino
Arduino之入门篇
Arduino入门教程
Arduino语法参考
Arduino库
Arduino核心代码
编程平台
Mixly库
Mind+库
MakeCode扩展
传感器系列
积木式传感器系列
黑板传感器系列
蓝板传感器系列
Micro:Bit
Micro:Bit 通用基础教程
Valon智能车
Valon-I
帮助
帮助
wiki语法参考
工具箱
链入页面
相关更改
特殊页面
页面信息