Гурток «Основи робототехніка на платформі Arduino».
Тема STEM-заняття:
Навчальний проект: «Веселка»
Мета: Дослідити роботу RGB світлодіода та адитивне змішування кольорів, які може випромінювати RGB світлодіод. Закріпити навички роботи з цифровими портами, формуванням ШІМ; продовжити набуття навичок програмувати режими роботи Arduino.
Постановка навчальної проблеми.
Слово керівника гуртка:
«Сьогодні ми спробуємо створити за допомогою RGB світлодіода, використовуючи адитивне змішування кольорів, проект «Веселка».
Обладнання: плата Arduino (nano), RGB Led – модуль (із спільним катодом) або EGB світлодіод із спільним катодом (анодом), breadboard (макетна плата), 3 дроти "male-male" («папа - папа»), ноутбук з програмним забезпеченням (програма Arduino IDE), Палітра кольорів в адитивній системі кольору RGB
Теоретичні відомості
Триколірний світлодіод (RGB Led) — це три світлодіоди різних кольорів (червоний, зелений, синій) в одному корпусі. Він може бути вмонтованим в друковану плату з резисторами (RGB Led модуль), так і без резисторів.
Світлодіод має чотири виводи. 3 виводи – аноди (катоди) і один спільний катод (анод). Тобто є RGB світлодіоди із спільним катом і спільним анодом..
|
|
Червоний |
Зелений |
Синій |
|
Максимальна пряма напруга (В) |
1,9 |
3,8 |
3,8 |
|
Сила струму (мА) |
20 |
20 |
20 |
В дому проекті, подачею сигналу (напруги) на один із анодів, можна отримати свічення одного з кольорів.
Використовуючи широтно-імпульсну модуляцію (ШІМ) для всіх анодів одночасно, можна отримати свічення одним з кольорів веселки.
Світлодіоди необхідно підключати з послідовно з’єднаним резистором. Резистор на 220-300 Ом підійде для вмикання будь-якого анода світлодіода RGB до джерела живлення 5В.
Дана розробка заняття складається з двох проектів: – «RGB – світлодіод» та «Веселка».
Частина І: Проект «RGB - світлодіод»
Для складання моделі проекту з RGB світлодіодом (Led модулем) нам буде потрібно:
Хід виконання проекту
Підключити схему до комп’ютера через USB порт плати Arduino, попередньо виконати з’єднання RGB світлодіода у відповідність до схеми.
2. Завантажити програму RGB1 до лабораторного макет, Дослідити роботу програми.
Для керування вмиканням одиночних кольорів RGB світлодіода можна використати наступну програму (скетч) яку можна просто скопіювати в Arduino IDE:
// оголошуємо змінні з номерами піна
int r = 9;
int g = 10;
int b = 11;
//процедура setup
void setup()
{
// оголошуємо використовувані порти
pinMode(r, OUTPUT);
pinMode(g, OUTPUT);
pinMode(b, OUTPUT);
}
//процедура loop
void loop()
{
digitalWrite(r, HIGH); // включаємо червоний
delay(1000); //чекаємо 1000 мс
digitalWrite(r, LOW); // виключаємо червоний
digitalWrite(g, HIGH); // включаємо зелений
delay(1000); //Чекаємо 1000 мс
digitalWrite(g, LOW); // виключаємо зелений
digitalWrite(b, HIGH); // включаємо синій
delay(1000); //Чекаємо 1000 мс
digitalWrite(b, LOW); // виключаємо синій
delay(1000); //чекаємо 1000 мс
}
Частина ІІ: Проект «Веселка»
1. Створити проект зміни кольору RGB світлодіода кольорами веселки, внесенням зміни до програми RGB1.
2. Реалізувати програму, у якій колір RGB світлодіода змінюється кольорами веселки.
Теоретичні відомості.
Отримати кольори веселки можна шляхом доповнення основних кольорів - червоного, зеленого і голубого кольорами від адитивного змішування цих кольорів.
Що таке адитивне змішування кольорів?
Адитивне змішування кольорів
Адитивний колір - це колір, отриманий змішуванням різних світлих тонів, з відтінками червоного, зеленого і синього кольорів — найбільш поширеними основними кольорами, що використовуються в адитивній колірній системі.
Поєднанням двох із трьох адитивних основних кольорів у рівних пропорціях утворює адитивний вторинний колір: блакитний, пурпуровий, жовтий.
Палітра кольорів в адитивній системі кольору RGB

У системі передачі кольору RGB палітра формується шляхом складання червоного, зеленого і синього кольорів.
Адитивну модель кольорів доповнює другорядна адитивна система яка називається субтрактивна модель (CMYK).
CMYK — субтрактивна колірна модель
Cубтрактивна колірна модель CMYK (від англ. subtract — «віднімати»), яка заснована на відніманні із білого первинних кольорів: синьо-зелений колір віднімає з білого кольору червоний, жовтий віднімає синій, а пурпуровий - зелений. Літера К у назві моделі CMYK взята у слова Black, вона позначає ключовий колір - Key Color.
Субтрактивна система, яка використовує основні кольори, що є другорядною адитивною системою, можна розглядати як альтернативний підхід відтворення широкого діапазону кольорів шляхом регулювання пропорційних кількостей червоного, зеленого і синього світла, які досягають очей.
Проект : Змішування кольорів RGB.
Процедуру змішування 3-х кольорів RGB-світлодіодів можна здійснити використавши широтно - імпульсну модуляцію (ШІМ) для трьох виводів світлодіодів (анодів або катодів).
Перед тим як виконати цей проект, розглянемо поняття про широтно-імпульсну модуляцію, яка дозволяє Arduino виводити аналогові дані на цифрові виводи, і застосуємо ці знання для створення довільного кольору світла з допомогою RGB-світлодіода.
Підключимо RGB-світлодіод до плати Arduino і змусимо переливатися його різнобарвними кольорами – кольорами веселки.
Широтно-імпульсна модуляція
Arduino не може на цифровий вивід видавати довільну напругу живлення. Видається або +5 В (HIGH), або 0 В (LOW). Але рівнем напруги керується багато споживачів: наприклад, яскравість світлодіода або швидкість обертання мотора. Для симуляції неповної напруги використовується ШІМ (широтно-імпульсна модуляція, або PWM) .ШІМ - це операція отримання змінного аналогового значення за допомогою цифрових сигналів. Цифровий сигнал на виході постійно перемикається між максимальним і мінімальним значеннями. Перемикання має частоту в тисячі герц. Око не помічає мерехтіння більше 50 Гц, тому нам здається, що світлодіод не мерехтить, а горить в неповну силу.
Arduino-функція analogWrite () видає ШІМ-сигнал на цифровий вивід Arduino. Після виклику () на виході буде генеруватися постійна прямокутна хвиля із заданою шириною імпульсу до наступного виклику analogWrite (), частота видається ШІМ-сигналу дорівнює 490 Гц.
На платах Arduino Nano і UNO ШІМ підтримують виводи 3, 5, 6, 9, 10 і 11, на платі Mega - виводи 2-13.
Дані виводи відмічені знаком тильди ~.
Для отримання різних аналогових величин змінюється ширина імпульсу (див. Рис.1) .Arduino-функція analogWrite () видає ШІМ-сигнал на цифровий вивід Arduino. Після виклику () на виході буде генеруватися постійна прямокутна хвиля із заданою шириною імпульсу до наступного виклику analogWrite (), частота видається ШІМ-сигналу дорівнює 490 Гц. На платах Arduino Nano і UNO ШІМ підтримують виводи 3, 5, 6, 9, 10 і 11, на платі Mega - виводи 2-13.
Рис.1. Залежність значень ШІМ від ширини імпульсу
Проект «Веселка».
В даному проекті ми використаємо RGB-світлодіод.
RGB розшифровується як абревіатура Red, Green, Blue. За допомогою цих кольорів можна отримати будь-який колір шляхом змішування. Світлодіод RGB відрізняється від звичайного тим, що містить 3 невеликих кристали R, G, B, які можуть синтезувати будь-який колір або відтінок. RGB-світлодіод має 4 виводи (див. МаМал.3).
Для виконання проекту використаємо наступні компоненти:
контролер Arduino UNO R3;
Мал.3
Підключимо RGB-світлодіоди до плати Arduino як показано на Мал.3
Тепер перейдемо до написання скетчу. Насправді веселка має безліч кольорів, а 7 кольорів були придумані тільки тому, що ці кольори найкраще сприймаються і визначаються оком і ми їх можемо назвати і згадати приказкою «Чапля осінь жде завзято, буде сани фарбувати».
Наш світлодіод повинен переливатися від червоного до фіолетового, проходячи через всі 7 основних кольорів. Послідовність кольорів веселки наступна:
червоний, оранжевий, жовтий, зелений, голубий, синій, фіолетовий.
Для написання програми веселки для Arduino IDE необхідно створити алгоритм.
Для створення алгоритму використаємо палітру кольорів в адитивній системі кольору RGB.
Алгоритм для обчислення будь-якого проміжного кольору веселки.
Взявши за основу програму RGB1 та користуючись вищевказаним Алгоритмом, напишемо програму нашого проекту «Веселка».
Програма проекту «Веселка».
const int redPin = 13; // R підключаємо до піну 13
const int greenPin = 12;// G підключаємо до піну 12
const int bluePin = 11; // B підключаємо до піну 11
void setup() //процедура setup
{
// піни на вивід
pinMode(redPin, OUTPUT);
pinMode(greenPin, OUTPUT);
pinMode(bluePin, OUTPUT);
}
void loop() //процедура loop
{
// Кольори веселки (змішані кольори):
color(255,0,0); // червоний
delay(2000); // пауза на 2с
color(255,125,0); // оранжевий
delay(2000); // пауза на 2с
color(255,255,0); // жовтий
delay(2000);// пауза на 2с
color(0,255,0); //зелений
color(0,255,255); //голубий
delay(2000); //пауза на 2с
color(0, 0, 255); //синій
delay(2000); //пауза на 2с
color(125,0,255); //фіолетовий
delay(2000);// пауза на 2с
color(255,255,255); //білий
delay(2000);// пауза на 2с
}
// функція виводу кольору
void color (unsigned char red,unsigned char green, unsigned char blue)
{
analogWrite(redPin, red);
analogWrite(greenPin, green);
analogWrite(bluePin, blue);
}
Контрольні питання для закріплення вивченого матеріалу.