【树莓派】实验01-双色LED
前言
今晚上没啥事(其实作业没写完),就开始折腾树莓派了
我当初买的是树莓派4B(4GB)
版本的套件,东西还是非常全的,店家还送了全套学习资料+指导视频,加上一本还算不错的书。
本篇博客,让我们一起来完成第一个实验:双色LED
学习资料来源于:湖南创乐博智能科技有限公司
本博客仅供参考,请勿转载!
1.实验器材
- 装好系统的树莓派开发板+电源适配器
- 面包板+T型转接板
- 40p软排线
- 双色LED
- 若干跳线
2.实验原理
将引脚S(绿色)和中间管脚(红色)链接到面包板的接口上,对树莓派进行编程控制,使LED的颜色由红变绿。并利用PWM混合成其他颜色。
对应接线表格
树莓派 | T型转接板 | 双色LED |
---|---|---|
GPI01 | GPI018 | S |
GPI00 | GPI017 | R |
GND | GND | GND |
实际接线图如下(手机画质也太渣了)
3.控制代码
当树莓派需要与外部元件相接时,要用到一些写好的库。如树莓派wiringPi库
树莓派wiringPi库:wiringPi是一个很棒的树莓派IO控制库,使用C语言开发,提供了丰富的接口:GPIO控制,中断,多线程,等等
还有softPwm.h
库:GitHub链接
本次双色LED实验需要用到的就是这两个库,以及C语言自带的库函数stdio.h
代码如下:
1 |
|
在wiringPi库中,可以看到两个函数的使用说明
- Create函数相当于初始化针脚
- Write函数会更改该管脚的pwm值,以达到控制LED亮度的目的
3.1显示器的PWM调光和DC调光
如果你有了解过显示器的选购知识,估计听说过显示器的PWM调光和DC调光。
使用DC调光的显示器,屏幕背光将常亮;使用PWM调光的显示器,屏幕背光将高速开关来点亮屏幕。只要PWM高于一定值,人眼就分辨不出该屏幕的闪烁。当一块显示器使用高频PWM
调光时,我们认为它与DC调光没有太大的区别。
但总的来说,使用DC调光技术的显示器更加“护眼”,而使用低频PWM调光
的显示器就是极度辣眼睛(这也是有些屏幕在摄像头中会屏闪的原因)
目前主流手机都上了OLED屏幕,该屏幕材质普遍使用的是PWM调光。部分手机厂家在屏幕设置中推出了“类DC调光选项”,其原理就是用高频PWM来模拟DC调光。
如果你想了解这方面的知识,可以看看这个视频👉链接
好像bb了一些和这个实验没啥关系的内容,赶快回到正题!
3.2 编译代码
树莓派中有两种方式编译运行我们的代码
3.2.1直接使用Geany编译器内部选项
3.2.2 使用linux语言
树莓派的系统是基于linux的,我们可以使用linux中的gcc语言来编译这个.c
文件
在本专栏之前的博客中,有介绍过这种方式👉链接
输入指令,你会发现系统报错显示delay函数未定义
1 | undefined reference to `delay` |
这是因为delay函数并不是一个C语言的库函数我,我们可以在前面自己整一个delay函数的原型
第一次使用Geany编译的时候并没有报错,这是因为在Geany里面已经用生成命令引用了wiringPi库
1
2 在Geany的build(生成)-->set build commands(设置生成命令)中输入以下指令
gcc -Wall -c "%f" -lwiringPi
1 | // 延时z毫秒的delay函数 |
我们在linux控制台中用cd
打开文件路径后,输入如下指令
1 | 1. gcc 01DuoColorLED.c -o GPIO -lwiringPi |
第一条指令是编译程序,生成可执行文件GPIO
使用./GPIO
指令来执行此文件
- 需要注意的是,用这种方法运行程序不太方便终止,你可以去掉main函数中的while循环,让变色只执行一次。
所以在进行此类开发时,建议直接使用Geany编译器,因为它会生成一个前台控制面板,我们可以直接用ctrl+c
停止程序
奇怪的是,当我运行第一个Geany编译器生成的可执行文件时,LED会正常变色。
但是运行第二个在linux控制台生成的GPIO文件时,却不能变色。不知道是什么原因
而当我重新用Geany编译器编译这份加了delay函数定义的代码时,发现这个delay函数还是不太行啊!这灯都闪的飞快,真的有500ms吗
不过这也不算什么大问题,咱们可以通过调整delay函数的定义,和调用参数来控制
4.如何在使用面包板的同时使用散热小风扇
原本不使用面包板的时候,小风扇可以插在板载针脚的2、3位
但是现在使用了面包板,这整个针脚都被占用了,风扇往哪里插呢?
很简单,使用两根跳线,将风扇与面包板上的5v和GND链接就行了!
- 红线接5V
- 黑线接GND
结语
不管如何,这次实验算是完美完成啦!
这也是我在树莓派上做的第一个实验
如果你想和我一起学习树莓派,那就关注本专栏吧!
欢迎star本专栏代码仓库:GITEE链接