【树莓派】实验 02-RGB 小灯
前言
又到了树莓派学习的时候!
关注本专栏,和我一起学习树莓派开发板 30 + 经典实验!
C 语言代码,0 基础剖析!
还等什么😍心动不如行动!👉点我关注
本专栏代码仓库📝:Raspberry-practice
上一次的实验 001 - 双色 LED 中,虽然我把博客展示了出来,写的好像有模有样的,实际上我对一些函数可谓是丝毫不懂。
但这次不一样了,我把一些函数的基本使用给整明白了!
1. 实验器材
- 树莓派开发板
- 40p 软排线 + T 型转接板
- 跳线一堆
- RGB 小灯
通过这次试验,我们可以基本了解一下让电脑性能提升 200% 的 RGB 的底层控制
1.1 树莓派运行库准备
当树莓派需要与外部元件相接时,要用到一些写好的库。如树莓派 wiringPi 库
2. 元件接线
RGBled 模块的电路图如下,其与实物图是对应关系
以下是本次实验的接线图
其实这里我没搞懂这个 5V 是用来干什么的,因为不接好像也没有关系
让我无语的是,去问店家,客服回复是 “原理需要自己学习”
看来还是得靠自己
大胆猜测一下,后续的实验需要更多接 5V 的设备,这个 5V 引线就好比我们每次编写 C 语言都需要用 stdio.h
一样,是一个习惯。
同时解释一下面包板左右两条线的作用:
- 当你把 GND 用引线接到蓝色 - 线上,此时那一排都是 GND
- 当你把 5V 用引线接到红色 + 上,红色一排都是 5V 了
这就相当于串联线路
3. 函数解释
这里需要用到两个函数:softPwmCreate
和 softPwmWrite
上篇博客中我只给出了这两个函数的解释文档(偷懒),这篇博客让我们来真切认识一下这两个函数的作用
以下是函数原型,以及官方解释的翻译
1 | int softPwmCreate (int pin, int initialValue, int pwmRange) ; |
这将创建一个软件控制的 PWM 引脚。您可以使用任何 GPIO 引脚,引脚编号将与您使用的 wiringPiSetup()
函数相同。
initialValue
是初始值,如果 pwmRange
使用 100,那么给定引脚的值可以是 0(关闭)到 100(完全打开)之间的任何值。 返回值为 0 表示成功,-1 代表失败。
如果还有其他情况,您应该检查全局 errno
变量,看看哪里出了问题。
1 | void softPwmWrite (int pin, int value) ; |
更新给定引脚 pin
上的 PWM 值。该值将被检查是否在范围 pwmRange
内
未通过 softPwmCreate 初始化的管脚将被忽略
后续还有一个 Note:
PWM 输出的每个 “周期” 需要 10 毫秒,默认范围值为 100,因此尝试每秒更改 PWM 值超过 100 次将是徒劳的
在
softPWM
模式下激活的每个引脚使用大约 0.5% 的 CPU目前无法在程序运行时禁用引脚上的
softPWM
您需要保持程序运行以保持 PWM 输出!
3.1 关于 softPwmWrite 的使用问题,大大的疑惑
这里我产生了一个巨大的疑惑,就是 softPwmWrite
函数的第二个参数究竟应该如何使用
这个问题我在 CSDN 的问答区提问了,22.04.01 的 17:00 目前还没有回复👉点我
可以看到下面这位大佬的程序中,是将第二个参数设置到超过了 100
而参考资料中,提供的代码也是将 pwm 值设置超过了 100
在查询过一些资料(是真的没有博客提到过这个问题),我找到了 RGB 颜色对照表
这个代码中提供的参数设置,其实是参照 RGB 表来设置的
也就是说,如果想达到混色的效果,你需要利用 softPwmWrite
函数将红绿蓝针脚与 RGB 表中的数值对应进行输出。
但这不就和官方的 pwm 值应该在范围内,且超过 100 的 pwm 值都是无效的,冲突了吗?
这个问题先暂时放在这里,蹲一个大佬解释
4. 代码样例
4.1 初始化针脚
1 |
|
你可能会想,为什么这里要把红绿蓝的管脚设置成 0、1、2,实际上这里和面包板的接线是对应的
可以看到,GPIO 0/1/2
分别对应的是 17/18/27
,同我们第 2 点中接线图上的针脚位置对应
4.2 颜色参数设置
初始化针脚之后,我们就来设置各个针脚的参数
1 | // LED 颜色设置 |
4.3 完整代码及效果演示
下面给出完整代码,以及最终的效果、
1 |
|
使用树莓派 Geany 编译器,三板斧点起来
最后的结果如下图~~RGB 小灯变色循环成功!
4.4 Linux-GCC 编译器指令
Geany 已经可以很好地执行我们的程序了,但它未免有点太 easy 了,点几下按钮就能搞定
我们来试试需要敲语句的 GCC 编译器
首先依旧是用 cd
打开源文件的目录
1 | cd 打开源文件存放的目录 |
使用 wiringPi 库和 softPWM 库需要加上两个指令
- wiringPi 库对应:
-lwiringPi
- softPWM 库对应:
-lpthread
在 linux 的 gcc 中使用 delay 函数需要调用另外一个头文件 <unistd.h>
1 | gcc -Wall 02rgbled.c -o TEST -lwiringPi -lpthread |
如果没有报错的话,那就是编译成功了,再次 ls
可以看到多出来了一个 TEST 可执行文件
1 | ./TEST 执行TEST文件 |
可以看到程序正常运行了!
结语
第二个树莓派实验也做完啦!
虽然还有问题没有解决,但我还是很开心的
如果对你有帮助,还请点个大大的👍!有什么问题可以评论区提出来哦
通往大佬的路非常漫长……
- 最新
- 最热
- 最早
- 作者
点击重新获取 | 打开控制台