树莓派【二、RGB_LED灯实验】
1、接线图
本实验中均采用物理引脚,即BOARD编码,RGB灯如下图从左到右分别为R、G、B和GND引脚,树莓派GPIO口选择34、36、38、40,由接线图可以得到:
34pin -> RGB灯[GND]
36pin -> RGB灯[R]
38pin -> RGB灯[G]
40pin -> RGB灯[B]
实物图(多余的线不用关注,只关注和接线原理图对应的线即可):
二、实验代码
# -*- coding: utf-8 -*-
# __projectName__ : Pi
# __fileUnit__ : hello.py
# __owner__ : bingo
# __data__ : 2021/7/2
# __time__ : 19:26
# ++++++++++++++ Please start your code from here +++++++++++++++++
import RPi.GPIO as gpio
import time
import randomclass RGBLED(object):"""+-----+-----+---------+------+---+---Pi 3B+-+---+------+---------+-----+-----+| BCM | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | BCM |+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+| | | 3.3v | | | 1 || 2 | | | 5v | | || 2 | 8 | SDA.1 | IN | 1 | 3 || 4 | | | 5v | | || 3 | 9 | SCL.1 | IN | 1 | 5 || 6 | | | 0v | | || 4 | 7 | GPIO. 7 | IN | 1 | 7 || 8 | 0 | IN | TxD | 15 | 14 || | | 0v | | | 9 || 10 | 1 | IN | RxD | 16 | 15 || 17 | 0 | GPIO. 0 | IN | 0 | 11 || 12 | 0 | IN | GPIO. 1 | 1 | 18 || 27 | 2 | GPIO. 2 | IN | 0 | 13 || 14 | | | 0v | | || 22 | 3 | GPIO. 3 | IN | 0 | 15 || 16 | 0 | IN | GPIO. 4 | 4 | 23 || | | 3.3v | | | 17 || 18 | 0 | IN | GPIO. 5 | 5 | 24 || 10 | 12 | MOSI | IN | 0 | 19 || 20 | | | 0v | | || 9 | 13 | MISO | IN | 0 | 21 || 22 | 0 | IN | GPIO. 6 | 6 | 25 || 11 | 14 | SCLK | IN | 0 | 23 || 24 | 1 | IN | CE0 | 10 | 8 || | | 0v | | | 25 || 26 | 1 | IN | CE1 | 11 | 7 || 0 | 30 | SDA.0 | IN | 1 | 27 || 28 | 1 | IN | SCL.0 | 31 | 1 || 5 | 21 | GPIO.21 | IN | 1 | 29 || 30 | | | 0v | | || 6 | 22 | GPIO.22 | IN | 1 | 31 || 32 | 0 | IN | GPIO.26 | 26 | 12 || 13 | 23 | GPIO.23 | IN | 0 | 33 || 34 | | | 0v | | || 19 | 24 | GPIO.24 | IN | 0 | 35 || 36 | 0 | IN | GPIO.27 | 27 | 16 || 26 | 25 | GPIO.25 | IN | 0 | 37 || 38 | 1 | IN | GPIO.28 | 28 | 20 || | | 0v | | | 39 || 40 | 1 | IN | GPIO.29 | 29 | 21 |+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+| BCM | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | BCM |+-----+-----+---------+------+---+---Pi 3B+-+---+------+---------+-----+-----+"""__instance = Nonedef __new__(cls, *args, **kwargs):if cls.__instance is None:cls.__instance = super().__new__(cls)return cls.__instancedef __init__(self, *args, **kwargs):self.pin_R = kwargs.get("pin_R") if kwargs.get("pin_R", None) else 37 # R引脚IOself.pin_G = kwargs.get("pin_G") if kwargs.get("pin_G", None) else 38 # G引脚IOself.pin_B = kwargs.get("pin_B") if kwargs.get("pin_B", None) else 40 # B引脚IOprint(f"pins: R->{self.pin_R}, G->{self.pin_G}, B->{self.pin_B}")self.gpio = gpioself.gpio.setwarnings(False)self.gpio.setmode(self.gpio.BOARD)self.gpio.setup([self.pin_R, self.pin_G, self.pin_B], gpio.OUT)self.pin_R_inst = self.gpio.PWM(self.pin_R, 1) # R引脚脉冲信号实例self.pin_G_inst = self.gpio.PWM(self.pin_G, 1) # G引脚脉冲信号实例self.pin_B_inst = self.gpio.PWM(self.pin_B, 1) # B引脚脉冲信号实例self.pin_R_inst.start(100)self.pin_G_inst.start(100)self.pin_B_inst.start(100)def test(self):for _ in range(100):for pin in [self.pin_R, self.pin_G, self.pin_B]:self.gpio.output(pin, self.gpio.HIGH)time.sleep(0.1)self.gpio.output(pin, self.gpio.LOW)def set_up(self):"""gpio.PWM(pin, 10) 设置脉冲信号, pin为针脚,10为频率start(dc)方法中,dc为占空比,即一个周期内高电压占整个周期的比例stop()方法停止脉冲信号:return:"""try:while True:freq_R = random.randrange(1, 20)freq_G = random.randrange(1, 20)freq_B = random.randrange(1, 20)dc_R = random.randrange(1, 101)dc_G = random.randrange(1, 101)dc_B = random.randrange(1, 101)self.pin_R_inst.ChangeFrequency(freq_R)self.pin_G_inst.ChangeFrequency(freq_G)self.pin_B_inst.ChangeFrequency(freq_B)self.pin_R_inst.ChangeDutyCycle(dc_R)self.pin_G_inst.ChangeDutyCycle(dc_G)self.pin_B_inst.ChangeDutyCycle(dc_B)print(f"R[频率:{freq_R}, 占空比:{dc_R}]、G[频率:{freq_G}, 占空比:{dc_G}]、B[频率:{freq_B}, 占空比:{dc_B}]")time.sleep(5)except KeyboardInterrupt:self.pin_R_inst.stop()self.pin_G_inst.stop()self.pin_B_inst.stop()def __del__(self):self.gpio.cleanup()pins = {"pin_R": 40,"pin_G": 38,"pin_B": 36
}
a = RGBLED(**pins)
a.set_up()
树莓派运行代码,可以看到RGB灯闪烁(无法上传视频)
树莓派【二、RGB_LED灯实验】相关推荐
- 树莓派:双色LED灯实验
树莓派:双色LED灯实验 简介 一.实验效果 二.组件 三.实验原理 四.实验步骤 五.代码实现 简介 双色LED灯(双基色 LED灯),是指模块只能显示2种颜色,一般是红色和绿色,可以有三种状态:灭 ...
- 【正点原子FPGA连载】第十二章 呼吸灯实验 -摘自【正点原子】领航者ZYNQ之FPGA开发指南_V2.0
1)实验平台:正点原子领航者ZYNQ开发板 2)平台购买地址:https://item.taobao.com/item.htm?&id=606160108761 3)全套实验源码+手册+视频下 ...
- 【正点原子MP157连载】 第十二章 呼吸灯实验-摘自【正点原子】【正点原子】STM32MP1嵌入式Linux驱动开发指南V1.7
1)实验平台:正点原子STM32MP157开发板 2)购买链接:https://item.taobao.com/item.htm?&id=629270721801 3)全套实验源码+手册+视频 ...
- 【正点原子FPGA连载】第十二章呼吸灯实验 -摘自【正点原子】新起点之FPGA开发指南_V2.1
1)实验平台:正点原子新起点V2开发板 2)平台购买地址:https://detail.tmall.com/item.htm?id=609758951113 2)全套实验源码+手册+视频下载地址:ht ...
- 【STM32 嵌入式课程实验】实验二 流水灯控制
实验二 流水灯控制 2.1 系统功能 使用STM32板载的八个LED灯,实现流水灯功能. 2.2系统组成 由STM32开发板及板上的LED灯组成,STM32为STM32F103RB芯片的NANO版本, ...
- 学习用树莓派驱动LED灯闪烁
学习用树莓派驱动LED灯闪烁 [前沿] ·认识GPIO编码 ·准备实验材料 ·实验电路连接 ·编写驱动程序 ·讲解其它的驱动方式(扩展篇) [实际操作] 一.认识GPIO编码 学习如何用树莓派驱动LE ...
- 树莓派-5-GPIO的应用实验
[树莓派4B学习]一.环境搭建.开机及登录树莓派4B [树莓派4B学习]二.树莓派4B介绍与一些必要的软件安装配置 [树莓派4B学习]三.接入USB摄像头,搭建Python2.7.16+OpenCV3 ...
- stm32 文件系统dma大小_「正点原子NANO STM32F103开发板资料连载」第二十二章 DMA 实验...
1)实验平台:[正点原子] NANO STM32F103 开发板 2)摘自<正点原子STM32 F1 开发指南(NANO 板-HAL 库版)>关注官方微信号公众号,获取更多资料:正点原子 ...
- c语言编程流水灯与交通灯实验,C51单片机实验报告_流水灯_交通灯_定时器_双机交互_时钟.doc...
C51单片机实验报告_流水灯_交通灯_定时器_双机交互_时钟 学 号: 班 级: 自动化10班 姓 名: 张 指导老师: 胡 2012.12 单片机核心板实验要求 流水灯实验 实验目的: 简单I/O引 ...
最新文章
- Mesos各种存储处理方式
- 图的遍历递归和非递归实现
- 基于MATLAB的dijkstra算法及其应用
- 蒸妙集团:大健康产业时代的弄潮儿,中国熏蒸行业的领跑者!
- 二级计算机excel以宏保存,Excel宏保存
- 2017-2018-2 20179216 《网络攻防与实践》 SQL注入攻击
- abs和pc混在一起怎么解决_PC、ABS常见的7大问题及解决方案
- Linux环境下用vim编写编译运行C/C++程序
- poj 3928 树状数组
- hibernate笔记--缓存机制之 二级缓存(sessionFactory)和查询缓存
- 【模板】 线段树(部分功能)
- 动态规划-二维dp数组和滚动数组
- 计算机奖项含金量排名,2019五大学科竞赛含金量排名
- 保持numlock处于开启状态
- doom3 entitydef实体定义
- 工具----9、浏览器攻击框架--(BeEF)
- 在我们身边的交互式设计失败的例子
- sql随机生成社会统一社会信用代码
- Drying POJ - 3104 二分
- Websocket安装说明
热门文章
- CSS 实现鼠标移动到图片上图片变大,不改变盒子大小
- Web Components 系列(二)—— 关于 Custom Elements
- 生产者和消费者(linux)
- 身份证、姓名、手机号、地址、邮箱脱敏处理
- matlab画点阵图,利用matplotlib+numpy绘制多种绘图的方法实例
- 【51单片机】点阵LED的显示实验
- Java 集合 —— ArrayList 分析
- centOS7下 安装nodejs+nginx+mongodb+pm2部署vue项目
- 有效服务等级目标 (SLO)
- Java面试流程及核心面试题