如何使用python 3从arduino获取模拟值?
我试着连接一个电位计,它返回0到1023之间的整数值。我正在尝试通过蓝牙将这些数据传输到python 数据确实被传输了,因为当旋转电位计时,我确实在屏幕上得到了值。但是它没有显示为整数,而是显示如下:如何使用python 3从arduino获取模拟值?,python,arduino,bluetooth,Python,Arduino,Bluetooth,我试着连接一个电位计,它返回0到1023之间的整数值。我正在尝试通过蓝牙将这些数据传输到python 数据确实被传输了,因为当旋转电位计时,我确实在屏幕上得到了值。但是它没有显示为整数,而是显示如下:b'\xff' 我知道实际上0是b'\x00',1023是b'\xff',我不知道这是什么意思。有人能提供一个修复程序,让它打印0到1023之间的数字吗 import bluetooth print ("Searching for devices...") print ("") nearby_de
b'\xff'
我知道实际上0是b'\x00'
,1023是b'\xff'
,我不知道这是什么意思。有人能提供一个修复程序,让它打印0到1023之间的数字吗
import bluetooth
print ("Searching for devices...")
print ("")
nearby_devices = bluetooth.discover_devices ()
num = 0
print ("Select your device by entering its coresponding number...")
for i in nearby_devices:
num += 1
print (num, ": ", bluetooth.lookup_name (i))
selection = int (input ("> ")) - 1
print ("You have selected", bluetooth.lookup_name (nearby_devices[selection]))
bd_addr = nearby_devices[selection]
port = 1
sock = bluetooth.BluetoothSocket( bluetooth.RFCOMM )
sock.connect((bd_addr, port))
while True:
data = sock.recv(1)
print (data)
谢谢 它以十六进制格式发送数字: 你数的不是0、1、2、3、4、5、6、7、8、9、10: 0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F、10 在这种格式中,A表示数字10,B表示数字11,依此类推。F是数字15。现在10并不像在我们的十进制系统中那样意味着“1*10+0*1”,而是意味着“1*16+0*1”。所以hexa-10=deci-16 但请注意,FF并没有给出1023。相反,它给出了255。对于这个更大的数字,你需要接受更多的咬。你确定你阅读了所有相关数据吗
现在有了这些,数据实际上是以字节的形式发送的,您必须将它们转换回整数:另请参见通过套接字通信接收的数据是以字节码的形式发送的
print(data.decode('utf-8'))
将接收到的字节码值转换为十进制的字符串表示形式。这适用于micropython(因为您使用的是arduino,我假设您使用的是micropython)或Python3。