基于RP2350开发板,是加强版Raspberry Pi Pico 2 。
在兼容绝大多数Raspberry Pi Pico 2 模块的基础上,加强或者添加额外一些功能。
为了方便在电脑上使用MicroPython开发Pico/Pico2板,建议下载Thonny IDE
【MicroPython】machine.Pin类函数详解
【MicroPython】machine.PWM类函数详解
【MicroPython】machine.ADC类函数详解
【MicroPython】machine.UART类函数详解
【MicroPython】machine.I2C类函数详解
【MicroPython】machine.SPI类函数详解
【MicroPython】rp2.StateMachine类函数详解
对于 C/C++,建议使用 Pico VS Code 进行开发,这是一款 Microsoft Visual Studio Code 扩展,旨在让您在为 Raspberry Pi Pico 系列开发板创建、开发和调试项目时更加轻松。无论您是初学者还是经验丰富的专业人士,此工具都可以帮助您自信而轻松地进行 Pico 开发。下面我们介绍如何安装该扩展并使用。
Cmake Path: ${HOME}/.pico-sdk/cmake/v3.28.6/bin/cmake.exe Git Path: ${HOME}/.pico-sdk/git/cmd/git.exe Ninja Path: ${HOME}/.pico-sdk/ninja/v1.12.1/ninja.exe Python3 Path: ${HOME}/.pico-sdk/python/3.12.1/python.exe
set(PICO_BOARD pico CACHE STRING "Board type")
https://github.com/earlephilhower/arduino-pico/releases/download/4.0.2/package_rp2040_index.json
注意:如果您已经有ESP32板URL,您可以使用逗号分隔 URL,如下所示:
https://dl.espressif.com/dl/package_esp32_index.json,https://github.com/earlephilhower/arduino-pico/releases/download/4.0.2/package_rp2040_index.json
C:\Users\[username]\AppData\Local\Arduino15\packages
注意:将里面用户名:[username]替换成自己的用户名
MircoPython视频例程(github)
MicroPython固件/Blink例程(C)
树莓派官方C/C++示例程序 (github)
树莓派官方micropython示例程序 (github)
Arduino官方C/C++示例程序 (github)
led_external = machine.Pin(15, machine.Pin.OUT) #设置GP15为输出模式 while True: led_external.toggle() #每过5秒钟让LED灯的状态改变一次 utime.sleep(5)
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)
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)
potentiometer = machine.ADC(26) #将GP26作为模拟信号采集引脚 conversion_factor = 3.3 / (65535) while True: voltage = potentiometer.read_u16() * conversion_factor #将采集到的数据进行格式化转换成电压值 print(voltage) #打印电压信息,电压值会随着滑动变阻器旋转而变化 utime.sleep(2)
#这一段代码使用到的是状态机机制,如下代码是一个装饰器,在装饰器中我们可以硬件进行初始化、设定引脚的电平等等。 #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)
Choose_Color.py
#定义颜色 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]); #设置背光
Discoloration.py
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)
1.设置问输入状态的引脚必须初始化拉高或拉低
2.更换USB线看看是否是使用的USB线有问题
周一-周五(9:30-6:30)周六(9:30-5:30)
手机:13434470212
邮箱:services04@spotpear.cn
QQ:202004841