Скетч ардуино: Что такое Ардуино скетч? — Zelectro

Содержание

Page not found — Лаборатория проектов школы 169

Unfortunately the page you’re looking doesn’t exist (anymore) or there was an error in the link you followed or typed. This way to the home page.


Blog

  • 02/25/2021 — Новое пособие «Дизайн компьютерных игр»
  • 01/22/2021 — Snap4Arduino и проекты «виртуальной» робототехники
  • 01/21/2021 — Cеминар «Программирование микроконтроллеров в визуальных средах. От учебных проектов к профессиональным»
  • 01/18/2021 — Дистанционная внеурочка, материалы занятий по темам Робототехника и Дизайн компьютерных игр
  • 12/01/2020 — Лекция-демонстрация «Комплект на базе робота Makeblock mBot в школе и дома»
  • 11/24/2020 — Профессиональный и личностный успех в проектах технической направленности как фактор формирования социальных установок обучающихся
  • 11/23/2020 — Виртуальная робототехника на Scratch и Snap4arduino
  • 11/16/2020 — Цифровая образовательная среда. Проблемы, решения и влияние на социальные установки. Начало.
  • 11/11/2020 — Представляем 5 главу книги «Scratch и Arduino для юных программистов и конструкторов»
  • 08/25/2020 — Программа физического моделирования Algodoo, первые шаги
  • 08/19/2020 — Средства визуального программирования микроконтроллеров, краткий обзор обновлений
  • 08/04/2020 — Готовим дидактические материалы для внеурочки в условиях продолжающейся пандемии
  • 06/01/2020 — Шаг за шагом моделируем в Scratch гармонические колебания и упругое взаимодействие объектов
  • 04/27/2020 — Шаг за шагом моделируем столкновения объектов в среде Snap4arduino
  • 04/18/2020 — Шаг за шагом моделируем поведение робота в среде Snap4arduino
  • 04/04/2020 — Создание домашних заданий в TRIK Studio
  • 03/27/2020 — Дистанционное обучение робототехнике на платформе TRIK Studio
  • 03/05/2020 — Открытая учебная робоплатформа нового поколения
  • 02/25/2020 — Преемственность учебных материалов в робототехнике, альтернативы mBot
  • 12/12/2019 — Методы распределённой разработки как учебный инструмент в робототехнике
  • 12/10/2019 — Приглашаем на городской семинар «Современные микроконтроллеры и ранняя инженерная профориентация в школе»
  • 12/02/2019 — Открытые зимние состязания Санкт-Петербурга по робототехнике 2019
  • 11/22/2019 — Наш УМК по робототехнике — Победитель конкурса инновационных продуктов!
  • 10/22/2019 — Сборка робота на основе конструктива из набора «Ресурсный набор Lego Mindstorms EV3 (45560)»
  • 09/20/2019 — Наш УМК выставлен на участие в региональном конкурсе инновационных продуктов
  • 09/12/2019 — Семинар «Техносфера современной школы: создание и перспективы использования»
  • 09/01/2019 — Перевод регламента соревнований makeX 2019 года
  • 05/29/2019 — Апробация плат от Elecfreaks
  • 05/26/2019 — 2 место в категории «Следовании по линиии экстремал»
  • 05/15/2019 — Образовательный робонабор под нашу книжку.
  • 04/24/2019 — ME-Sensors 3D (модели для печати защитных пластин)
  • 04/18/2019 — Региональный круглый стол в 169-ой
  • 04/07/2019 — Поздравляем победителей открытых состязаний Санкт-Петербурга по робототехнике 6-7 апреля 2019
  • 03/31/2019 — Открытые соревнованиях по робототехнике Центрального района
  • 03/28/2019 — ИТНШ 2019. «Ноу-хау» на основной площадке конференции.
  • 03/27/2019 — ИТНШ 2019. Выездной семинар в 169-ой
  • 02/22/2019 — 3D-печать на занятиях. Из опыта работы.
  • 02/18/2019 — Fischertechnik. BT Стартовый набор. Пробуем ROBO Pro Light
  • 02/11/2019 — Образовательные продукты Makeblock — традиции, инновации и открытые стандарты
  • 02/02/2019 — Курсы робототехники в 169-ой
  • 01/30/2019 — Первый шаг в мир микроконтроллеров
  • 01/27/2019 — Городские соревнования «Юный конструктор»
  • 12/25/2018 — Обзор визуальных средств программирования микроконтроллеров (часть 2)
  • 12/20/2018 — Городской семинар «Scratch-подобные визуальные среды программирования микроконтроллеров: обзор, сравнение, расширение возможностей, опыт использования»
  • 12/19/2018 — Обзор визуальных средств программирования микроконтроллеров (часть 1)
  • 12/14/2018 — Игрофикация в робототехнике, плюсы и минусы
  • 12/14/2018 — Fischertechnik. BT Стартовый набор. Начинаем апробацию.
  • 12/05/2018 — MakeBlock Ranger. 3D модели для сборки. Вариант 1.
  • 11/22/2018 — Наш УМК — лауреат конкурса инновационных продуктов!
  • 11/21/2018 — Поздравляем нашего выпускника!
  • 10/23/2018 — В 169-ой переведен регламент MakeX Robotics Competition Blue Planet 2018
  • 10/18/2018 — Новое поколение микроконтроллеров и программных средств, в чем отличие?
  • 10/14/2018 — Зачем и как мы учим программировать микроконтроллеры. Как?
  • 10/06/2018 — Робофинист 2018: ведем мастер-классы, представляем новые продукты.
  • 10/05/2018 — Ура! В издательстве БХВ вышла наша новая книжка про роботов!
  • 09/28/2018 — 3D печать в школе — несколько зарисовок из опыта работы.
  • 09/22/2018 — Договор с MakeBlock Co.Ltd и ООО «ЦС Импэкс» о совместных исследованиях!
  • 06/08/2018 — Advanced Arduino Extension — расширение для mBlock3 от А.Григорьева
  • 04/24/2018 — Встреча: MakeBlock, DIGIS, БХВ и 169-ая))
  • 03/28/2018 — ИТНШ 2018. Выездной семинар в 169-ой.
  • 03/27/2018 — ПОФ 2018. Ярмарка «Успешных практик реализации ФГОС»
  • 03/20/2018 — mBot. Собираем оптимальную конфигурацию учебного робота.
  • 03/15/2018 — ПРОБЛЕМЫ ВНЕДРЕНИЯ УЧЕБНЫХ ПРОГРАММ ПО НАПРАВЛЕНИЮ «РОБОТОТЕХНИКА» В ОБЩЕОБРАЗОВАТЕЛЬНОЙ ШКОЛЕ
  • 03/08/2018 — 7-8 марта. Выступление на Робофесте 2018 в Москве.
  • 03/06/2018 — Новый видеоролик о mBot: «лягушка» и «жук»
  • 02/14/2018 — ОПЫТ ПРЕПОДАВАНИЯ РОБОТОТЕХНИКИ В ОБЩЕОБРАЗОВАТЕЛЬНОЙ ШКОЛЕ
  • 01/31/2018 — вебинар «Опыт школ по внедрению Инженерного инновационного класса»
  • 01/30/2018 — Семинар по программированию микроконтроллеров и технологиям «Интернет-вещей»
  • 01/18/2018 — Робототехника и экология. Выступление в Туле.
  • 12/09/2017 — «Робоняша» в 169-ой
  • 12/08/2017 — Новый ролик в видеоблоге: Робот mBot от компании Makeblock. ч.3-1. Расширение: шестиногий робот.
  • 11/30/2017 — Межрайонный мастер-класс
  • 11/25/2017 — 169-ой школе исполнилось 80 лет!
  • 11/18/2017 — Практиканты «Петровского колледжа» в 169-ой
  • 11/15/2017 — Новая книга!
  • 11/07/2017 — Проект «Знакомимся, mBot!»
  • 10/06/2017 — «Умные вещи», новый виток развития технологий
  • 10/05/2017 — Как связать два микроконтроллера по Bluetooth. Настраиваем HC-05 для работы в режиме Master
  • 10/04/2017 — СПО в школе. Давайте вместе заполним список! Часть 1. Поддержка робототехники и конструирования
  • 10/03/2017 — Робототехника… без роботов. Scratch и имитационное программирование. Движение по линии
  • 10/02/2017 — Стандарты для Arduino-роботов как возможность занять правильную нишу в образовательной робототехнике.
  • 10/02/2017 — Использование распределенных ресурсов сетевых партнеров для формирования современной техносферы образовательной организации
  • 10/02/2017 — Визуальное программирование микроконтроллеров в образовании

Шаги решения ошибки «avrdude: stk500_getsync()»


Ошибка avrdude: stk500_getsync(): not in sync: resp=0x00 и как ее решить?

 

Данная ошибка периодически появляется практически у всех, чаще всего у новичков, хотя и не только, что же с ней делать? Давайте разбираться.

 

  1. Для начала нужно убедиться что в диспетчере устройств ваша плата отображается правильно, и там нету никаких красных крестиков или желтых кружочков с восклицательным знаком, то есть у вас должно быть что-то вроде этого (так должна определяться плата Arduino Uno на чипе Ch440T):

или этого:

Если у вас есть тут восклицательный знак или вообще неопознанное устройство, то проблема скорее всего с драйверами, пробуйте их найти и переустановить или попробуйте подключить плату к другому выходу USB. Если тут все хорошо, идем далее

 

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

            

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

     3. Иногда помогает нажатие кнопки Reset на плате в момент заливки скетча. Было у меня такое при работе с платой Arduino Pro Mini при прошивке ее через модуль cp2102 — usb. Запускаем заливку скетча и следим за статусной строкой в среде Arduino.

Как только после надписи «Компиляция скетча» появится надпись «Вгружаем» — необходимо в течение секунды клацнуть кнопочку «Reset» на плате , и вместо ошибки «avrdude: stk500_getsync(): not in sync: resp=0x00» можем получить благополучное «Вгрузили» 

     4. Был у меня один случай, когда плата нивкакую не хотела шиться имея сетевой шилд на борту. Простой скетч моргалки без шилда – льется, с шилдом тот же скетч – злополучный avrdude: stk500_getsync(): not in sync . Долго мы с товарищем ломали голову над данной проблемой, пока я не вычитал что на этой неудачной китайской копии ATmega328P UNO R3 Ch440T Instead 16U2 неправильно впаян ICSP разъём, если у вас та же ситуация, то вам сюда

  1. Хорошо если у вас есть точно такая же плата, на которой у вас происходит ошибка. Тогда просто подключаем ее , убеждаемся что в среде ардуино стоит галка на правильном ком-порте и пытаемся шить, если же она успешно шьётся, значит проблема таки в плате, если же тоже шиться не хочет, то это либо драйвер, либо кабель, либо usb-порт.

 

Итак если проблема осталась, а вышеперечисленные пункты вам не помогли то нужно разбираться дальше. У меня такая проблема была как раз в упомянутой плате ATmega328P UNO R3 Ch440T Instead 16U2 . У меня их две, и как раз была ситуация, когда с одной платой скетчи не хотели литься, но подменив на другую такую же плату, скетч легко залился, и так я понял что проблема точно в плате (отсекая разные варианты с драйверами или низкой скоростью ком-порта о которой часто пишут, также ктото писал что кому-то помогала перезагрузка, но тут мы видим сразу – эта шьется, эта нет, и голову ломать не нужно о дровах, кабелях, скорости, статическом электричестве и т п). Нагуглив что же делать в такой ситуации я выяснил, что необходимо проверить возвращение данных при замыкании rx-tx. То есть нужно перемычкой замкнуть каналы RX и TX – это digital 0 и digital 1 (они обычно подписаны) и далее нужно найти какую-нибудь программу-терминал, например Putty.

Итак, замыкаем эти контакты, подключаем плату, открываем putty, выбираем Serial, указываем порт на котором висит наша ардуина и жмем open. 

Появляется терминальое окно, и тут нам просто необходимо что-то написать, если мы видим написанные символы, это хорошо – пути на ардуине до главной микросхемы целы и прошив контроллер есть шанс вернуть плату к жизни. Если же мы пишем, а символы в окне не появляются, значит похоже обрыв на дорожках самой платы, либо неисправны какие-либо другие элементы платы, то есть проблема не в микросхеме (с таким я не сталкивался, но полагаю нужно найти принципиальную схему ардуины, например тут, вооружиться тестером и прозванивать). У меня написанные символы отобразились, то есть дело в микросхеме. Посмотрев что на плате эта микросхема относительно легко достается, я поменял эти микросхемы местами с другой платой и убедился что с другой рабочей микросхемой ардуинка благополучно шьётся.

Что же дальше? Конечно, можно заказать эту микросхему, стоит она вчетверо дешевле самой ардуины, и проблема решена, но ведь есть вариант прошить. Есть много способов прошивки, для коих нужны разные программаторы и прочее, но есть способ прошития ардуины другой ардуиной, вот им я и заинтересовался. На официальном сайте есть подробная инструкция, вот что там примерно говорится:

 

 Возьмите плату прошивальщик, то есть рабочую, которой будете прошивать, подключите ее, выберите правильно сом-порт, и залейте в нее скетч ArduinoISP (этот скетч есть в стандартном наборе программ)

Далее необходимо соединить плату прошивальщик с прошиваемой платой, вот эта схема для моей ардуино уно и совместимых с ней:

 

Снизу плата-прошивальщик , к ней подключается юсб-кабель, сверху плата-пациент, которую мы прошиваем. Также далее в инструкции написано, что если плата уно, то к ней необходимо повесить конденсатор на 10uF между reset и ground , но вот к донору или прошивальщику – непонятно. В итоге оказалось что к прошивальщику. Благо конденсатор такой у меня нашелся, обычный электролитический, из какой-то материнки. Далее необходимо в среде ардуино выбрать программатор Arduino as ISP

 

И после этого можно прошивать – инструменты – burn bootloader

Итак, я поключил проводки, поставил между землей и резетом конденсатор, но сначала методом тыка я поставил конденсатор на донора, подключил юсб кабель к прошевающей плате и увидел как на моем пациенте засветились огоньки одновременно с огоньками прошивальщика (так они не мигали совсем, тупо горел только индикатор питания), это меня уже порадовало, убедившись что скетч ArduinoISP у меня залит, выбрана правильная плата, ком-порт и программатор я нажал Burn Bootloader и увидел ошибку. Расстроился конечно, подумал что придется таки заказывать эту микруху, но вспомнил о кондесаторе и пересадил его с пациента на прошивальщика (отключив естественно предварительно кабель). Итак, подключив кабель я снова нажал  Burn Bootloader и о чудо! На обеих платах начали быстро моргать огоньки, и гдето через минуту среда ардуино сказала мне что прошивка завершена. Отключив питание, я отключил все проводки и для начала проверил все ли в порядке с платой прошивальщиком – подключил ее, залил самый простой скетч блинк и он благополучо заработал. Отключив плату, я подключил пациента, и попробовал залить скетч в нее. Ошибку он не выдал! Скетч благополучно залился и начал успешно моргать раз в секунду! Вот и все, оказалось ничего сложного в этой прошивке нету. Очень надеюсь, что эта инструкция поможет кому-то еще, удачи!

Если вам эта информация не помогла, почитайте инструкцию по подробной диагностике чипов Ардуино с помощью второй ардуино платы. По всем вопросам пишите на [email protected] 

знакомство с Arduino, первый скетч

Почти год назад я писал о том, что хотел бы разобраться с Arduino и, в частности, научиться управлять Arduino при помощи программки, написанной в Delphi. Вот, собственно, и наступил тот самый момент, когда можно сидеть дома и разбираться с заявленной темой. Итак, времени у меня на всё про всё – семь дней максимум. Мастерить буду простенький газоанализатор…даже не так – сигнализатор наличия в доме каких-либо вредных газов (формальдегида, оксида углерода и т.д.). Почему именно “сигнализатор”я постараюсь пояснить в одной из следующих статей цикла. И, как можно догадаться, все статьи этого цикла будут начинаться с хэштега #МастеримДома. И начну сегодня с самого основного – знакомства с устройством Arduino.

Итак, что же из себя представляет Arduino? Википедия даёт такое определение: Arduino — торговая марка аппаратно-программных средств для построения простых систем автоматики и робототехники, ориентированная на непрофессиональных пользователей. По сути, Arduino – это конструктор, типа  “Лего” для тех, кто интересуется электроникой. Благодаря своей относительной простоте и удобству, Arduino является довольно популярной платформой, без преувеличения, во всём мире.

Сам я с Arduino познакомился примерно полтора года назад и, надо сказать, что моих весьма скудных знаний электроники и основ C/C++ хватило на то, чтобы в достаточно сжатые сроки собрать небольшой приборчик по типу алкотестера и даже прицепить к этому устройству экранчик, позволяющий выводить русский текст пользователю. Потом тема с прибором заглохла в силу разного рода причин, но железо-то осталось и его даже стало по-больше. Вот и решил я в нерабочую неделю восстановить в памяти работу с Arduino и собрать чего-нибудь интересное и поделиться этим с Вами.

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

Плата Arduino UNO с кабелем для подключения по USB

Собственно, это сердце и мозг всей нашей будущей разработки. Достаточно популярная и относительно дешевая плата Arduino.

Средняя макетная плата

С помощью этого девайса мы будем собирать макет нашего устройства.

LCD 1602 с I2C-модулем

Тут всё понятно – результаты работы датчиков будем выводить на экран.

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

Набор датчиков серии MQ (MQ-135, MQ-9 и т.д.)

Датчик формальдегида CJMCU-1100

По мелочам – кучи соединительных проводов всех цветов и размеров. Дополнительно заказал датчик температуры и влажности DHT-22 и будем надеяться, что он успеет прийти до момента моего выхода на работу 🙂

Итак, приступим к работе с Arduino. И, для начала, настроим Arduino IDE.

Настройка и работа с Arduino IDE

Для того, чтобы можно было взаимодействовать с платой Arduino Uno нам потребуется драйвер WinChipHead USB-SERIAL. Для моей Arduino UNO китайского происхождения подошел вот этот драйвер (ссылка на Яндекс.Диск).

Теперь перейдем непосредственно к Arduino IDE. Как понятно из названия, Arduino IDE – это среда разработки. Скачать среду можно с официального сайта вот отсюда.

После скачивания, установки и запуска Вы увидите вот такую аскетичную (по сравнению с Delphi) IDE:

В основе языка программирования Arduino лежит язык С++, поэтому хотим мы этого или нет, но основы С++ придётся в итоге всё же изучить.

Программа, которая пишется для Arduino называется скетч. По умолчанию в новом скетче определены два метода – setup() и loop(). Собственно, как почти всегда в программировании, название методов говорит само за себя:

  • setup() – метод который вызывается один раз на старте и может использоваться для настройки работы, например, для инициализации переменных, определения режимов работы и т.д.
  • loop() – метод который постоянно повторяется в цикле и позволяет активно управлять Arduino.

Чтобы продемонстрировать работу с Arduino, воспользуемся одним из примеров, входящих в состав Arduino IDE, под названием Blink. Для этого выберем следующий пункт меню:

Файл – Примеры – 01. Basics – Blink

Откроется новое окно со скетчем “Blink”. Разберемся, что здесь и как работает. Вначале обратим внимание на метод setup()

void setup() {
  // initialize digital pin LED_BUILTIN as an output.
  pinMode(LED_BUILTIN, OUTPUT);
}

В методе вызывается одна функция – pinMode, которая имеет следующее описание:

Устанавливает режим работы заданного входа/выхода (pin) как входа или как выхода.

  • pin – это номер входа/выхода (pin), который Вы хотите установить
  • mode – это режим одно из двух значение – INPUT или OUTPUT, устанавливает на вход или выход соответственно.

В нашем случае, в качестве первого параметра задана константа LED_BUILTIN, которая определяет номер контакта, к которому подключен встроенный на плате Arduino светодиод (обычно LED_BUILTIN = 13)

Теперь посмотрим на код в методе loop():

void loop() {
  digitalWrite(LED_BUILTIN, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(1000);                       // wait for a second
  digitalWrite(LED_BUILTIN, LOW);    // turn the LED off by making the voltage LOW
  delay(1000);                       // wait for a second
}

Как понятно из комментариев к коду, здесь мы моргаем встроенным на плате светодиодом с интервалом в одну секунду. Физически, если pin был установлен в режим OUTPUT функцией pinMode(), то для значения HIGH напряжение на соответствующем pin будет 5В (или 3.3В для 3.3V плат), и 0В (земля) для LOW.

Попробуем загрузить наш скетч на плату Arduino Uno. Для этого нам необходимо:

во-первых, определить нашу плату. Для этого в меню “Инструменты – Плата” выбрать значение “Arduino Uno”:

во-вторых, понять на каком COM-порту “висит”наша плата. Для этого подключаем с помощью кабеля плату к свободному USB-порту, открываем диспетчер устройств и ищем в разделе “Порты (COM и LPT)” что-то типа такого:

Судя по картинке выше, моя плата “висит” на COM7. Выбираем в Arduino IDE этот порт:

Теперь наш скетч можно загрузить на плату и посмотреть на работу. Выбираем в меню пункт “Скетч – Загрузка”. Если вы всё сделали правильно, то увидите в IDE вот  такое сообщение:

А сама на плате с интервалом в 1 секунду начнет моргать красный светодиод.

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

А на сегодня всё. Если Вас заинтересовала тема работы с Arduino – заходите завтра в блог ;).

0 0 голос

Рейтинг статьи

Скетч для робота на плате Arduino nano

Задание 1. Описание «Движение робота вперед, назад»

Мы предполагаем, что владелец конструктора уже знаком с контроллером Arduino и средой проектирования Arduino IDE. Скачать и установить программу Arduino IDE можно по ссылке: https://www.arduino.cc/. 
В гнезда блока управления R-5 устанавливается контроллер Arduino Nano. Поэтому и в настройках среды разработки Arduino IDE необходимо выбрать именно этот контроллер с процессором AT mega 328.


 

Теперь уже приступаем непосредственно к программированию.

Программа для контроллера Ардуино обычно состоит из трёх частей.
 
В первой части, как в обычной математической задаче, описываются исходные данные. Мы присваиваем названия, назначение, функционал контактов контроллера. Записываем, какие библиотеки мы будем использовать в ходе выполнения программы.
 
Во второй части с названием Setup пишем уже непосредственно код программы. Но этот код исполняется только один раз за время работы программы. Это необходимо для того, чтобы запрограммировать выходы, входы контроллера на всё время действия программы.
 
И третья часть программы loop представляет собой команды, которые исполняются процессором в течение всего периода работы процессора.
 
Рассмотрим простой пример кода для движения робота.
 
В первой части кода мы определяем, какими контактами платы Arduino мы будем управлять драйвером и, соответственно, электромоторами, придумаем название команд, чтобы нам было понятно их назначение.

В блоке R-5 контакты Arduino жёстко подключены к входам драйвера.

Давайте посмотрим на рисунок ниже:


M_R_IN – вход драйвера, управляющий направлением вращения правого электромотора. Высокий уровень (HIGHT) – вращение вперед.

M_R_EN – вход драйвера, разрешающий вращение правого электромотора. Высокий уровень (HIGHT) разрешает вращение. При подаче на вход сигнала с широтно-импульсной модуляцией (ШИМ, PWM) вход управляет скоростью вращения.

M_L_IN – вход драйвера, управляющий направлением вращения левого электромотора. Высокий уровень (HIGHT) – вращение вперед.

M_L_IN – вход драйвера, разрешающий вращение левого электромотора. Высокий уровень (HIGHT) разрешает вращение. При подаче на вход сигнала с широтно-импульсной модуляцией (ШИМ, PWM) вход управляет скоростью вращения.

И у нас получается следующее:
Контакт Ардуино 2 – направление вращения правого мотора.
Контакт Арудино 3 – разрешение вращения правого мотора. При работе ШИМ – регулировка скорости вращения.
Контакт Ардуино 4 – направление вращения левого мотора.
Контакт Ардуино 5 – разрешение вращения левого мотора. При работе ШИМ – регулировка скорости вращения.
 
Пишем код. Код здесь.

Скопируйте текст программы и вставьте его в Arduino IDE.

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

После проверки загрузите код в контроллер. Установите контроллер в блок R-5 и включите питание робота.


 

Наш робот, исполняя написанный выше скетч, должен в течение одной секунды ехать вперёд, затем на секунду остановиться и начать движение назад. И так как команда loop исполняется постоянно, то робот будет выполнять эти команды, пока включено питание.

Как прошить Arduino Pro Mini (от А до Я)

Опубликовано: 31.08.2017 20:48



Введение

Приветствую Вас, читатели нашего ресурса. Сегодня мы поговорим об одном контроллере из серии Arduino, а именно об Arduino Pro Mini. Это маленький, компактный контроллер, имеющий все преимущества Arduino, но при этом очень компактный, можно сказать самый маленький из всех существующих Arduino контроллеров на данный момент. Многих так же привлекает и цена его Китайский копий, а стоят они от одного до двух долларов за штуку (местами и того меньше), что так же заставляет задуматься об его приобретении. Но существует и одна проблема, его не так-то уж и просто прошить, особенно Китайские копии, которые оснащают процессором  Atmel ATmega168P, которыми некогда не оснащали официальные контроллеры Arduino Pro Mini и как следствие Arduino IDE отказывается их прошивать, сообщая о неправильной сигнатуре процессора.

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

Что для этого нужно?

Arduino Pro Mini очень компактный, а компактность требует жертв и жертва это — USB интерфейс который полностью выкосили в данном контроллере т.е. подключить Pro Mini к компьютеру напрямую у вас не получится и как следствие для этого понадобится либо специальный переходник USB в TTL или другой контроллер Arduino.

Далее мы разберем три способа как прошить Pro Mini и для всех трех способов нам что-то понадобиться:

  • Первый способ. Прошиваем через адаптер USB в TTL – нужен сам адаптер в количестве одной штуки.
  • Второй способ. Прошиваем через Arduino UNO – нужна Arduino UNO, но не простая, а в классическом исполнении, это та Arduino, в которой процессор выполнен в DIP корпусе и вставлен в черный разъем.
  • Третий способ. Прошиваем через SPI интерфейс – нужна любая Arduino:  UNO, Nano, Mega, Leonardo – не важно, главное чтобы был USB разъем для подключения к ПК.
Первый способ. Прошиваем через адаптер USB в TTL

Первым и самым простым способом загрузить свой скетч в Arduino Pro Mini — это приобрести специальный адаптер USB в TTL или как его называют UART переходник. Как правило, этот переходник это и есть та часть, которую вырезали из Arduino Nano, превратив ее в Arduino Pro Mini. Стоимость подобных переходников копеечная, а выбор и того больше. Китайцы наштопали их столько, что глаза разбегаться какой из них выбрать. При этом цена сего девайса не более одного вечно зеленого. После того как вы соедините Pro Mini и UART переходник проводами или шлейфом, остаётся только воткнуть его (переходник) в ПК, установить драйвер (не для всех переходников они требуются) и на этом собственно все. Ваш ПК определит переходник как очередной COM-порт, который появляется при подключении любой Arduino к ПК. Выбираете его, плату, с которой будете работать (Arduino Pro Mini) и спокойно загружаете свой скетч.

Единственным нюансом в данных переходниках, является наличие или отсутствие контактов RST или DTR. Рекомендую покупать переходники, на которых эти контакты есть. Они значительно упрощают жизнь и делают процесс прошивки беспроблемным. Если же вы купили уже переходник, на котором подобных контактов нет, то при каждой загрузке скетча в Arduino вам придется нажимать на кнопку Reset, что не всегда получается сделать вовремя, и это вносит свои неудобства.

Подключение переходник вы можете посмотреть по таблице ниже:

USB в TTL (UART)
Arduino Pro Mini
RX
RX
TX
TX
GND
GND
5V
VCC
RST или DTR или GRN
RST или DTR
Второй способ. Прошиваем через Arduino UNO

Для этого способа нам понадобиться классическая Arduino UNO. Классическая эта та, в которой корпус микросхемы выполнен в DIP корпусе и вставлен в специальный разъем. Вот эту микросхему нам надо аккуратно поддеть отверткой. Тут важно не сломать процессор, поддевайте аккуратно, не погнув ноги.

Arduino UNO. Процессор выполнен в DIP корпусе. Аккуратно поддеваем и вытаскиваем процессор отверткой.

После того как мы вытащили процессор из Arduino UNO мы по сути получили тот самый переходник USB в TTL, осталось только соединить проводами наш новый переходник и Arduino Pro Mini по следующей схеме:

Arduino UNO (без процессора)
Arduino Pro Mini
RX
RX
TX
TX
GND
GND
5V
VCC
RST
RST

После того как вы соединили две Arduino воедино, можно приступать к прошивке Arduino Pro Mini. Подключаем Arduino UNO по USB к ПК. Выбираем в настройках Arduino IDE COM-порт, указываем, что мы теперь работаем не с Arduino UNO, а с Arduino Pro Mini и все, заливаем наши скетчи. Способ довольно интересный, если вы не боитесь испортить Arduino и рядом не оказалось переходника USB в TTL.

Третий способ. Прошиваем через SPI интерфейс

Третьим и самым неудобным способом загрузить свой скетч в Arduino Pro Mini это прошить его при помощи ICSP интерфейса. Данный интерфейс присутствует на большинстве плат Arduino. Основные контакты данного интерфейса выведены на порты с 10 по 13, а так же выведены отдельно в виде шести контактной колодки с подписью ICSP. Располагается колодка, как правило, в центральной правой части Arduino.

Прошивка Arduino Pro Mini в этом случае делиться на два этапа:

  1. Прошивка платы Arduino как ISP программатора.
  2. Настройка Arduino IDE и загрузка скетча в Arduino Pro Mini.

Первым делом мы должны подготовить наш будущий программатор. Возьмем для примера всю туже Arduino UNO. Далее пошагово:

  1. Запускаем Arduino IDE.
  2. Файл — Примеры — 11.ArduinoISP — ArduinoISP.
  3. Инструменты — Плата — Arduino UNO.
  4. Инструменты — Порт — Выбираем COM-порт.
  5. Компилируем и заливаешь в Arduino UNO.

Далее нам необходимо соединить две Arduino проводами по следующей схеме:

Arduino UNO (ISP)
Arduino Pro Mini
5V
VCC
GND
GND
10
RST
11 (MOSI)
11 (MOSI)
12 (MISO)
12 (MISO)
13 (SCK)
13 (SCK)

Теперь опять открываем Arduino IDE. Открываем в ней скетч который вы хотите залить в Pro Mini и выполняете следующие действия:

2. Инструменты — Плата — Arduino Pro Or Pro Mini
3. Инструменты — Процессор — ATmega168 (5V, 16 MHz)
4. Инструменты — Порт — Выбираете порт
5. Инструменты — Программатор — Arduino as ISP
6. Скетч — Загрузить через программатор

Как видите загружать скетч в этом режиме надо через специальное меню «Загрузить через программатор», а не через кнопку «Загрузить» на главной форме Arduino IDE. В этом и связано все неудобство. Если вы нажмете кнопку «Загрузить» как это делаете обычно, то вы зальете скетч в Arduino UNO, а не Arduino Pro Mini, что затрет там скетч программатора. Так же в этом режиме недоступен класс Serial, то есть отлаживать свой скетч обмениваясь сообщениями по COM-порту у вас так же не получится. Ну и еще одна ложка дегтя в том, что после данной перепрошивки, в большинстве случаев, перепрошить Arduino Pro Mini через переходник у вас так же больше не получиться. Исправляется это заливкой нового bootloader-а через меню «Инструменты» — «Записать Загрузчик».

Добавляем китайский Pro Mini в Arduino IDE

Как я уже говорил в данной статье, Китайские клоны порой оснащают процессорами которыми не оснащали официальные версии Arduino Pro Mini и как следствие при прошивке их вы можете увидеть следующую или подобную ошибку.

avrdude: Expected signature for ATmega168 is 1E 94 06
         Double check chip, or use -F to override this check.
Найден неправильный микроконтроллер. Вы указали правильную плату в меню Инструменты -> Плата?

Исправляется это легко: 

  • Для начала необходимо открыть папку в которой расположена Arduino IDE.
  • Затем переходим в следующую папку «Папка с Arduino IDE\hardware\arduino\avr\».
  • Ищем там файл «boards.txt» и открываем его в текстовом редакторе.
  • Ищем в файле следующую строку «pro.menu.cpu.16MHzatmega168.build.mcu=atmega168».
  • И заменяем ее на «pro.menu. cpu.16MHzatmega168.build.mcu=atmega168p».
  • Перезапускаем Arduino IDE и на этом все.
  • Если у вас к примеру 328 процессор то делаем все так же, только ищем строку с цифрами 328. 
Заключение

В данной статье я привел аж три варианта загрузки скетчей в Arduino Pro Mini. Лично я использую второй. Мне он больше нравиться.

Что будете использовать вы — выбирать вам. Оставьте в комментарии какой вариант вы предпочитаете.

Успехов вам и удачи.


Пожалуйста, включите javascript для работы комментариев.

эскизов / кодов Arduino, бесплатные загрузки

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

Наше программное обеспечение Arduino было написано в среде Arduino IDE, доступной на странице загрузки Arduino.

Учебные пособия

Мигающий светодиод — используется в начале работы с Arduino

Grove Beginner Example — используется в обзоре Grove Beginner Kit

ИК-пульт дистанционного управления — управление Arduino с помощью инфракрасного пульта дистанционного управления

Драйвер двигателя постоянного тока L293D — используется при вождении Двигатель постоянного тока с Arduino с использованием драйвера двигателя L293D

Счетчик печати ЖК-дисплея — используется для подключения ЖК-экрана к Arduino

ЖК-печать Hello World — используется для подключения ЖК-экрана к Arduino

Сервопривод PCA9685 — используется в Connect До 992 сервоприводов к Arduino

Шаговый двигатель

— используется в управлении шаговым двигателем Arduino

Ультразвуковой последовательный монитор

— используется для подключения ультразвукового датчика к Arduino

Ультразвуковой ЖК-дисплей

— используется для подключения ультразвукового датчика к Arduino

Web Сервер — используется для доступа к Arduino через Интернет

Projects

3-фазный домашний счетчик энергии — используется в Simple 3 P hase Arduino Energy Meter

Искусственная нейронная сеть — Запуск искусственной нейронной сети на Arduino

Автоматический слепой открыватель — Используется в автоматическом слепом открывателе — Работает с пультом дистанционного управления и Alexa

Игра Chrome Dino — Используется в игре Chrome Dino Game на Arduino

Crack The Code Safe Box — Используется в Crack The Code Игра на основе Arduino

DinoGamePlayer — Используется в Arduino, играющем в игру Chrome Dino на другом

Color Picker — Используется в реальной жизни RGB Color Picker на основе TCS34725

Домашний измеритель энергии — используется в простом домашнем измерителе энергии Arduino

Последовательный порт домашнего измерителя энергии — используется в простом домашнем измерителе энергии Arduino

Триггер молнии — используется в Arduino Lightning Camera Trigger

Механические 7-сегментные часы — используются в механических 7-сегментных часах дисплея

Таймер реакции — используется в таймере реакции на основе Arduino

Автомобиль-робот — используется в автомобиле-роботе для избегания препятствий

Сортировщик цветов Skittles — используется в автоматическом сортировщике цветов Skittles на базе Arduino

База для умных растений в помещении — Используется в базе для самостоятельных домашних растений

Монитор влажности почвы — используется в палке для мониторинга влажности почвы

Солнечный трекер — используется в солнечном трекере Arduino

Линейный привод

Solar Tracker — используется в Arduino Solar Tracker — линейный привод

Метеостанция

— используется в метеостанции Hanging Gear

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

Добавление программ (эскизов) в Arduino IDE — Руководства

Введение

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

Вы уже должны были установить Arduino IDE в соответствии с инструкциями, содержащимися в кратком руководстве по Arduboy, и инструкциями, предоставленными организацией Arduino.

Расположение эскизов

IDE называет место, где хранятся ваши наброски, Sketchbook (имеет смысл, не так ли?), Но если это не было изменено, фактическая папка, скорее всего, будет называться Arduino . В этом руководстве он по-прежнему будет называться Sketchbook, поэтому замените правильное имя папки соответствующим образом.

По умолчанию папка для Sketchbook, использующая графическую среду (GUI) вашей операционной системы, будет:

  • Windows: папка Arduino в папке Documents
  • Mac: папка Arduino в папке Documents
  • Linux: папка Arduino в папке Home

Вы можете проверить папку, которую ваша IDE использует для Sketchbook, выбрав в меню IDE:
File> Preferences
На вкладке Settings вверху будет поле под названием Sketchbook location , которое будет содержать полный путь к вашей папке Sketchbook.(Вы можете изменить этот путь, чтобы использовать другую папку для вашего Sketchbook, но это не рекомендуется, если вы не уверены, что знаете, что делаете.)

У каждого эскиза будет своя собственная папка в Sketchbook. Хотя в этом нет необходимости, при желании вы можете упорядочить свои наброски по подпапкам внутри Sketchbook. Например, у вас могут быть подпапки с именем:

  • Экшн Игры
  • Головоломки
  • Демо
  • Моя разработка

Вы можете вкладывать подпапки на любую глубину.

Примечание: В вашем Sketchbook будет папка с именем библиотеки
Оставьте папку библиотеки в покое и не пытайтесь помещать в нее эскизы.

Sketchbook, находящиеся в Sketchbook, можно открыть, выбрав из меню IDE:
File> Sketchbook
Если вы, , не можете найти эскиз с помощью File> Sketchbook , значит, он установлен неправильно.

Файлы эскизов

Главный файл скетча будет иметь расширение .ino (последние три буквы Arduino ). Когда файл .ino загружен в IDE, расширение не будет отображаться на его вкладке. Для многих эскизов это будет единственный необходимый файл, но возможно, что в эскизе может быть несколько файлов с расширением .ino .

Некоторые эскизы могут также иметь дополнительные файлы, содержащие дополнительный код для поддержки файлов .ino . Эти файлы будут иметь расширения .c .cpp или .h

Если вы получаете ошибку типа « Нет такого файла » при попытке проверить скетч или загрузить его в свой Arduboy, возможно, один или несколько из этих дополнительных файлов отсутствуют в папке скетча.

Имя папки эскиза

Имя папки, содержащей файл (ы) для скетча , должно иметь точно такое же имя , что и основной файл .ino , с удаленным расширением .ino. Например. Если основной файл скетча называется SuperGame.ino папка должна называться SuperGame

Добавление эскизов в альбом для рисования

Вы можете добавлять наброски в свой альбом для рисования либо из среды IDE, либо с помощью средств вне среды IDE.

Многие эскизы поставляются в виде . zip или другого архивного файла, содержащего файл (ы) эскиза. Я считаю, что проще всего распаковать архив во временную рабочую папку, а затем скопировать или переместить необходимые файлы в Sketchbook. Это связано с тем, что извлеченные файлы и папки могут быть расположены не так, как они должны быть.Также могут быть лишние ненужные файлы, такие как шаблоны или иллюстрации, используемые для разработки эскиза.

Не загружайте файлы архива или другие файлы эскизов прямо в Sketchbook. Сохраните их в папке Downloads или в другом месте, кроме Sketchbook. В большинстве случаев «рабочая папка» может быть той, которая создается при извлечении содержимого файла архива. Как только эскиз будет установлен в ваш Sketchbook, вы можете удалить архивный файл и рабочие папки, если хотите.

Некоторые эскизы, особенно те, которые состоят только из одного файла, могут быть перечислены на веб-странице в виде текста, но недоступны для загрузки. Вы можете скопировать и вставить этот текст прямо в среду IDE и сохранить его (см. « из текста на веб-странице » ниже).

Добавление загруженного скетча без использования IDE

Среда IDE должна быть закрыта и не запускаться при добавлении скетча, чтобы среда IDE могла найти его при открытии. (Среда IDE индексирует эскизы только при первом запуске.)

  1. Если это файл .zip или другой архив, распакуйте его в рабочую папку. В противном случае у вас должна быть рабочая папка, содержащая файл (ы) .ino плюс все связанные файлы .c .cpp или .h , которые вы загрузили.
  • Создайте папку в вашем Sketchbook (или в подпапке под ней) с точно таким же именем, как у основного файла .ino , но без расширения .ino. Например. для SuperGame.ino назовите папку SuperGame

  • Скопируйте основной .ino и любые дополнительные файлы .ino , а также любые файлы . c .cpp или .h , найденные вместе в одной рабочей папке, в новую папку, созданную вами в Sketchbook. .

  • Особый случай: (На самом деле это применимо ко многим архивам.) Если это похоже на то, что при извлечении архивного файла была создана папка или подпапка, названная так же, как файл .ino в нем, то, вероятно, архив был устроены правильно.Вы можете просто скопировать или переместить эту папку и ее содержимое в свой Sketchbook, вместо того, чтобы создавать папку и копировать отдельные файлы.
    Точно так же, возможно, вам просто придется немного переименовать папку. Например, для файлов .zip и , загруженных с Github, вам может потребоваться удалить -master в конце имени папки.

Теперь у вас должна быть возможность открыть IDE и загрузить новый скетч, выбрав из меню:
Файл> Sketchbook
Загруженный скетч должен быть готов для проверки и / или загрузки.

Добавление эскиза с помощью IDE

Из загруженных файлов
  1. Если это файл .zip, или другой архив, распакуйте его в рабочую папку. В противном случае у вас должна быть рабочая папка, содержащая файл (ы) .ino плюс все связанные файлы .c .cpp или .h , которые вы загрузили.
  • В среде IDE выберите из меню:
    Файл> Открыть ...
    Откройте главное .ino находится где-то в вашей рабочей папке. Если вы получите всплывающее окно с названием Moving , предлагающее переместить файл в папку с тем же именем, выберите OK . Обратите внимание, что перемещение основного файла .ino оставит связанные файлы .ino .c .cpp или .h , если таковые имеются, в их исходном местоположении, поэтому имейте это в виду для следующих шагов. Открытие файла .ino в среде IDE не перемещает его в Sketchbook, поэтому убедитесь, что вы выполнили следующий шаг .

  • Выберите в меню IDE:
    Файл> Сохранить как ...
    Откроется диалоговое окно для создания новой папки, содержащей файл .ino с тем же именем. Перейдите и сохраните его в своем Sketchbook или в подпапке Sketchbook.

  • Если есть еще файлы .ino или .c .cpp или .h в той же папке, что и основной файл .ino в вашей рабочей папке (или в папке ниже, если всплывающее окно перенесло основной .ino файл):

  • Выберите в меню:
    Эскиз> Добавить файл ...

  • Выберите файл. Он появится на новой вкладке в среде IDE.

  • Повторите эти действия для любых других файлов .ino .c .cpp или .h .

Теперь эскиз должен быть готов для проверки и / или загрузки.

Из текста на веб-странице
  1. Когда вы запускаете IDE, окно редактирования может содержать базовый шаблон эскиза (только с пустыми функциями setup () и loop () ).Если нет, вы можете выбрать из меню IDE:
    Файл> Новый .
    На вкладке он будет называться примерно sketch_ <сегодняшняя дата> .
  • Удалите код шаблона из окна. (Вы можете использовать «щелчок правой кнопкой мыши»> Выбрать все , затем нажать клавишу удаления или использовать «щелчок правой кнопкой мыши»> Удалить .)

  • Скопируйте текст с веб-страницы и вставьте его в окно.

  • Если в списке есть другие файлы, которые необходимо включить, нажмите стрелку вниз в правом верхнем углу и выберите: Новая вкладка .При появлении запроса вы должны назвать файл так, как сказал автор ( .ino .c .cpp или .h ). Скопируйте текст файла в окно вкладки. При необходимости повторите.

  • Выберите в меню:
    Файл> Сохранить как . ..
    Сохраните эскиз где-нибудь в Sketchbook, используя имя эскиза (то же самое, что и основной файл .ino без расширения).

Эскиз должен быть готов для проверки и / или загрузки.

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

Чтобы загрузить новый скетч в Arduboy, обратитесь к Краткому руководству.

Удачи!

Если вы хотите поговорить об этом руководстве , вы можете сделать это в своей собственной теме ИЛИ перейти к этой:

Продолжая обсуждение из раздела Добавление программ (скетчей) в Arduino IDE: Эта тема предназначена для продолжения обсуждения руководства: Добавление программ (скетчей) в Arduino IDE

Как кодировать Arduino с Chromebook

Я уже упоминал, что использую Chromebook для занятий CompSci в моем местном общественном колледже.Благодаря проекту Crostini, который устанавливает полный дистрибутив Debian Linux, я могу использовать Linux-версии различных инструментов разработчика. Они отлично работают на моем Pixel Slate, но недавно я купил Chromebook более высокого класса с 16 ГБ ОЗУ, чтобы ускорить процесс кодирования.

К сожалению, один из двух моих занятий в этом семестре требует, чтобы мы использовали микроконтроллер Arduino. Это небольшое устройство подключается к компьютеру через USB, чтобы отправлять на него мои приложения. В какой-то момент это будет работать в Crostini, но на сегодняшний день со стабильным каналом Chrome OS 76 единственными USB-устройствами, поддерживаемыми в Crostini, являются телефоны Android.Даже использование флага, разрешающего неподдерживаемые USB-устройства, не работает с моей Arduino.

Итак, я решил посмотреть, какие еще варианты у меня есть, и оказалось, что их несколько. Некоторые из них бесплатны, а некоторые имеют ежемесячную плату, но все они работают непосредственно с Chrome OS в браузере; Linux не нужен!

Вот очень короткая демонстрация загрузки скетча — программы Arduino — на мое устройство с использованием одного из этих решений.

Arduino Create

Эта онлайн-среда разработки Arduino (показана на видео) является официальной веб-версией загружаемой IDE Arduino.Вы создаете свой набросок в браузере, и он сохраняется в облаке. Когда вы готовы запустить свой скетч, вы нажимаете кнопку, чтобы сервер скомпилировал ваш код, а затем отправляете его на ваше подключенное через USB устройство.

Пробная версия этой службы бесплатна в течение одного месяца, но имеет некоторые ограничения с точки зрения серверного времени, разрешенного для компиляции, количества поддерживаемых устройств, отсутствия пользовательских библиотек и т. Д. Для получения дополнительных функций и меньших ограничений вы можете приобрести подписку за 6,99 долларов США. месяц. Переход на годовую подписку экономит вам 12 долларов в год.

Chromeduino 2

Chromeduino 2 — это веб-расширение Chrome, которое также предоставляет среду разработки Arduino. Однако, поскольку само расширение не может компилировать эскизы, вам придется полагаться на внешний сервер Chromeduino.

Я упоминаю об этом только потому, что не знаю, кто управляет серверами — я видел три доступных при использовании Chromeduino 2 — и хотя я бы не подозревал ничего гнусного, я обычно не доверяю серверам, управляемым людьми или компаниями, которых я не незнаю.

Однако код Chromeduino 2 общедоступен для ознакомления и включает в себя код сервера.Я мог бы использовать это на своем собственном сервере и решить любые проблемы с безопасностью. На самом деле, мне интересно, смогу ли я запустить сервер Chromeduino 2 в контейнере Linux моего Chromebook, чтобы все работало локально. Это фактически позволило бы мне работать над эскизами Arduino полностью в автономном режиме. Хм….

Тем не менее, это бесплатное решение.

Codebender

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

Тем не менее, это самая дорогая из группы — 10 долларов в месяц или 100 долларов в год.Для преподавателей есть несколько вариантов, которые относительно недороги, если вы хотите, чтобы весь класс программировал на Arduinos.

Как только Linux на Chromebook официально будет поддерживать больше USB-устройств, все эти варианты, конечно же, станут спорными. А пока я могу продолжать использовать Chromebook на уроках компьютерной архитектуры, даже если это будет обходиться мне в несколько долларов в месяц. Удачного кодирования!

С чего начать — Real Python

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

Платформа Arduino

Arduino — это платформа с открытым исходным кодом, состоящая из аппаратного и программного обеспечения, которая позволяет быстро разрабатывать проекты интерактивной электроники.Появление Arduino привлекло внимание профессионалов из самых разных отраслей, что способствовало зарождению Maker Movement.

С ростом популярности Maker Movement и концепции Интернета вещей, Arduino стала одной из основных платформ для электронного прототипирования и разработки MVP.

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

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

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

Оборудование Arduino

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

  1. Arduino Uno или другая совместимая плата
  2. Стандартный светодиод любого цвета
  3. Кнопка A
  4. Потенциометр 10 кОм
  5. А Резистор 470 Ом
  6. Резистор 10 кОм
  7. Макет
  8. Перемычки разных цветов и размеров

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

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

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

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

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

Программное обеспечение Arduino

В дополнение к этим аппаратным компонентам вам потребуется установить некоторое программное обеспечение. Платформа включает в себя 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 также предоставляет веб-редактор, который позволит вам программировать платы Arduino с помощью браузера.

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

«Привет, мир!» С Arduino

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

Загрузка примера эскиза Blink

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

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

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

После выбора платы необходимо установить соответствующий порт.Снова войдите в меню инструментов и на этот раз выберите Порт :

Имена портов могут отличаться в зависимости от вашей операционной системы. В Windows порты будут называться , COM4, ​​, , COM5, или что-то подобное. В macOS или Linux вы можете увидеть что-то вроде / dev / ttyACM0 или / dev / ttyUSB0 . Если у вас возникли проблемы с настройкой порта, загляните на страницу устранения неполадок Arduino.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • Резистор подключен к цифровому выводу 13 на плате Arduino.
  • Анод светодиода подключен к другому выводу резистора.
  • Катод светодиода подключен к земле (GND) через синюю линию отверстий.

Более подробное объяснение см. В разделе «Как использовать макетную плату».

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

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

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

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

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

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

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

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

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

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

Загрузка скетча Firmata

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

.

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

  1. Подключите кабель USB к ПК.
  2. Выберите соответствующую плату и порт в среде IDE.
  3. Нажмите Загрузить .

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

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

  1импорт pyfirmata
 2время импорта
 3
 4board = pyfirmata.Ардуино ('/ dev / ttyACM0')
 5
 6 пока Верно:
 7 board.digital [13] .write (1)
 8 раз. Сон (1)
 9 board.digital [13] .write (0)
10 раз. Сон (1)
  

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

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

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

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

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

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

Значение уровень Напряжение
0 Низкая 0V
1 Высокая 5 В

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

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

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

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

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

  1импорт pyfirmata
 2время импорта
 3
 4board = pyfirmata.Arduino ('/ dev / ttyACM0')
 5
 6it = pyfirmata.util.Iterator (доска)
 7it.start ()
 8
 9board.digital [10] .mode = pyfirmata.INPUT
10
11 пока Верно:
12 sw = доска.цифровой [10] .read ()
13, если sw имеет значение True:
14 board.digital [13] .write (1)
Еще 15:
16 board.digital [13] .write (0)
17 раз. Сон (0,1)
  

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

  • Строки 1 и 2 импортируют pyfirmata и время .
  • Строка 4 использует pyfirmata.Arduino () для установки соединения с платой Arduino.
  • Строка 6 назначает итератор, который будет использоваться для чтения состояния входов схемы.
  • Строка 7 запускает итератор, который поддерживает выполнение цикла параллельно с вашим основным кодом. Цикл выполняет board.iterate () для обновления входных значений, полученных с платы Arduino.
  • Строка 9 устанавливает вывод 10 как цифровой вход с pyfirmata.INPUT . Это необходимо, поскольку по умолчанию в качестве выходов используются цифровые выводы.
  • Строка 11 запускает бесконечный цикл и . Этот цикл считывает состояние входного контакта, сохраняет его в sw и использует это значение для включения или выключения светодиода путем изменения значения контакта 13.
  • Строка 17 ждет 0,1 секунды между итерациями цикла , пока . В этом нет строгой необходимости, но это хороший прием, позволяющий избежать перегрузки процессора, который достигает 100% нагрузки, когда в цикле нет команды ожидания.

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

  1импорт pyfirmata
 2время импорта
 3
 4board = pyfirmata.Ардуино ('/ dev / ttyACM0')
 5
 6it = pyfirmata.util.Iterator (доска)
 7it.start ()
 8
 9digital_input = board.get_pin ('d: 10: i')
10led = доска.get_pin ('d: 13: o')
11
12 пока Верно:
13 sw = digital_input.read ()
14, если sw имеет значение True:
15 светодиодов. Запись (1)
Еще 16:
17 светодиодов. Запись (0)
18 раз. Сон (0,1)
  

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

  1. Тип штифта ( a для аналогового или d для цифрового)
  2. Номер штифта
  3. Режим вывода ( i для входа или o для выхода)

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

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

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

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

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

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

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

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

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

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

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

  1импорт pyfirmata
 2время импорта
 3
 4board = pyfirmata.Ардуино ('/ dev / ttyACM0')
 5it = pyfirmata.util.Iterator (доска)
 6it.start ()
 7
 8analog_input = board.get_pin ('a: 0: i')
 9
10 пока правда:
11 аналоговое_значение = аналоговый_ввод.read ()
12 печать (аналоговое_значение)
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импорт pyfirmata
 2время импорта
 3
 4board = pyfirmata.Ардуино ('/ dev / ttyACM0')
 5it = pyfirmata.util.Iterator (доска)
 6it.start ()
 7
 8analog_input = board.get_pin ('a: 0: i')
 9led = доска.get_pin ('d: 13: o')
10
11 пока Верно:
12 аналоговое_значение = аналоговый_ввод.read ()
13, если analog_value не None:
14 задержка = аналоговое_значение + 0,01
15 светодиодов. Запись (1)
16 time.sleep (задержка)
17 светодиодов. Запись (0)
18 time.sleep (задержка)
19 еще:
20 раз. Сон (0,1)
  

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

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

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

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

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

PWM — это метод модуляции, в котором цифровой выход используется для генерации сигнала с переменной мощностью.Для этого он использует цифровой сигнал постоянной частоты, в котором рабочий цикл изменяется в соответствии с желаемой мощностью. Рабочий цикл представляет собой часть периода, в котором сигнал установлен на высокий .

Не все цифровые выводы Arduino могут использоваться в качестве выходов ШИМ. Те, которые могут быть идентифицированы, обозначены тильдой ( ~ ):

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

Когда на светодиод подается сигнал ШИМ, его яркость изменяется в соответствии с рабочим циклом сигнала ШИМ. Вы собираетесь использовать следующую схему:

Эта схема идентична схеме, использованной в предыдущем разделе для проверки аналогового входа, за исключением одного отличия.Поскольку невозможно использовать ШИМ с контактом 13, цифровой выходной контакт, используемый для светодиода, — это контакт 11.

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

Собрав схему, вы можете управлять светодиодом с помощью ШИМ с помощью следующей программы:

  1импорт pyfirmata
 2время импорта
 3
 4board = pyfirmata.Arduino ('/ dev / ttyACM0')
 5
 6it = pyfirmata.util.Iterator (доска)
 7it.start ()
 8
 9analog_input = board.get_pin ('a: 0: i')
10led = доска.get_pin ('d: 11: p')
11
12 пока Верно:
13 аналоговое_значение = аналоговый_вход.читать()
14, если analog_value не None:
15 led.write (аналоговое_значение)
16 раз. Сон (0,1)
  

Есть несколько отличий от программ, которые вы использовали ранее:

  1. В строке 10 вы устанавливаете led в режим ШИМ, передавая аргумент 'd: 11: p' .
  2. В строке 15 вы вызываете led.write () с analog_value в качестве аргумента. Это значение от 0 до 1, считываемое с аналогового входа.

Здесь вы можете увидеть поведение светодиода при перемещении потенциометра:

Чтобы показать изменения в рабочем цикле, осциллограф подключается к контакту 11. Когда потенциометр находится в нулевом положении, вы можете видеть, что светодиод не горит, так как на выходе контакта 11 имеется 0 В. Когда вы поворачиваете потенциометр, светодиод становится ярче по мере увеличения рабочего цикла ШИМ. Когда вы поворачиваете потенциометр до упора, рабочий цикл достигает 100%. Светодиод горит постоянно с максимальной яркостью.

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

Использование датчика для запуска уведомления

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

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

Чтобы отобразить уведомление на ПК, вы собираетесь использовать Tkinter, стандартный набор инструментов Python GUI. При нажатии кнопки появится окно сообщения. Чтобы получить более подробное представление о Tkinter, ознакомьтесь с Python GUI Programming With Tkinter.

Вам потребуется собрать ту же схему, что и в примере цифрового входа:

После сборки схемы используйте следующую программу для запуска уведомлений:

  1импорт pyfirmata
 2время импорта
 3импорт tkinter
 4 из окна сообщений импорта tkinter
 5
 6root = tkinter.Tk ()
 7root.withdraw ()
 8
 9board = pyfirmata.Arduino ('/ dev / ttyACM0')
10
11it = pyfirmata.util.Iterator (доска)
12it.start ()
13
14digital_input = board.get_pin ('d: 10: i')
15led = доска.get_pin ('д: 13: о')
16
17 пока Верно:
18 sw = digital_input.read ()
19, если sw имеет значение True:
20 светодиодов. Запись (1)
21 messagebox.showinfo («Уведомление», «Была нажата кнопка»)
22 root.update ()
23 светодиода. Запись (0)
24 time.sleep (0,1)
  

Эта программа аналогична программе, использованной в примере цифрового входа, с некоторыми изменениями:

  • Строки 3 и 4 импортируют библиотеки, необходимые для настройки Tkinter.
  • Строка 6 создает главное окно Tkinter.
  • Строка 7 указывает Tkinter не отображать главное окно на экране. В этом примере вам нужно только увидеть окно сообщения.
  • Строка 17 запускает , а цикл :
    1. Когда вы нажимаете кнопку, включается светодиод, и messagebox.showinfo () отображает окно сообщения.
    2. Цикл приостанавливается, пока пользователь не нажмет OK . Таким образом, светодиод будет гореть, пока сообщение находится на экране.
    3. После нажатия пользователем ОК , root.update () очищает окно сообщения с экрана, и индикатор гаснет.

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

  1импорт pyfirmata
 2время импорта
 3импорт smtplib
 4импорт ssl
 5
 6def send_email ():
 7 порт = 465 # для SSL
 8 smtp_server = "smtp.gmail.com"
 9 sender_email = "<ваш адрес электронной почты>"
10 Receiver_email = "<адрес электронной почты получателя>"
11 пароль = "<пароль>"
12 message = "" "Тема: Уведомление Arduino \ n Переключатель был включен."" "
13
14 контекст = ssl.create_default_context ()
15 с smtplib.SMTP_SSL (smtp_server, port, context = context) в качестве сервера:
16 print («Отправка электронного письма»)
17 server.login (sender_email, пароль)
18 server.sendmail (sender_email, получатель_email, сообщение)
19
20board = pyfirmata.Arduino ('/ dev / ttyACM0')
21 год
22it = pyfirmata.util.Iterator (доска)
23it.start ()
24
25digital_input = доска.get_pin ('d: 10: i')
26 год
27 пока Верно:
28 sw = digital_input.read ()
29, если sw имеет значение True:
30 send_email ()
31 раз.сон (0,1)
  

Вы можете узнать больше о send_email () в разделе «Отправка писем с помощью Python». Здесь вы настраиваете функцию с учетными данными почтового сервера, которые будут использоваться для отправки электронного письма.

Примечание: Если вы используете учетную запись Gmail для отправки электронных писем, вам необходимо включить опцию Разрешить менее безопасные приложения . Для получения дополнительной информации о том, как это сделать, ознакомьтесь с отправкой писем с помощью Python.

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

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

  • Датчик температуры, предупреждающий вас, когда температура становится слишком высокой или низкой
  • Аналоговый датчик освещенности, распознающий перегорание лампочки
  • Датчик воды, который может автоматически включать дождеватели, когда земля слишком сухая

Заключение

Платформы микроконтроллеров

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

Вы узнали, как:

  • Разработка приложений с Arduino и Python
  • Используйте протокол Firmata
  • Управление аналоговыми и цифровыми входами и выходами
  • Интеграция датчиков с приложениями Python более высокого уровня

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

Дополнительная литература

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

  • REST API: Они широко используются для интеграции различных приложений. Вы можете использовать REST с Arduino для создания API-интерфейсов, которые получают информацию от датчиков и отправляют команды исполнительным механизмам.Чтобы узнать о REST API, ознакомьтесь с Python REST API с Flask, Connexion и SQLAlchemy.

  • Альтернативный графический интерфейс: В этом руководстве вы использовали Tkinter для создания графического приложения. Однако есть и другие графические библиотеки для настольных приложений. Чтобы увидеть альтернативу, ознакомьтесь с разделом «Как создать приложение с графическим интерфейсом пользователя Python с помощью wxPython».

  • Threading: Бесконечный цикл и , который вы использовали в этом руководстве, является очень распространенной особенностью приложений Arduino.Однако использование потока для запуска основного цикла позволит вам одновременно выполнять другие задачи. Чтобы узнать, как использовать потоки, ознакомьтесь с «Введение в потоки в Python».

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

Наконец, есть и другие способы использования Python в микроконтроллерах, помимо Firmata и Arduino:

  • pySerial: Arduino Uno не может запускать Python напрямую, но вы можете создать свой собственный эскиз Arduino и использовать pySerial для установления последовательного соединения. Затем вы можете управлять Arduino с помощью Python, используя свой собственный протокол.

  • MicroPython: Если вас интересует запуск Python непосредственно на микроконтроллере, ознакомьтесь с проектом MicroPython.Он обеспечивает эффективную реализацию Python на некоторых микроконтроллерах, таких как ESP8266 и ESP32.

  • SBC: Другой вариант — использовать одноплатный компьютер (SBC), например Raspberry Pi, для запуска Python. SBC — это полноценные компьютеры размером с Arduino, которые могут работать под управлением операционной системы на базе Linux, что позволяет использовать ванильный Python. Поскольку большинство SBC имеют универсальные входные и выходные контакты, вы можете использовать их для замены Arduino в большинстве приложений.

Как запустить код и программы Arduino на Raspberry Pi

Raspberry Pi — потрясающий мини-компьютер, и я хотел бы использовать его в некоторых проектах. Есть только одна крошечная проблема. У меня практически нет опыта работы с Python. Несколько лет назад я занимался программированием на Python, но только основами. У меня больше опыта в C ++, особенно в написании программ для Arduino. Было бы неплохо, если бы у тех из нас был способ использовать свои навыки программирования Arduino на Raspberry Pi? К счастью, есть!

Из этой статьи вы узнаете, как запускать скетчи, написанные для Arduino, на Raspberry Pi! Для этого мы будем использовать фреймворк RasPiArduino.Это позволит нам скомпилировать код Arduino в двоичные файлы, которые могут работать на Raspberry Pi. Но прежде чем мы сможем это сделать, мы должны подготовить несколько вещей как в Arduino IDE, так и в Raspberry Pi.

Аппаратное обеспечение

Программное обеспечение

Настройка IDE Arduino

1. Откройте установочную папку Arduino. В системах Windows это, скорее всего, будет «C: \ Program Files \ Arduino» в 32-битной системе или «C: \ Program Files (x86) \ Arduino» в 64-битной системе.

Рисунок 1. Папка установки Arduino

2. Откройте папку «Оборудование» и создайте в ней новую папку с именем «RaspberryPi».

Рисунок 2. Вновь созданная папка

3. Перейдите на https://github.com/me-no-dev/RasPiArduino и клонируйте репозиторий в новую папку «piduino» внутри «RaspberryPi». Если вы не хотите клонировать репозиторий, вы можете загрузить содержимое репозитория в виде zip-файла и разархивировать его в папку «piduino».

Рисунок 3.Содержимое папки «piduino»

4. Затем вы должны загрузить GNU Toolchain с http://gnutoolchains.com/raspberry/. Вы должны скачать версию, которая поддерживает версию вашей Raspberry OS. Поскольку вы, вероятно, используете последнюю версию Raspbian Stretch, вам нужно загрузить GCC 6.3.0. Как только файл будет загружен, запустите его. Оставьте путь установки «C: \ SysGCC \ raspberry», убедитесь, что вы принимаете лицензионное соглашение, и нажмите кнопку «Установить». Через некоторое время установка должна завершиться успешно.

Рисунок 4. Программа установки GNU Toolchain

5. Внутри установочного каталога Arduino перейдите в папку «piduino», которую мы создали на шаге 3. Откройте файл «platform.txt» и измените номер строки 5 с

runtime.tools.toolchain.path = {runtime .platform.path} / tools / arm-linux-gnueabihf

to

runtime.tools.toolchain.path = C: / SysGCC / Raspberry

Это укажет компилятору на каталог, содержащий набор инструментов, который мы установлен на шаге 4.

Рисунок 5. Содержимое platform.txt

6. Перезапустите Arduino IDE и откройте новый скетч. В меню «Инструменты» в разделе «Плата» теперь должна быть новая плата с названием «RaspberryPI B + / 2». Чтобы убедиться, что все установлено правильно, выберите плату Raspberry Pi, скопируйте приведенный ниже код и скомпилируйте скетч. Компиляция может занять больше времени, чем для плат Arduino, и генерировать некоторые предупреждения, но если в конце будет написано «Готово компиляция», все будет в порядке.

 void setup () {
  Консоль .println ("Это функция НАСТРОЙКИ");
}

void loop () {
  Консоль  .println («Это функция LOOP»);
задержка (1000);
} 

Рисунок 6. Плата Raspberry Pi в Arduino IDE

.

Объединить два эскиза Arduino вместе

Мы иногда используем партнерские ссылки в нашем контенте. Это вам ничего не будет стоить, но поможет нам компенсировать расходы на оплату труда нашей команде писателей. Вы можете поддержать нас прямо на BuyMeACoffee. Спасибо!

У вас есть несколько эскизов Arduino, которые вы хотите объединить в один?

Тогда следите за обновлениями этого урока!

На этой неделе у меня возник вопрос об объединении скетчей Arduino.И для тех из вас, кто никогда этого не делал, вам может быть очень приятно узнать, что на самом деле это довольно просто.

В этом руководстве предполагается, что вы уже знаете, что такое Arduino, как создавать скетч и запускать код на своей плате. Если вы ничего не создавали в Arduino, то это руководство не будет иметь смысла. Я рекомендую сначала ознакомиться с нашим учебником «Четыре шага к написанию любой программы Arduino», прежде чем углубляться в это.

Следует отметить, что перед тем, как мы начнем, это руководство не принимает во внимание несколько потоков или одновременные события .В ближайшем будущем я создам руководство о том, как это сделать. Мы просто рассмотрим перенос методов из одной процедуры в другую и проверку системной интеграции.

Объединить два эскиза в один

В этом примере мы условно добавим музыку к нашему анимированному черепу. Уже прошел Хэллоуин, но ничего страшного! Может быть, вы из тех, кто любит хранить украшения до Дня Благодарения!

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

Возьмите копии обоих этих набросков и следуйте им.

Сначала откройте третий пустой эскиз и назовите его «Merged-Skull.ino». Мы скомпилируем содержимое двух предыдущих файлов в объединенный файл. Я рекомендую делать это таким образом, а не брать контент из одного эскиза и вставлять его в другой. Это связано с тем, что вы можете столкнуться с проблемами компиляции или функциональными проблемами при передаче кода. Если у вас есть исходные файлы для работы (и они оба работают независимо), вы всегда можете вернуться к началу и начать все заново.Смешанный код становится уродливым, поэтому полезно начинать с чистого листа.

Для начала мы начнем сверху вниз и перенесем глобальные переменные, setup (), и другие пользовательские методы в Merged-Skull.ino.

Затем мы скопируем содержимое метода loop () из Musical-Sketch.ino и вставим его в новый метод под названием playSong () .

Наконец, мы вызовем playSong () везде, где мы хотим, чтобы песня играла.Обратите внимание, что это будет последовательная задача, поэтому песня должна закончиться, прежде чем мы вернемся и проверим, не сработал ли кто-то ультразвуковой датчик. Есть способы обойти многозадачность и многопоточность с помощью Arduino. Я расскажу, как это сделать, в следующем уроке.

Когда все будет готово, обязательно скомпилируйте свой код, загрузите его в Arduino и протестируйте. Убедитесь, что разводка контактов ввода / вывода соответствует контактам, указанным в коде, иначе это не сработает!

Если вы ищете более формализованное обучение Arduino, обязательно ознакомьтесь с нашим онлайн-курсом «Прототипирование Arduino для начинающих».Мы берем студентов, не имеющих опыта, к тому, чтобы они знали, как создавать, подключать и программировать собственные прототипы. Похоже, хорошо подходит? Посмотрите здесь.

Поддержка такого содержания

Глава 3. Части Arduino IDE

Части IDE: понимание окна кода

Мы слышали о частях Arduino IDE, теперь давайте рассмотрим их более внимательно.

Как и в большинстве программ, в верхней части интерфейса программы есть меню, позволяющие выполнять различные действия, такие как создание новых файлов, их сохранение и многое другое.Есть значки кнопок, которые также позволяют быстро получить доступ к некоторым из наиболее часто выполняемых действий. Нажатие кнопки проверки проверяет, нет ли ошибок в вашем коде. При нажатии кнопки загрузки ваш код переносится с вашего компьютера на Arduino, чтобы он мог работать на вашей плате Arduino. Есть окно, в котором вы вводите свою программу, и области сообщений, которые предоставляют вам информацию об этой программе. Мы расскажем больше о сообщениях, когда мы работаем в среде IDE, а пока знайте, что они сообщают вам, есть ли в вашем коде ошибки, а также такую ​​информацию, как объем пространства, которое он использует в памяти Arduino.На данный момент не беспокойтесь о том, сколько памяти использует ваш код, поскольку мы рассмотрим это позже в книге.

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

Эти кнопки позволяют быстро получить доступ к действиям, которые вы чаще всего будете выполнять с окном кода. Эти действия включают в себя проверку наличия ошибок в вашем коде (проверка), отправку кода на плату Arduino (загрузка), создание нового файла, открытие файла и его сохранение.

Мы воспользуемся всеми этими кнопками через мгновение, но сначала давайте проясним, что на самом деле означает написание скетча.

Скетч: базовая единица программирования Arduino

Вы можете рассматривать программу или эскиз Arduino как одну полную группу инструкций для выполнения определенных задач. Набросок включает в себя весь код или инструкции для этой задачи или задач. Можно одновременно открыть несколько отдельных эскизов — например, в программе для работы с электронными таблицами одновременно может быть открыто несколько листов. Давайте подробнее рассмотрим, из чего состоит набросок.

Каждая программа, которую вы загружаете на свой Arduino, считается «скетчем.«Эскиз может быть довольно простым или чрезвычайно сложным. Он может включать и выключать один светодиод или управлять 10 или более двигателями на основе входного сигнала датчика. Хотя каждый эскиз соответствует одной задаче, эта задача может состоять из нескольких частей. Например, ваша программа может выполнять измерения окружающего мира (например, уровни освещенности) и использовать их для включения динамиков и светодиодов. Все это войдет в один набросок.

Имя эскиза отображается на вкладке в верхнем левом углу редактора кода.

Открытие примера эскиза:

Прежде чем мы начнем писать наш собственный код, мы будем использовать пример, который включен в Arduino IDE. В IDE есть множество примеров (примеров кода), которые демонстрируют многие вещи, которые Arduino может делать встроенными в нее. Вы можете загрузить пример в окно кода и загрузить его на свой Arduino, когда он подключен к вашему компьютеру.

Сначала мы откроем пример скетча под названием Blink. Чтобы открыть этот эскиз, перейдите в меню File , выберите Examples, 01.Основы, Blink , как показано на скриншоте ниже.

Сохранение эскиза

По умолчанию ваши эскизы Arduino будут сохранены в папке Arduino в папке Documents вашего компьютера. Рекомендуется продолжить сохранение в этом пространстве, поскольку это облегчает возврат к файлам. Arduino также отслеживает прошлые файлы, сохраненные в этой папке, в раскрывающемся списке «Sketchbook» в меню файлов.

Несмотря на то, что мы используем код из примера, рекомендуется сохранить его сейчас под другим именем, чтобы мы всегда могли вернуться к исходному нескорректированному коду примера позже.Таким образом, когда мы внесем изменения и сохраним наш скетч, мы будем знать, что мы не сохранили случайно скетч «Blink». Сохраните ваш набросок как «ATG3_Blink», чтобы вы могли найти свои изменения позже.

Экономьте раньше, экономьте часто!

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

Загрузка скетча в Arduino

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

В разделе IDE мы говорили о двух кнопках, о которых нам нужно помнить, когда мы будем готовы загрузить наш код: Verify и Upload .

Шаг 1. Проверьте свой эскиз

Проверка гарантирует, что ваш код настроен правильно. Нажмите кнопку «Подтвердить», чтобы убедиться в отсутствии ошибок. Если вы не внесли изменения в эскиз Blink до его сохранения, все будет работать нормально. В окне сообщения в нижней части IDE будет сказано «Готово» и не будет никаких ошибок, как показано на рисунке ниже.

Он не заметит, если у вас выбраны правильные контакты или правильная последовательность событий, но он может уведомить вас, если есть проблемы программирования с вашим кодом. Мы подробно рассмотрим эти вопросы по мере продвижения по книге.

Шаг 2. Загрузите эскиз

Когда мы вводим код в окно IDE Arduino, код выглядит так, что люди могут его прочитать, но Arduino не понимает, как его интерпретировать. Когда вы нажимаете кнопку загрузки, ваш компьютер преобразует код на язык, понятный Arduino.Затем ваш компьютер отправляет эту программу через USB-шнур на ваш Arduino, давая ему группу инструкций, которым нужно следовать.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *