Найти - Пользователи
Полная версия: ValueError: invalid literal for int() with base 10: "b'0"
Начало » Python для новичков » ValueError: invalid literal for int() with base 10: "b'0"
1 2 3
orochi228
AD0DE412
serial.Serial('COM4', 9600, timeout=0) начниете с этого ноль конечно … хуцпа … но чему нет шо такого
?
AD0DE412
ну вы просто уменшаете время опроса може поможет (я в этом не в зуб нагой ежеле шо так то. так поиском шото захотелоь попользоваться)
xam1816
orochi228
Джойстик из набора с ардуинкой
у меня такой же есть и мк ESP32, пишу на micropython, позже выложу что получилось, но быстродействие так-себе
orochi228
А получится потом на другой мк залить что бы работало?(Nano, Uno, Mega)
xam1816
orochi228
А получится потом на другой мк залить что бы работало?(Nano, Uno, Mega)
да micropython устанавливается на них.Конечно судя по вашим вопросам, вам понадобиться очень много терпения и времени, чтобы осознанно писать программы, а не копировать из интернета, а потом на форумах распрашивать, почему в вашем случае не работает.

Если особо не разжевывать, так я подключаюсь к порту:
  
import serial
s=serial.Serial('/dev/ttyUSB1',115200)
time.sleep(2)
print(s)

очищаю входящий буфер перед циклом

 

s.reset_input_buffer()
запускаю цикл чтения порта
 while 1:
	try:# чтобы не падало при исключениях
		data = s.read(4) #читаю 4 байта, т.к с мк отправляются  пакеты по 4 байта
		if data:# если пришли данные
			unpack_data = struct.unpack('>2H', data) # распаковываю данные (import struct)
			process(unpack_data) #отправляю в функцию, которая с ними будет работать
		s.reset_input_buffer() # очищаю буфер для свежих данных, если не очистить может работать с запозданием
	except Exception as e:
		print(e) # сообщение об ошибке

на мк
  
from machine import Pin, UART, ADC 
import time
import struct
uart = UART(1, 115200) # создаю uart, по умолчанию 1 - это 10, 9 вывод, скорость
x_pin = ADC(Pin(34), atten=ADC.ATTN_11DB) # аналоговый вход с джойстика
y_pin = ADC(Pin(35), atten=ADC.ATTN_11DB)# -//-
VALUE = 100 # это для фильтра ацп
def run():
    print('go')
    while 1:
#далее код фильтра, т.к. значения ацп скачут (соединено просто проводами через макетную плату)
# начало фильтра
        sum_x = 0
        sum_y = 0
        for _ in range(VALUE): # считываю 100 значений
            coord_x = x_pin.read() # так считываю "x" с ацп, значения от 0 - 4095,
            coord_y = y_pin.read()# соответственно для "y"
            sum_x += coord_x # суммирую
            sum_y += coord_y
        filter_x = int(sum_x/VALUE) # получаю среднее значение для x
        filter_y = int(sum_y/VALUE) # для y
#конец фильтра
        mess = struct.pack('>2H', filter_x, filter_y) # упаковываю значения
        uart.write(mess) # отправляю

на пк с этими данными игрался как попало, использовал
  
import pyautogui as pg
pg.moveRel(x, y) # смещение курсора относительно текущей позиции

перед этим всяко разно пробовал преобразовывал входящие данные x, y с порта для отправки в метод.
по итогу курсор двигается, но коряво - не так плавно как мышью. Т.е. тут нужно глубже изучать все эти фильтры, преобразования, ну и скорость так себе, хотя если отладить все нюансы, вполне может что-то годное получиться.
orochi228
Так как мне все это соединить в одно целое?
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB