Ход работы
- Я сделал схему для гирлянды по видео уроку и немного изменил ее
- Написал код по видео уроку
- Впоследствии изменил его под мою гирлянду
//переменные и массивы, которые я использовал
int sensorPin = 0;
int ledred1 = 13; //red
int ledblue1 = 12; //blue
int ledyellow1 = 11; //yellow
int ledred2 = 10; //red
int ledblue2 = 9; //blue
int ledyellow2 = 8; //yellow
int ledred3 = 7; //red
int ledblue3 = 6; //blue
int ledyellow3 = 5; //yellow
int ledwhite1 = 4; //white
int ledwhite2 = 3; //white
int ledwhite3 = 2; //white
int pin_array [13] = {13,12,10,9,7,6,3,11,4,8,2,5}; //массив пинов
int pin_array_rev [13] = {5,2,8,4,11,3,6,7,9,10,12,13}; //перевернутый массив пинов
int sensorValue = 0;
int Value_new;
4. По видео были написаны 4 функции для красного, желтого, синего и белого цвета
void red()
{
digitalWrite(ledred1, HIGH); //светодиод загорается
digitalWrite(ledred2, HIGH);
digitalWrite(ledred3, HIGH);
delay(100);
digitalWrite(ledred1, LOW); //светодиод гаснет
digitalWrite(ledred2, LOW);
digitalWrite(ledred3, LOW);
delay(100);
}
5. Позже мною были написаны 3 функции для режимов работы гирлянды
void rndcolor() //функция для случайного мигания светодиодов
{
int rnd=random(2,14); //случайное число. От 2 до 14, потому что у меня пины заняты от 2 до 13
digitalWrite(rnd,HIGH);
delay(random(10,50)); //случайная задержка от 10 до 50
digitalWrite(rnd,LOW);
}
void array_led() //функция для цикличного загорания светодиодов, которая использует массив
{
for (int i = 0; i < 14; i++)
{
digitalWrite(pin_array[i],HIGH);
delay(200);
digitalWrite(pin_array[i],LOW);
}
}
void wave_led() //функция для условной "волны" загорания светодиодов, которая использует два массива: перевернутый и обычный
{
for (int i = 0; i < 14; i++)
{
digitalWrite(pin_array[i],HIGH);
digitalWrite(pin_array_rev[i],HIGH);
delay(100);
digitalWrite(pin_array[i],LOW);
digitalWrite(pin_array_rev[i],LOW);
}
}
6. Эти функции перенес в основной цикл, в котором уже было создано два режима работы
void loop()
{
int x = 0;
Value_new = analogRead(sensorPin); //переменная берет значение из потенциометра
Value_new = map(Value_new,0,1023,1,5); //здесь значение переносятся из одного диапазона в другой для удобного переключения режимов
if (Value_new == 1)
{
rndcolor();
}
else if (Value_new == 2)
{
while(x!=5)
{
white();
delay(200);
yellow();
x++;
}
x=0;
while(x!=5)
{
red();
delay(200);
blue();
x++;
}
x=0;
}
else if (Value_new == 3)
{
yellow();
delay(1000);
red();
delay(1000);
white();
delay(1000);
blue();
delay(1000);
}
else if (Value_new == 4)
{
array_led();
}
else if (Value_new == 5)
{
wave_led();
}
}
Как работает гирлянда
При значении потенциометра
- Запускается функция rndcolor(). В этом режиме мигают светодиоды случайным образом
- Запускается режим, при котором загорается белый цвет через некоторое время желтый и так 5 раз, после этого загорается красный цвет через некоторое время синий и также 5 раз
- Запускается режим, при котором загорается желтый цвет, через некоторое время загорается красный, после красного белый, после белого синий
- Запускается функция array_led(). В этом режиме загораются светодиоды поочередно сверху слева и переходят направо. По сути загораются и гаснут по кругу
- Запускается функция wave_led(). В этом режиме загораются светодиоды слева сверху и одновременно снизу справа, получается эффект волны
Ссылка на проект
https://www.tinkercad.com/things/9atchzYJtpH-girlyanda/editel?sharecode=HWIa-v60tnakJ1Us1gKLXKvPsvdPmq2-7Zkq0zqe_W4
Компоненты

19 проводов
12 резисторов 220 Ом
12 LED



Cхема подключения компонентов к плате

Возможности применения в жизни
Потенциометр можно применить для:
- Регулировки параметров: громкость звука, мощность и т.д.
- Также как и в практической работе “гирлянда” для изменения режима работы устройства
