You are on page 1of 3

Лабораторна робота 2

Світлодіодна панель. Робота з масивами

Ціль. Написати керуючу програму для світлодіодної панелі.

Створимо світлодіодну панель керовану потенціометром.


Пристрій з цього проекту є рядом світлодіодів у вигляді лінії. Щось подібне
можна побачити у вигляді спектроаналізатора на аудіотехніці та в
аудіопрограмах.
Панель складається з ряду світлодіодів з аналоговим входом, наприклад,
потенціометром або мікрофоном. У цьому проекті ми подаватимемо аналоговий
сигнал від потенціометра для управління світлодіодами. Коли повертається ручка
потенціометра в один бік, світлодіоди спалахують по черзі, поки вони не будуть
увімкнені всі. Коли повертаєте потенціометр в інший бік, вони по черзі
вимикатимуться.
Для цього зберемо схему як на рисунку.

Встановіть світлодіоди на макетну плату, катоди повинні бути підключені


до шини заземлення. Підключіть шину заземлення до контакту GND плати
Arduino за допомогою перемички.
2. Встановіть на макетну плату по одному резистори з опором 220 Ом на
кожен світлодіод, одна ніжка резистора повинна бути з'єднана з анодом
світлодіода. Іншу ніжку кожного резистора підключіть до цифрових контактів 2-
10 відповідно, як показано на малюнку. Важливо, щоб резистори при підключенні
утворили «містки» через канавку макетної плати, як показано на рисунку.
Встановіть потенціометр на макетну плату і підключіть центральну ніжку
потенціометра до контакту А0 плати Arduino. Підключіть праву зовнішню ніжку
потенціометра до контакту 5V плати Arduino, а ліву потенціометра до контакту
GND плати Arduino.

Програма написана тільки для ТРЬОХ світло діодів. Допишіть програму,


щоб світилися усі 9 світлодіодів. (дивись лекцію відповідну).
Скетч матиме вигляд:

int potPin = A0; // Контакт аналогового входу, підключений до


потенціометра
int sensorReading = 0; // Значення, що зчитується з
потенціометра
int led_1 = 2; // Перший світлодіод, підключений до 2 піну
int led_2 = 3; // Другий світлодіод, підключений до 3 піну
int led_3 = 4; // Третій світлодіод, підключений до 4 піну
int led_4 = 5; // четвертий світлодіод, підключений до 5 піну
int led_5 = 6; // п'ятий світлодіод, підключений до 6 піну
int led_6 = 7; // шостий світлодіод, підключений до 7 піну
int led_7 = 8; // сьомий світлодіод, підключений до 8 піну
int led_8 = 9; // восьмий світлодіод, підключений до 9 піна
int led_9 = 10; // дев'ятий світлодіод, підключений до 10 піну

void setup() {
Serial.begin(9600); //запускаємо монітор порту
pinMode(led_1, OUTPUT);
pinMode(led_2, OUTPUT);
pinMode(led_3, OUTPUT);
pinMode(led_4, OUTPUT);
pinMode(led_5, OUTPUT);
pinMode(led_6, OUTPUT);
pinMode(led_7, OUTPUT);
pinMode(led_8, OUTPUT);
pinMode(led_9, OUTPUT);
}

// Безперервне виконання
void loop() {
Serial.println(analogRead(potPin));

sensorReading = analogRead(potPin); // Читання значення


//потенціометра з контакту A0, значення змінюється від 0 до 675
if (0 < sensorReading && sensorReading <= 150)
{
digitalWrite (led_1, HIGH);
digitalWrite (led_2, LOW);
digitalWrite (led_3, LOW);
}
else
{
digitalWrite (led_1, LOW);
digitalWrite (led_2, LOW);
digitalWrite (led_3, LOW);
}
delay(10); // Очікування 10 мс

if (151 < sensorReading && sensorReading <= 350)


{
digitalWrite (led_1, HIGH);
digitalWrite (led_2, HIGH);
digitalWrite (led_3, LOW);

}
else
{
digitalWrite (led_1, LOW);
digitalWrite (led_2, LOW);
digitalWrite (led_3, LOW);
}
delay(10); // Очікування 10 мс

if (351 < sensorReading && sensorReading <= 675)


{
digitalWrite (led_1, HIGH);
digitalWrite (led_2, HIGH);
digitalWrite (led_3, HIGH);
}
else
{
digitalWrite (led_1, LOW);
digitalWrite (led_2, LOW);
digitalWrite (led_3, LOW);
}
delay(10); // Очікування 10 мс
}

You might also like