距离上次更新本文已经过去了 729 天,文章部分内容可能已经过时,请注意甄别

今天的这个实验需要用上两位常驻嘉宾!

它们就是 PCF8591 和双色 LED!

QQ图片20220510220604


1. 实验器材

  • 树莓派开发板
  • 40p 软排线 + T 型转接板 + 面包板
  • 双色 LED 模块(元老级朋友)
  • PCF8591 模数转换器模块(长老级朋友)
  • 电位计传感器
  • 一些跳线

IMG_20220514_215723

上:电位计传感器;下:双色 LED


2. 实验原理

2.1 基本原理

电位计是一种用于测量电路中电势 (电压) 的仪器。通过电流计将来自电阻式滑动导线的已知电压的一部分与未知电压进行比较。调节电位器的滑动触点或游标。然后将检流计短暂地连接在滑动触点和未知电压之间,观察检流计的挠度,并调节滑动分接头,直到检流计不再从零偏斜为止。

此时,检流计不再从未知源汲取电流,并且可以从滑动触点的位置计算出电压的幅值。

电位器,又称 POT,是可变电阻器。他们可以通过简单地改变其头部顶部的旋钮来提供可变的电阻。可以基于两个主要参数对其进行分类。一个是电阻 (R-ohms) 本身,另一个是功率 (P-Watts) 额定值。

15.电位器传感器模块原理图

在本实验中,PCF8591 用于读取电位计的模拟值并将值输出到双色 LED。

将电位器的引脚 SIG(电位器上的 OUT 管脚)连接到 PCF8591 的引脚 AINO。将双色 LED 的引脚 R 或引脚 G 连接到 PCF8591 的引脚 AOUT,以观察 LED 的变化。


2.2 接线图

有了前两次接线的经验,这一次就只需要复刻就行了

树莓派 T 型转接板 PCF8591
SDASDASDA
SCLSCLSCL
5V5VVCC
GNDGNDGND
电位计 T 型转接板 PCF8591
OUT*AIN 0
VCC5vVCC
GNDGNDGND
双色 LEDT 型转接板 PCF8591
R (中间)*AOUT
GND(-)GNDGND
G(S)**

15_Potentiometer_bb

实物图一如既往的乱,哈哈哈

IMG_20220514_222557


3. 实验效果

3.1 代码示例

本次实验使用上了 AOUT 的接口,用于接收电位计的信号而改变双色 LED 亮度

c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
//电位器模块实验
#include <stdio.h>
#include <wiringPi.h>
#include <pcf8591.h>

#define makerobo_PCF 120 // 基础管脚120

// 主函数
int main ()
{
int pcf_value ; // 定义一个变量存储AIN的输入值
wiringPiSetup () ; // 调用初始化函数
// 在基本引脚120上设置pcf8591,地址0x48
pcf8591Setup (makerobo_PCF, 0x48) ;
while(1) // 无限循环
{
pcf_value = analogRead (makerobo_PCF + 0) ;
// 获取AIN0上的值,读取电位器模拟量值;
printf("Potentiometer Value: %d\n", pcf_value);
// 打印出该值
analogWrite (makerobo_PCF + 0, pcf_value) ;
// 控制AOUT输出电平控制LED灯
delay (200) ; // 延时200ms
}
return 0 ;
}

image-20220514223957443

这里先用 Read 函数读取电位计的值,然后再用 Write 函数写入到 PCF8591,它用 AOUT 输出到双色 LED,来控制它的亮度


3.2 实验效果

如果你看过实验 12 的博客的话,你应该还记得,PCF8591 上也有一个电位计,他也能实现本次实验的效果。

image-20220421214132642

但不同的是,本次实验使用的是单独的电位计模块,调节更加方便,不需要使用螺丝刀


运行程序,屏幕上会打印出电位计接收到的值,通过调节旋钮,值在 0-255 之间波动

GIF

效果如图,还是很明显的

QQ图片20220514230154

结语

本篇博客到此结束,感谢你的阅读

QQ图片20220416140203