Raspberry Pi Pico 2 是一款低成本,高性能的微控制器开发板,具有灵活数字接口。硬件上,采用 Raspberry Pi 官方自主研发的 RP2350 微控制器芯片,独特的双核、双架构,高达 150MHz 的运行频率,内置了 520KB 的 SRAM 和 4MB 的内存,还板载有多达 26 个多功能的 GPIO 引脚。软件上,可选择树莓派提供的 C/C++ SDK,或者使用 MicroPython 进行开发,且配套有完善的开发资料教程,可方便快速入门开发,并嵌入应用到产品中


为了方便在电脑上使用MicroPython开发Pico2板,建议下载Thonny IDE





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)
可以参考官方的手册-- Pico常见问题
1.设置成输入状态的引脚必须初始化拉高或拉低
2.更换USB线看看是否是使用的USB线有问题
周一-周五(9:30-6:30)周六(9:30-5:30)
手机:13434470212
邮箱:services04@spotpear.cn
QQ:202004841
