Программирование на Arduino. Урок 1. Аналоговые и цифровые пины.

Добрый день, друзья! Сегодня мы с Вами начнем наше знакомство в платформой Arduino. Благодаря тому, что в интернете существует огромное количество различных проектов, реализованных с помощью этой платформы, она не теряет свое популярности. И именно поэтому мы с Вами самостоятельно научимся создавать Девайсы различного уровня сложности с НУЛЯ. Но, обо все по порядку. Сегодня мы с вами разберемся, что это за "зверь" такой - Arduino и как использовать ее возможности. Начнем с точек подключения - пинов. Перед тем, как собирать устройство или тестировать написанную программу, сначала мы определяем какие пины и как мы будем использовать: получать или передавать сигнал, питать Arduino через USB порт или с помощью внешних источников. От выбора этих параметров и будет зависеть программное обеспечение и архитектура будущего устройства (device). 

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

Итак, приступим:
Не смотря на то, что на плате множество различных элементов, взаимодействовать мы можем только с тремя их группами: пины питания (GND, 5V, 3.3V, Vin, IOREF, RESET), аналоговые пины (A0-А5) и цифровые пины (1-13).

Блок пинов питания (POWER) на плате Arduino
  • 5V - с помощью этого пина мы подаем питание с платы на внешние устройства. Независимо от источника питания самой платформы напряжение на этом пине остается неизменным.
  • 3.3V - для некоторых датчиков (например, барометр BMP180) питание в 5 V слишком высокое, именно поэтому на плате дополнительно выведено питание в 3.3 V. С точки зрения пользователя, кроме номинала выходного напряжения, этот выход питания ничем не отличается от своего «соседа» 5V.  
  • GND - ground (земля), минус.
  • Vin - пин предназначен для подачи внешнего питания (7-12 В), если мы не используем USB-порт или гнездо питания.
  • IOREF - этот вывод предоставляет платам расширения информацию о рабочем напряжении микроконтроллера Ардуино. В зависимости от напряжения, считанного с вывода IOREF, плата расширения может переключиться на соответствующий источник питания либо задействовать преобразователи уровней, что позволит ей работать как с 5В, так и с 3.3В-устройствами.
  • RESET- этот пин используется для программной перезагрузки платы.
          Блок пинов POWER на Arduino  

Блок пинов ANALOG IN:
  • Пины А0-А5 имеют возможность считывать извне псевдо-аналоговый сигнал, а также передавать его на внешние устройства.
  • Что такое псевдо-аналоговый сигнал? Аналоговым является непрерывный сигнал, например свет и звук. Для его представления в памяти микроконтроллера он переводится в цифровой путем измерения "высоты" сигнала через определенный промежуток времени. Для получения сигнала, максимально приближенного к аналоговому, необходимо увеличить частоту дискретизации сигнала, т.е. увеличить количество замеров "высоты" аналогового сигнала за секунду.
  • Для того, чтобы иметь возможность обратиться к этим пинам, в программе необходимо использовать команды:
    analogRead(A0); //Считывание сигнала с пина A0
    analogWrite(A0, 512); //Генерация аналогового сигнала высоты 512 (из 1023, т.е. 2,5 В) на пине A0
  • Порты  А4 и А5 поддерживают I2C
  • Чаще всего аналоговые пины используются для передачи и чтения сигнала извне, когда нам принципиально важна "высота" сигнала.

Блок пинов ANALOG IN на Arduino  

Блок пинов DIGITAL:
  • Цифровые пины, обозначаемые как digital, используются для чтения и передачи цифрового сигнала, т.е. "0" или "1" ("есть сигнал", "нет сигнала"). 
  • Для обращения к этим пинам используются команды:
    digitalRead(5); //Чтение сигнала с 5 пина, получения логического "0" или логической "1"
    digitalWrite(5, HIGH); //Генерация на 5 пине логической "1"

  • Также  у цифровых портов (3,5,6,9,10,11), имеющих обозначения «~» есть особенность, они поддерживают ШИМ (Широтно-импульсную модуляцию). ШИМ используется для управления, например, оборотами коллекторного мотора через драйвер (подробнее в следующей статье). 
  • И еще одна особенность цифрового блока это пины 0 и 1, они поддерживают последовательный интерфейс UART (1 - ТХ, 2 - RX).

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

Блок пинов ICSP ATmega328

Блок пинов ICSP ATmega16U2.
  • ICSP-разъём предназначен для внутрисхемного программирования микроконтроллера ATmega16U2.
  • Микроконтроллер ATmega16U2 на версии Arduino Uno обеспечивает связь микроконтроллера ATmega328P с USB-портом компьютера. При подключении к ПК Arduino Uno определяется как виртуальный COM-порт. Прошивка микросхемы 16U2 использует стандартные драйвера USB-COM, поэтому установка внешних драйверов не требуется. Аналоги Arduino могут иметь "на борту" CH340 или  FT232RL. для которых необходимо дополнительно устанавливать драйверы.
Блок пинов ICSP ATmega16U2.
Данная статья носит ознакомительный характер и не предназначена для повторения дома =)
А теперь немного серьезнее - если остались вопросы, welcome в комментарии!
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.