如何将两个传感器连接到树莓派?

2024-05-18 12:34:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图用树莓皮2连接两个传感器,让他们工作。 它们是DFROBOT模拟光传感器和DFROBOT模拟声音传感器。在

我还使用了一个AD转换器,转换器连接到SCL和SDA引脚上的覆盆子Pi。在

转换器有四个AIN,所以我可以用其中两个,一个连接到光传感器,一个连接到声音传感器。在

有人能帮我学习Python代码吗? 我想让我的Pi接收1秒的Ain1(光传感器)和1秒的Ain2(声音传感器),交替。在

这是我的代码,但似乎不太好用。在

import time

import datetime

from smbus import SMBus

bus = SMBus(1)

def readSoundSensor():

    return bus.read_byte(0x48)

def runSoundSensor():

    bus.write_byte(0x48,0x00)
    last_reading = -1
    sound = readSoundSensor()
    timestamp= datetime.datetime.utcnow()
    record = str(timestamp) + ":" +str(sound)
    print "Sound: "+record

def readLightSensor():

    return bus.read_byte(0x48)

def runLightSensor():

    bus.write_byte(0x48,0x01)
    last_reading = -1
    light = readLightSensor()
    timestamp= datetime.datetime.utcnow()
    record = str(timestamp) + ":" +str(light)
    print "Light: "+record

while(Ture):

   runSoundSensor()

   time.sleep(1)

   runLightSensor()

   time.sleep(1)

我的Pi有一些数据,但我的数据不是我想要的,也不像我只连接一个声/光传感器那样。在

我是全新的树莓派,我不知道地址0x48,等等,我只是从一些指南学习。有人能帮我解决我的错误吗?在


Tags: 代码import声音datetimetimedefpi传感器
1条回答
网友
1楼 · 发布于 2024-05-18 12:34:30

你的while(Ture):显然是错的。在

您正在为两个传感器向A/D写入相同的命令-0x48 0x00这不可能是正确的,除非它在每次读取时对所有输入进行采样?在

您确定有正确的SMBUS地址-0x48
这个命令0x00是什么意思?在

为了澄清,SMBUS命令将由address in hex, command byte(s) in hex组成。您可能需要阅读SMBUS/I2C寻址:This这篇文章相当不错。在

我可以想象,至少您需要发送一个命令来选择Ain输入中的一个,然后再发送一个命令对其进行采样。0x00看起来更像是重置。在

你看过A/D的文件了吗?在

相关问题 更多 >

    热门问题