Программирование на Arduino. Урок 1. Введение

Урок 1. Введение. Знакомство с платформой.

Arduino- микроконтроллер, получивший широкое признание у инженеров, преподавателей и заинтересованных подростков, благодаря невысокой стоимости и большому потенциалу.
Когда мы впервые сталкиваемся с этой платформой, для работы с которой необходимы хотя бы начальные навыки программирования и проектирования электрических схем, то есть два варианта развития событий:
  1. «Это сложно, я не смогу в этом разобраться, у меня нет времени и т.д.»
  2. Попробовать свои силы, ведь потратив немного времени для поиска нужной информации, Вам не составит труда во всем этом разобраться.
Если Вы все же заинтересовались этой темой, то начнем наше знакомство.
Как уже было сказано, Arduino - это микроконтроллер семейства Atmega(например ATmega328) с дополнительной «обвязкой», которая позволяет стабилизировать токи, протекающие через плату, ограничивать напряжение (до определённого порога), удобно подключать периферийные устройства.
Где же можно ее использовать? Да практически везде! Простота программирования и наглядность делают ее возможности безграничными, будь то автономное устройство или же управление электроникой через интернет, все это можно реализовать!
Аналоговые  и цифровые пины на Arduino
Перед началом работы с Arduino, мы оцениваем какие выходы, аналоговые или цифровые, необходимы для того или иного датчика. Сегодня разберемся, как с ними работать.
  • На плате есть четыре разновидности пинов (выводов): управляющие или порты управляющего воздействия – земля и питание  (GND, 5V, 3.3V), аналоговые (A0-А5), цифровые (1,2,7,8 и т.д.), а также цифровые пины, поддерживающие ШИМ (Широтно Импульсную Модуляцию). Давайте разберемся в назначении каждого и приведем примеры их использования.
Итак, начнем с пинов питания (блок POWER). И, для начала, интуитивно понятные:
  • 5V - с помощью этого пина мы можем выводить питание на макетную плату или просто использовать его для подключения собранной схемы к питанию. Его особенность в том, что его назначение мы никак изменить не можем (если, конечно, у вас не появится желание сделать это с помощью паяльника). Как только мы подаем питание на плату, независимо от источника (USB или аккумулятор), на этом выходе мы будем получать питание 5 V.
  • 3.3V - для некоторых датчиков (обычно это указывается в документации к датчику) питание в 5V слишком высокое, именно поэтому на плате дополнительно выведено питание в 3.3 V. С точки зрения пользователя, кроме номинала выходного напряжения, этот выход питания ничем не отличается от своего «соседа» 5V.  Максимальный ток вывода также не превышает 50 мА.
  • GND - Здесь все просто- пин, замыкающих электрическую цепь («земля» или «минус»).
Блок пинов питания (POWER) на плате Arduino

Теперь, пожалуй, про менее понятные обозначения:
  • Vin - пин для подачи внешнего напряжения. Мы можем подать напряжение 9-12V (указано в документации каждой платы Arduino), при этом оно все равно проходит через стабилизатор, установленный на плате. Для защиты его от выгорания я рекомендую не превышать 10V.
  • IOREF - пин для информирования внешних устройств о рабочем напряжении платы. Для чего это нужно мы разберем на конкретном примере в следующих статьях.
  • AREF-Опорное напряжение для аналоговых входов. Для установки опорного (порогового) напряжения используется функция analogReference() (подробнее о ней в следующей статье).
  • RESET- т.е. сброс. Этот пин используется для программного сбрасывания (перезагрузки) платы.
Блок пинов питания (POWER) на плате Arduino

Для начала разберемся в отличиях между цифровым и аналоговым сигналами.

Цифровой сигнал (Digital)
Аналоговый сигнал (Analog)


График цифрового сигнала от времени
  • Контроллер считывает цифровой сигнал в диапазоне 0..255, на выходе мы получаем значения 1 или 0 (HIGH/LOW), полученное значение условно делится на диапазоны LOW и HIGH
  • Эти пины используются для передачи и считывания высокого или низкого сигнала на внешние устройства
 

График аналогового сигнала от времени
  • При считывании аналогового сигнала, контроллер воспринимает весь диапазон считываемых значений, т.е. когда мы передаем аналоговый сигнал на внешнее устройство, то получаем не просто ВКЛ/ВЫКЛ, а можем подавать «дробное» напряжение.
  • Аналоговые пины используются для считывания сигнала  с аналоговых датчиков (датчик освещения, температуры, звука и т.п.)
  • Воспринимает диапазон считанный значений в интервале 0..1023

Блок пинов ANALOG IN:
  • Пины А0-А5 имеют возможность запоминать в память микроконтроллера псевдо аналоговый сигнал, а также передавать его на внешние устройства. Для получения такого сигнала извне необходимо увеличить частоту дискретизации (т.е. уменьшить время между последовательными считываниями высоты сигнала), при этом также увеличивается точность записи сигнала. Так, вместо диапазона 0..255 на цифровых пинах, мы получаем 0..1023 на аналоговых выходах.
  • Для того, чтобы иметь возможность обратиться к этим пинам, в программе необходимо использовать команды analogRead(номер пина)/analogWrite(номер пина, передаваемый сигнал). Первая команда дает возможность считывать сигнал, приходящий в этот порт, вторая же команда передает на внешние устройства аналоговый сигнал.
  • При этом есть небольшая особенность: пины, имеющие обозначение А0-А5 могут быть программно настроены и как цифровые пины, т.е. если в программе мы опишем:
digitalRead(A0) то получим цифровой сигнал в диапазоне 0..255, а если используем analogRead(A0)-получим уже аналоговый сигнал в диапазоне 0..1023.
  • Также порты  А4 и А5 поддерживают выводы порта I2C (SDA и SCL соответственно). Подробнее о шине I2C в следующей статье.
Блок пинов DIGITAL:
  • Цифровые пины, обозначаемые как digital, также могут использоваться для считывания показаний с датчиков, подключения отдельных внешних элементов (например,светодиодов). При считывании напряжения на этих пинах и выводе показаний в монитор порта, мы увидим значения 0..255. Но при передаче значения 1 или 0 (HIGH/LOW),  или же при считывании цифрового сигнала (есть напряжение/нет напряжения) передаются значения: для 0 - 0..127, для 1 - 128..255.
  • Также у портов, имеющих обозначения «~» есть особенность - они поддерживают ШИМ (Широтно-импульсную модуляцию), т.е. формирование псевдо-аналогового сигнала. ШИМ используется для управления напряжением на выходе (подробнее также  в следующей статье). ШИМ пины имеют последовательные номера 3,5,6,9,10,11.
  • И еще одна особенность цифрового блока это пины 0 и 1, они поддерживают использование внешних устройств беспроводной связи (ТХ и RX, порт UART).

Блок пинов ICSP ATmega328P (о нем подробнее в следующих статьях)
  • ICSP-разъём предназначен для внутрисхемного программирования микроконтроллера ATmega328P. С использованием библиотеки SPI данные выводы могут осуществлять связь с платами расширения по интерфейсу SPI. Линии SPI выведены на 6-контактный разъём, а также продублированы на цифровых пинах 10(SS), 11(MOSI), 12 (MISO), 13(SCK). Микроконтроллер ATmega328P

  • Сердцем платформы Arduino Uno является 8-битный микроконтроллер семейства AVR — ATmega328P.
Блок пинов ICSP ATmega16U2 (о нем подробнее в следующих статьях)
  • ICSP-разъём предназначен для внутрисхемного программирования микроконтроллера ATmega16U2.
  • Микроконтроллер ATmega16U2 обеспечивает связь микроконтроллера ATmega328P с USB-портом компьютера. При подключении к ПК Arduino Uno определяется как виртуальный COM-порт. Прошивка микросхемы 16U2 использует стандартные драйвера USB-COM, поэтому установка внешних драйверов не требуется

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

Комментарии 3

  1. Бомбалейло от 2 сентября 2019 13:28
    Давно читаю ваш блог из-под анонима. Но эта публикация таки побудила зарегистрироваться, дабы оставить отзыв. Статья ни о чем, ждал от вашего портала большего​
    1. legion от 2 сентября 2019 23:43
      Раз уж Вы нашли таки в себе силы зарегистрироваться ради столь яркой оценки очередной статьи, мы бы попросили Вас прокомментировать топик несколько более развернуто. Что Вы ожидали тут увидеть? Откуда такая оценка? 
  2. Бомбалейло от 3 сентября 2019 09:22
    Прежде всего я бы отметил отсутствие логичного повествования. Куски текста выглядят разрозненными и выдранными из контекста. И вёрстка режет глаз. И меня мучают смутные сомнения, что я где-то уже видел подобную статью, причём совсем недавно...
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.