最近入手了pico学习。

目录

  • 〇、总的参考
  • 一、函数说明
  • 二、硬件准备
  • 三、程序-按键测试、按键控制外设LED开关
    • 1、按键测试
    • 2、按键控制外设LED开关
  • 四、可能出现的问题

〇、总的参考

视频参考【微雪课堂】PICO系列教程2——外设GPIO(bilibili)
另附其github,课程中所用代码皆在其中。
博文参考树莓派 PICO基础教程(基于MicroPython)

下面让我们开始GPIO的学习吧!ε≡٩(๑>₃<)۶

一、函数说明

machine.Pin(id, mode=None, pull=None, value)#Pin对象构造函数,其作用为根据参数初始化GPIO,并返回#参数id:GPIO编号,数值为0-29,如使用GPIO13则填写为13#参数mode:GPIO模式,可设置为:不初始化None、输入模式Pin.IN(0)、输出模式Pin.OUT(1)、开漏模式Pin.OPEN_DRAIN(2)#pull:使用内部上拉或下拉电阻,仅在输入模式下有效,可设置为:悬空 None、上拉Pin.PULL_UP(1)、下拉Pin.PULL_DOWN(2)#输出赋值value:在输出或开漏模式下有效。且端口值0为低(off)、1为高(on)
Pin.init(mode=None, pull=None)#重新初始化GPIO口#参数与Pin类构造函数相同#参数mode:GPIO模式,可设置为:不初始化None、输入模式Pin.IN(0)、输出模式Pin.OUT(1)、开漏模式Pin.OPEN_DRAIN(2)#pull:使用内部上拉或下拉电阻,仅在输入模式下有效,可设置为:悬空 None、上拉Pin.PULL_UP(1)、下拉Pin.PULL_DOWN(2)
Pin.value([x])#不填写参数的情况下返回GPIO端口数值#填写参数的情况下将参数写入GPIO端口中,参数可为0或者1
Pin.toggle()#输出或开漏模式下将端口进行一次翻转
#输出或开漏模式下使用的四个函数:Pin.low()    #输出或开漏模式下将端口设置为低(0);
Pin.off()   #输出或开漏模式下将端口设置为低(0);Pin.high() #输出或开漏模式下将端口设置为高(1);
Pin.on()    #输出或开漏模式下将端口设置为高(1);
Pin.irq(handler=None,trigger=(Pin.IRQ_FALLING | Pin.IRQ_RISING))#外部中断函数#参数handler:中断触发回调函数;#参数trigger:中断触发条件,可设置为边缘触发或电平触发#其中Pin.IRQ_FALLING 在下降沿中断#其中Pin.IRQ_RISING  在上升沿中断

二、硬件准备

1、焊接排针的pico,1个
2、面包板,1个
3、直插按键,1个
4、直插LED灯,1个
5、适当阻值的直插电阻(1kΩ),1个
6、杜邦线(若用面包板,选用公公线),若干

三、程序-按键测试、按键控制外设LED开关

1、按键测试

按键测试主要参考树莓派 PICO基础教程(基于MicroPython)的3.04,原理图可以看那位大佬的。
硬件连接:
①GPIO0与按键一端相连;
②pico上GND与按键另一端相连。
代码:

from machine import Pin#从machine中引入Pin,以便后面控制引脚
import utime#之前的代码里引入的是time库#我个人并未发现time库和utime库的区别#如果有大佬知道麻烦告知我下,不知道的也可以把一起交流下想法# 配置按键
# key = machine.Pin(id, mode, pull)
# id:PICO引脚编号。这里按键设置为与GPIO0相连
# mode:输入输出方式,有Pin.IN(输入)和Pin.OUT(输出)两种。这里设置为输入模式
# pull:上下拉电阻配置,有None(无上下拉电阻)、Pin.PULL_UP(上拉电阻)和Pin.PULL_DOWN(下拉电阻)三种
key = Pin(0, Pin.IN, Pin.PULL_UP)if __name__ == '__main__':while True:#无限循环语句if key.value() == 0:#读取key的数值即GPIO0,并判断是否为0,若为0则代表按键按下utime.sleep_ms(100)#等待一段时间,再重新判断,防止按键抖动问题if key.value() == 0:#按键确实被按下print('The button is pressed')#输出信息

实验现象: 按键按下,Thonny中的Shell输出The button is pressed.

2、按键控制外设LED开关

按键测试主要参考【微雪课堂】PICO系列教程2——外设GPIO
硬件连接:
①GPIO15与按键一端相连;
②pico上GND与按键另一端相连;
③GPIO16与限流电阻相连,限流电阻接LED正极(注意长正短负);
④LED负极接回pico上GND。
代码:

from machine import Pin#从machine中引入pin库
import utime#引入utime库button_num = 15#GPIO15与button相连,设为输入、上拉模式
button = Pin(button_num,Pin.IN,Pin.PULL_UP)external_led_num =16#GPIO16与led相连,设为输出模式
external_led = Pin(external_led_num,Pin.OUT)led_num = 25#板载led端口为25,设为输出模式
led = Pin(led_num,Pin.OUT)print("button gpio={0}".format(button_num))while True:led.off()if(button.value()==0):#读取button的数值即GPIO15,并判断是否为0,若为0则代表按键按下#utime.sleep_ms(100)utime.sleep(0.01)if(button.value()==0):#重新判断按键是否按下,若仍为按下,则继续操作 external_led.toggle()#GPIO16翻转led.on()#GPIO25设为高电平print("button is pressed")while(button.value()==0):#通过while循环等待按键释放,按键释放后,回到代码顶端并将led设为低电平,等待下次按下#utime.sleep_ms(100)utime.sleep(0.01)

实验现象:
①软件现象:pico读取button的GPIO,这里设置为了15,所以输出button gpio=15。按键按下一次,shell输出一次button is pressed。

②硬件现象:板载LED默认灯灭。按键按下,板载LED亮起(马上灭)、外设LED亮起(不灭);按键再次按下,板载LED亮起(马上灭)、外设LED灭(不亮)。如此反复。

四、可能出现的问题

问题都是出现在第二个程序“按键控制外设LED开关“中,一开始我按下按键,硬件并无任何反馈。经过几天不断检查自己的程序、电路,才成功完成实验。(强迫症不可取啊,其实程序、电路都没问题,就是实验器材本身的问题,这样效率太低了)

程序、电路相对而言比较基础(对于有过电子开发经验的人来说),但是
①面包板的接触点可能出现问题。
我之前缺乏面包板的使用经验,在与导师沟通后才知道面包板竟然还有不灵敏的问题。。。所以解决方案就是多尝试几个面包板(为啥视频里还有一些教程里,大佬们总是一次成功捏,唉~~)

看看也有人遇到过一样的问题:
请问为何用面包板面包线实验出现好多毛病?

②pico版本身的问题?或是面包板GND的问题?
这个问题来源暂时不清,因为万用表测得没啥问题。
经过不断的尝试,最后,我不再使用面包板自带的GND,把GND都接在了3上。竟然板载LED成功亮起!但是按键按下,外设LED仍无反应。
然后我灵机一动(终于脑子开了个窍),把GND都接到了38上,再次实验,竟然成功了!(༼༎ຶᴗ༎ຶ༽)太不容易了。。。

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

  1. 物联网国赛LORA模块开发基础教程(通用库)—输入(按键)

    LORA模块开发基础教程目录 物联网国赛LORA模块开发基础教程-开发环境配置 物联网国赛LORA模块开发基础教程-输出(LED) 物联网国赛LORA模块开发基础教程-输入(按键) 物联网国赛LORA ...

  2. 微雪树莓派PICO笔记——1.基础介绍

    文章目录 基础硬件 原理图讲解 电路图重点讲解 点灯实操 基础硬件 长度51mm,宽度21mm,板厚1mm pcb使用了沉金工艺,所以引脚都做了半孔设计,即可焊接2.54mm的排针,也可以直接焊在主板 ...

  3. 树莓派Pico直流电机接口技术及PWM电机调速控制MicroPython编程

    内容目录: 一.树莓派Pico开发板直流电机接口技术 1.H桥驱动电路的基本工作原理 2.典型H桥驱动电路分析 3.DRV8833双H桥电机驱动模块介绍 4.Pico开发板与直流电机接口 二.Pico ...

  4. 树莓派 Pico RP2040 MicroPython 编程 - 软件安装及设置

    使用 MicroPython,仅用 8 行代码,我们就可以实现 LED 闪烁程序. 下载安装 Python IDE:Thonny Thonny 是 一个面向初学者的 Python IDE 环境,自带 ...

  5. 树莓派Pico开发板与大功率MOSFET/IGBT器件驱动控制24V直流电机技术实践

    摘要:本文在介绍MOSFET器件和IGBT器件作为电子开关基本原理的基础上,讲述了树莓派Pico与MOSFET&IGBT器件驱动控制24V直流电机硬件接口技术,最后给出了树莓派Pico开发板G ...

  6. 100内奇数之和流程图_JavaScript基础教程(六)流程控制之循环语句

    JavaScript入门教程之循环语句 循环语句从字面意思理解就是重复执行,能够让计算机按照程序员要求重复执行某种操作的能力是所有程序设计语言所必须具备的基本能力.在JavaScript程序设计语言中 ...

  7. python入门基础教程02 Python简介

    02 Python简介 Python简介 Python是一种解释型.面向对象.动态数据类型的高级程序设计语言,属于应用层软件.自从20 世纪90 年代初Python语言诞生至今,它逐渐被广泛应用于处理 ...

  8. GStreamer基础教程02——GStreamer概念

    上一个教程演示了如何自动生成一个pipeline.这次我们打算用一个个element来手动搭建一个pipeline.我们这个教程会演示: 1. 什么是GStreamer的element以及如何建立一个 ...

  9. JavaScript基础教程02好神奇的变量var

    1.变量是存储信息的容器. var x=2; var y=3; var z=x+y; 提示:您可以把变量看做存储数据的容器 2.JavaScript 变量命名规范 · 变量必须以字母开头 · 变量也能 ...

最新文章

  1. python 机器学习_使用Python启动机器学习
  2. boost::locale::utf8_codecvt用法的测试程序
  3. php5.3连接sqlserver2005
  4. java idea 模块_IDEA搭建java多模块module项目-Go语言中文社区
  5. linux hadoop 运行jar,Linux下执行Hadoop WordCount.jar
  6. 零售创新决胜新消费暨2021中国网络零售TOP100榜单
  7. 零基础安装Ubuntu kylin 16.04 LTS 后应该做什么[本人安装目的:学习Python数据分析]
  8. 51CTO独家:2008下半年软考所有科目试题已到
  9. 【树叶识别】基于matlab PNN神经网络树叶类别【含Matlab源码 798期】
  10. 后台管理系统下载excel文件
  11. Word VBA自动排版(4)- 通过For循环批量替换
  12. 图灵奖得主Alan Kay如何读书
  13. Java机器学习软件介绍
  14. python输入两个数求和笔试题_Python练习题1.1从键盘输入两个数,求它们的和并输出...
  15. 自制简单CUP第一篇(异或门)
  16. 快速实现微信公众号支付功能
  17. 使用left join后添加判断会出错
  18. java listener 模式_Java和GUI-根据MVC模式,ActionListener属于哪里?
  19. 1.18 Spreadsheet
  20. ps将图片加入背景【实测成功】

热门文章

  1. 计算机的安全服务有哪些,网络安全服务包括哪些
  2. 计算机共享账户密码删除吗,win10系统删除已记住的访问共享的账户与密码的详细技巧...
  3. 威力导演注册机|威力导演(Cyberlink PowerDirector)15破解工具下载
  4. 【免费域名】教你免费申请顶级域名
  5. CPU占用率爆满,服务器遭遇挖矿如何排查
  6. 数据结构 插入排序(InsertionSort Sort) 详解 附C++代码实现:
  7. 如何在配置低的老旧笔记本的win7系统上安装tensorflow及报错信息解决方法集锦
  8. NFC开发 —————实用工具以及开发文档(四)
  9. 从 .NET 开发人员的角度理解 Excel 对象模型--------结合上一篇 vb code excel 单元格锁定...
  10. 微信二维码扫描下载APK