python - 使用 i2c 从 Raspberry Pi 读取 ADS1115 时出现问题
问题描述
我正在尝试使用 adc 转换器(ads1115)。
但是当我尝试运行示例脚本时;简单测试.py
我得到:
读取 ADS1x15 值,按 Ctrl-C 退出...
| 0 | 1 | 2 | 3 |
回溯(最近一次调用):文件“simpletest.py”,第 43 行,在 values[i] = adc.read_adc(i, gain=GAIN) 文件“build/bdist.linux-armv7l/egg/Adafruit_ADS1x15/ADS1x15. py”,第 192 行,read_adc 文件“build/bdist.linux-armv7l/egg/Adafruit_ADS1x15/ADS1x15.py”,第 133 行,_read 文件“build/bdist.linux-armv7l/egg/Adafruit_GPIO/I2C.py” ,第 136 行,在 readList 文件“build/bdist.linux-armv7l/egg/Adafruit_PureIO/smbus.py”中,第 216 行,在 read_i2c_block_data 类型错误:需要一个字符串
当我运行诊断命令时: i2cdetect 我得到了这个
i2cdetect -y 1
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- 48 -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
显示错误消息的 python 脚本 (simpletest.py) 的完整代码:
# Simple demo of reading each analog input from the ADS1x15 and printing it to
# the screen.
# Author: Tony DiCola
# License: Public Domain
import time
# Import the ADS1x15 module.
import Adafruit_ADS1x15
# Create an ADS1115 ADC (16-bit) instance.
adc = Adafruit_ADS1x15.ADS1115()
# Or create an ADS1015 ADC (12-bit) instance.
#adc = Adafruit_ADS1x15.ADS1015()
# Note you can change the I2C address from its default (0x48), and/or the I2C
# bus by passing in these optional parameters:
#adc = Adafruit_ADS1x15.ADS1015(address=0x49, busnum=1)
# Choose a gain of 1 for reading voltages from 0 to 4.09V.
# Or pick a different gain to change the range of voltages that are read:
# - 2/3 = +/-6.144V
# - 1 = +/-4.096V
# - 2 = +/-2.048V
# - 4 = +/-1.024V
# - 8 = +/-0.512V
# - 16 = +/-0.256V
# See table 3 in the ADS1015/ADS1115 datasheet for more info on gain.
GAIN = 1
print('Reading ADS1x15 values, press Ctrl-C to quit...')
# Print nice channel column headers.
print('| {0:>6} | {1:>6} | {2:>6} | {3:>6} |'.format(*range(4)))
print('-' * 37)
# Main loop.
while True:
# Read all the ADC channel values in a list.
values = [0]*4
for i in range(4):
# Read the specified ADC channel using the previously set gain value.
values[i] = adc.read_adc(i, gain=GAIN)
# Note you can also pass in an optional data_rate parameter that controls
# the ADC conversion time (in samples/second). Each chip has a different
# set of allowed data rate values, see datasheet Table 9 config register
# DR bit values.
#values[i] = adc.read_adc(i, gain=GAIN, data_rate=128)
# Each value will be a 12 or 16 bit signed integer value depending on the
# ADC (ADS1015 = 12-bit, ADS1115 = 16-bit).
# Print the ADC values.
print('| {0:>6`enter code here`} | {1:>6} | {2:>6} | {3:>6} |'.format(*values))
# Pause for half a second.
time.sleep(0.5)
请指教。
凯文
解决方案
我在 python2.7 上遇到了同样的问题,然后我使用安装 Adafruit ADS1115 库pip3 install Adafruit-ADS1x15
,之后我使用 python3 运行我的脚本并且它可以工作。
推荐阅读
- c# - 将值发送到数据库,不要插入重复项
- protractor - 由于 Firefox 浏览器中的错误“WebDriverError:键盘无法访问元素”而无法上传文件
- javascript - 如何比较并获取两个对象数组的值?
- android - 抽象方法“void com.squareup.picasso.Callback.onError(java.lang.Exception)
- python - 使用python在maya中选择非线性变形器输入节点并设置关键帧?
- reactjs - 在 jest mock 函数中使用导入的变量
- authorization - 如何测试 XACML 请求?
- python - 如何在 python 中插入(或重新网格)大矩阵?
- android - Webview 没有清除缓存
- sql-server - SSIS 自定义组件 salesforce 源 (kingswaysoft) 未通过 BIML 正确配置