Как получить аналоговые значения из Arduino с Python 3? - PullRequest
0 голосов
/ 22 декабря 2019

Я пытаюсь подключить потенциометр, который возвращает значения целых чисел от 0 до 1023. Я пытаюсь передать эти данные через Bluetooth на python.

Данные действительно передаются, потому что я получаюЗначения на экране при вращении потенциометра. Но вместо того, чтобы показываться как целые числа, это выглядит так: 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)

Спасибо !!!

1 Ответ

0 голосов
/ 22 декабря 2019

Он отправляет числа в том, что выглядит в шестнадцатеричном формате:

Вместо 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 означаетчисло десять, B означает число 11 и так далее. F - это число 15. И теперь 10 не означает «1 * 10 + 0 * 1», как это было бы в нашей десятичной системе, а вместо этого означает «1 * 16 + 0 * 1». Так что hexa-10 = deci-16.

Но обратите внимание, что FF не дает 1023. Вместо этого он дает 255. Для этого большего числа вам нужно будет получить больше укусов. Вы уверены, что прочитали все релевантные данные?

Теперь, когда это действительно так, данные отправляются в виде байтов , и вам необходимо преобразовать их обратно в целые числа: Преобразовать байты в int?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...