V tomto projekte chystáme vybudovať kus zábavy pomocou Arduina. Všetci máme ten zvyk, že klepáme na stôl alebo pero a vytvárame ľubovoľnú hudbu. Samozrejme to nemusí byť považované za dobrý manierizmus, ale všetci si to užívame aspoň raz. Preto ma napadlo posunúť to na ďalšiu úroveň pomocou schopnosti Arduina hrať tóny. Len čo postavíte tento projekt, budete schopní generovať tóny poklepaním prstami na čokoľvek vodivé a vytvoriť si vlastné rytmy, akoby ste hrali na klavíri na dlani. Znie to dobre, postavme to.
Potrebné komponenty:
Materiály potrebné pre tento projekt sú uvedené nižšie, ich dodržiavanie nie je povinné. Len čo sa chopíte konceptu, môžete použiť svoj vlastný spôsob budovania.
- Arduini Pro Mini
- Reproduktor Peizo
- Flex senzor
- Prstové rukavice
- 10K rezistory
- BC547 tranzistory
- 9V batéria
Schéma zapojenia a vysvetlenie:
Schéma zapojenia tohto piana Arduino Palm Piano je uvedená nižšie.
Projekt využíva celkovo štyri senzory, to sú dva senzory flexa a dva páry Darlingtonovcov fungujúce ako dotykový senzor. Použili sme tiež dva sťahovacie odpory R1 a R2, každý s hodnotou 10k, ktoré budú slúžiť ako sťahovací odpor pre snímač Flex. Tu sa snímač Flex používa na generovanie troch rôznych tónov pomocou jedného prsta podľa toho, ako veľmi sa ohýbal. Takže pomocou dvoch prstov môžeme vyrobiť 6 zvukov. Tu sa dozviete viac o Flex senzore.
Darlingtonský pár:
Než budeme pokračovať, je dôležité vedieť, čo je Darlington a ako presne to v našom projekte funguje. Darlingtonov pár možno definovať ako dva bipolárne tranzistory spojené takým spôsobom, že prúd zosilnený prvým je ďalej zosilnený druhým tranzistorom. Na obrázku nižšie je uvedený darlingtonský pár:
Ako je uvedené vyššie, použili sme dva tranzistory BC547, ktorých kolektory sú viazané na zhromažďovanie a vysielač prvého tranzistora je spojený so základňou druhého tranzistora. Tento obvod funguje ako zosilňovač so ziskom, čo znamená, že akýkoľvek malý signál daný do základne prvého tranzistora stačí na ovplyvnenie základne druhého tranzistora. Naše telo tu funguje ako zem, takže vždy, keď sa dotkneme základne tranzistora, dôjde k predpojatiu druhého tranzistora. Vďaka tomu v náš prospech sme pre tento projekt vytvorili dotykový senzor.
Kolíky číslo 2 a 3 sú prerušovacie kolíky na Arduine, ktoré sa pomocou interných pull-up rezistorov vytiahnu vysoko a potom sa tieto kolíky pridržia na zemi, kedykoľvek sa spínač Darlington zatvorí. Týmto spôsobom zakaždým, keď sa dotkneme drôt (od základu 1 st tranzistora) prerušenia sa spustí z Arduino.
Použitie dvoch prstov dokáže vyprodukovať iba dva typy tónov, preto som pridal aj snímač ohybu, ktorý zmení tón na základe jeho ohnutia. Naprogramoval som tak, aby produkoval tri rôzne tóny na prst, na základe toho, ako veľmi je prst (snímač ohybu) ohnutý. Počet môžete zvýšiť, ak chcete mať na končekoch prstov viac tónov.
Kompletnú dosku som vyrobil na doske perf, aby sa mi ľahko zmestila do dlaní, ale môžete použiť aj nepájivú dosku. Len sa uistite, či sa vaše telo v určitom okamihu dotkne zeme obvodu. Po spájkovaní všetkého by to malo vyzerať asi takto
Použil som dve prstové rukavice na zaistenie vodičov od Darlingtonovho páru a senzora flexi v polohe, ako je to znázornené vyššie. Môžete prísť s vlastným (lepšie, ak je to možné) nápadom, ako ich zaistiť na mieste, keď hráte svoje tóny.
Programovanie Arduina:
Program pre tento generátor tónov Arduino Tap Tone Generator je dosť priamy. Musíme len dávať pozor na prerušenia od Darlingtonových drôtov a ak sa nejaké nájdu, musíme zahrať tón, ktorý závisí od toho, koľko ohýbaného senzora ohybu sa nachádza. Celý kód je uvedený na konci tohto príspevku, ale nižšie som vysvetlil niekoľko dôležitých častí.
Poznámka: Tento program pracuje pomocou knižnice „pitches.h“. Pred kompiláciou sa uistite, že ste do programu pridali hlavičkový súbor. Tu si môžete stiahnuť hlavičkový súbor pitches.h.
Vo funkcii nastavenia inicializujeme pin 2 a 3 ako vstup s pull-up rezistormi. Tiež ich vyhlásime za prerušovacie piny a vykonáme tón1 (), keď je prerušenie na kolíku 2, a funkciu tone2 (), keď je prerušenie na treťom kolíku. Tieto prerušenia sa spustia vždy, keď sa tieto piny dostanú zo stavu vytiahnutia na hodnotu LOW.
void setup () {pinMode (2, INPUT_PULLUP); pinMode (3, INPUT_PULLUP); attachInterrupt (digitalPinToInterrupt (2), tone1, LOW); attachInterrupt (digitalPinToInterrupt (3), tone2, LOW); Serial.begin (9600); }
Vo vnútri funkcie slučky neustále kontrolujeme, koľko je flex senzor ohnutý. Môj FlexSensor 1 napríklad dával hodnoty okolo 200, keď zostal plochý, a klesol až na 130, keď som ho ohnul na maximum, takže som namapoval hodnotu od 200 do 130 ako 1 až 3, pretože musím hrať 3 rôzne typy tónov. Tieto dva riadky musíte doladiť na základe hodnôt senzora Flex a počtu tónov.
void loop () {flexSensor1 = mapa (analogRead (A0), 200,130,1,3); // Mapujte svoje vlastné hodnoty na základe vášho senzora flex flexSensor2 = mapa (analogRead (A1), 170,185,1,3); // Zmapujte svoje vlastné hodnoty na základe vášho senzora pružnosti}
Ako sme videli skôr, funkcia tone1 () sa vykoná, keď sa na kolíku 2 zistí prerušenie. Čo sa deje vo vnútri funkcie tone1 (), je zobrazené vyššie. Pozeráme sa na hodnoty FlexSensor1 a hráme tón založený na FlexSesnor Value. Tóny sa budú hrať pomocou funkcie Tón spoločnosti Arduino. Funkciu tone () sme si vysvetlili v našom predchádzajúcom projekte.
void tone1 () {if (flexSensor1 == 1) tone (8, NOTE_D4,50); inak if (flexSensor1 == 2) tón (8, NOTE_A3,50); inak if (flexSensor1 == 3) tón (8, NOTE_G4,50); else tón (8, NOTE_D4,50); }
Na prehranie tónu sa používa nasledujúci riadok. Môžete prehrať akýkoľvek tón, ktorý je k dispozícii v hlavičkovom súbore „pitches.h“. Vyššie uvedený riadok napríklad hrá NOTE_A3 na kolíku po dobu 50 milli sekúnd.
tón (8, NOTE_A3,50); // tón (PinNum, názov poznámky, doba trvania);
Pracovné:
Keď je váš hardvér pripravený, nahrajte kód a pripevnite si ho na prsty. Uistite sa, že sa vaše telo v určitom okamihu dotýka zeme obvodu. Teraz sa jednoducho dotknite vodivého materiálu alebo tela a mali by ste byť schopní počuť príslušný tón. Klepnutím v rôznych intervaloch a na rôznych pozíciách môžete prehrávať vlastnú melódiu alebo hudbu.
Video nižšie ukazuje kompletné opracovanie ročníka projektu. Dúfam, že sa vám projekt páčil, akékoľvek návrhy alebo otázky môžete uviesť v sekcii komentárov nižšie. Skontrolujte tiež náš projekt Arduino Audio Player a projekt generátora tónov Arduino.