Программирование на Arduino. Урок 1. Аналоговые и цифровые пины.
Добрый день, друзья! Сегодня мы с Вами начнем наше знакомство в платформой Arduino. Благодаря тому, что в интернете существует огромное количество различных проектов, реализованных с помощью этой платформы, она не теряет свое популярности. И именно поэтому мы с Вами самостоятельно научимся создавать Девайсы различного уровня сложности с НУЛЯ. Но, обо все по порядку. Сегодня мы с вами разберемся, что это за "зверь" такой - Arduino и как использовать ее возможности. Начнем с точек подключения - пинов. Перед тем, как собирать устройство или тестировать написанную программу, сначала мы определяем какие пины и как мы будем использовать: получать или передавать сигнал, питать Arduino через USB порт или с помощью внешних источников. От выбора этих параметров и будет зависеть программное обеспечение и архитектура будущего устройства (device).
Итак, приступим:
Не смотря на то, что на плате множество различных элементов, взаимодействовать мы можем только с тремя их группами: пины питания (GND, 5V, 3.3V, Vin, IOREF, RESET), аналоговые пины (A0-А5) и цифровые пины (1-13).
Блок пинов DIGITAL:
Блок пинов ICSP ATmega328
Блок пинов ICSP ATmega16U2.
Как можно увидеть на картинке, микроконтроллер это не вся плата как принято считать, а лишь ее часть. С помощью всех остальных элементов, таких как: порты ввода и вывода, конвертеры, индикаторы, стабилизаторы и кнопки, работать с микроконтроллером становится удобно и безопасно (в основном для устройств, с которыми вы хотите общаться).
Не смотря на то, что на плате множество различных элементов, взаимодействовать мы можем только с тремя их группами: пины питания (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 в комментарии!