Гирля́нда — декоративный мотив в виде сплетённых цветов, ветвей, стеблей с листьями, плодов, иногда в соединении с лентами — бандельверками, бантами, маскаронами, букраниями.

На этот раз нам нужно было сделать гирлянду и подключить потенциометр которым можно будет менять режимы работы гирлянды.
Для практики мы попробовали сделаьб простую работу и использовали в ней готовый код.

В этой работе от потенциометра зависит скорость мигания лампы.
Моя симуляция выглядит вот так

Режимы работы хотелось сделать поинтереснее, по этому я потратил на код достаточно много времени.
int sensorPin = 0;
int red1 = 13;
int green1 = 12;
int yellow1 = 11;
int red2 = 10;
int green2 = 9;
int yellow2 = 8;
int red3 = 7;
int green3 = 6;
int yellow3 = 5;
int sensorValue = 0;
int Value_new;
// Этот режим чередует мигание светодиодами красного, зеленого и желтого цветов во всех трех группах. Каждый цвет светится в течение 100 миллисекунд, а затем выключается на 200 миллисекунд.
void rezim1() {
digitalWrite(red1, HIGH);
digitalWrite(red2, HIGH);
digitalWrite(red3, HIGH);
delay(100);
digitalWrite(red1, LOW);
digitalWrite(red2, LOW);
digitalWrite(red3, LOW);
delay(200);
digitalWrite(green1, HIGH);
digitalWrite(green2, HIGH);
digitalWrite(green3, HIGH);
delay(100);
digitalWrite(green1, LOW);
digitalWrite(green2, LOW);
digitalWrite(green3, LOW);
delay(200);
digitalWrite(yellow1, HIGH);
digitalWrite(yellow2, HIGH);
digitalWrite(yellow3, HIGH);
delay(100);
digitalWrite(yellow1, LOW);
digitalWrite(yellow2, LOW);
digitalWrite(yellow3, LOW);
delay(200);
}
//В этом режиме случайным образом включаются и выключаются светодиоды каждого цвета в каждой из трех групп.
void rezim2() {
digitalWrite(red1, random(2));
digitalWrite(red2, random(2));
digitalWrite(red3, random(2));
digitalWrite(yellow1, random(2));
digitalWrite(yellow2, random(2));
digitalWrite(yellow3, random(2));
digitalWrite(green1, random(2));
digitalWrite(green2, random(2));
digitalWrite(green3, random(2));
delay(300);
}
//Этот режим эмулирует работу светофора. Сначала все светодиоды горят красным, затем все желтым, затем все зеленым. Каждый цвет горит в течение 100 миллисекунд, затем выключается на 200 миллисекунд.
void rezim3() {
digitalWrite(green1, LOW);
digitalWrite(green2, LOW);
digitalWrite(green3, LOW);
delay(200);
digitalWrite(yellow1, HIGH);
digitalWrite(yellow2, HIGH);
digitalWrite(yellow3, HIGH);
delay(100);
digitalWrite(red1, HIGH);
digitalWrite(red2, HIGH);
digitalWrite(red3, HIGH);
delay(100);
digitalWrite(yellow1, LOW);
digitalWrite(yellow2, LOW);
digitalWrite(yellow3, LOW);
delay(200);
digitalWrite(green1, HIGH);
digitalWrite(green2, HIGH);
digitalWrite(green3, HIGH);
delay(100);
digitalWrite(red1, LOW);
digitalWrite(red2, LOW);
digitalWrite(red3, LOW);
delay(200);
}
// В этом режиме светодиоды в каждой группе последовательно мигают красным, зеленым и желтым цветами. Каждый цвет светится в течение 100 миллисекунд, а затем выключается на 100 миллисекунд.
void rezim4() {
digitalWrite(red1, HIGH);
delay(100);
digitalWrite(red1, LOW);
delay(100);
digitalWrite(green1, HIGH);
delay(100);
digitalWrite(green1, LOW);
delay(100);
digitalWrite(yellow1, HIGH);
delay(100);
digitalWrite(yellow1, LOW);
delay(100);
digitalWrite(red2, HIGH);
delay(100);
digitalWrite(red2, LOW);
delay(100);
digitalWrite(green2, HIGH);
delay(100);
digitalWrite(green2, LOW);
delay(100);
digitalWrite(yellow2, HIGH);
delay(100);
digitalWrite(yellow2, LOW);
delay(100);
digitalWrite(red3, HIGH);
delay(100);
digitalWrite(red3, LOW);
delay(100);
digitalWrite(green3, HIGH);
delay(100);
digitalWrite(green3, LOW);
delay(100);
digitalWrite(yellow3, HIGH);
delay(100);
digitalWrite(yellow3, LOW);
delay(100);
digitalWrite(yellow3, HIGH);
delay(100);
digitalWrite(yellow3, LOW);
delay(100);
digitalWrite(green3, HIGH);
delay(100);
digitalWrite(green3, LOW);
delay(100);
digitalWrite(red3, HIGH);
delay(100);
digitalWrite(red3, LOW);
delay(100);
digitalWrite(yellow2, HIGH);
delay(100);
digitalWrite(yellow2, LOW);
delay(100);
digitalWrite(green2, HIGH);
delay(100);
digitalWrite(green2, LOW);
delay(100);
digitalWrite(red2, HIGH);
delay(100);
digitalWrite(red2, LOW);
delay(100);
digitalWrite(yellow1, HIGH);
delay(100);
digitalWrite(yellow1, LOW);
delay(100);
digitalWrite(green1, HIGH);
delay(100);
digitalWrite(green1, LOW);
delay(100);
digitalWrite(red1, HIGH);
delay(100);
digitalWrite(red1, LOW);
}
//Этот режим просто мигает всеми светодиодами в гирлянде: они все включаются в одно время и выключаются в одно время. Каждый цвет горит в течение 200 миллисекунд, а затем выключается на 200 миллисекунд.
void rezim5() {
digitalWrite(red1, HIGH);
digitalWrite(red2, HIGH);
digitalWrite(red3, HIGH);
delay(200);
digitalWrite(green1, HIGH);
digitalWrite(green2, HIGH);
digitalWrite(green3, HIGH);
delay(200);
digitalWrite(yellow1, HIGH);
digitalWrite(yellow2, HIGH);
digitalWrite(yellow3, HIGH);
delay(200);
digitalWrite(red1, LOW);
digitalWrite(red2, LOW);
digitalWrite(red3, LOW);
delay(200);
digitalWrite(green1, LOW);
digitalWrite(green2, LOW);
digitalWrite(green3, LOW);
delay(200);
digitalWrite(yellow1, LOW);
digitalWrite(yellow2, LOW);
digitalWrite(yellow3, LOW);
delay(200);
}
void setup() {
pinMode(red1, OUTPUT);
pinMode(red2, OUTPUT);
pinMode(red3, OUTPUT);
pinMode(green1, OUTPUT);
pinMode(green2, OUTPUT);
pinMode(green3, OUTPUT);
pinMode(yellow1, OUTPUT);
pinMode(yellow2, OUTPUT);
pinMode(yellow3, OUTPUT);
}
void loop() {
sensorValue = analogRead(sensorPin);
sensorValue = constrain(sensorValue, 0, 1023);
Value_new = map(sensorValue, 0, 1023, 0, 4);
digitalWrite(green1, LOW);
digitalWrite(green2, LOW);
digitalWrite(green3, LOW);
digitalWrite(red1, LOW);
digitalWrite(red2, LOW);
digitalWrite(red3, LOW);
digitalWrite(yellow1, LOW);
digitalWrite(yellow2, LOW);
digitalWrite(yellow3, LOW);
if (Value_new == 0) {
rezim1();
} else if (Value_new == 1) {
rezim2();
} else if (Value_new == 2) {
rezim3();
} else if (Value_new == 3) {
rezim4();
} else if (Value_new == 4) {
rezim5();
}
}
Я ничего не упрощал в коде по этому он достаточно объемный.
А вот видео с демонстрацией работы гирлянды.
Мы научились работать с потенциометром, подключать его и собирать более сложные цепи. Собрать цепь физически сложнее чем придумать её работу на симуляторе.