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灯实验】相关推荐

  1. 树莓派:双色LED灯实验

    树莓派:双色LED灯实验 简介 一.实验效果 二.组件 三.实验原理 四.实验步骤 五.代码实现 简介 双色LED灯(双基色 LED灯),是指模块只能显示2种颜色,一般是红色和绿色,可以有三种状态:灭 ...

  2. 【正点原子FPGA连载】第十二章 呼吸灯实验 -摘自【正点原子】领航者ZYNQ之FPGA开发指南_V2.0

    1)实验平台:正点原子领航者ZYNQ开发板 2)平台购买地址:https://item.taobao.com/item.htm?&id=606160108761 3)全套实验源码+手册+视频下 ...

  3. 【正点原子MP157连载】 第十二章 呼吸灯实验-摘自【正点原子】【正点原子】STM32MP1嵌入式Linux驱动开发指南V1.7

    1)实验平台:正点原子STM32MP157开发板 2)购买链接:https://item.taobao.com/item.htm?&id=629270721801 3)全套实验源码+手册+视频 ...

  4. 【正点原子FPGA连载】第十二章呼吸灯实验 -摘自【正点原子】新起点之FPGA开发指南_V2.1

    1)实验平台:正点原子新起点V2开发板 2)平台购买地址:https://detail.tmall.com/item.htm?id=609758951113 2)全套实验源码+手册+视频下载地址:ht ...

  5. 【STM32 嵌入式课程实验】实验二 流水灯控制

    实验二 流水灯控制 2.1 系统功能 使用STM32板载的八个LED灯,实现流水灯功能. 2.2系统组成 由STM32开发板及板上的LED灯组成,STM32为STM32F103RB芯片的NANO版本, ...

  6. 学习用树莓派驱动LED灯闪烁

    学习用树莓派驱动LED灯闪烁 [前沿] ·认识GPIO编码 ·准备实验材料 ·实验电路连接 ·编写驱动程序 ·讲解其它的驱动方式(扩展篇) [实际操作] 一.认识GPIO编码 学习如何用树莓派驱动LE ...

  7. 树莓派-5-GPIO的应用实验

    [树莓派4B学习]一.环境搭建.开机及登录树莓派4B [树莓派4B学习]二.树莓派4B介绍与一些必要的软件安装配置 [树莓派4B学习]三.接入USB摄像头,搭建Python2.7.16+OpenCV3 ...

  8. stm32 文件系统dma大小_「正点原子NANO STM32F103开发板资料连载」第二十二章 DMA 实验...

    1)实验平台:[正点原子] NANO STM32F103 开发板 2)摘自<正点原子STM32 F1 开发指南(NANO 板-HAL 库版)>关注官方微信号公众号,获取更多资料:正点原子 ...

  9. c语言编程流水灯与交通灯实验,C51单片机实验报告_流水灯_交通灯_定时器_双机交互_时钟.doc...

    C51单片机实验报告_流水灯_交通灯_定时器_双机交互_时钟 学 号: 班 级: 自动化10班 姓 名: 张 指导老师: 胡 2012.12 单片机核心板实验要求 流水灯实验 实验目的: 简单I/O引 ...

最新文章

  1. Mesos各种存储处理方式
  2. 图的遍历递归和非递归实现
  3. 基于MATLAB的dijkstra算法及其应用
  4. 蒸妙集团:大健康产业时代的弄潮儿,中国熏蒸行业的领跑者!
  5. 二级计算机excel以宏保存,Excel宏保存
  6. 2017-2018-2 20179216 《网络攻防与实践》 SQL注入攻击
  7. abs和pc混在一起怎么解决_PC、ABS常见的7大问题及解决方案
  8. Linux环境下用vim编写编译运行C/C++程序
  9. poj 3928 树状数组
  10. hibernate笔记--缓存机制之 二级缓存(sessionFactory)和查询缓存
  11. 【模板】 线段树(部分功能)
  12. 动态规划-二维dp数组和滚动数组
  13. 计算机奖项含金量排名,2019五大学科竞赛含金量排名
  14. 保持numlock处于开启状态
  15. doom3 entitydef实体定义
  16. 工具----9、浏览器攻击框架--(BeEF)
  17. 在我们身边的交互式设计失败的例子
  18. sql随机生成社会统一社会信用代码
  19. Drying POJ - 3104 二分
  20. Websocket安装说明

热门文章

  1. CSS 实现鼠标移动到图片上图片变大,不改变盒子大小
  2. Web Components 系列(二)—— 关于 Custom Elements
  3. 生产者和消费者(linux)
  4. 身份证、姓名、手机号、地址、邮箱脱敏处理
  5. matlab画点阵图,利用matplotlib+numpy绘制多种绘图的方法实例
  6. 【51单片机】点阵LED的显示实验
  7. Java 集合 —— ArrayList 分析
  8. centOS7下 安装nodejs+nginx+mongodb+pm2部署vue项目
  9. 有效服务等级目标 (SLO)
  10. Java面试流程及核心面试题