Makey Makey управління новорічною RGB-гирляндою
Здається, у 2012 році на kickstarter був більш ніж успішно запущений проект MaKey MaKey, який дозволяв перетворити в сенсорні кнопки будь-які предмети, що хоч трохи проводять електричний струм. Більше того, плата підключалась до комп'ютера і перетворювалась на USB-клавіатуру. З MaKey MaKey клавіатурою виявлялися фрукти, квіти та інші предмети.
Звичайно, через деякий час підприємливі китайці налагодили виробництво більш дешевих аналогів, одним з яких була плата Makey Makey Touch USB shield - шилд до Arduino Uno.
Використовувати цей шилд можна в якості USB-клавіатури або для управління різними пристроями. Я вирішив використовувати його для управління RGB-стрічкою (в якості гірлянди для новорічної ялинки). За допомогою Makey Makey Touch USB shield ми будемо визначати дотики до новорічних "іграшок" (кола з фольгованого кольорового паперу різного кольору (червоний, зелений, синій, жовтий, фіолетовий, білий)) і запалювати RGB-стрічку відповідним кольором.
Електрична схема (у Fritzing) має наступний вигляд
Елементи управління RGB-стрічкою (транзистори TIP120 і резистори) винесені на саморобний шилд
Ось приблизно так
І скетч на Arduino. Натискання на "іграшку" певного кольору призводить до зміни кольору RGB-стрічки на відповідний. Щоб стрічка постійно горіла, будемо запам'ятовувати останній колір. При одночасному виборі кількох кольорів перемикач кольору не відбувається - введено фільтр, що визначає одночасне натискання.
Ось Arduino код
// pins для RGB strip int pinRed=6; int pinGreen=7; int pinBlue=5; // змінні для зберігання даних з touch int InData0 = 0, InData1 = 0, InData2 = 0, InData3 = 0, InData4 = 0, InData5 = 0; int TouchSensitivity = 30; // int AllData=0; int tekpos=0; // масив значень rgb стрічки для різних натискань int leds[8][3]={{0,0,0}, {1,0,0}, // r {0,1,0}, // g {0,0,1}, // b {1,1,0}, // yellow {1,0,1}, // r+b {1,1,1}, // white {0,0,0} // натиснуто кілька }; void setup() { Serial.begin(9600); for(int i = A0; i <= A5; i++) { //pins touch Red, Green, Blue, Yellow, ,White pinMode(5, INPUT); } // налаштування пінів RGB strip pinMode(pinRed, OUTPUT); pinMode(pinGreen, OUTPUT); pinMode(pinBlue, OUTPUT); tekpos=random(1,3); setRGB(tekpos); //TIMSK0 &= !(1 << TOIE0); } void loop() { // отримання даних з touch InData0 = 1024 - analogRead(A0); InData1 = 1024 - analogRead(A1); InData2 = 1024 - analogRead(A2); InData3 = 1024 - analogRead(A3); InData4 = 1024 - analogRead(A4); InData5 = 1024 - analogRead(A5); // визначення натиснутої AllData=0; if(InData0 >= TouchSensitivity) AllData=AllData+5; if(InData1 >= TouchSensitivity) AllData=AllData+6; if(InData2 >= TouchSensitivity) AllData=AllData+7; if(InData3 >= TouchSensitivity) AllData=AllData+8; if(InData4 >= TouchSensitivity) AllData=AllData+9; if(InData5 >= TouchSensitivity) AllData=AllData+10; // AllData=min(AllData,11); AllData=max(AllData,4); AllData=AllData-4; Serial.print("AllData=");Serial.println(AllData); // включення стрічки if(AllData>0 && AllData<7) { tekpos=AllData; setRGB(tekpos); } delay(100); } // процедура включення стрічки void setRGB(int pos) { digitalWrite(pinRed,leds[pos][0]); digitalWrite(pinGreen,leds[pos][1]); digitalWrite(pinBlue,leds[pos][2]); }
І фото цього проекту
Список радіоелементів
Позначення | Тип | Номінал | Кількість | Примітка |
---|---|---|---|---|
Плата Arduino |
Arduino Uno
|
1 | ||
Makey Makey Touch shield | 1 | |||
Біполярний транзистор |
TIP120
|
3 | ||
Резистор |
1 кОм
|
3 | ||
Світлодіодна стрічка | RGB | 1 | ||
Блок живлення | DC 12В | 1 | ||
Коло | Фольгований кольоровий папір | 6 | ||
Затискач | крокодил | 14 | ||
Провід | 7 |
Прикріплені файли:
- HappyNewYear_03.zip (2 Кб)