Подключение вывода Arduino с чтением Python в коде VS ⇐ Python
-
Anonymous
Подключение вывода Arduino с чтением Python в коде VS
В настоящее время я работаю над проектом в качестве дизайнера, поэтому нет необходимости говорить, что программирование — не самый развитый мой навык. У меня есть Arduino, к которому подключен датчик потока, и я хочу, чтобы программа Python реагировала на печать последовательного монитора. Вначале я просто хочу, чтобы код Python печатал текстовый «возобновленный ввод», чтобы убедиться, что это соединение работает.
В настоящее время я успешно запускаю Arduino из кода VS и печатаю на последовательный монитор, считывая данные с COM3. При запуске программы Python в терминале ничего не отображается, и я получаю следующее сообщение.
C:/Users/roenn/AppData/Local/Programs/Python/Python312/python.exe c:/Users/roenn/Downloads/chrome-dinosaur-master/chrome-dinosaur-master/import_serial.py Traceback (последний вызов последний): Файл «c:\Users\roenn\Downloads\chrome-dinosaur-master\chrome-dinosaur-master\import_serial.py», строка 4, в arduino = Serial.Serial('COM3', 9600) # Замените «COM3» портом, к которому подключен ваш Arduino. ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Файл «C:\Users\roenn\AppData\Local\Programs\Python\Python312\Lib\site-packages\serial\serialwin32.py», строка 33, в __init__ super(Serial, self).__init__(*args, **kwargs) Файл «C:\Users\roenn\AppData\Local\Programs\Python\Python312\Lib\site-packages\serial\serialutil.py», строка 244, в __init__ self.open() Файл «C:\Users\roenn\AppData\Local\Programs\Python\Python312\Lib\site-packages\serial\serialwin32.py», строка 64, открыт поднять SerialException("не удалось открыть порт {!r}: {!r}".format(self.portstr, ctypes.WinError())) Serial.serialutil.SerialException: не удалось открыть порт «COM3»: PermissionError (13, «Доступ запрещен.», Нет, 5) Я немного запутался и надеюсь, что вы сможете помочь.
У меня есть следующий код Arduino.
int flowPin = 2; // Это входной контакт Arduino двойной расход; // Это значение, которое мы собираемся вычислить. изменчивое число int; // Это целое число должно быть установлено как изменчивое, чтобы гарантировать его правильное обновление во время процесса прерывания. недействительный поток() { считать++; // Каждый раз, когда вызывается эта функция, увеличиваем «count» на 1 } недействительная настройка() { pinMode (flowPin, INPUT); // Устанавливает вывод в качестве входа AttachInterrupt(digitalPinToInterrupt(flowPin), Flow, RISING); // Настраивает прерывание для запуска функции «Поток» Серийный.начало(9600); // Начать сериал } недействительный цикл() { счет = 0; // Сбрасываем счетчик, чтобы мы снова начали считать с 0 прерывания(); // Включает прерывания на Arduino задержка(1000); // Подождите 1 секунду нетПрерывания(); // Отключаем прерывания на Arduino // Начинаем математику скорость потока = (количество * 2,25); // Берём подсчитанные пульсы за последнюю секунду и умножаем на 2,25мл скорость потока = скорость потока * 60; // Преобразуем секунды в минуты, получая мл/минуту скорость потока = скорость потока / 1000; // Конвертируем мл в литры, получаем литры в минуту //Serial.println(flowRate); // Печатаем переменную flowRate в Serial если (flowRate > 0) { Serial.println("1"); } задержка(1000); // для подключения к Python Серийный.флеш(); // Для соединения с Python } И мой код Python следующий.
импортировать серийный номер # Создаём серийный объект arduino = Serial.Serial('COM3', 9600) # Замените «COM3» портом, к которому подключен ваш Arduino. пока правда: data = arduino.readline() # Читаем данные, отправленные с Arduino если данные: print("Полученные данные: ", данные) В моей папке я также запускаю игру Crome Dinasaur как pygame. в конце концов, я хочу, чтобы динозавр подпрыгнул, когда датчик потока почувствует поток. Но, знайте, я просто хочу, чтобы Python реагировал на последовательный вывод. Я был уверен, что запуск Python и Arduino в коде VS позволит одной и той же программе читать с одного и того же порта, но я мог ошибаться.
В настоящее время я работаю над проектом в качестве дизайнера, поэтому нет необходимости говорить, что программирование — не самый развитый мой навык. У меня есть Arduino, к которому подключен датчик потока, и я хочу, чтобы программа Python реагировала на печать последовательного монитора. Вначале я просто хочу, чтобы код Python печатал текстовый «возобновленный ввод», чтобы убедиться, что это соединение работает.
В настоящее время я успешно запускаю Arduino из кода VS и печатаю на последовательный монитор, считывая данные с COM3. При запуске программы Python в терминале ничего не отображается, и я получаю следующее сообщение.
C:/Users/roenn/AppData/Local/Programs/Python/Python312/python.exe c:/Users/roenn/Downloads/chrome-dinosaur-master/chrome-dinosaur-master/import_serial.py Traceback (последний вызов последний): Файл «c:\Users\roenn\Downloads\chrome-dinosaur-master\chrome-dinosaur-master\import_serial.py», строка 4, в arduino = Serial.Serial('COM3', 9600) # Замените «COM3» портом, к которому подключен ваш Arduino. ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Файл «C:\Users\roenn\AppData\Local\Programs\Python\Python312\Lib\site-packages\serial\serialwin32.py», строка 33, в __init__ super(Serial, self).__init__(*args, **kwargs) Файл «C:\Users\roenn\AppData\Local\Programs\Python\Python312\Lib\site-packages\serial\serialutil.py», строка 244, в __init__ self.open() Файл «C:\Users\roenn\AppData\Local\Programs\Python\Python312\Lib\site-packages\serial\serialwin32.py», строка 64, открыт поднять SerialException("не удалось открыть порт {!r}: {!r}".format(self.portstr, ctypes.WinError())) Serial.serialutil.SerialException: не удалось открыть порт «COM3»: PermissionError (13, «Доступ запрещен.», Нет, 5) Я немного запутался и надеюсь, что вы сможете помочь.
У меня есть следующий код Arduino.
int flowPin = 2; // Это входной контакт Arduino двойной расход; // Это значение, которое мы собираемся вычислить. изменчивое число int; // Это целое число должно быть установлено как изменчивое, чтобы гарантировать его правильное обновление во время процесса прерывания. недействительный поток() { считать++; // Каждый раз, когда вызывается эта функция, увеличиваем «count» на 1 } недействительная настройка() { pinMode (flowPin, INPUT); // Устанавливает вывод в качестве входа AttachInterrupt(digitalPinToInterrupt(flowPin), Flow, RISING); // Настраивает прерывание для запуска функции «Поток» Серийный.начало(9600); // Начать сериал } недействительный цикл() { счет = 0; // Сбрасываем счетчик, чтобы мы снова начали считать с 0 прерывания(); // Включает прерывания на Arduino задержка(1000); // Подождите 1 секунду нетПрерывания(); // Отключаем прерывания на Arduino // Начинаем математику скорость потока = (количество * 2,25); // Берём подсчитанные пульсы за последнюю секунду и умножаем на 2,25мл скорость потока = скорость потока * 60; // Преобразуем секунды в минуты, получая мл/минуту скорость потока = скорость потока / 1000; // Конвертируем мл в литры, получаем литры в минуту //Serial.println(flowRate); // Печатаем переменную flowRate в Serial если (flowRate > 0) { Serial.println("1"); } задержка(1000); // для подключения к Python Серийный.флеш(); // Для соединения с Python } И мой код Python следующий.
импортировать серийный номер # Создаём серийный объект arduino = Serial.Serial('COM3', 9600) # Замените «COM3» портом, к которому подключен ваш Arduino. пока правда: data = arduino.readline() # Читаем данные, отправленные с Arduino если данные: print("Полученные данные: ", данные) В моей папке я также запускаю игру Crome Dinasaur как pygame. в конце концов, я хочу, чтобы динозавр подпрыгнул, когда датчик потока почувствует поток. Но, знайте, я просто хочу, чтобы Python реагировал на последовательный вывод. Я был уверен, что запуск Python и Arduino в коде VS позволит одной и той же программе читать с одного и того же порта, но я мог ошибаться.
Мобильная версия