Аналоговый и цифровой выход Ардуино

СОДЕРЖАНИЕ ►
На этом занятии мы рассмотрим, цифровые и аналоговые выходы Arduino, разберем чем отличается цифровой сигнал от аналогового. Соберем с помощью макетной платы схему из двух светодиодов и будем плавно регулировать их яркость (включение и затухание). Рассмотрим тип данных int, условный оператор if и команду analogWrite для управления аналоговыми портами в языке программирования Ардуино.
Чем отличается аналоговый сигнал от цифрового
Аналоговый сигнал непрерывно изменяется во времени. Вся информация в природе аналоговая — волны на воде, колебание струны и т.д. Изначально человек записывал информацию (звуки, изображения, видео) с помощью аналоговых устройств. Но аналоговые сигналы чувствительны к воздействию шумов и помех.
Цифровой сигнал передается в виде единиц и нулей, для компьютеров и цифровой техники это проще реализовать (есть сигнал или нет сигнала). Для оперативной памяти в компьютерах используют конденсаторы, один заряженный конденсатор — 1 бит. На флеш-памяти используют транзисторы с плавающим затвором.

С появлением компьютеров аналоговые сигналы стали переводить в цифру, поскольку аналоговый сигнал подвержен искажениям и затуханию при передаче или записи. Наглядно продемонстрировать разницу между аналоговым и цифровым сигналом поможет картинка, где изображен процесс квантования — разбиение непрерывной величины на конечное число интервалов (перевод аналогового сигнала в цифру).
Аналоговые и цифровые выходы на Ардуино
Для этого занятия нам потребуется:
- плата Arduino Uno / Arduino Nano / Arduino Mega;
- макетная плата;
- светодиод;
- резистор 220 Ом;
- провода «папа-папа».
Если вы хотите регулировать выходное напряжение, то следует использовать пины, помеченные символом «~». Для Arduino Uno — это 3, 5, 6, 9, 10, 11. С помощью аналоговых портов можно выдавать любое напряжение 0 до 5 Вольт, а цифровые выходы можно только включать и выключать. Аналоговые порты используют ШИМ (широтно-импульсную модуляцию), по английски PWM (pulse-width modulation), с помощью которой имитируется аналоговый сигнал.

Чтобы понять разницу между цифровым и аналоговым сигналом, соберите на макетной плате схему из светодиода и резистора, как на первом занятии — Подключение светодиода. Но в этот раз подключите светодиод к аналоговому выходу ~9. Откройте скетч для мигания светодиодом из первого занятия и измените в нем порт выхода с Pin13 на Pin9. Загрузите скетч в плату Arduino NANO или UNO.

9 порт может работать, как цифровой выход. Но если функцию digitalWrite изменить на analogWrite, то вместо значения HIGH (1) и LOW (0) можно поставить любое значение от 0 до 255. Именно в этом интервале можно менять напряжение на аналоговых выходах. Загрузите программу для плавного включения и затухания светодиода. Подробное описание работы данной программы даны ниже в пояснении к коду.
Скетч. Аналоговый сигнал Ардуино и светодиод
int svet = 0; // начальная яркость свечения светодиода int fade = 5; // шаг изменения яркости свечения светодиода void setup() { pinMode(9, OUTPUT); // используем Pin9 для операции вывода } void loop() { // устанавливаем яркость светодиода на Pin9 analogWrite(9, svet); // изменяем яркость, прибавляя заданную величину fade в каждом цикле svet = svet + fade; // меняем порядок затухания при минимальной и максимальной яркости if (svet == 0 || svet == 255) { fade = -fade; } delay(20); // устанавливаем паузу для эффекта }
Пояснения к коду:
- Функция
analogWrite (pin, value)
, где pin — порт выхода на который подается сигнал, value — значение между 0 (полностью выключено) и 255 (полностью включено), используется для управления яркостью светодиода или скоростью электродвигателя, посредством Широтно-Импульсной Модуляции (ШИМ); - Переменная
svet
имеет начальное значение «0» при каждом выполнении цикла к величинеsvet
прибавляется заданное значениеfade
(в данном скетче fade = 5); - При достижении переменной
svet
максимального значения равного 255,fade
принимает отрицательное значение -5. Теперь при каждом выполнении цикла к величинеsvet
прибавляется -5, т.е. каждый раз изsvet
вычитаетсяfade
. - Если сопоставить работу скетча с графиком процесса квантования, размещенным на рисунке в начале статьи, то
fade
— это шаг квантования, т.е. величина на которую увеличивается подаваемое напряжение, аdelay
— это шаг дискретизации, т.е. период времени через который меняется значениеfade
.
Подборка на тему: Аналоговый и цифровой выход Ардуино
6 комментариев для “Аналоговый и цифровой выход Ардуино”
Добавить комментарий
Записи похожие на: Аналоговый и цифровой выход на Arduino
- Управление Ардуино с клавиатуры
- Обозначение радиоэлементов с фото
- Четырехразрядный семисегментный индикатор
- Метеостанция на Ардуино с дисплеем
Проекты похожие на: Аналоговый и цифровой выход на Arduino
Здравствуйте.
Вопрос немного туповатый но все-же. Не могу до конца понять урок, как fade вновь становится положительным числом? fade = -fade;
Что на это влияет математический (-) на (-) равно(+)? Тогда в итоге у нас получится -255 или при достижение svet == 0 -fade становится +fade?
Все верно — минус на минус дает плюс. В итоге из переменной svet вычитается или прибавляется 5 (int fade = 5; // Шаг изменения яркости свечения светодиода)
Добрый день! Объясните пожалуйста, если это возможно, как на контроллере считывается напряжение с аналогового входа при подключении терморезистора?
Напряжение с терморезистора переводится с помощью АЦП в значения от 0 до 1024, где 0 — это 0 Вольт, 1024 — это 5 Вольт, а 512 — это 2,5 Вольта
Спасибо за совет, как я могу Вас отблагодарить?
Пожалуйста. Ставьте лайки, пишите отзывы в Яндексе