Используемые компоненты
| Компонент | Назначение |
|---|
| Arduino Uno | Контроллер, управляющий всей системой |
| RGB LED (общий анод) | Основной источник света |
| Потенциометр | Переключение цветового режима |
| Фоторезистор (LDR) | Измеряет уровень освещённости |
| Резисторы | Подключение LDR и RGB-LED |
| Макетная плата, провода | Монтаж |
| USB-кабель или батарея | Питание |
⚙️ Принцип работы
🌡 Освещённость (LDR)
- Фоторезистор подключён к аналоговому входу
A1.
- Значение освещённости от 300 до 800 преобразуется в диапазон яркости от 255 до 0.
- Чем темнее вокруг — тем ярче светит LED
🎛 Потенциометр (выбор цвета)
- Потенциометр подключён к
A2, его значение (0–1023) делится на 3 зоны:
- 0–319 → Красный
- 320–700 → Зелёный
- 701–1024 → Синий
🔄 RGB-светодиод
- Используется общий анод → значения PWM инвертируются (
255 - яркость).
- В зависимости от положения потенциометра — включается один из цветов с яркостью, зависящей от освещения
🖥 Отладка через Serial Monitor
- В монитор выводятся текущие значения LDR, потенциометра и используемые RGB-компоненты
Готовая модель
Код:
const int sensorPin = A1; // LDR
const int potPin = A2; // Потенциометр
const int redPin = 9;
const int greenPin = 10;
const int bluePin = 11;
int lightLevel;
void setup() {
pinMode(redPin, OUTPUT);
pinMode(greenPin, OUTPUT);
pinMode(bluePin, OUTPUT);
Serial.begin(9600);
}
void loop() {
lightLevel = analogRead(sensorPin);
manualTune(); // Преобразование 300–800 → 255–0
int potValue = analogRead(potPin);
int red = 0, green = 0, blue = 0;
if (potValue <= 319) red = lightLevel;
else if (potValue <= 700) green = lightLevel;
else blue = lightLevel;
analogWrite(redPin, 255 - red);
analogWrite(greenPin, 255 - green);
analogWrite(bluePin, 255 - blue);
Serial.print("LDR: "); Serial.print(lightLevel);
Serial.print(" | POT: "); Serial.print(potValue);
Serial.print(" | RGB: ");
Serial.print(red); Serial.print(", ");
Serial.print(green); Serial.print(", ");
Serial.println(blue);
delay(100);
}
void manualTune() {
lightLevel = map(lightLevel, 300, 800, 255, 0);
lightLevel = constrain(lightLevel, 0, 255);
}
Рабочий процесс:
🌿 Применение
- Ночник с регулируемой атмосферой — можно настроить под настроение.
- Часть «умного дома» — адаптивная подсветка для детской, спальни или витрины