树莓派Pico的一些有趣的基本实验

▲ 实验电路板

Raspberry PI Pico小型MCU模块,以其价格低廉,功能丰富,开发方便为很多非电子类专业的同学进行创意项目原型设计提供了方便的平台。下面的一些实验给CDIE课程设计同学们制作的一些基本演示实验。

▌01 PI Pico实验板


RASPBERRY PI PICO 开发板 基础测试[1] 给出了对PI Pico开发板的基本设置,通过 安装Thonny开发环境[2] 可以方便对Pi Pico进行初步的开发。

▲ Pi Pico电路板的正反面

本文下面根据 Raspberry  Pi Pico Python SDK[3] 中给的示例,对PI Pico的一些基本模块进行测试。

关于Pi Pico的管脚配置,可以参见 Pi Pico数据手册[4] 中给出的Pi Pico管脚图定义:

▲ Pi Pico管脚功能定义图

更多PiPico的资料可以从:Pi Pico官方网站[5] 获得。

▌02 基本测试


1.Flash LED on board

from machine                import Pin,Timer
from time                   import sleep_usled = Pin(25, Pin.OUT)
tim = Timer()print("Flash LED.")def tick(timer):global ledled.toggle()tim.init(freq=2, mode=Timer.PERIODIC, callback=tick)

▲ 实验电路板

2.UART

(1)测试程序

from machine                import UART,Pin,Timer
from time                   import sleep_usuart = UART(0, baudrate=115200, tx=Pin(0), rx=Pin(1), bits=8, parity=None, stop=1)
led = Pin(25, Pin.OUT)tim = Timer()print("Send UART.")def tick(timer):global uart, ledled.toggle()uart.write(b'\x55')tim.init(freq=10, mode=Timer.PERIODIC, callback=tick)
▲ 测试Pin(0)
▲ 测量Pin(0)的波形

3.ADC

通过ADC通道4,读取芯片内部温度。在此过程中,使用手触摸Pi Pico表面加热,或者使用酒精喷洒芯片表面进行降温。

▲ 读取芯片内部的温度
import machine
import utimesensor_temp = machine.ADC(4)
conversion_factor = 3.3/(65535)while True:read = sensor_temp.read_u16() * conversion_factortemperature = 27 - (read - 0.706) / 0.001721print(temperature)utime.sleep(2)
▲ 显示读取的温度值
▲ 读取的温度数值变化

4.PWM

(1)PWM驱动LED

控制板载LED的波形是PWM运行。

from machine                import Pin,PWM
import timepwm = PWM(Pin(25))pwm.freq(1000)duty = 0
direction = 1for _ in range(16*255):duty += directionif duty > 255:duty = 255direction = -1elif duty < 0:duty = 0direction = 1pwm.duty_u16(duty*duty)time.sleep(0.001)

PWM是软件PWM,它可以设置在任意管脚上。初步测试过Pin0, 15, 16等等。都具有相类似波形。

▲ Pin25(驱动LED)的波形变化
▲ LED亮度变化

(2)PWM驱动舵机

舵机使用频率为50Hz,脉冲宽度cs 1.0 ~ 2.0ms的脉冲作为控制信号。下面是产生基本舵机位置中间时的输出控制脉冲。

from machine                import Pin,PWM
import timepwm = PWM(Pin(15))pwm.freq(50)
pwm.duty_u16(4915)

舵机具有三个接线:

  • 棕色:GND

  • 红色:+4.5 ~ +6V

  • 黄色:指令脉冲信号

▲ 舵机及其接口

计算Duty_16公式为:

对应脉冲宽度与duty_u16之间的关系:

脉冲宽度(ms)duty u16
13277
1.54915
26554

▲ 输出50Hz,1.5ms脉冲宽度
▲ 变化的PWM波形驱动舵机旋转
from machine                import Pin,PWM
import timepwm = PWM(Pin(16))pwm.freq(50)for _ in range(100):pwm.duty_u16(3276)print("Out pulse width : 1ms")time.sleep(1)print("Out pulse with : 2ms.")pwm.duty_u16(6553)time.sleep(1)

(3)PWM+ADC实验

使用电位器将改变的电压引入ADC(0),由单片机获得对应的ADC数值,改变PWM输出,使其输出的时间宽度从1ms等比例变化到2ms。

▲ 将电位器输入ADC(0)

可以看到舵机的输出角度随着电位器的改变而发生变化。

▲ 旋转电位器改变舵机的角度
from machine                import Pin,PWM
import timepwm = PWM(Pin(16))pwm.freq(50)control = machine.ADC(0)for _ in range(1000):adc = control.read_u16()duty = int(adc * (6553-3276)/0xffff) + 3276pwm.duty_u16(duty)time.sleep(0.1)

5.中断IRQ

使用管脚PIN2的下降沿产生中断。示例程序如下:

from machine                import Pinp2 = Pin(2, Pin.IN, Pin.PULL_UP)p2.irq(lambda pin:print("IRQ with flag:",pin.irq().flags()),Pin.IRQ_FALLING)

使用跳线将PIN2接地。每一次等会触发中断发生一次。

▲ 将PIN2接地可以看到触发了中断

▌结论


通过几个基础的Pi Pico实验,初步给出了该模块的应用实例。

参考资料

[1]

RASPBERRY PI PICO 开发板 基础测试: https://zhuoqing.blog.csdn.net/article/details/114037888

[2]

安装Thonny开发环境: https://zhuoqing.blog.csdn.net/article/details/114064833

[3]

Raspberry  Pi Pico Python SDK: https://datasheets.raspberrypi.org/pico/raspberry-pi-pico-python-sdk.pdf

[4]

Pi Pico数据手册: https://datasheets.raspberrypi.org/pico/pico-datasheet.pdf

[5]

Pi Pico官方网站: https://www.raspberrypi.org/documentation/rp2040/getting-started/

温馨提示

由于微信公众号近期改变了推送规则,如果您想经常看到我们的文章,可以在每次阅读后,在页面下方点一个「赞」或「在看」,这样每次推送的文章才会第一时间出现在您的订阅列表里。


推荐阅读:

专辑|Linux文章汇总

专辑|程序人生

专辑|C语言

我的知识小密圈

关注公众号,后台回复「1024」获取学习资料网盘链接。

欢迎点赞,关注,转发,在看,您的每一次鼓励,我都将铭记于心~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/466286.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Gabor变换

gabor变换分析非平稳信号有弊端主要是时频窗宽度固定 小波wavelet a小窗窄a大窗宽 窗口或短时傅氏变换在时域上和频域上的局部化程度主要由窗函数g(x)的有效时宽Δt 和有效带宽Δf 决定。Δt 和Δf 越小, 表明局部性越好。但Heisenberg 测不准原理指出[ 6] :Δt 和Δf 不可能任…

30块钱的树莓派跑unix系统,源码全部开源,香

▌ 1、前言之前做活动抽奖送的几个树莓派&#xff0c;但是因为好几个人都没有填写地址&#xff0c;所以就只能把东西寄回来给我&#xff0c;然后手痒自己玩了下&#xff0c;觉得这个东西确实很香&#xff0c;比一般的Linux开发板都好。PICO这个开发板可以玩很多东西1 、运行pic…

为什么大家都只谈薪资,却不谈梦想?

说个薪资的问题&#xff0c;最近在帮一个朋友物色工作&#xff0c;当然&#xff0c;除了我那个朋友以外&#xff0c;也有挺多同学向我咨询offer薪资的问题。先说我那个朋友。高中毕业后去当兵&#xff0c;服兵役结束后去4s店修车&#xff0c;我车子的很多问题也会向他咨询&…

差生的 8 年程序员总结

今年终于从大菊花厂离职了&#xff0c;离职前收入大概60w不到吧&#xff0c;在某乎属于比较差的&#xff0c;今天终于有空写一下自己的职场故事&#xff0c;也算是给自己近8年的程序员工作做个总结复盘。近8年有些事情做对了&#xff0c;也有更多事情做错了&#xff0c;在这里记…

Python简单的抓取静态网页内容

import requests from bs4 import BeautifulSoup res requests.get(http://news.sina.com.cn/china/)#获取目标网页 res.encoding utf-8#抓取网页出现乱码 #print(res.text) soup BeautifulSoup(res.text,html.parser)#爬取网页 for news in soup.select(.news-item): if le…

直观感受电路信号波形:半波整流电路

前言电子电路的理论很抽象&#xff0c;所以多看电子电路的信号波形&#xff0c;对掌握理论知识非常有帮助。让我们通过形象的电路信号波形&#xff0c;直观地了解电路的世界&#xff01;半波整流电路半波整流电路&#xff0c;电路图很简单&#xff0c;通过一个二极管实现半波整…

【nodejs】安装browser-sync 遇到错误提示

首先我用的是mac电脑在我执行安装browser-sync时遇到如下问题&#xff1a; 因为不被允许所以我只能不安装全局了&#xff1a; 但是又出现了如下的新问题 纠结了半个小时&#xff0c;终于知道为什么会出现这个问题了&#xff0c; node只有--global or -g才是全局安装的包&#x…

本机获取Intel AMT IP地址的例子

转自&#xff1a;http://software.intel.com/zh-cn/blogs/2009/02/10/intel-amt-ip/?cidsw:51cto Intel AMT的IP地址设置有两种模式&#xff1a;静态IP和动态IP。 在动态IP&#xff0c;也就是DHCP自动分配的情况下&#xff0c;本机的操作系统起来后&#xff0c;Intel AMT的I…

如何解密单片机内程序?

▌单片机解密是什么&#xff1f;单片机解密又叫单片机破解&#xff0c;芯片解密&#xff0c;IC解密&#xff0c;但是这严格说来这几种称呼都不科学&#xff0c;但已经成 了习惯叫法&#xff0c;我们把CPLD解密&#xff0c;DSP解密都习惯称为单片机解密。单片机只是能装载程序芯…

拆解玩具电池充电器:充久了可能会爆,廉价电路方案让人震惊!

▲ 本文要分析的电路家里有不少给小孩子买的电动玩具&#xff0c;感叹现在的电动玩具虽然才几十块钱&#xff0c;但是不仅包邮&#xff0c;还附送充电器和可充电电池&#xff0c;真的很便宜&#xff0c;大家都买得起。下图这款充电器忘了是哪个玩具附送的&#xff0c;看起来像模…

炒股从负债百万,到“睡后收入”上百万,我做了这件事!

问你一个很残酷的问题&#xff1a;你炒股到现在&#xff0c;赚钱了吗&#xff1f;因为股市里永远存在着“7亏2平1赢”的规律。如果你想要在市场里保持持续的盈利状态&#xff0c;你就得成为其中的“1”&#xff0c;而不是7和2&#xff01;也就是说&#xff0c;想要在市场里立足…

I/O流总结

一,I/O流概述I/O流简单的理解就是数据的输入与输出;那数据的的输入与输出又怎么理解呢?首先我们知道,所有的数据在计算机中都是以二进制的形式存储的.我们看到的字节或者字符形式的文件都是计算机经过解析之后形成的.那么数据的输入与输出简单地说,就是我们向计算机(通信设备)…

单片机显示原理

▌一&#xff0e;接口LCD1602是很多单片机爱好者较早接触的字符型液晶显示器&#xff0c;它的主控芯片是HD44780或者其它兼容芯片。与此相仿的是LCD12864液晶显示器&#xff0c;它是一种图形点阵显示器&#xff0c;能显示的内容比LCD1602要丰富得多&#xff0c;除了普通字符外&…

Overview of ISA and TMG Networking and ISA Networking Case Study (Part 2)

老方说&#xff1a;此篇文章摘自ISASERVER.ORG网站&#xff0c;出自Thomas Shinder达人之手。严重建议ISA爱好者看看。Published: Dec 16, 2008 Updated: Jan 21, 2009 Author: Thomas Shinder In our last article . ISA and TMG firewall networking, I talked about how I…

WIN10 vagrant和virtualbox虚拟机和一键搭建lnmp环境配置thinkphp虚拟主机

版本:win10系统  virtualbox:5.1.26  vagrant :1.9.7  centos 7.0  xshell/git 首先下载好对应版本的软件 配置vagrant和virtualbox 一.把虚拟机加载到box容器中 vagrant box add CentOs7.0 D:\soft\Vagrantfile\package.boxCentOs7.0 是给虚拟机起的名字 D:\soft\Vagr…

Linux 驱动开发 | 驱动世界里的宏伟建筑

哈喽&#xff0c;我是老吴。是否每一个上进的人都会觉得自己还可以再努力一点&#xff1f;事情到了最后&#xff0c;只要没达成目的&#xff0c;总能把失败的原因归为 "没有再努力一点"。但是&#xff0c;对努力的最大错误认知就是&#xff1a;时间越长&#xff0c;过…

【乡音】海安话四级考试

海安话四级考试海安话国家四级考试试卷-------------启用前★绝密------------&#xff08;中国标准话语言研究中心命题&#xff09; 准考证号___________ 姓名_____________ 座位号___________ 一、选择题&#xff08;共五题&#xf…

POJ1179 Polygon 【例题精讲】

题意&#xff1a;多边形游戏是一个单人玩的游戏&#xff0c;开始时有一个由n个顶点构成的多边形。每个顶点被赋予一个整数值&#xff0c;每条边被赋予一个运算符“”或“*”。所有边依次用整数从1到n编号游戏第1步&#xff0c;将一条边删除随后n-1步按以下方式操作(1)选择一条边…

学模拟电路的神器everycircuit

之前转的几篇文章&#xff0c;大家对里面的软件非常感兴趣&#xff0c;所以就给你们找来了&#xff0c;这是一个仿真软件。▌官网https://everycircuit.com/▌视频介绍&#xff0c;视频是老外的比如&#xff0c;你想仿真一个555定时器▌手机上也可以用&#xff0c;可以在我刚才…