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

На этом занятии мы рассмотрим, цифровые и аналоговые выходы Arduino, разберем чем отличается цифра от аналога, а также сделаем бегущий огонек на Arduino.

На этом занятии мы рассмотрим, цифровые и аналоговые выходы Arduino, разберем чем отличается цифровой сигнал от аналогового. Соберем с помощью макетной платы схему из двух светодиодов и будем плавно регулировать их яркость (включение и затухание). Рассмотрим тип данных int, условный оператор if и команду analogWrite для управления аналоговыми портами в языке программирования Ардуино.

Чем отличается аналоговый сигнал от цифрового

Аналоговый сигнал непрерывно изменяется во времени. Вся информация в природе аналоговая — волны на воде, колебание струны и т.д. Изначально человек записывал информацию (звуки, изображения, видео) с помощью аналоговых устройств. Но аналоговые сигналы чувствительны к воздействию шумов и помех.

Цифровой сигнал передается в виде единиц и нулей, для компьютеров и цифровой техники это проще реализовать (есть сигнал или нет сигнала). Для оперативной памяти в компьютерах используют конденсаторы, один заряженный конденсатор — 1 бит. На флеш-памяти используют транзисторы с плавающим затвором.

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

Квантование — разбиение диапазона непрерывной величины на конечное число интервалов
Квантование — разбиение непрерывной величины на интервалы

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

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

Аналоговые выходы на Ардуино имеют, отметку тильда
Аналоговые выходы на плате Ардуино имеют, отметку тильда «~»

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

На Arduino аналоговый выход будет работать, как цифровой
На Arduino аналоговый выход будет работать, как цифровой

9 порт может работать, как цифровой выход. Но если функцию digitalWrite изменить на analogWrite, то вместо значения HIGH (1) и LOW (0) можно поставить любое значение от 0 до 255. Именно в этом интервале можно менять напряжение на аналоговых выходах. Загрузите программу для плавного включения и затухания светодиода. Скачать готовый скетч можно можно по ссылке здесь с Google Диск.

Скетч. Аналоговый сигнал Ардуино

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); // устанавливаем паузу для эффекта
}

Пояснения к коду:

  1. Функция analogWrite (pin, value), где pin — порт выхода на который подается сигнал, value — значение между 0 (полностью выключено) и 255 (полностью включено), используется для управления яркостью светодиода или скоростью электродвигателя, посредством Широтно-Импульсной Модуляции (ШИМ);
  2. Переменная svet имеет начальное значение «0» при каждом выполнении цикла к величине svet прибавляется заданное значение fade (в данном скетче fade = 5);
  3. При достижении переменной svet максимального значения равного 255, fade принимает отрицательное значение -5. Теперь при каждом выполнении цикла к величине svet прибавляется -5, т.е. каждый раз из svet вычитается fade.
  4. Если сопоставить работу скетча с графиком процесса квантования, размещенным на рисунке в начале статьи, то fade — это шаг квантования, т.е. величина на которую увеличивается подаваемое напряжение, а delay — это шаг дискретизации, т.е. период времени через который меняется значение fade.
1 Star2 Stars3 Stars4 Stars5 Stars (8 votes, average: 5,00 out of 5)
Загрузка...

2 комментариев для “Аналоговый и цифровой выход на Ардуино

  1. Здравствуйте.
    Вопрос немного туповатый но все-же. Не могу до конца понять урок, как fade вновь становится положительным числом? fade = -fade;
    Что на это влияет математический (-) на (-) равно(+)? Тогда в итоге у нас получится -255 или при достижение svet == 0 -fade становится +fade?

    1. Все верно — минус на минус дает плюс. В итоге из переменной svet вычитается или прибавляется 5 (int fade = 5; // Шаг изменения яркости свечения светодиода)

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *