Начало работы с Arduino в Windows. Подключение и программирование ардуино для начинающих Установка ардуино на windows xp

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

1. Плата Arduino Uno - распиновка устройства

Слово Uno переводится с итальянского языка, как «один». Устройство названо в связи с началом выпуска Arduino 1.0. Другими словами, Uno является эталонной моделью для всей платформы типа Arduino. Это последнее устройство в серии плат USB, доказавшее свою эффективность и проверенное временем.

Arduino Uno создано на микроконтроллере типа ATmega 328 (datasheet).

Его состав следующий:

  • количество цифровых входов и выходов составляет 14 (а шесть из них имеется возможность использовать как выходы ШИМ);
  • число аналоговых входов составляет шесть;
  • 16 МГц – кварцевый резонатор;
  • имеется разъём для питания;
  • есть разъём, предназначенный для ICSP-программирования внутри самой схемы;
  • присутствует кнопка для сброса.

Крайне важно отметить, что отличительной особенностью всех новых плат arduino является использование для интерфейсов USB–UART микроконтроллера типа ATmega 16U2 (или ATmega 8U2 в версиях R1, R2) вместо устаревшей микросхемы типа FTDI.

Плата Uno по версии R2 снабжается дополнительным подтягивающим к земле резистором на линии HWB применяемого микроконтроллера.

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

  1. Последовательный интерфейс использует шины №0 (RX – получение данных), №1 (TX – передача данных).
  2. Для внешнего прерывания используются выводы №2, №3.
  3. Для ШИМ используются выводы за номерами 3,5, 6, 9, 10, 11. Функция analog Write обеспечивает разрешение в 8 бит.
  4. Связь посредством SPI: контакты №10 (SS), №11 (MOSI), №12 (MISO), №13 (SCK).
  5. Вывод №13 запитывает светодиод, который загорается при высоком потенциале.
  6. Uno оснащена 6 аналоговыми входами (A0 – A5), которые имеют разрешение в 10 бит.
  7. Для изменения верхнего предела напряжения используется вывод AREF (функция analog Reference).
  8. Связь I2C (TWI, библиотека Wire) осуществляется через выводы №4 (SDA), №5 (SCL).

Устройство построено на микроконтроллере АTmega16U2 и имеет повышенный уровень помехоустойчивости по цепи сброса.

Устройство отличается от предыдущей версии лишь тем, что в этом случае не используется интерфейс USB-UART FTDI при подключении к компьютеру. Эту задачу выполняет выполняет сам микроконтроллер ATmega 16U2.

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

  1. Возле вывода AREF добавлены два пина: SDA, SCL.
  2. Возле пина RESET также добавлены два вывода: IOREF, позволяющий подключать платы расширения с подстройкой под необходимое напряжение; второй вывод не используется и находится в резерве.

Является одной из самых простых и удобных устройств Arduino.

Используется микроконтроллер ATmega 168 с рабочим напряжением на 5 вольт с частотой в 16 МГц. Максимальное напряжение питания в моделях составляет 9 вольт. Значение максимального тока на выводах составляет 40 mA.

Плата содержит:

  • 14 цифровых выводов (из них 6 могут быть использованы в качестве ШИМ-выходов), могут применяться в качестве как входа, так и выхода;
  • 8 аналоговых входов (4 из них оснащены выводами);
  • 16 МГц – кварцевый генератор.

Пины устройства Arduino Mini имеют следующее предназначение:

  1. Два вывода, посредством которых осуществляется питание платы «плюс»: RAW, VCC.
  2. Вывод контакта «минус» – пин GND.
  3. Выводы под номерами 3, 5, 6, 9, 10, 11 используются для ШИМ при применении функции analog Write.
  4. К выводам №0, №1 можно подключать другие устройства.
  5. Аналоговые входы №0 – №3 с выводами.
  6. Аналоговые входы №4 – №7 не имеют выводов и требуют пайки при необходимости.
  7. Вывод AREF, который предназначен для изменения верхнего напряжения.

Расположение выводов в различных версиях arduino mini могут различаться.

Устройство Arduino Mega 2560 собрано на микроконтроллере ATmega 2560 (datasheet), является обновлённой версией Arduino Mega.

Для осуществления преобразования USB–UART-интерфейсов используется новый микроконтроллер ATmega 16U2 (либо ATmega 8U2 для версий плат R1 или R2).

Состав платы следующий:

  • количество цифровых входов/выходов составляет 54 (15 из них можно использовать в роли выходов-ШИМ);
  • число аналоговых входов – 16;
  • реализация последовательных интерфейсов производится посредством 4 аппаратных приёмопередатчиков UART;
  • 16 МГц – кварцевый резонатор;
  • USB-разъём;
  • питающий разъём;
  • внутрисхемное программирование осуществляется через ICSP-разъём;
  • кнопка для сброса.

В устройстве Mega 2560 R2-версии добавлен специальный резистор, подтягивающий HWB-линию 8U2 к земле, что позволяет значительно упростить переход Arduino в DFU-режим, а также обновление прошивки. Версия R3 незначительно отличается от предыдущих. Изменения в устройстве следующие:

  • добавлены четыре вывода – SCL, SDA, IOREF (для осуществления совместимости по напряжению различных расширительных плат) и ещё один резервный вывод, пока не используемый;
  • повышена помехоустойчивость по цепи сброса;
  • увеличен объём памяти;
  • ATmega8U2 заменён на микроконтроллер ATmega16U2.

Выводы предназначаются для следующего:

  1. Имеющиеся цифровые пины могут служить входом-выходом. Напряжение на них – 5 вольт. Каждый пин обладает подтягивающим резистором.
  2. Аналоговые входы не оснащены подтягивающими резисторами. Работа основана на применении функции analog Read.
  3. Количество выводов ШИМ составляет 15. Это цифровые выводы №2 – №13, №44 – №46. Использование ШИМ производится через функцию analog Write.
  4. Последовательный интерфейс: выводы Serial: №0 (rx), №1 (tx); выводы Serial1: №19 (rx), №18 (tx); выводы Serial2: №17 (rx), №16 (tx); выводы Serial3: №15 (rx), №14 (tx).
  5. Интерфейс SPI оборудован выводами №53 (SS), №51 (MOSI), №50 (MISO), №52 (SCK).
  6. Вывод №13 – встроенный светодиод.
  7. Пины для осуществления связи с подключаемыми устройствами: №20 (SDA), №21 (SCL).
  8. Для внешних прерываний (низкий уровень сигнала, другие изменения сигнала) используются выводы №2 , №3, №18, №19, №20, №21.
  9. Вывод AREF задействуется командой analog Reference и предназначается для регулирования опорного напряжения аналоговых входных пинов.
  10. Вывод Reset. Предназначен для формирования незначительного уровня (LOW), что приводит к перезагрузке устройства (кнопка сброса).

Arduino Micro представляет собой устройство, основа которого построена на микроконтроллере ATmega 32u4, имеющем встроенный USB-контроллер. Это решение упрощает подключение платы к компьютеру, так как в системе устройство будет определяться как обычная клавиатура, мышь либо COM-порт. Состав устройства следующий:

  • количество входов/выходов – 20 (имеется возможность 7 из них использовать как ШИМ-выходы, а 12 – в роли входов аналогового типа); резонатор кварцевый, настроенный на 16 МГц;
  • micro-USB-разъём;
  • ICSP-разъём, предназначенный для проведения внутреннего программирования;
  • кнопка для сброса.

Все цифровые выводы изделия могут работать в качестве как входов, так и выходов благодаря наличию функций digital Read, pin Mode, digital Write. Напряжение на выводах составляет 5 вольт. Максимальная величина потребляемого или отдаваемого тока с одного вывода составляет 40 мА. Выводы сопрягаются с внутренними резисторами, которые по умолчанию находятся в отключенном состоянии. Они имеют номиналы в 20 кОм – 50 кОм. Отдельные выводы arduino micro, кроме основных, способны выполнять и ряд дополнительных функций:

  1. В последовательном интерфейсе выводы №0 (RX), №1 (TX) применяются для приёма (RX), а также передачи (TX) необходимых данных через встроенный аппаратный приёмопередатчик. Функция актуальна для arduino micro класса Serial. В других случаях связь осуществляется через соединение USB (CDC).
  2. Интерфейс TWI включает выводы микроконтроллера №2 (SDA) и №3 (SCL). Позволяют использовать данные библиотеки Wire.
  3. Выводы под номерами 0, 1, 2, 3 могут быть использованы в роли источников возникающих прерываний. К таковым относятся низкий уровень сигнала; прерывания по фронту, по спаду, при изменении уровня сигнала.
  4. Выводы под номерами 3, 5, 6, 9, 10, 11,13 при использовании функции analog Write способны выводить аналоговый ШИМ-сигнал в 8 бит.
  5. К SPI-интерфейсу относятся выводы на разъёме ICSP. Они не соединяются с цифровыми выводами на плате.
  6. Дополнительный вывод RX LED/SS, который соединён со светодиодом. Последний индицирует процесс по передаче данных с использованием USB. Этот вывод может быть использован при работе с интерфейсом SPI для вывода SS.
  7. Вывод №13 – светодиод, который включается при отправке данных HIGH и выключается при значениях LOW.
  8. Выводы A0 – A5 (отмечены на плате) и A6 – A11 (соответствуют цифровым выводам за номерами 4, 6, 8, 9, 10,12) являются аналоговыми.
  9. Вывод AREF позволяет изменять верхнее значение аналогового напряжения на вышеуказанных выводах. При этом используется функция analog Reference.
  10. С помощью вывода Reset формируется низкий уровень (LOW) и происходит перезагрузка микроконтроллера (кнопка сброса).

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

Для работы Arduino требуется написать или использовать уже готовую программу (далее именуемую «скетч») которая и будет управлять всей периферией.

Подключение Arduino

Включить Arduino достаточно просто. Для этого достаточно подать 5-вольт постоянного напряжение на контакт VCC и землю на контакт GND.

Также, на самой плате расположен стабилизатор питания, благодаря которому есть возможность подавать произвольное питание в диапазоне от 5 до 12 вольт на порт VIN.

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

Установка среды программирования Arduino IDE

Перед написание программы, мы должны скачать и установить официальную среду программирования именуемую как “Arduino IDE”. Переходим по следующему адресу https://www.arduino.cc/en/Main/Software и нажимаем на “Windows Installer” как показано на скриншоте:

Запускаем программу установки, нажимаем на кнопку “Install ” и дожидаемся окончания процесса установки.

Наша первая программа

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

Void setup () { pinMode(13 , OUTPUT); // переключаем 13-й порт на выход } void loop () { digitalWrite(13 , HIGH); // включаем светодиод delay(1000 ); // ждём одну секунду digitalWrite(13 , LOW); // выключаем светодиод delay(1000 ); // ждем секунду }

Также мы должны выбрать порт к которому подключили Arduino. Для этого заходим в меню “Инструменты → Порт” и выбираем порт из списка. Если же в списке портов Вы видите один лишь COM1, проверте подключение вашей платы к компьютеру. Также, если у вас не оригинальная плата (например купленая на популярном ресурсе Aliexpress.com) может потребоваться установка драйвера под эту плату.

Я приобрел свой первый Ардуин и хотел бы рассказать с чего начать чтобы он заработал. Откуда скачать программу схему подключения и тп. И что с ардуином вообще можно сделать.

О том, что такой Ардуин и с чем его «едят» я не буду рассказывать вы можете что такое Arduino почитать здесь. Arduin грубо говоря программная плата с возможностью подключения разных приемников и устройств вывода. Микроконтроллер. Обладая соответствующими знаниями его можно пустить в разные русла.

Что можно сделать с Arduino?

  • Машинка на ардуино
  • радиоуправляемый самолет и квадрокоптер
  • Умный дом
  • Автозапуск для авто
  • Управление авто некоторыми частями
  • Сигнализацию
  • 3D принтер
  • и многое другое что можно сделать с микроконтроллерами

Заказал через интернет - Arduino с DX
Нужна была плата именно с надписями arduino и никак иначе, поэтому пришлось заплатить 28$, хотя XDruino (XDruino) или Zdruino (Zdruino) стоят дешевле.

Вот плата Arduino, сейчас будем подключать к компьютеру. Подключаем её в USB порт. Windows пытается обнаружить драйвер, но она этого сделать не сможет, поэтому переходим в диспетчер устройств (Мой компьютер -> Свойства -> Оборудование -> Диспетчер устройств). Видим, что у нас есть новое неизвестное устройство.

Для того чтобы windows обноружил устройство как устройство Arduino MEGA 2560 нам необходимо скачать драйвера. Драйвера можно скачать с официального сайта, http://www.arduino.cc/. Заходим на вкладочку «скачать» (обозначено «1») и выбираем Arduino 1.0.5» (обозначено «2»), здесь есть и версия Arduino 1.5 » (обозначено «3») но она BETA версия, поэтому мы не будем её качать, мы скачаем версию 1.0.5. Это текущий релиз. Скачаем ZIP файл. Он весит 92.9 MByte.

Скачиваем и распаковываем файл, в которой есть папка с драйверами. Открываем её, и находим в ней файл Arduino.inf который нужно скопировать поближе к корню диска, я его положу прямо на диск С. Теперь мне нужно указать в диспетчере устройств, вот этот *.inf файл. Я нажимаю что я хочу обновить драйвер, выбираю что я покажу где этот драйвер находится на моём компьютере. Выбираю папочку, я положил *.inf файл на диск С, и выбираю диск С. Именно поэтому я его положил ближе к корню, чтобы не лазить по всему компьютеру и убираю галочку «Включить подпапки». Нажимаю «Next».

Windows обнаружила этот *.inf файл и предлагает его установить. Тут какие-то проблемы с Windows, он этот драйвер не хочет принимать как безопасный, но мы всё равно его установим.

Вот и всё. У нас установилось это неизвестное устройство, на него уже стали дрова и оно видится как Arduino MEGA2560. Она сейчас висит на 3-ем COM порту.

Теперь с локального диска С мы удаляем этот *.inf файл потому что он нам уже не нужен, и закрываем окно.
В распакованной папке есть ярлык Arduino, который запускает среду программирования Arduino. Данную программу не нужно устанавливать, её просто нужно куда-то скопировать и можно запускать Arduino IDE из любого места. Запускаем её, и вот как она выглядит. Очень простая и удобная программа.


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


Выбираем плату, у нас Mega 2560, если у вас другая, вы выбираете другую.


И теперь можно залить сюда какой-то проект Arduino. Выберем проект Arduino, примеры, и выберем что-то с коммуникацией по последовательному порту, чтобы мы видели что мигают светодиоды. Ну допустим, MultiSerialMega.


Открывается исходный код примера, мы его можем проверить на ошибки (откомпилировать), нажав кнопку помеченной цифрой «1», либо можно сразу загрузить на микроконтроллер программу, нажав кнопку помеченной цифрой «2» . При этом компилятор сначала откомпилирует исходный текст, и только потом зальёт полученный файл на микроконтроллер. Обратите внимание, сейчас должны загореться какие-то светодиоды.


Давайте выберем другой пример. Мне хочется попробовать пример который бы постоянно что-то отправлял. Вот, например AnalogOutSerial. Перед каждым примером есть описание, что да как. Сразу зальём его на микроконтроллер (запрограммируем Arduino), для этого сразу жмём «загрузить», компилятор сразу выполнит компиляцию и потом всё загрузит. Вот всё загружено, и сейчас что-то передаётся, так как постоянно горит светодиод на передачу. Узнать что именно передаётся можно с помощью любого монитора COM порта. Мне очень нравится программа Terminal, но можно воспользоваться и средствами встроенными Arduino IDE. Arduino IDE имеет на своём борту «недомонитор COM порта», которым можно пользоваться когда нет ничего другого. Откроем мониторинг COM порта, и видит, что именно постоянно сюда передаётся.


Для чего вообще эти примеры? Я показал как программировать Arduino, можно убедиться что устройство работает, и нормально программируется.
Теперь нужно найти документацию на плату Arduino. Документацию на плату мы также находим на этом сайте. Переходим в раздел «Produkt» (http://arduino.cc/en/Main/Products), выбираем наш продукт, у меня Arduino Mega2560. Спускаемся немного ниже и видим интересные ссылки.


Первое это EAGLE файлы («1»), то есть разводка печатных плат сделана в орле. Также можно найти схему Arduino в формате *.pdf («2») и карту пинов («3»). То есть вся документация на Arduino есть, и лежит в открытом виде. Есть схема и разобраться что куда идёт и что за что отвечает, не оставит ни каких сложностей.

Приветствую друзья! Сегодня опять хочу затронуть тему Arduino и немного рассказать про первое подключение контроллера к компьютеру. Когда я стал счастливым обладателем Arduino UNO, мне конечно же не терпелось быстрее его подключить и опробовать некоторые его возможности. В интернете очень много информации о подключении Arduino, но многие из них не говорили про одну особенность Китайских клонов, обладателем которого я и являлся. Важная особенность этих клонов в том что преобразование интерфейса USB в UART происходит при помощи чипа CH340G, а в оригинальных Arduino преобразователем является чип ATmega16U2, и драйвера для него идут в комплекте с Arduino IDE (Среда разработки микроконтроллеров Arduino ) Как вы наверное уже успели догадаться для китайцев нужен отдельный драйвер. На то что бы понять все эти нюансы у меня ушло 2-3 дня.

Первым делом нужно скачать и установить среду разработки Arduino, для это идём на официальный сайт нажимаем Just download и скачиваем последнею версию Arduino IDE.

Загрузили? Тогда запускаем.exe файл инсталлятора. Думаю объяснять как устанавливать приложения вам не нужно, если вы интересуетесь этой статьёй ваш навык владения компьютером выше этого. Если же нет то (это сугубо моё мнение) я думаю что для начала вам нужно освоить уверенное пользование вашим ПК а уже потом вернуться к этой теме. В процессе установки всплывёт несколько окон с запросом установки драйверов, соглашаемся и продолжаем установку.

Завершив установку подключаем контроллер в свободный USB порт компьютера, для этого нам понадобится кабель USB-A/USB-B

Далее идём в диспетчер устройств, и смотрим на такую картину. Контроллер определился как USB2.0-Serial и помечен восклицательным знаком. Это говорит нам о том что для данного устройства не установлены драйвера.

Драйвер преобразователя CH340G о котором я писал выше можете скачать . Устанавливаем его и смотрим что изменилось в диспетчере устройств. В ветке Порты (COM и LPT) определилось новое устройство USB-SERIAL CH340 на 3COM порту. У вас номер порта может быть другой, запоминаем его он нам ещё пригодится.

Запускаем Arduino IDE и переходим на вкладку Инструменты в графе Плата: выбираем тип контроллера, у меня Arduino UNO что соответственно я и делаю. Ниже в графе Порт: выбираем порт к которому подключен наш контроллер.

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

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

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

Что такое Arduino и для чего оно нужно?

Arduino — это электронный конструктор, который позволяет любому человеку создавать разнообразные электро-механические устройства. Ардуино состоит из программной и аппаратной части. Программная часть включает в себя среду разработки (программа для написания и отладки прошивок), множество готовых и удобных библиотек, упрощенный язык программирования. Аппаратная часть включает в себя большую линейку микроконтроллеров и готовых модулей для них. Благодаря этому, работать с Arduino очень просто!

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

Стартовый набор Arduino

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

Базовый набор ардуино для начинающих: Купить
Большой набор для обучения и первых проектов: Купить
Набор дополнительных датчиков и модулей: Купить
Ардуино Уно самая базовая и удобная модель из линейки: Купить
Беспаечная макетная плата для удобного обучения и прототипирования: Купить
Набор проводов с удобными коннекторами: Купить
Комплект светодиодов: Купить
Комплект резисторов: Купить
Кнопки: Купить
Потенциометры: Купить

Среда разработки Arduino IDE

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

Версия Windows Mac OS X Linux
1.8.2

Язык программирования Ардуино

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

Для программирования Arduino используется упрощенная версия языка C++ с предопределенными функциями. Как и в других Cи-подобных языках программирования есть ряд правил написания кода. Вот самые базовые из них:

  • После каждой инструкции необходимо ставить знак точки с запятой (;)
  • Перед объявлением функции необходимо указать тип данных, возвращаемый функцией или void если функция не возвращает значение.
  • Так же необходимо указывать тип данных перед объявлением переменной.
  • Комментарии обозначаются: // Строчный и /* блочный */

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

Все прошивки для Arduino должны содержать минимум 2 функции. Это setup() и loop().

Функция setup

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

// переменные с пинами подключенных устройств int switchPin = 8; int ledPin = 11; // переменные для хранения состояния кнопки и светодиода boolean lastButton = LOW; boolean currentButton = LOW; boolean ledOn = false; void setup() { pinMode(switchPin, INPUT); pinMode(ledPin, OUTPUT); } // функция для подавления дребезга boolean debounse(boolean last) { boolean current = digitalRead(switchPin); if(last != current) { delay(5); current = digitalRead(switchPin); } return current; } void loop() { currentButton = debounse(lastButton); if(lastButton == LOW && currentButton == HIGH) { ledOn = !ledOn; } lastButton = currentButton; digitalWrite(ledPin, ledOn); }

// переменные с пинами подключенных устройств

int switchPin = 8 ;

int ledPin = 11 ;

// переменные для хранения состояния кнопки и светодиода

boolean lastButton = LOW ;

boolean currentButton = LOW ;

boolean ledOn = false ;

void setup () {

pinMode (switchPin , INPUT ) ;

pinMode (ledPin , OUTPUT ) ;

// функция для подавления дребезга

boolean debounse (boolean last ) {

boolean current = digitalRead (switchPin ) ;

if (last != current ) {

delay (5 ) ;

current = digitalRead (switchPin ) ;

return current ;

void loop () {

currentButton = debounse (lastButton ) ;

if (lastButton == LOW && currentButton == HIGH ) {

ledOn = ! ledOn ;

lastButton = currentButton ;

digitalWrite (ledPin , ledOn ) ;

В этом скетче я создал дополнительную функцию debounse для подавления дребезга контактов. О дребезге контактов есть на моем сайте. Обязательно ознакомьтесь с этим материалом.

ШИМ Arduino

Широтно-импульсная модуляция (ШИМ) — это процесс управления напряжением за счет скважности сигнала. То есть используя ШИМ мы можем плавно управлять нагрузкой. Например можно плавно изменять яркость светодиода, но это изменение яркости получается не за счет уменьшения напряжения, а за счет увеличения интервалов низкого сигнала. Принцип действия ШИМ показан на этой схеме:

Когда мы подаем ШИМ на светодиод, то он начинает быстро зажигаться и гаснуть. Человеческий глаз не способен увидеть это, так как частота слишком высока. Но при съемке на видео вы скорее всего увидите моменты когда светодиод не горит. Это случится при условии что частота кадров камеры не будет кратна частоте ШИМ.

В Arduino есть встроенный широтно-импульсный модулятор. Использовать ШИМ можно только на тех пинах, которые поддерживаются микроконтроллером. Например Arduino Uno и Nano имеют по 6 ШИМ выводов: это пины D3, D5, D6, D9, D10 и D11. В других платах пины могут отличаться. Вы можете найти описание интересующей вас платы в

Для использования ШИМ в Arduino есть функция Она принимает в качестве аргументов номер пина и значение ШИМ от 0 до 255. 0 — это 0% заполнения высоким сигналом, а 255 это 100%. Давайте для примера напишем простой скетч. Сделаем так, что бы светодиод плавно загорался, ждал одну секунду и так же плавно угасал и так до бесконечности. Вот пример использования этой функции:

// Светодиод подключен к 11 пину int ledPin = 11; void setup() { pinMode(ledPin, OUTPUT); } void loop() { for (int i = 0; i < 255; i++) { analogWrite(ledPin, i); delay(5); } delay(1000); for (int i = 255; i > 0; i--) { analogWrite(ledPin, i); delay(5); } }

// Светодиод подключен к 11 пину

int ledPin = 11 ;

void setup () {

pinMode (ledPin , OUTPUT ) ;

void loop () {

for (int i = 0 ; i < 255 ; i ++ ) {

analogWrite (ledPin , i ) ;

delay (5 ) ;

delay (1000 ) ;