Функция analogWrite() на Arduino Nano

Функция analogWrite() в Arduino используется для генерации ШИМ‑сигнала (широтно‑импульсной модуляции, PWM) на пинах, поддерживающих эту функцию. Она имитирует аналоговое напряжение за счёт изменения скважности импульсов.

Важно: несмотря на название, функция не выдаёт истинное аналоговое напряжение — она генерирует цифровой ШИМ‑сигнал с регулируемой шириной импульса.

Синтаксис

analogWrite(pin, value);

Параметры:

  • pin — номер пина с поддержкой ШИМ (на Arduino Nano отмечены символом ~ на плате);
  • value — значение ШИМ от 0 до 255, моделирующее напряжение от 0 В до 5 В:
    • 0 — сигнал всегда выключен (0 В);
    • 255 — сигнал всегда включён (5 В).

Пины с поддержкой ШИМ на Arduino Nano

На Arduino Nano (на базе микроконтроллера ATmega328P) ШИМ поддерживают пины:

  • 3, 5, 6, 9, 10, 11 (отмечены символом ~).

Частота ШИМ

Частота ШИМ‑сигнала на большинстве пинов Arduino Nano — около 490 Гц. На пинах 5 и 6 частота может отличаться, поскольку их таймер задействован функциями millis() и delay().

Примеры использования

1. Плавное включение и затухание светодиода

void setup() {
  pinMode(10, OUTPUT); // инициализируем пин 10 как выход
}

void loop() {
  // Плавное включение
  for (int i = 0; i <= 255; i++) {
    analogWrite(10, i);
    delay(5); // задержка для эффекта
  }
  
  // Плавное затухание
  for (int i = 255; i >= 0; i--) {
    analogWrite(10, i);
    delay(5);
  }
}

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

int ledPin = 9;      // светодиод подключён к пину 9
int potPin = A0;     // потенциометр подключён к аналоговому входу A0
int val = 0;       // переменная для хранения значения

void setup() {
  pinMode(ledPin, OUTPUT);
}

void loop() {
  val = analogRead(potPin);           // считываем значение с потенциометра (0–1023)
  analogWrite(ledPin, val / 4);      // преобразуем в диапазон 0–255
  delay(10);                          // небольшая задержка
}

Важные нюансы

  1. Не путать с аналоговыми входами. Аналоговые входы (A0–A5) не могут генерировать ШИМ‑сигнал. Они предназначены для подключения аналоговых датчиков и работают с функцией analogRead().
  2. Настройка режима пина. Хотя analogWrite() автоматически устанавливает пин в режим OUTPUT, рекомендуется явно указать это через pinMode() для ясности кода.
  3. Конфликты таймеров. Некоторые пины ШИМ используют общие таймеры с другими функциями (например, tone()), что может вызвать конфликты при одновременном использовании.
  4. Напряжение. Максимальное напряжение на пине — 5 В (при питании от USB или внешнего источника до 5 В). Для работы с более высокими напряжениями используйте драйверы.
  5. Токи. Максимальный ток на один пин — 40 мА. При подключении мощных нагрузок (моторов, реле) используйте транзисторы или драйверы.

Типичные применения

  • регулировка яркости светодиодов;
  • управление скоростью вращения двигателей постоянного тока;
  • настройка интенсивности подсветки LCD‑дисплеев;
  • генерация аналоговых сигналов для простых схем (с фильтрацией ШИМ).

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

Войти с помощью: