赞
踩
:
可以用3个红绿蓝LED
或者一个LED
瞬间接触开关
一红一黑
3LED 需要3个降压电阻 330欧姆的电阻
引脚14(gpio引脚10) 连接到其中一个电阻器,连接到红色LED的阳极
引脚15(gpio引脚11) 连接到其中一个电阻器,连接到绿色LED的阳极
引脚19(gpio引脚14) 连接到其中一个电阻器,连接到蓝色LED的阳极
引脚23 上的接地点;连接到LED上的公共阴极
引脚4 (gpio引脚2)连接到黑色开关的一侧
引脚20 (gpio引脚15)连接到红色开关的一侧
引脚3 接地 连接到黑色开关的另一侧
pin引脚36 3.3v输出 连接到红色开关的另一侧
循环亮3种不同颜色
import machine import utime # 对应引脚并打开输出 led_red = machine.Pin(10, machine.Pin.OUT) led_green = machine.Pin(11, machine.Pin.OUT) led_blue = machine.Pin(14, machine.Pin.OUT) while True: led_red.value(1) led_green.value(0) led_blue.value(0) utime.sleep(2) led_red.value(0) led_green.value(1) led_blue.value(0) utime.sleep(2) led_red.value(0) led_green.value(0) led_blue.value(1) utime.sleep(2) led_red.value(1) led_green.value(1) led_blue.value(0) utime.sleep(2) led_red.value(1) led_green.value(0) led_blue.value(1) utime.sleep(2) led_red.value(0) led_green.value(1) led_blue.value(1) utime.sleep(2) led_red.value(1) led_green.value(1) led_blue.value(1) utime.sleep(2) print("End of Loop") led_red.value(0) led_green.value(0) led_blue.value(0) utime.sleep(2)
import machine import utime #时间有关的库 button_red = machine.Pin(15, machine.Pin.IN, machine.Pin.PULL_DOWN) # gpio15 输入 下拉电阻,因为红灯的 # 的一段是3.3v 所以一直保持低位 # 当开关接通时,它将激活并将其拉高 button_black = machine.Pin(2, machine.Pin.IN, machine.Pin.PULL_UP) # 上拉电阻,降低即开始 while True: if button_red.value() == 1: print("Red") if button_black.value() == 0: print("Black") utime.sleep(0.25) # 延迟
import machine import utime led_red = machine.Pin(10, machine.Pin.OUT) led_green = machine.Pin(11, machine.Pin.OUT) led_red.value(0) led_green.value(0) # 关灯 button_red = machine.Pin(15, machine.Pin.IN, machine.Pin.PULL_DOWN) # 正常下拉电阻为低,除非按他就会拉高 def in_handler(pin) button_red.irq(handler=None) # 关闭此引脚的中断 print("Interrupt Detected!") led_red.value(1) led_green.value(0) utime.sleep(4) # 休眠在中断不常见,这是个示范 led_red.value(0) button_red.irq(handler=int_handler) # 重新设置程序,然后才能再次工作 button_red.irq(trigger=machine.Pin.IRQ_RISING, handler=int_handler) # 修复中断请求 触发中断 我们在上升信号时触发它(低到高) 此时传入一个被称为中断处理程序的函数 # 每次按下按钮会有一个中断,就调用这个函数 # 不被中断时 while True: led_green.toggle() # 切换函数 ,获取输出状态并将其反转 # led将开或关,就反转成 utime.sleep(2)
import machine import utime # 对应引脚并打开输出 led_red = machine.Pin(10, machine.Pin.OUT) led_green = machine.Pin(11, machine.Pin.OUT) led_blue = machine.Pin(14, machine.Pin.OUT) led_red.value(0) led_green.value(0) led_blue.value(0) button_black = machine.Pin(2, machine.Pin.IN, machine.Pin.PULL_UP) # 上拉电阻,降低即开始 while True: if button_black.value() == 0: # 按下按钮,值为0 led_red.value(1) led_green.value(0) led_blue.value(0) utime.sleep(1) led_red.value(0) led_green.value(1) led_blue.value(0) utime.sleep(1) led_red.value(0) led_green.value(0) led_blue.value(1) led_red.value(0) led_green.value(0) led_blue.value(0)
最简单组件是有效直径
这里使用10k的直线壶
代码
import machine import utime # 定义一个称为电位计的变量,并将其定义为模拟输入,然后使用库的ADC功能 potentiometer = machine.ADC(26) while True: print(potentiometer.read_u16()) # 打印电位值,打印模数转换器的输出值 # 使用的是读出无符号16位输出,16位实际从0到65535 # 但是返回的值可能不是你期待的值 # 当我们需要将其传递给其它操作时 # 例如当我们使用PWM时,只要我们将所有内容 # 保持为无符号的16位数字,就不需要担心映射命令之类的 # 事情 utime.sleep(2)
从电位器中读取值用作PWM信号的控制
把信号馈送到rgbled的红色部分
import machine import utime led_red = machine.PWM(machine.Pin(10)) # 定于led为PWM输出 potentiomemter = machine.ADC(26) # 定义一个称为电位计的变量,并将其定义为模拟输入,然后使用库的ADC功能 led_red.freq(1000) # 工作频率为1000赫兹 while True: led_red.duty_u16(potentiomemter.read_u16()) # 占空比是一个无符号的16位整数 # 其值是从读取电位器中的无符号的16位整数中获得的
驱动显示器的脚本:
需要导入这个oled 的库
进入工具的包管理下载对应的包
import machine import utime sda = machine.Pin(20) scl = machine.Pin(21) i2c = machine.I2C(0, sda = sda, scl = scl, freq = 400000) # 设置I2C对象,(使用哪个总线0还是1,赋值,i2c所在总线的频率 ) # 使用库 from ssd1306 import SSD1306_I2C oled = SSD1306_I2C(128, 32, i2c) # 不用给ssd1306分配i2c,因为这是一个固定的地址,内置在库中,不同的显示参数 # 在屏幕上打印出文本 oled.text('Welcome to the', 0, 0) oled.text('Pi Pico', 0, 10) oled.text('Display Demo', 0 ,20) oled.show() utime.sleep(4) oled.fill(1) # 填满显示屏 oled.show() utime.sleep(2) oled.fill(0) # 清空显示屏 oled.show() # 循环滚动 while True: oled.text("Hello World", 0, 0) for i in range (0,164): oled.sroll(1, 0) #滚动一次只移动一个像素 oled.show() utime.sleep(0.01)
ADC电机 6v
tb 6612 fng 8桥电机驱动器 双批次桥, 但是只使用一面
6v 的电源
import machine import utime # 设置电位计,作为模拟1到数字输入 potentiometer = machine.ADC(26) # 设置H桥控制器引脚 # AI1,2控制电机的旋转方向 # PWMa控制马达的速度 mtr_AI1 = machine.Pin(8, machine.Pin.OUT) mtr_AI2 = machine.Pin(7, machine.Pin.OUT) mtr_PWMa = machine.PWM(machine.Pin(6)) button_red = machine.Pin(15, machine.Pin.IN, machine.Pin.PULL_DOWN) # 红色按钮下拉电阻 button_black = machine.Pin(2, machine.Pin.IN, machine.Pin.PULL_UP) # 黑色按钮上拉电阻 led_red = machine.Pin(10, machine.Pin.OUT) led_green = machine.Pin(11, machine.Pin.OUT) led_blue = machine.Pin(14, machine.Pin.OUT) led_red.value(0) led_green.value(0) led_blue.value(1) mtr_PWMa.freq(50) #输入的PWM频率1设置为50赫兹,猜测 mtr_AI1.value(1) # 让马达以特定的方向旋转 mtr_AI1.value(0) while True: # 当驱动LED时我们采用的是PWM的占空比,并将其与电位计的读数相匹配 mtr_PWMa.duty_u16(potentiometer.read_u16()) if button_red.value() == 1: mtr_AI1.value(0) mtr_AI2.value(1) led_red.value(1) led_green.value(0) led_blue.value(0) if button_black.value() == 0: mtr_AI1.value(1) mtr_AI2.value(0) led_red.value(0) led_green.value(1) led_blue.value(0) utime.sleep(0.25) # 防反跳按钮
import machine import utime # 设置电位计,作为模拟1到数字输入 potentiometer = machine.ADC(26) # 设置H桥控制器引脚 # AI1,2控制电机的旋转方向 # PWMa控制马达的速度 mtr_AI1 = machine.Pin(8, machine.Pin.OUT) mtr_AI2 = machine.Pin(7, machine.Pin.OUT) mtr_PWMa = machine.PWM(machine.Pin(6)) button_red = machine.Pin(15, machine.Pin.IN, machine.Pin.PULL_DOWN) # 红色按钮下拉电阻 button_black = machine.Pin(2, machine.Pin.IN, machine.Pin.PULL_UP) # 黑色按钮上拉电阻 led_red = machine.Pin(10, machine.Pin.OUT) led_green = machine.Pin(11, machine.Pin.OUT) led_blue = machine.Pin(14, machine.Pin.OUT) sda = machine.Pin(20) scl = machine.Pin(21) i2c = machine.I2C(0, sda = sda, scl = scl, freq = 400000) # 设置I2C对象,(使用哪个总线0还是1,赋值,i2c所在总线的频率 ) # 使用库 from ssd1306 import SSD1306_I2C oled = SSD1306_I2C(128, 32, i2c) # 不用给ssd1306分配i2c,因为这是一个固定的地址,内置在库中,不同的显示参数 oled.text('Pico Motor Test', 0 ,0) oled.show() utime.sleep(2) led_red.value(1) led_green.value(0) led_blue.value(0) utime.sleep(2) led_red.value(0) led_green.value(1) led_blue.value(0) utime.sleep(2) led_red.value(0) led_green.value(0) led_blue.value(1) # 设置电机频率的值 mtr_PWMa.freq(50) #输入的PWM频率1设置为50赫兹,猜测 mtr_AI1.value(1) # 让马达以特定的方向旋转 mtr_AI1.value(0) while True: # 500计算速度值,在oled上创建条形图 speedvalue = int(potentiometer.read_u16()/500) # 当驱动LED时我们采用的是PWM的占空比,并将其与电位计的读数相匹配 mtr_PWMa.duty_u16(potentiometer.read_u16()) if button_red.value() == 1: mtr_AI1.value(0) mtr_AI2.value(1) led_red.value(1) led_green.value(0) led_blue.value(0) if button_black.value() == 0: mtr_AI1.value(1) mtr_AI2.value(0) led_red.value(0) led_green.value(1) led_blue.value(0) oled.fill_rect(1, 15, speedvalue, 25, 1) # oled上创建一个矩形,1,15经常启动的位置,速度值,25用来确定长度 # 11展示出来1 oled.show() oled.fill_rect(1, 15, speedvalue, 25, 0) # utime.sleep(0.25)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。