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

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

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

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

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

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

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

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

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

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

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

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

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

Загрузите следующий счетч плавного включения и затухания светодиода.
Скачать готовый скетч zanyatie3_vhod.ino

int svet = 0; // Начальная яркость свечения светодиода
int fade = 5; // Шаг изменения яркости свечения светодиода

void setup()

{
  pinMode(9, OUTPUT); // Используем Pin9 для операции вывода
}

void loop()

{

 // Устанавливаем яркость светодиода на Pin9
  analogWrite(9, svet);

// Изменяем яркость, прибавляя заданную величину fadeAmount в каждом цикле
  svet = svet + fade;

// Меняем порядок затухания при минимальной и максимальной яркости
  if (svet == 0 || svet == 255) {
    fade = -fade;
  }

  delay(20); // Устанавливаем небольшую паузу для эффекта

}

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

  1. Оператор int используется для назначения начального значения переменным;
  2. Имена для переменных svet и fade могут быть выбраны абсолютно разными;
  3. Функция analogWrite (pin, value), где pin — порт выхода на который подается сигнал, value — значение между 0 (полностью выключено) и 255 (полностью включено), используется для управления яркостью светодиода или скоростью электродвигателя, посредством Широтно-Импульсной Модуляции (ШИМ);
  4. Переменная svet имеет начальное значение «0» при каждом выполнении цикла к величине svet прибавляется заданное значение fade (в данном скетче fade = 5);
  5. При достижении переменной svet максимального значения равного 255, fade принимает отрицательное значение -5. Теперь при каждом выполнении цикла к величине svet прибавляется -5, т.е. каждый раз из svet вычитается fade.

На что обратить внимание:

  1. Шаг изменения яркости светодиода (в приведенном примере переменная fade) должна быть кратна значению максимальной яркости (например, числу 255);
  2. Если сопоставить работу скетча с графиком, размещенным на рисунке в начале занятия, то fade — это шаг квантования, т.е. величина на которую увеличивается подаваемое напряжение, а delay — это шаг дискретизации, т.е. период времени через который меняется значение fade.

Задание для самостоятельного выполнения:

  1. Установите шаг изменения яркости светодиода fade равным 50 и поставьте паузу между выполнением цикла в 500 миллисекунд delay(500). Загрузите скетч;
  2. Почему не происходит затухание свечения светодиода? Как исправить скетч, чтобы светодиод начал затухать при достижении максимальной величины свечения?

Пройти тест


1 Star2 Stars3 Stars4 Stars5 Stars (5 votes, average: 5,00 out of 5)
Загрузка...

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

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