文章目录

  • 1.板子介绍
  • 2.led开关
  • 4.开关控制:
  • 5.中断:
  • 6.按按钮灯循环亮:
  • 7.模拟输入:
  • 8.PWM Control
  • 9.OLED
  • 10.H桥控制器小型直流电机
  • 11.用上全部

树莓派 Pico 中文站

1.板子介绍

  • 微型usb连接器 microUSB 数据通信,提供动力
  • On-board LED 板载LED 在自己专用的GPIO端口 峰值上的唯一LED
    不会给出电源任何施加到上面的指示
  • boot select按钮 启动模式选择 引导加载程序
  • Debug Pins 调试连接器 pico支持两线串行通过这个进行调试
  • rp2040微控制器芯片

  • 32位双核 arm-cortex m zero plus 芯片
  • 以48兆赫的的正常时钟速度运行,并可提升至133兆赫
  • 2兆字节的板载外部内存
  • 板载实时时钟
  • 板载温度传感器

  • 要么使用引脚,要么表面安装
  • 8个接地点 其中一个是1个调试的一部分 接地点发布均匀
  • 所有的接地连接是方行焊盘而不是圆形焊盘

  • v总线和输出的微型usb电缆电压 连接5v 无连接v总线无输出
  • 系统的输入功率 可以在2到5v的电压下运行该系统 尽管pico是3.3v逻辑机
  • 引脚36上的3.3输出是pico的内部电压调节器的3.3输出 可以用来驱动外部设备,但不要超过3亿
  • 3.3伏使能可启用 扳上的3.3伏电源 可以外部打开或关闭
  • run连接 rp2040微控制器的使能连接 可以用作微控制器的复位

  • 26个裸露的gpio引脚
  • 内部的第27个TPIO引脚用于板载LED

  • 12位模数转换器
  • 3个内部模数转换器
  • 内部ADC用于温度传感器
  • ADC vref gnd 用于外部基准电压源 以提高模数转换器的精度

  • 2个I2C总线
  • 2个SPI总线
  • 2个URAT
  • 16个PWM通道

  • 普通的微控制器运行
  • 使用micro usb 端口通电
  • 使用电池供电,能够在低压2伏特的电压下工作
  • 作为usb 设备运行
  • micro python 或 c

2.led开关

  • 26个gpio引脚,大多数的引脚支持带调制的脉冲
  • 3.3v的逻辑器件
  • 内置上拉电阻和下拉电阻,最大限度的减少所需的电路数量

可以用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) 

4.开关控制:


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)  # 延迟

5.中断:

import machine
import utimeled_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)

6.按按钮灯循环亮:


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:   #  按下按钮,值为0led_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)

7.模拟输入:

  • 3个内部模数转换器
  • 12位adc
  • 模拟基准电压源 模拟接地引脚 可与外部基准电压源配合使用

最简单组件是有效直径

这里使用10k的直线壶

  • 引脚23 连接到patometer的一端
  • 引脚31 gpio26 模拟转换器0 连接到patometer的一端
  • 引脚36 3.3v输出 连接到patometer的一端

代码


import machine
import utime# 定义一个称为电位计的变量,并将其定义为模拟输入,然后使用库的ADC功能
potentiometer = machine.ADC(26)while True:print(potentiometer.read_u16())   # 打印电位值,打印模数转换器的输出值# 使用的是读出无符号16位输出,16位实际从0到65535# 但是返回的值可能不是你期待的值# 当我们需要将其传递给其它操作时# 例如当我们使用PWM时,只要我们将所有内容# 保持为无符号的16位数字,就不需要担心映射命令之类的# 事情utime.sleep(2)

8.PWM Control

从电位器中读取值用作PWM信号的控制
把信号馈送到rgbled的红色部分

import machine
import utimeled_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位整数中获得的

9.OLED

  • PICO内部I2c总线零号
  • 两个I2C总线
  • 只需要写入
  • 只需3.3v

驱动显示器的脚本:

需要导入这个oled 的库

进入工具的包管理下载对应的包


import machine
import utimesda = 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)

10.H桥控制器小型直流电机

  • gpio上的PWM调制脉冲来控制直流电机的速度
  • 使用MOSFET 的H桥驱动器

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)   # 防反跳按钮

11.用上全部

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展示出来1oled.show()oled.fill_rect(1, 15, speedvalue, 25, 0)  # utime.sleep(0.25)

视频教程

树莓派PICO入门教程相关推荐

  1. 树莓派Pico入门教程,开发环境的配置和程序的编写

    目录 1.是,树莓派 1.1什么是树莓派Pico 1.2主要特性 2.与众不同的编程方式 2.1MicroPython 2.2 Mu的使用和软件的编写 2.3在树莓派Pico上使用MicroPytho ...

  2. 树莓派python界面qt_树莓派QT入门教程——使用Qt开发界面程序控制GPIO

    树莓派QT入门教程--使用Qt开发界面程序控制GPIO 玩转树莓派2017-07-12 12:36 树莓派入门教程--使用Qt开发界面程序 前言 Qt是一个1991年由奇趣科技开发的跨平台C++图形用 ...

  3. 树莓派pico入门指引

    前言 最近在捣鼓Linux内核和驱动的东西,并且看了一本书<穿越计算机的迷雾>,强推!从电开始讲解计算机原理,让我对底层的东西开始感兴趣,就想搞搞硬件,然后之前也了解过有开发板这个东西,在 ...

  4. 树莓派PICO入门:电脑连接简易树莓派PICO单片机,烧录,使用python进行简单代码操作。

    需求:pico树莓派一个,python,thonny工具 需求: 1,pico树莓派一个: 2,thonny工具: 二.使用步骤 1.通过数据线将树莓派pico单片机与电脑连接: 2.烧录文件到单片机 ...

  5. 树莓派 PICO基础教程(基于MicroPython)

    文章目录 1 树莓派 PICO 简介 1.1 简介 1.2 配置 [^2] 1.3 引脚图 1.4 尺寸 2 安装 2.1 烧录固件 2.2 安装IDE(Thonny IDE) 2.3 离线运行程序 ...

  6. 树莓派 python 入门_树莓派新手入门教程

    树莓派(Raspberry Pi)是学习计算机知识.架设服务器的好工具,价格低廉,可玩性高. 本文根据我的亲身经验,介绍如何从零开始,搭建一个树莓派服务器,控制 LED 灯.你会看到,树莓派玩起来实在 ...

  7. 树莓派Linux入门教程

    1. 格式化SD卡,下载树莓派镜像:树莓派官方链接.​​​​​​ 2. 在SD卡根目录下创建一个ssh文件,用于SSH连接. 3. 使用网线连接树莓派,打开网络共享,打开cmd ,输入arp-a查看接 ...

  8. [树莓派 PICO(基于MicroPython)]基础教程02-按键测试、按键控制外设LED开关

    最近入手了pico学习. 目录 〇.总的参考 一.函数说明 二.硬件准备 三.程序-按键测试.按键控制外设LED开关 1.按键测试 2.按键控制外设LED开关 四.可能出现的问题 〇.总的参考 ①视频 ...

  9. 树莓派又出新品了?请查收这份Pico入门指南!

    关注.星标公众号,直达精彩内容 2021年1月底的时候,树莓派基金会发布了一个重磅消息,推出了进军微控制器领域的树莓派Pico. 功能强劲,价格便宜的特性让Pico受到了全世界创客们的关注,这篇文章就 ...

最新文章

  1. 字节跳动pest分析_字节跳动小程序分析:前景及优势都是什么?
  2. 堆和栈的区别 (转贴)
  3. (三)Solrj4到Solrj5的升级之路
  4. php引用代码_PHP引用是什么?php中引用的介绍(代码实例)
  5. 单片机c语言控制显示器,单片机实现LCD液晶显示器控制原理..docx
  6. sap生产工单报工_SAP系统PP (ProductionPlanning) 模块知识培训
  7. Qt Creator 2.8.1,qt4.8.5 需要含gcc4.4 的mingw
  8. QueryPerformanceFrequency使用方法--Windows高精度定时计数
  9. 游戏设计创造对话探秘之迭代
  10. 化解字符串不能超过8000的方法及交叉表的处理
  11. [FOI2020]手链强化
  12. Ring Buffer 原理
  13. john5(john5和曼森的关系)
  14. [Mac软件推荐] 三款提高 Mac 使用效率的必备软件
  15. 仿京东PC网页商品详情的放大镜效果(原理+代码)
  16. calibre的注册表残留删除
  17. 想必这篇秋招面试贴会帮助你
  18. 华为c8815手机在开发Android调试时logcat不显示输出信息的解决办法
  19. Qt5.13.2中配置opencv4.5.0踩坑记录
  20. MySQL数据库快速入门

热门文章

  1. 相遇问题(图的dfs)
  2. apt-get --help查看常用指令
  3. Adapte抽取操作
  4. promise中的.then方法【待完善】
  5. 关于button中的type属性来决定是否提交form表单
  6. 第七章 :Hadoop+Zookeeper 3节点高可用集群搭建和原理解释
  7. Ubuntu系统下配置Apache虚拟主机
  8. jstree插件对树操作增删改查的使用
  9. 梦魇java_死亡之屋-梦魇增值版
  10. java中contains_java中的contains()方法