树梅派学习 13. PCF8591 AD模块实验

版权声明:(谢厂节的博客)博主文章绝大部分非原创,转载望留链接。 https://blog.csdn.net/xundh/article/details/81913771

PCF8591说明:

PCF8591是单片、单电源低功耗8位CMOS数据采集器件,具有4个模拟输入、一个输出和一个串行I2C总线接口。3个地址引脚A0、A1和A2用于编程硬件地址,允许将最多8个器件连接至I2C总线而不需要额外硬件。器件的地址、控制和数据通过两线双向I2C总线传输。 器件功能包括多路复用模拟输入、片上跟踪和保持功能、8位模数转换和8位数模拟转换。最大转换速率取决于I2C总线的最高速率。
引脚定义:

本模块左边和右边分别外扩2路排针接口,分别说明如下:
左边 AOUT 芯片DA输出接口
- AINO 芯片模拟输入接口0
- AIN1 芯片模拟输入接口1
- AIN2 芯片模拟输入接口2
- AIN3 芯片模拟输入接口3

右边 SCL IIC时钟接口 接树莓派的scl口
- SDA IIC数字接口 接树莓派的sda口
- GND 模块地 外接地
- VCC 电源接口 外接3.3v-5v

pcf8591模组包含了热敏和光敏电阻,模块共有3个红色短路帽,分别作用如下:

  • P4 接上P4短路帽,选择热敏电阻接入电路
  • P5 接上P5短路帽,选择光敏电阻接入电路
  • P6 接上P6短路帽,选择0-5V可调电压接入电路

PCF8591 AD模块原理图:

这里写图片描述

接线图:
这里写图片描述

在树梅派输入 raspi-config ,开启 I2C。

实体图:
这里写图片描述

代码:

#include <stdio.h>
#include <wiringPi.h>
#include <pcf8591.h>

#define PCF       120

int main (void)
{
    int value ;
    wiringPiSetup () ;
    // Setup pcf8591 on base pin 120, and address 0x48
    pcf8591Setup (PCF, 0x48) ;
    while(1) // loop forever
    {
        value = analogRead  (PCF + 3) ;
        printf("%d\n", value);
        analogWrite (PCF + 0, value) ;
        delay (10) ;
    }
    return 0 ;
}

说明:
输出: AOUT 输出模拟量接入LED
输入:跳线接P6,表示从电阻输入模拟量值。

运行效果,可以看到调整可调电阻值,LED亮度会对应发生变化。

如果要调光敏电阻,要将跳线连接到P5,对应程序改为

value = analogRead  (PCF + 2) ;

猜你喜欢

转载自blog.csdn.net/xundh/article/details/81913771