orochi228
А получится потом на другой мк залить что бы работало?(Nano, Uno, Mega)
да micropython устанавливается на них.Конечно судя по вашим вопросам, вам понадобиться очень много терпения и времени, чтобы осознанно писать программы, а не копировать из интернета, а потом на форумах распрашивать, почему в вашем случае не работает.
Если особо не разжевывать, так я подключаюсь к порту:
import serial
s=serial.Serial('/dev/ttyUSB1',115200)
time.sleep(2)
print(s)
очищаю входящий буфер перед циклом
запускаю цикл чтения порта
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 с порта для отправки в метод.
по итогу курсор двигается, но коряво - не так плавно как мышью. Т.е. тут нужно глубже изучать все эти фильтры, преобразования, ну и скорость так себе, хотя если отладить все нюансы, вполне может что-то годное получиться.