Урок по Arduino №2 — для чего нужны аналоговые входы на Arduino и как их использовать?

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


СОДЕРЖАНИЕ

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

Блок: 1/3 | Кол-во символов: 561
Источник: https://xn--18-6kcdusowgbt1a4b.xn--p1ai/%D0%B0%D0%BD%D0%B0%D0%BB%D0%BE%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9-%D0%B2%D1%8B%D1%85%D0%BE%D0%B4-%D0%B0%D1%80%D0%B4%D1%83%D0%B8%D0%BD%D0%BE/

В этом уроке используется:

Большая макетная плата на 1600 точек с 4 шинами питания: Купить
Arduino Uno: Купить
Arduino Nano: Купить
Фоторезисторы 20 штук: Купить
Инфракрасный дальномер: Купить
Высокоточный инфракрасный дальномер с I2C: Купить
Набор резисторов из 100 штук на все случаи: Купить
Соединительные провода 120 штук: Купить
Потенциометры с колпачками 5 штук: Купить
Блок: 2/3 | Кол-во символов: 365
Источник: https://all-arduino.ru/arduino-dlya-nachinayushhih-urok-8-analogovye-vhody/

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


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

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

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

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

Блок: 2/3 | Кол-во символов: 1077
Источник: https://xn--18-6kcdusowgbt1a4b.xn--p1ai/%D0%B0%D0%BD%D0%B0%D0%BB%D0%BE%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9-%D0%B2%D1%8B%D1%85%D0%BE%D0%B4-%D0%B0%D1%80%D0%B4%D1%83%D0%B8%D0%BD%D0%BE/

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

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

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

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

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

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

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

  1. Функция , где pin — порт выхода на который подается сигнал, value — значение между 0 (полностью выключено) и 255 (полностью включено), используется для управления яркостью светодиода или скоростью электродвигателя, посредством Широтно-Импульсной Модуляции (ШИМ);
  2. Переменная имеет начальное значение «0» при каждом выполнении цикла к величине прибавляется заданное значение (в данном скетче fade = 5);
  3. При достижении переменной максимального значения равного 255, принимает отрицательное значение -5. Теперь при каждом выполнении цикла к величине прибавляется -5, т.е. каждый раз из вычитается .
  4. Если сопоставить работу скетча с графиком процесса квантования, размещенным на рисунке в начале статьи, то — это шаг квантования, т.е. величина на которую увеличивается подаваемое напряжение, а — это шаг дискретизации, т.е. период времени через который меняется значение .
Блок: 3/3 | Кол-во символов: 2858
Источник: https://xn--18-6kcdusowgbt1a4b.xn--p1ai/%D0%B0%D0%BD%D0%B0%D0%BB%D0%BE%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9-%D0%B2%D1%8B%D1%85%D0%BE%D0%B4-%D0%B0%D1%80%D0%B4%D1%83%D0%B8%D0%BD%D0%BE/

Эксперимент 2: управление яркостью светодиода с помощью потенциометра


В данном эксперименте мы будем управлять яркостью светодиода, используя потенциометр. Мы воспользуемся функцией для чтения напряжения и функцией для вывода ШИМ сигнала, коэффициент заполнения которого пропорционален аналоговому напряжению.

Необходимые компоненты

  • 1 x потенциометр
  • 1 x светодиод
  • 1 x резистор
  • 1 x Arduino Mega 2560
  • 1 x макетная плата
  • 6 x перемычка

Схема соединений

Соберите схему, как показано ниже. Когда вы будете вращать ручку потенциометра, напряжение на выводе A0 будет меняться. После чего программа будет изменять коэффициент заполнения ШИМ сигнала на выводе 2, изменяя яркость светодиода.

Код программы

Блок: 3/4 | Кол-во символов: 685
Источник: https://radioprog.ru/post/113

Использование аналоговых входов в качестве цифровых выводов

Аналоговые входы могут использоваться как цифровые порты входов/выходов рассмотренные в предыдущем уроке

Для этого, для UNO, в коде их нужно записывать как цифровые с 14 по 19. К примеру, для A0 

   // Инициализируем аналоговый pin 0 как выход   pinMode(14, OUTPUT);   // Инициализируем аналоговый pin 0 как вход      pinMode(14, INPUT); 

Читать ранее:

•  Урок 1. Цифровые выводы

Блок: 4/4 | Кол-во символов: 449
Источник: http://zelectro.cc/arduino_lesson_2
Кол-во блоков: 10 | Общее кол-во символов: 9466
Количество использованных доноров: 4
Информация по каждому донору:

  1. https://all-arduino.ru/arduino-dlya-nachinayushhih-urok-8-analogovye-vhody/: использовано 1 блоков из 3, кол-во символов 365 (4%)
  2. https://xn--18-6kcdusowgbt1a4b.xn--p1ai/%D0%B0%D0%BD%D0%B0%D0%BB%D0%BE%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9-%D0%B2%D1%8B%D1%85%D0%BE%D0%B4-%D0%B0%D1%80%D0%B4%D1%83%D0%B8%D0%BD%D0%BE/: использовано 3 блоков из 3, кол-во символов 4496 (47%)
  3. http://zelectro.cc/arduino_lesson_2: использовано 3 блоков из 4, кол-во символов 3458 (37%)
  4. https://radioprog.ru/post/113: использовано 2 блоков из 4, кол-во символов 1147 (12%)



Поделитесь в соц.сетях:

Оцените статью:

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (1 оценок, среднее: 5,00 из 5)
Загрузка...

1 Комментарий

  1. Спасибо огромное! Затеял проект на атмега 8, но вот беда… не хватает буквально пары цифровых выходов. Переназначил аналоговые порты как выходы и радуюсь) Все работает идеально!

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