Задание:
Создать световую цепочку, состоящую из нескольких светодиодов (обычных или RGB), работающих в нескольких различных режимах освещения.
Световая цепочка должна содержать не менее пяти режимов освещения:
1. Все светодиоды мигают одновременно.
2. Все светодиоды мигают по очереди.
3. Все светодиоды мигают по очереди, при этом светодиоды мигают по одному цвету (RGB – красный, зеленый, синий).
4. Светодиоды мигают в случайном порядке (эффект свечи).
Понадобится:
- х1 Потенциометр
- х5 LED-лампа
- х5 Резистор
- х10 Провод
Готовая схема:

Работа:
- Потенциометр подключён к аналоговому вводу и разъёмам + и –
- LED-Лампы подключены с помощью резисторов к разъёмам – и с помощью проводов к разъёмам с питанием
- Подключено дополнительное питание 5V
Видео:
Код:
int ledPin1 = 13;
int ledPin2 = 12;
int ledPin3 = 11;
int ledPin4 = 10;
int ledPin5 = 9;
int sensorValue = 0;
int sensorPin = A0;
void setup() {
pinMode(ledPin1, OUTPUT);
pinMode(ledPin2, OUTPUT);
pinMode(ledPin3, OUTPUT);
pinMode(ledPin4, OUTPUT);
pinMode(ledPin5, OUTPUT);
Serial.begin(9600);
randomSeed(analogRead(A1)); // Инициализация генератора случайных чисел
}
// 1. Все светодиоды мигают одновременно
void mode1() {
for (int i = 0; i < 5; i++) {
digitalWrite(ledPin1, HIGH);
digitalWrite(ledPin2, HIGH);
digitalWrite(ledPin3, HIGH);
digitalWrite(ledPin4, HIGH);
digitalWrite(ledPin5, HIGH);
delay(200);
digitalWrite(ledPin1, LOW);
digitalWrite(ledPin2, LOW);
digitalWrite(ledPin3, LOW);
digitalWrite(ledPin4, LOW);
digitalWrite(ledPin5, LOW);
delay(200);
}
}
// 2. Светодиоды по одному
void mode2() {
int pins[] = {ledPin1, ledPin2, ledPin3, ledPin4, ledPin5};
for (int i = 0; i < 5; i++) {
digitalWrite(pins[i], HIGH);
delay(200);
digitalWrite(pins[i], LOW);
}
}
// 3. "Цветной" режим
void mode3() {
digitalWrite(ledPin1, HIGH); digitalWrite(ledPin4, HIGH);
delay(200);
digitalWrite(ledPin1, LOW); digitalWrite(ledPin4, LOW);
digitalWrite(ledPin2, HIGH);
delay(200);
digitalWrite(ledPin2, LOW);
digitalWrite(ledPin3, HIGH); digitalWrite(ledPin5, HIGH);
delay(200);
digitalWrite(ledPin3, LOW); digitalWrite(ledPin5, LOW);
}
// 4. Случайный режим
void mode4() {
int pins[] = {ledPin1, ledPin2, ledPin3, ledPin4, ledPin5};
for (int i = 0; i < 10; i++) {
int randPin = pins[random(0, 5)];
digitalWrite(randPin, HIGH);
delay(random(100, 300));
digitalWrite(randPin, LOW);
}
}
// 5. Работают все
void mode5() {
int pins[] = {ledPin1, ledPin2, ledPin3, ledPin4, ledPin5};
for (int i = 0; i < 5; i++) {
digitalWrite(pins[i], HIGH);
delay(150);
digitalWrite(pins[i], LOW);
}
for (int i = 3; i > 0; i--) {
digitalWrite(pins[i], HIGH);
delay(150);
digitalWrite(pins[i], LOW);
}
}
void loop() {
int Value_new = analogRead(sensorPin);
Value_new = map(Value_new, 0, 1023, 1, 6);
Serial.println(Value_new); // Для отладки
if (Value_new == 2) {
mode1();
}
else if (Value_new == 3) {
mode2();
}
else if (Value_new == 4) {
mode3();
}
else if (Value_new == 5) {
mode4();
}
else if (Value_new == 6) {
mode5();
}
else {
digitalWrite(ledPin1, LOW);
digitalWrite(ledPin2, LOW);
digitalWrite(ledPin3, LOW);
digitalWrite(ledPin4, LOW);
digitalWrite(ledPin5, LOW);
}
}
