В этом небольшом уроке мы научимся отправлять команды на Ардуино через Python 3-ей версии.
Описание
В этом проекте мы будем посылать команды через Python 3 на плату Arduino, что сделает поможет нам понять взаимодействие между Python и Arduino.
Мы создадим что-то вроде "Hello world" для платформы Arduino, т.е. мы планируем включить и выключить встроенный светодиод на Arduino Uno.
В интернете большинство пособий на эту тему используют 2-ю версию Python, но мы установим версию Python 3.7.2. Существует небольшая разница между Python 2 и Python 3, когда вы используете этот язык для управления Arduino.
Комплектующие
Собственно, нам нужны всего лишь:
- Arduino UNO
- USB-кабель
Установка Python и PySerial
Наша задача сперва установить 3-ю версию Python и пакет PySerial. Для этого есть много уроков в интернете и процесс довольно простой.
Нужно скачать python на свой компьютер с официального сайта "Питона" отсюда.
Далее нам нужно установить пакет PySerial.
PySerial - это модуль Python API, который используется для чтения и записи последовательных данных в Arduino или любой другой микроконтроллер.
Нажмите на Pyserial Windows (ссылка), чтобы загрузить PySerial.
В результате вы получите исполняемый exe-файл, который можно установить напрямую. Не меняйте никаких настроек во время установки. Оставьте его в каталоге по умолчанию и с настройками по умолчанию.
Теперь давайте проверим, правильно ли установлен PySerial. Для этого снова откройте Python Shell и введите:
import serial
Если библиотека была успешно установлена, вы не должны получить никаких сообщений об ошибках.
Код для Python и Arduino
Далее приведу нужные скетчи для работы. Убедитесь, что сначала вы загружаете скетч Arduino, а затем код Python.
Код Ардуино:
int datafromUser=0;
void setup() {
// код для настроек
pinMode( LED_BUILTIN , OUTPUT );
Serial.begin(9600);
}
void loop() {
// код для повторения в цикле
if(Serial.available() > 0)
{
datafromUser=Serial.read();
}
if(datafromUser == '1')
{
digitalWrite( LED_BUILTIN , HIGH );
}
else if(datafromUser == '0')
{
digitalWrite( LED_BUILTIN, LOW);
}
}
Код Python:
import serial
import time
arduino=serial.Serial('COM1', 9600)
time.sleep(2)
print("Enter 1 to turn ON LED and 0 to turn OFF LED")
while 1:
datafromUser=input()
if datafromUser == '1':
arduino.write(b'1')
print("LED turned ON")
elif datafromUser == '0':
arduino.write(b'0')
print("LED turned OFF")