Arduino с Python: с чего начать

Arduino с Python: с чего начать

Microcontrollers существуют уже давно и используются во всем, от сложной техники до обычных бытовых приборов. Тем не менее, работа с ними традиционно предназначена для тех, кто имеет официальную техническую подготовку, таких как технические специалисты и инженеры-электрики. Появление Arduino сделало дизайн электронных приложений гораздо более доступным для всех разработчиков. В этом руководстве вы узнаете, как использовать Arduino с Python для разработки собственных электронных проектов.

*Вы познакомитесь с основами Arduino с помощью Python и научитесь:*
  • Настроить электронные схемы

  • Настройте протокол Firmata на Arduino

  • Написать основные приложения для Arduino на Python

  • Управление аналоговыми и цифровыми входами и выходами

  • Интегрируйте датчики и переключатели Arduino с высокоуровневыми приложениями

  • Запускать уведомления на вашем компьютере и отправлять электронную почту с помощью Arduino

    *Бесплатный бонус:* ссылка: [5 Thinkts On Python Mastery], бесплатный курс для разработчиков Python, который показывает вам план и мышление, необходимые для перехода на новый уровень Python.

Платформа Arduino

Arduino - это платформа с открытым исходным кодом, состоящая из аппаратного и программного обеспечения, которая позволяет быстро разрабатывать проекты интерактивной электроники. Https://vimeo.com/18539129[emergence Arduino] привлекла внимание профессионалов из разных отраслей, https://readwrite.com/2014/05/12/arduino-massimo-banzi-diy-electronics-hardware -hacking-builders/[способствуя] началу движения Maker.

С ростом популярности Движения Создателей и концепции Internet of Things, Arduino стала одной из основных платформ для электронного прототипирования и разработки MVP.

Arduino использует свой собственный язык программирования, который похож на C ++. Тем не менее, можно использовать Arduino с Python или другим языком программирования высокого уровня. Фактически, такие платформы, как Arduino, хорошо работают с Python, особенно для приложений, которые требуют интеграции с датчиками и другими физическими устройствами.

В целом, Arduino и Python могут создать эффективную среду обучения, которая поощряет разработчиков заниматься разработкой электроники. Если вы уже знаете the основ Python, то вы сможете начать работу с Arduino, используя Python для управления им.

Платформа Arduino включает как hardware, так и программные продукты. В этом руководстве вы будете использовать аппаратное обеспечение Arduino и программное обеспечение Python для изучения основных схем, а также цифровых и аналоговых входов и выходов.

Arduino Hardware

Для запуска примеров вам нужно собрать схемы, подключив электронные компоненты . Обычно вы можете найти эти предметы в магазинах электронных компонентов или в хороших стартовых наборах Arduino. Тебе понадобиться:

  1. Https://store.arduino.cc/usa/arduino-uno-rev3[Arduino Uno] или другая совместимая доска

  2. Стандартный светодиод любого цвета

  3. Кнопка

  4. Потенциометр 10 кОм

  5. Резистор 470 Ом

  6. Резистор 10 кОм

  7. Макет

  8. Перемычки разных цветов и размеров

Давайте подробнее рассмотрим некоторые из этих компонентов.

Компонент 1 представляет собой *Arduino Uno * или другую совместимую плату. Arduino - это проект, который включает в себя множество boards и модулей для различных целей, и Arduino Uno является наиболее простым среди них. Это также самая используемая и наиболее документированная плата из всей семьи Arduino, так что это отличный выбор для разработчиков, которые только начинают работать с электроникой.

*Примечание:* Arduino - открытая аппаратная платформа, поэтому есть много других поставщиков, которые продают совместимые платы, которые можно использовать для запуска примеров, которые вы видите здесь. В этом уроке вы узнаете, как использовать Arduino Uno.

Компоненты 5 и 6 являются резисторами. Большинство резисторов обозначены цветными полосками в соответствии с color code. Как правило, первые три цвета представляют значение резистора, а четвертый цвет представляет его допуск . Для резистора 470 Ом первые три цвета - желтый, фиолетовый и коричневый. Для резистора 10 кОм первые три цвета - коричневый, черный и оранжевый.

Компонент 7 представляет собой «макет», который используется для подключения всех других компонентов и сборки цепей. Хотя макет не требуется, рекомендуется получить его, если вы собираетесь начать работать с Arduino.

Arduino Software

В дополнение к этим аппаратным компонентам вам необходимо установить некоторое программное обеспечение. Платформа включает в себя Arduino IDE, интегрированную среду разработки для программирования устройств Arduino, а также другие онлайн-инструменты.

Arduino был разработан, чтобы позволить вам легко программировать доски. Как правило, вы выполните следующие действия:

  1. Подключите плату к вашему ПК

  2. Установите и откройте Arduino IDE

  3. Настройте параметры платы

  4. Написать код

  5. Нажмите кнопку на IDE, чтобы загрузить программу на доску

Чтобы установить Arduino IDE на свой компьютер, загрузите соответствующую версию для вашей операционной системы с веб-сайта Arduino. Проверьте документацию для инструкций по установке:

  • Если вы используете Windows , используйте установщик Windows, чтобы загрузить необходимые драйверы для использования Arduino в Windows. Проверьте Arduino документацию для получения дополнительной информации.

  • Если вы используете Linux , вам, возможно, придется добавить своего пользователя в некоторые группы, чтобы использовать последовательный порт для программирования Arduino. Этот процесс описан в Arduino руководстве по установке для Linux.

  • Если вы используете macOS , вы можете установить Arduino IDE, следуя Arduino Руководство по установке для OS X.

    *Примечание:* В этом руководстве вы будете использовать IDE Arduino, но Arduino также предоставляет https://create.arduino.cc/getting-started/plugin[web editor], который позволит вам программировать платы Arduino с помощью браузера. ,

Теперь, когда вы установили Arduino IDE и собрали все необходимые компоненты, вы готовы начать работу с Arduino! Далее вы загрузите «Hello, World!» Запрограммируйте на свою доску.

"Привет, мир!" С Arduino

Arduino IDE поставляется с несколькими примерами набросков , которые вы можете использовать для изучения основ Arduino. Эскиз - это термин, который вы используете для программы, которую вы можете загрузить на доску. Поскольку Arduino Uno не имеет подключенного дисплея, вам нужен способ увидеть физический вывод вашей программы. Вы будете использовать пример скриншота Blink , чтобы встроенный светодиод на плате Arduino мигал.

Для начала подключите плату Arduino к компьютеру с помощью USB-кабеля и запустите Arduino IDE. Чтобы открыть пример эскиза Blink, откройте меню File и выберите Examples, затем 01.Basics и, наконец, Blink:

Blink пример эскиза в Arduino IDE

Пример кода Blink будет загружен в новое окно IDE. Но прежде чем вы сможете загрузить эскиз на плату, вам нужно настроить IDE, выбрав плату и подключенный порт.

Чтобы настроить плату, войдите в меню Tools, а затем Board. Для Arduino Uno вы должны выбрать Arduino/Genuino Uno:

Selecting board на Arduino IDE

После того, как вы выбрали плату, вы должны установить соответствующий порт. Снова откройте меню Tools и выберите Порт:

Имена портов могут отличаться в зависимости от вашей операционной системы. В Windows порты будут называться + COM4 +, + COM5 + или что-то подобное. В macOS или Linux вы можете увидеть что-то вроде +/dev/ttyACM0 + или +/dev/ttyUSB0 +. Если у вас есть какие-либо проблемы с настройкой порта, взгляните на https://www.arduino.cc/en/Guide/Trou устранение неисправностей[Arduino Страница устранения неполадок].

После того, как вы настроили плату и порт, у вас все готово для загрузки эскиза в Arduino. Для этого вам просто нужно нажать кнопку Upload на панели инструментов IDE:

Buttons для проверки и загрузки в Arduino IDE

Когда вы нажимаете Upload, IDE компилирует эскиз и загружает его на вашу доску. Если вы хотите проверить наличие ошибок, вы можете нажать Verify перед Upload, что скомпилирует только ваш эскиз.

Кабель USB обеспечивает последовательное соединение для загрузки программы и питания платы Arduino. Во время загрузки вы увидите мигающие светодиоды на плате. Через несколько секунд загруженная программа запустится, и вы увидите, что светодиодный индикатор мигает каждую секунду:

Arduino встроенный светодиод мигает

После завершения загрузки USB-кабель продолжит питание платы Arduino. Программа хранится во флэш-памяти микроконтроллера Arduino. Вы также можете использовать батарею или другой внешний power supply для запуска приложения без USB-кабеля.

Подключение внешних компонентов

В предыдущем разделе вы использовали светодиод, который уже присутствовал на плате Arduino. Однако в большинстве практических проектов вам необходимо подключить внешние компоненты к плате. Чтобы сделать эти соединения, Arduino имеет несколько контактов разных типов:

Arduino Uno Ports

Хотя эти соединения обычно называются pins , вы можете видеть, что они не совсем физические контакты. Скорее, контакты - это отверстия в гнезде, к которым можно подключить перемычки. На рисунке выше вы можете увидеть различные группы выводов:

  • Оранжевый прямоугольник: Это 13 цифровых выводов , которые вы можете использовать в качестве входов или выходов. Они предназначены только для работы с цифровыми сигналами, которые имеют 2 разных уровня:

    1. Уровень 0: представлен напряжением 0 В

    2. Уровень 1: представлен напряжением 5В

  • Зеленый прямоугольник: Это 6 аналоговых выводов , которые вы можете использовать в качестве аналоговых входов. Они предназначены для работы с произвольным напряжением от 0 до 5 В.

  • Синий прямоугольник: Это 5 штырьков питания . Они в основном используются для питания внешних компонентов.

Чтобы начать использовать внешние компоненты, вы должны подключить внешний светодиод для запуска примера скриншота Blink. Встроенный светодиод подключен к цифровому выводу № 13 . Итак, давайте подключим внешний светодиод к этому контакту и проверим, мигает ли он. (Стандартный светодиод - это один из компонентов, которые вы видели в списке earlier.)

Прежде чем подключать что-либо к плате Arduino, рекомендуется отключить его от компьютера. Отключив USB-кабель, вы сможете подключить светодиод к вашей плате:

Circuit для моргания

Обратите внимание, что на рисунке показана доска с цифровыми контактами, которые теперь обращены к вам.

Использование макета

Проекты электронных схем обычно включают в себя тестирование нескольких идей, когда вы добавляете новые компоненты и вносите коррективы по мере продвижения. Тем не менее, может быть сложно подключить компоненты напрямую, особенно если цепь большая.

Чтобы упростить создание прототипов, вы можете использовать breadboard для соединения компонентов. Это устройство с несколькими отверстиями, которые соединены определенным образом, так что вы можете легко соединить компоненты с помощью перемычек:

Breadboard

Вы можете увидеть, какие отверстия связаны между собой, посмотрев на цветные линии. Вы будете использовать отверстия по бокам макета для питания схемы:

*Подсоедините одно отверстие* красной линии * к источнику питания.
*Соедините одно отверстие на* синей линии *с землей.

Затем вы можете легко подключить компоненты к источнику питания или заземлению, просто используя другие отверстия на красной и синей линиях. Отверстия в середине макета соединены, как указано цветами. Вы будете использовать их для создания соединений между компонентами схемы. Эти две внутренние секции разделены небольшим углублением, к которому можно подключить интегральные схемы (ИС).

Вы можете использовать макет для сборки схемы, использованной в примере скриншота Blink:

Circuit для эскиза моргания на макете

Для этой схемы важно отметить, что светодиод должен быть подключен в соответствии с его полярностью, иначе он не будет работать. Положительный вывод светодиода называется* анодом и обычно является более длинным. Отрицательный конец называется катодом * и он короче. Если вы используете восстановленный компонент, то вы также можете идентифицировать клеммы, посмотрев плоскую сторону на самом светодиоде. Это укажет положение отрицательного терминала.

Когда вы подключаете светодиод к выводу Arduino, вам всегда понадобится резистор, чтобы ограничить его ток и избежать преждевременного выгорания светодиода. Здесь вы используете резистор 470 Ом для этого. Вы можете следить за соединениями и проверить, что цепь такая же:

  • Резистор подключен к цифровому выводу 13 на плате Arduino.

  • Светодиодный анод подключен к другой клемме резистора.

  • Светодиодный катод соединен с землей (GND) через синюю линию отверстий.

Более подробное объяснение можно найти на странице How Use Breadboard.

После завершения подключения подключите Arduino к ПК и снова запустите эскиз Blink:

Arduino встроенные и внешние светодиоды мигают

Поскольку оба светодиода подключены к цифровому выводу 13, они мигают вместе во время выполнения эскиза.

"Привет, мир!" С Arduino и Python

В предыдущем разделе вы загрузили эскиз Blink на свою плату Arduino. Эскизы Arduino написаны на языке, аналогичном C ++, и компилируются и записываются во флэш-память микроконтроллера при нажатии Upload. Хотя вы можете использовать another language для прямого программирования микроконтроллера Arduino, это не тривиальная задача!

Тем не менее, есть несколько подходов, которые вы можете использовать для использования Arduino с Python или другими языками. Одна из идей - запустить основную программу на ПК и использовать последовательное соединение для связи с Arduino через USB-кабель. Эскиз будет отвечать за чтение входных данных, отправку информации на ПК и получение обновлений с ПК для обновления выходов Arduino.

Чтобы управлять Arduino с ПК, вам необходимо разработать протокол для связи между ПК и Arduino. Например, вы можете рассмотреть протокол с такими сообщениями:

  • ЗНАЧЕНИЕ PIN 13 ВЫСОКО: используется, чтобы сообщить ПК о состоянии выводов цифрового входа

  • SET PIN 11 LOW: используется, чтобы указать Arduino установить состояния выходных контактов

С определенным протоколом вы можете написать эскиз Arduino для отправки сообщений на ПК и обновления состояний контактов в соответствии с протоколом. На ПК вы могли бы написать программу для управления Arduino через последовательное соединение на основе разработанного вами протокола. Для этого вы можете использовать любой язык и библиотеки, которые вы предпочитаете, такие как Python и библиотека PySerial.

К счастью, для этого есть стандартные протоколы! Firmata является одним из них. Этот протокол устанавливает формат последовательной связи, который позволяет считывать цифровые и аналоговые входы, а также отправлять информацию на цифровые и аналоговые выходы.

Arduino IDE включает в себя готовые эскизы, которые проведут Arduino через Python с протоколом Firmata. Со стороны ПК есть реализации протокола на нескольких языках, включая Python. Чтобы начать с Firmata, давайте использовать его для реализации «Hello, World!» программа.

Загрузка эскиза Firmata

Прежде чем писать свою программу на Python для управления Arduino, вы должны загрузить эскиз Firmata, чтобы использовать этот протокол для управления платой. Эскиз доступен во встроенных примерах Arduino IDE. Чтобы открыть его, откройте меню File, затем Examples, затем Firmata и, наконец, StandardFirmata:

Firmata пример высоты для Arduino IDE

Эскиз будет загружен в новое окно IDE. Чтобы загрузить его в Arduino, вы можете выполнить те же действия, что и раньше:

  1. Подключите USB-кабель к ПК.

  2. Выберите подходящую плату и порт в IDE.

  3. Нажмите Upload.

После завершения загрузки вы не заметите никаких действий на Arduino. Для управления им все равно нужна программа, которая может связываться с платой через последовательное соединение. Для работы с протоколом Firmata в Python вам потребуется пакет pyFirmata, который вы можете установить с помощью + пип +:

$ pip install pyfirmata

После завершения установки вы можете запустить эквивалентное приложение Blink, используя Python и Firmata:

 1 import pyfirmata
 2 import time
 3
 4 board = pyfirmata.Arduino('/dev/ttyACM0')
 5
 6 while True:
 7     board.digital[13].write(1)
 8     time.sleep(1)
 9     board.digital[13].write(0)
10     time.sleep(1)

Вот как эта программа works. Вы импортируете + pyfirmata + и используете его для установки последовательного соединения с платой Arduino, которая представлена ​​объектом + board + в строке 4. Вы также настраиваете порт в этой строке, передавая аргумент + pyfirmata.Arduino () +. Вы можете использовать Arduino IDE, чтобы найти порт.

+ board.digital + - список, элементы которого представляют цифровые выводы Arduino. Эти элементы имеют методы + read () + и + write () +, которые будут читать и записывать состояние выводов. Как и большинство встроенных программ для устройств, эта программа в основном состоит из бесконечного цикла:

  • В строке 7 включен цифровой вывод 13, который включает светодиод на одну секунду.

  • В строке 9 этот вывод отключен, что приводит к выключению светодиода на одну секунду.

Теперь, когда вы знакомы с основами управления Arduino с помощью Python, давайте рассмотрим некоторые приложения для взаимодействия с его входами и выходами.

Чтение цифровых входов

*Цифровые входы* могут иметь только два возможных значения. В схеме каждое из этих значений представлено различным напряжением. В таблице ниже показано представление цифрового входа для стандартной платы Arduino Uno:
Value Level Voltage

0

Low

0V

1

High

5V

Для управления светодиодом вы будете использовать кнопку для отправки значений цифрового входа в Arduino. Кнопка должна подавать 0 В на плату, когда она отпущена, и 5 В на плату, когда она нажата. На рисунке ниже показано, как подключить кнопку к плате Arduino:

Circuit для цифрового ввода

Вы можете заметить, что светодиод подключен к Arduino на цифровом выводе 13, как и раньше. Цифровой контакт 10 используется в качестве цифрового входа. Для подключения кнопки необходимо использовать резистор на 10 кОм, который действует как pull down в этой цепи. Понижающий резистор гарантирует, что цифровой вход получает 0 В, когда кнопка отпущена.

Когда вы отпускаете кнопку, вы открываете соединение между двумя проводами на кнопке. Поскольку через резистор ток не течет, контакт 10 просто подключается к земле (GND). Цифровой вход получает 0 В, что представляет состояние 0 (или низкий ). Когда вы нажимаете кнопку, вы подаете 5 В на резистор и на цифровой вход. Ток протекает через резистор, и на цифровой вход подается напряжение 5 В, которое представляет состояние 1 (или high ).

Вы также можете использовать макет для сборки вышеуказанной схемы:

Circuit для цифрового ввода на макете

Теперь, когда вы собрали схему, вам нужно запустить программу на ПК, чтобы управлять ею с помощью Firmata. Эта программа включит светодиод в зависимости от состояния кнопки:

 1 import pyfirmata
 2 import time
 3
 4 board = pyfirmata.Arduino('/dev/ttyACM0')
 5
 6 it = pyfirmata.util.Iterator(board)
 7 it.start()
 8
 9 board.digital[10].mode = pyfirmata.INPUT
10
11 while True:
12     sw = board.digital[10].read()
13     if sw is True:
14         board.digital[13].write(1)
15     else:
16         board.digital[13].write(0)
17     time.sleep(0.1)

Давайте пройдемся по этой программе:

  • Строки 1 и 2 import + pyfirmata + и + time +.

  • В строке 4 используется + pyfirmata.Arduino () +, чтобы установить соединение с платой Arduino.

  • Строка 6 назначает итератор, который будет использоваться для считывания состояния входов схемы.

  • Строка 7 запускает итератор, который поддерживает цикл, работающий параллельно с вашим основным кодом. Цикл выполняет + board.iterate () + для обновления входных значений, полученных с платы Arduino.

  • Строка 9 устанавливает вывод 10 как цифровой вход с помощью + pyfirmata.INPUT +. Это необходимо, поскольку в конфигурации по умолчанию используются цифровые контакты в качестве выходов.

  • Строка 11 запускает бесконечный цикл + while +. Этот цикл считывает состояние входного контакта, сохраняет его в + sw + и использует это значение для включения или выключения светодиода путем изменения значения контакта 13.

  • Строка 17 ожидает 0,1 секунды между итерациями цикла + while +. Это не является строго необходимым, но это хороший прием, чтобы избежать перегрузки процессора, который достигает 100% нагрузки, когда в цикле нет команды ожидания.

+ pyfirmata + также предлагает более компактный синтаксис для работы с входными и выходными выводами. Это может быть хорошим вариантом, когда вы работаете с несколькими выводами. Вы можете переписать предыдущую программу, чтобы иметь более компактный синтаксис:

 1 import pyfirmata
 2 import time
 3
 4 board = pyfirmata.Arduino('/dev/ttyACM0')
 5
 6 it = pyfirmata.util.Iterator(board)
 7 it.start()
 8
 9 digital_input = board.get_pin('d:10:i')
10 led = board.get_pin('d:13:o')
11
12 while True:
13     sw = digital_input.read()
14     if sw is True:
15         led.write(1)
16     else:
17         led.write(0)
18     time.sleep(0.1)

В этой версии вы используете + board.get_pin () + для создания двух объектов. + digital_input + представляет состояние цифрового входа, а + led + представляет состояние светодиода. Когда вы запускаете этот метод, вы должны передать строковый аргумент, состоящий из трех элементов, разделенных двоеточиями:

  1. Тип вывода (+ a + для аналогового или + d + для цифрового)

  2. Номер булавки

  3. Режим вывода (+ i + для ввода или + o + для вывода)

Поскольку + digital_input + является цифровым входом, использующим вывод 10, вы передаете аргумент + 'd: 10: i' +. Состояние светодиода устанавливается на цифровой выход с помощью контакта 13, поэтому аргумент + led + равен + 'd: 13: o' +.

Когда вы используете + board.get_pin () +, нет необходимости явно устанавливать вывод 10 в качестве входа, как вы делали раньше с + pyfirmata.INPUT +. После того, как контакты установлены, вы можете получить доступ к статусу цифрового входного контакта с помощью + read () + и установить состояние цифрового выходного контакта с помощью + write () +.

Цифровые входы широко используются в проектах электроники. Несколько датчиков обеспечивают цифровые сигналы, такие как датчики присутствия или двери, которые могут использоваться в качестве входов для ваших цепей. Однако в некоторых случаях вам необходимо измерить аналоговые значения, такие как расстояние или физические величины. В следующем разделе вы увидите, как читать аналоговые входы, используя Arduino с Python.

Чтение аналоговых входов

В отличие от цифровых входов, которые могут быть только включены или выключены, аналоговые входы используются для считывания значений в некотором диапазоне. На Arduino Uno напряжение на аналоговом входе находится в диапазоне от 0 до 5 В. Соответствующие датчики используются для измерения физических величин, таких как расстояния. Эти датчики отвечают за кодирование этих физических величин в надлежащем диапазоне напряжения, чтобы они могли считываться Arduino.

Для считывания аналогового напряжения Arduino использует *analog-to-digital converter (ADC) *, который преобразует входное напряжение в цифровой номер с фиксированным количеством битов. Это определяет разрешение преобразования. Arduino Uno использует 10-разрядный АЦП и может определять 1024 различных уровня напряжения.

Диапазон напряжения для аналогового входа кодируется числами от 0 до 1023. Когда применяется 0V, Arduino кодирует его в число 0 . При подаче 5 В закодированное число равно 1023 . Все значения промежуточного напряжения кодируются пропорционально.

Https://en.wikipedia.org/wiki/Potentiometer[potentiometer] - это переменный резистор, который можно использовать для установки напряжения, подаваемого на аналоговый вход Arduino. Вы подключите его к аналоговому входу для управления частотой мигания светодиода:

Circuit для аналогового ввода

В этой схеме светодиод настроен так же, как и раньше. Концевые клеммы потенциометра подключены к заземлению (GND) и 5В контактам. Таким образом, центральный терминал (курсор) может иметь любое напряжение в диапазоне от 0 до 5 В в зависимости от его положения, которое подключено к Arduino на аналоговом выводе A0.

Используя макет, вы можете собрать эту схему следующим образом:

Circuit для аналогового ввода на макете

Перед тем, как управлять светодиодом, вы можете использовать схему для проверки различных значений, которые считывает Arduino, в зависимости от положения потенциометра. Для этого запустите на компьютере следующую программу:

 1 import pyfirmata
 2 import time
 3
 4 board = pyfirmata.Arduino('/dev/ttyACM0')
 5 it = pyfirmata.util.Iterator(board)
 6 it.start()
 7
 8 analog_input = board.get_pin('a:0:i')
 9
10 while True:
11     analog_value = analog_input.read()
12     print(analog_value)
13     time.sleep(0.1)

В строке 8 вы устанавливаете + analog_input + в качестве аналогового входного вывода A0 с аргументом + 'a: 0: i' +. Внутри бесконечного цикла + while + вы читаете это значение, сохраняете его в + analog_value + и выводите вывод на консоль с помощью + print () +. Когда вы перемещаете потенциометр во время работы программы, вы должны вывести примерно следующее:

0.0
0.0293
0.1056
0.1838
0.2717
0.3705
0.4428
0.5064
0.5797
0.6315
0.6764
0.7243
0.7859
0.8446
0.9042
0.9677
1.0
1.0

Печатные значения изменяются в диапазоне от 0, когда положение потенциометра находится на одном конце, до 1, когда оно находится на другом конце. Обратите внимание, что это значения с плавающей запятой, которые могут потребовать преобразования в зависимости от приложения.

Чтобы изменить частоту мигания светодиода, вы можете использовать + analog_value +, чтобы контролировать, как долго светодиод будет гореть или выключаться:

 1 import pyfirmata
 2 import time
 3
 4 board = pyfirmata.Arduino('/dev/ttyACM0')
 5 it = pyfirmata.util.Iterator(board)
 6 it.start()
 7
 8 analog_input = board.get_pin('a:0:i')
 9 led = board.get_pin('d:13:o')
10
11 while True:
12     analog_value = analog_input.read()
13     if analog_value is not None:
14         delay = analog_value + 0.01
15         led.write(1)
16         time.sleep(delay)
17         led.write(0)
18         time.sleep(delay)
19     else:
20         time.sleep(0.1)

Здесь вы вычисляете + delay + как + analog_value + 0.01 +, чтобы избежать того, чтобы + delay + было равно нулю. В противном случае, обычно получают + analog_value + + None + в течение первых нескольких итераций. Чтобы избежать появления ошибки при запуске программы, вы используете условное выражение в строке 13, чтобы проверить, является ли + analog_value + + None +. Затем вы контролируете период мигания светодиода.

Попробуйте запустить программу и изменить положение потенциометра. Вы заметите частоту смены мигающего светодиода:

Led управляемый аналоговым входом

Теперь вы уже видели, как использовать цифровые входы, цифровые выходы и аналоговые входы в своих цепях. В следующем разделе вы увидите, как использовать аналоговые выходы.

Использование аналоговых выходов

В некоторых случаях необходимо иметь аналоговый выход для управления устройством, для которого требуется аналоговый сигнал. Arduino не имеет реального аналогового выхода, в котором напряжение может быть установлено на любое значение в определенном диапазоне. Однако Arduino включает несколько выходов *Pulse Width Modulation * (PWM).

ШИМ - это метод модуляции, при котором цифровой выход используется для генерации сигнала с переменной мощностью. Для этого он использует цифровой сигнал постоянной частоты, в котором duty цикл * изменяется в соответствии с желаемой мощностью. Рабочий цикл представляет собой долю периода, в течение которого сигнал установлен на *high

Related