Skip to main content

РЕГУЛЯР ЯРКОСТИ LED ЛЕНТЫ 💡

БАЗОВАЯ РЕАЛИЗАЦИЯ

Логика работы:

Поворот потенциометра → плавное изменение яркости светодиода
Короткое нажатие кнопки → фиксация текущей яркости
Повторное нажатие → возобновление управления потенциометром
При включении → восстановление последней зафиксированной яркости

Компоненты:

  • ✅ Потенциометр 10кОм
  • ✅ Светодиод (или светодиодная лента + транзистор)
  • ✅ Кнопка тактовая
  • ✅ Резисторы: 220 Ом (светодиод), 10кОм (кнопка pull-down)
  • ✅ Arduino Uno + макетка

Схема подключения:

Потенциометр:
  левый вывод → GND
  средний вывод → A0 (сигнал)
  правый вывод → 5V

Кнопка (фиксация):
  один вывод → 5V
  другой вывод → pin 2 + резистор 10кОм → GND

Светодиод:
  + → pin 9 (ШИМ) → резистор 220Ом → GND

ЛОГИКА РАБОТЫ 🔄

Псевдокод для обсуждения:

// ИНИЦИАЛИЗАЦИЯ:
загружаем зафиксированную яркость из EEPROM
если есть фиксация → используем ее, иначе → яркость = 128

// ОСНОВНОЙ ЦИКЛ:
читаем потенциометр (0-1023)
преобразуем в яркость (0-255)

если (режим ФИКСАЦИИ выключен):
  устанавливаем текущую яркость из потенциометра
иначе:
  используем зафиксированную яркость

подаем ШИМ на светодиод

обрабатываем кнопку:
  при нажатии → переключаем режим ФИКСАЦИИ
  если включили фиксацию → сохраняем яркость в EEPROM

ДЕТАЛЬНАЯ РЕАЛИЗАЦИЯ АЛГОРИТМОВ

Плавное изменение яркости:

// Чтобы избежать резких скачков при дрожании руки
int newBrightness = map(analogRead(A0), 0, 1023, 0, 255);

// Фильтр для плавности
if (abs(newBrightness - currentBrightness) > 2) {
  currentBrightness = newBrightness;
}

Управление режимами:

// Конечный автомат с двумя состояниями
enum Mode { FREE, FIXED };
Mode currentMode = FREE;

void handleButton() {
  if (buttonPressed) {
    if (currentMode == FREE) {
      currentMode = FIXED;
      fixedBrightness = currentBrightness;
      EEPROM.write(0, fixedBrightness);
    } else {
      currentMode = FREE;
    }
    waitForButtonRelease();
  }
}

Визуальная индикация режимов:

// Можно добавить второй светодиод для индикации режима
if (currentMode == FIXED) {
  digitalWrite(ledModePin, HIGH);  // горит - фиксация
} else {
  digitalWrite(ledModePin, LOW);   // выключен - свободное управление
}

УСЛОЖНЕНИЯ И ВАРИАЦИИ 🎛️

1. Многоуровневая фиксация:

// Как в олимпиаде 10-11 классов: 33%-66%-100%
// Кнопка циклически переключает предустановки:
// 33% → 66% → 100% → ручное → 33%...

void cyclePresets() {
  if (currentPreset == MANUAL) {
    currentPreset = PRESET_33;
    brightness = 84;  // 255 * 0.33
  } else if (currentPreset == PRESET_33) {
    currentPreset = PRESET_66;
    brightness = 168; // 255 * 0.66
  }
  // и т.д.
}

2. Цифровой потенциометр:

// Вместо аналогового потенциометра - энкодер:
// Поворот → увеличение/уменьшение яркости
// Нажатие → фиксация
// Двойное нажатие → сброс к 50%

3. Цветовой регулятор (RGB):

// Три потенциометра для RGB светодиода:
// Pot1 → Красный (0-255)
// Pot2 → Зеленый (0-255)  
// Pot3 → Синий (0-255)
// Кнопка → фиксация текущего цвета

ОЛИМПИАДНАЯ СВЯЗЬ 🏆

ПРЯМАЯ ОСНОВА ДЛЯ ЗАДАНИЙ 9-11 КЛАССОВ:

// Задание 9 класса:
String task1 = "\
Поворотом потенциометра можно произвести битовый сдвиг влево или вправо. \
Каждые 15° поворота потенциометра сдвигают число на 1 бит.\
";

// Задание 10-11 классов:  
String task1 = "\
Поворотом потенциометра можно произвести циклический битовый сдвиг влево или вправо.\
Каждые 15° поворота потенциометра сдвигают число на 1 бит. \
При удержании кнопки №3 потенциометр не производит сдвиг";

Критерии успеха в олимпиаде:

  • Точное преобразование значений - правильный map() и constrain()
  • Плавное управление - отсутствие скачков и дребезга
  • Стабильные режимы - четкое переключение между состояниями
  • Сохранение состояния - данные не теряются при переключении режимов

Типичные олимпиадные ошибки:

  • Нелинейное управление - map() с неправильными диапазонами
  • Дребезг потенциометра - нет фильтрации шумов
  • Потеря состояния - забывают сохранять при фиксации
  • Блокирующая обработка - система “зависает” при переключении режимов

МЕТОДИЧЕСКИЕ СОВЕТЫ 👨‍🏫

Поэтапная реализация:

// ЭТАП 1: Простое управление яркостью
brightness = map(analogRead(A0), 0, 1023, 0, 255);
analogWrite(9, brightness);

// ЭТАП 2: Добавляем кнопку фиксации
if (buttonPressed) {
  fixedBrightness = brightness;
  isFixed = true;
}

// ЭТАП 3: Переключаемый режим
if (buttonPressed) {
  isFixed = !isFixed; // переключаем состояние
}

// ЭТАП 4: Сохранение в EEPROM
if (buttonPressed && !isFixed) {
  EEPROM.write(0, brightness);
}

Визуализация для понимания:

🎛️  Цепочка преобразований:
Поворот ручки → 0-1023 → 0-255 → ШИМ → Яркость
     ↑              ↑        ↑       ↑       ↑
 Физическое    Аналоговое  Цифровое  Импульсы  Свет
 движение      значение    значение           

Практические упражнения:

Упражнение 1: “Калибровка чувствительности”

  • Найти оптимальные dead zones для потенциометра
  • Поэкспериментировать с разными диапазонами map()
  • Настроить плавность изменения яркости

Упражнение 2: “Визуальная обратная связь”

  • Добавить светодиодную индикацию режима
  • Сделать “подсветку” текущего уровня яркости
  • Реализовать анимацию переключения режимов

Упражнение 3: “Профессиональный регулятор”

  • Добавить плавное затухание при фиксации
  • Реализовать “память сцен” (несколько зафиксированных состояний)
  • Сделать режим “автояркости” с возвратом к ручному управлению

Диагностика проблем:

  • Яркость скачет → добавьте фильтр скользящего среднего
  • Кнопка срабатывает несколько раз → реализуйте антидребезг
  • EEPROM быстро изнашивается → пишите только при реальном изменении
  • Нечеткие режимы → используйте enum вместо boolean флагов

Критерии оценки проекта:

  • 4 балла - плавное управление яркостью потенциометром
  • +2 балла - стабильная работа кнопки фиксации
  • +2 балла - сохранение состояния в EEPROM
  • +2 балла - визуальная индикация режимов и состояний

РЕАЛЬНОЕ ПРИМЕНЕНИЕ 🏠

Где это используется:

  • Диммеры освещения - регулировка яркости в умном доме
  • Аудио оборудование - регуляторы громкости, тембра
  • Промышленные пульты - управление скоростью двигателей
  • Медицинская техника - регулировка параметров аппаратуры

Профессиональные аналоги:

  • Световые сцены в театре - запоминание настроек освещения
  • Профили пользователя - персональные настройки яркости
  • Автоматические режимы с возможностью ручной корректировки

Этот проект - ФУНДАМЕНТ для понимания всех олимпиадных заданий с потенциометрами! Освоив эти принципы, ученик сможет решить ЛЮБУЮ задачу про аналоговое управление в 9-11 классах! 🚀