[TOC]

点亮LED灯

硬件连接

找一个LED灯,连接如上图,注意长短引脚,经过这些年的狂轰乱炸,大家对于这个应该不漠视,毕竟Arduino都进教材了。

代码

我们先来看图形化的版本:

from gpiozero import LEDled = LED(17)
led.on()

是的你没有看错,树莓派点亮LED只需要3行代码。只需要像Python的turtle编程一样导入需要用到的LED类,然后生成一个表示连接在17号GPIO引脚的LED对象led。然后调用on()方法,就可以点亮LED灯了。是不是跟我们日常的思维很接近。LED有点亮的方法,就像是小猫和喵喵叫,汽车可以加速,狮子可以捕猎,这些动作就是方法,LED、小猫、汽车、狮子就是对象。

图形化硬件之所以简化了开源硬件编程,是因为开源硬件把常见的功能抽象成积木块,而且提供了足够简单易用的接口,所以我们使用起来简单方便,学习的门槛很低。但是图形化在设计复杂程序的时候,尽管积木块用起来很方便,写复杂程序的时候也是有些有心无力。但是如果有一个软件库,提供了类似于图形化编程积木块一样的编程接口,那么就会既像图形化编程一样容易上手,又保持了代码编程的灵活性和简洁性。当然了,不可否认,对小孩子肯定是积木编程更加方便。

闪烁的LED灯

GPIO Zero就是树莓派基金会推出的,面向新手的树莓派硬件Python编程方案。树莓派官网上大部分开源硬件相关的新手项目都是用GPIO Zero库来编写的。因为真的非常简单。这个库读初学者非常友好,学习曲线非常平缓和平滑,非常有利于小孩子的学习。声明式编程范式使得程序看起来跟命令式编程差不多,这样在制作闪烁的LED灯一类的项目的时候甚至用不到循环,下面我们看示例代码,仍然是上图的硬件连接,我们实现闪烁的LED灯,首先是while循环版本:

from gpiozero import LED
from time import sleepred = LED(17)while True:red.on()sleep(1)red.off()sleep(1)

图形化版本代码如下:

只需要生成LED对象red,然后在while循环中不停的启动on()和关闭off()LED就可以了,间隔是1s。是不是很简单,然而,还有更简单的。

呼吸灯

from gpiozero import LED
from signal import pausered = LED(17)red.blink()pause()

导入需要的类和函数之后,在GPIO17连接一个LED,然后告诉树莓派,你需要让这个LED灯blinblin的闪red.blink(),就是调用LED对象redblink()闪烁方法;后面pause()的作用是,只要天没塌下来(强制终止程序)你就一直搁那儿闪得了,如果不加pause()那么,就会闪一次,然后结束了。

同样的,呼吸灯也是如此的简单:

from gpiozero import PWMLED
from time import sleepled = PWMLED(17)while True:led.value = 0  # offsleep(1)led.value = 0.5  # half brightnesssleep(1)led.value = 1  # full brightnesssleep(1)

等效的图形化代码如下图:

与闪烁的LED不同的是,因为呼吸灯要用到一种叫做PWM的技术,所以这里使用了不同的类PWMLed。但是代码一样很简单,LED对象LED有值value属性,只要设定为小数比如0.5,就是亮度是最亮值的一半儿。是不是很棒,还有更棒的,更简单的代码如下:

from gpiozero import PWMLED
from signal import pauseled = PWMLED(17)led.pulse()pause()

只需声明一个LED,然后告诉LED你要做一个呼吸灯的动作pulse()

注意pulse()方法实现的呼吸灯效果是连续编号的,效果轻柔的很,可不是设置三种亮度不停循环可以比的。

其他

GPIO Zero库,之所以如此简单,是因为它为常见的元器件提供了编程的接口,也就是常见的硬件在这个库里都有对应的类,就像是一个封装好的积木块。而且你不需要考虑引脚的高电平还是低电平的问题,只要LED短脚接地,长脚接GPIO,只需要调用on()off()方法就行了,细节的问题,GPIO Zero库会帮你处理的。

比如,我要生成一个按钮,先导入库from gpiozero import Button,好了按钮的模板有了;然后利用按钮模板模板Button生成一个按钮对象button = Button(17),哦,这是17号引脚的按钮;然后,告诉按钮你备案下的时候,执行一个打招呼的函数sayHello(),也就是button.when_pressed = sayHello()。完全跟我们思考的方式一致,perfect。

我暑假开树莓派社团就是用这个教学生,五年级的学生也可以掌握,一起来学习吧。可以加入钉钉群一起学习,每天下午两点直播课。

大地与星空

树莓派点亮LED灯需要几行代码?3行。小孩子都能学会相关推荐

  1. 第5章 用树莓派点亮LED灯

    用树莓派点亮一个LED灯是非常简单的事情,但却非常重要,是利用GPIO控制外部硬件设备的基础,机器人的大部分功能都可以通过操纵GPIO来实现的.换句话说,能控制一个LED灯,就能让机器人动起来.本章将 ...

  2. 树莓派点亮led灯C语言,树莓派点亮你的LED小灯——GPIO学习笔记

    这篇博文是我Coursera学习笔记整理所得,入门操作基本都在这里了.闲话不多说,直接进入正题. 1.树莓派的GPIO## GPIO是General Purpose Input Output (通用输 ...

  3. 4.3、使用寄存器版本点亮LED灯(内附代码)

    第一种:指针形式 led.c文件:#include "led.h" #include "stm32f4xx.h" void LED_Init(void) {// ...

  4. 30个物联网传感器小实验:三行代码点亮LED灯

    30个物联网传感器小实验:三行代码点亮LED灯 三行代码点亮LED灯 LED灯闪烁 LED灯调亮度 LED淡入淡出 不写一行代码点亮LED灯 全彩RGB灯 面包板 30个物联网传感器小实验:三行代码点 ...

  5. STM8学习笔记---点亮LED灯

    对单片机操作时一般有三个步骤,1.系统时钟选择.2.单片机外设初始化.3主程序编写. 同样要点亮LED灯时,也要按照这个步骤来. 首先选择系统时钟,打开STM8S中文参考手册,找到时钟寄存器 可以看到 ...

  6. 【STM32学习笔记-点亮LED灯】

    STM32学习笔记-点亮LED灯 文章目录 STM32学习笔记-点亮LED灯 一.原理图分析 二.代码分析 1.mian函数 2.led.c函数 3.led.h函数 4.函数文件整理 5.LED_In ...

  7. IMX6ULL裸机开发之点亮LED灯

    裸机点亮LED灯 该实验使用正点原子的linux开发板和下载工具 知识储备 GPIO时钟控制器 在<IMX6ULL用户手册>中,时钟控制器模块介绍在第18章 首先看CCM Clock Ga ...

  8. 和12岁小同志搞创客开发:手撕代码,点亮LED灯

    目录 1.Arduino编程架构 2.点亮LED灯 机缘巧合在网上认识一位12岁小同志,从零开始系统辅导其创客开发思维和技巧. 项目专栏:https://blog.csdn.net/m0_381069 ...

  9. STM32F 103C8T6开发板 点亮LED灯

    每组IO口含下面7个寄存器.7个寄存器可以控制一组GPIO的16个IO口. GPIOx_CRL:端口配置低寄存器 GPIOx_CRH:端口配置高寄存器 GPIOx_IDR:端口输入寄存器 GPIOx_ ...

最新文章

  1. b丅151组成的充电器电路_BT151S-500R118
  2. Linux系统中的uptime命令
  3. BZOJ 1568 李超线段树
  4. Unity开发者如何有效地进行本土化
  5. 【分享】WeX5的正确打开方式(1)
  6. php通过正则表达式下载图片到本地的实现代码,PHP通过正则表达式下载图片到本地的实现代码...
  7. leetcode617. 合并二叉树
  8. 大学编程python_大学生想学一门编程语言傍身,Python可以吗?
  9. 连接工作组计算机用户名和密码,访问局域网中工作组的电脑需要用户名和密码...
  10. 金秋10月丰收季,送3本Java书New一个秋天的对象
  11. Java基础知识(JAVA中String、StringBuffer、StringBuilder类的区别)
  12. 物联网无线技术蓝牙和WiFi的区别有哪些?
  13. rails网站分享到朋友圈功能是怎么实现的
  14. 痞子衡嵌入式:揭秘i.MXRTxxx系列上串行NOR Flash双程序可交替启动设计
  15. VMware Workstation创建虚拟机快照
  16. CAD二次开发资料汇总
  17. 轻松学会设计模式——工厂模式
  18. aspen模拟蒸发器_用aspen计算多效蒸发器:高浓盐废水处理蒸发工艺简介
  19. SolidWorks中为何直径或半径标注前总显示<MOD-DIAM>
  20. validform_v5.3.2使用示例

热门文章

  1. 如何区分US、PAW、LDA、GGA、PW91
  2. C51单片机——红外遥控 驱动程序
  3. 如何用开源系统weiit-saas构建数字化零售
  4. 踩坑总结!因子图优化SLAM研究方向归纳
  5. PING命令与ICMP协议
  6. linux命令学习之---- chown
  7. WebSocket私信聊天(无群聊天)
  8. arm汇编指令——分析问题的利器
  9. java计算机毕业设计高校微后勤服务平台MyBatis+系统+LW文档+源码+调试部署
  10. 计算机二级第二课堂学记录表,第二课堂活动记录.doc