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

它们就是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亮度

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