代码:
from machine import Pin
from machine import ADC
from time import sleep_ms
x = ADC(Pin(4, Pin.IN))
y = ADC(Pin(5, Pin.IN))
x.atten(ADC.ATTN_11DB)
y.atten(ADC.ATTN_11DB)
while True:
x_val = x.read()
y_val = y.read()
print('Current position:{},{}'.format(x_val,y_val))
sleep_ms(300)
错误:
Traceback (most recent call last):
File "<stdin>", line 5, in <module>
TypeError: can't convert Pin to int
我想知道我犯了什么错。
我尝试将str
连接到int
,并将int
连接到str
。它不起作用。
TypeError
表示您使用的对象(变量)与预期类型不同。错误告诉您,在本例中,在第5行,需要int
,但代码中使用了Pin
。
代码的第5行是:
x = ADC(Pin(4, Pin.IN))
并且它确实包含CCD_ 8。查看machine.ADC
类的文档可以发现这应该很好:
class machine.ADC(id, *, sample_ns, atten)
访问与id标识的源关联的ADC。此id可以是整数(通常指定通道号)、Pin对象或底层机器支持的其他值。
但是,库是否一直支持此功能?浏览旧版本的库显示,情况并非总是如此。在1.11版本之前,预计会出现int
:
class machine.ADC(id=0, *, bits=12)
创建与给定引脚关联的ADC对象。
所以我假设您使用的是旧版本的库。要解决此问题,您应该将库更新到最新版本(至少v1.12),或者阅读正在使用的版本的文档并相应地更新代码。对于旧版本,您应该编写
x = ADC(4)
y = ADC(5)