V tomto projektu budeme stavět kus zábavy pomocí Arduina. Všichni máme ten zvyk klepat na stůl nebo pero pro vytváření jakékoli náhodné hudby. Samozřejmě to nemusí být považováno za dobrý manýrismus, ale všichni si to užíváme alespoň jednou. Proto mě napadlo posunout to na další úroveň pomocí schopnosti Arduina hrát tóny. Jakmile vytvoříte tento projekt, budete schopni generovat tóny poklepáním prstů na cokoli vodivého a vytvořit si vlastní rytmy, jako byste hráli Piano na dlani. Zní to dobře, tak si to postavme.
Požadované komponenty:
Materiály potřebné pro tento projekt jsou uvedeny níže, není povinné se jich držet. Jakmile tento koncept uchopíte, můžete použít svůj vlastní způsob budování.
- Arduini Pro Mini
- Peizo reproduktor
- Flex senzor
- Prstové rukavice
- 10K rezistory
- Tranzistory BC547
- 9V baterie
Schéma zapojení a vysvětlení:
Schéma zapojení pro toto Arduino Palm Piano je uvedeno níže.
Projekt využívá celkem čtyři senzory, tj. Dva flex senzory a dva páry Darlingtonů, které fungují jako dotykový senzor. Použili jsme také dva stahovací odpory R1 a R2 o hodnotě 10k každý, které budou fungovat jako stahovací odpor pro snímač Flex. Zde se snímač Flex používá ke generování tří různých tónů pomocí jednoho prstu podle toho, jak moc se ohnul. Takže můžeme vytvořit 6 zvuků pomocí dvou prstů. Zde se dozvíte více o Flex senzoru.
Darlington Pair:
Než budeme pokračovat, je důležité vědět, co je Darlington a jak přesně to funguje v našem projektu. Darlingtonův pár lze definovat jako dva bipolární tranzistory připojené tak, že proud zesílený prvním je dále zesílen druhým tranzistorem. Na obrázku níže je zobrazen darlingtonský pár:
Jak je uvedeno výše, použili jsme dva tranzistory BC547, jejichž kolektory jsou spojeny a emitor prvního tranzistoru je spojen se základnou druhého tranzistoru. Tento obvod funguje jako zesilovač se ziskem, což znamená, že jakýkoli malý signál daný základně prvního tranzistoru stačí k ovlivnění základny druhého tranzistoru. Naše tělo zde funguje jako zem, takže kdykoli se dotkneme základny tranzistoru, druhý tranzistor bude zkreslený. Díky tomu jsme k naší prospěch postavili dotykový senzor pro tento projekt.
Kolíky číslo 2 a 3 jsou kolíky přerušení na Arduinu, které budou pomocí interních pull-up rezistorů vytaženy vysoko a poté budou tyto piny přidrženy na zemi, kdykoli se spínač Darlington sepne. Tímto způsobem pokaždé, když se dotkneme drátu (od základny 1. tranzistoru), spustí se přerušení z Arduina.
Použití dvou prstů může vyprodukovat pouze dva typy tónů, proto jsem také přidal senzor flexu, který změní tón podle toho, jak moc je ohnutý. Naprogramoval jsem tak, aby produkoval tři různé tóny na prst podle toho, jak moc je prst (snímač flexu) ohnutý. Chcete-li mít na koncích prstů více tónů, můžete počet zvýšit.
Kompletní desku jsem vyrobil na desce perf, aby se snadno vešla do mých dlaní, ale můžete použít i prkénko na prkénko. Jen se ujistěte, že se vaše tělo v určitém okamžiku dotkne země obvodu. Jakmile vše pájíte, mělo by to vypadat nějak takto
Použil jsem dvě prstové rukavice k zajištění drátů od Darlingtonova páru a snímače flexu v poloze, jak je uvedeno výše. Během hraní svých tónů můžete přijít se svým vlastním (pokud je to možné) nápadem zajistit je na místě.
Programování Arduina:
Program pro tento generátor tónů Arduino Tap je docela přímočarý. Musíme jen dávat pozor na přerušení od Darlingtonových drátů a pokud je nalezneme, musíme přehrát tón, který závisí na tom, kolik ohýbaného snímače je ohnuto. Celý kód je uveden na konci tohoto příspěvku, ale níže jsem vysvětlil několik důležitých částí.
Poznámka: Tento program pracuje pomocí knihovny „pitches.h“. Před kompilací se ujistěte, že jste do svého programu přidali soubor záhlaví. Soubor záhlaví pitches.h si můžete stáhnout zde.
Ve funkci nastavení inicializujeme pin 2 a 3 jako vstup s pull-up rezistory. Také deklarovat jako přerušení kolíky a spustit TONE1 (), když tam je přerušení na pinu 2 a funkce TONE2 (), když tam je přerušení na 3 třetím čepu. Tato přerušení se spustí, kdykoli se tyto piny dostanou LOW z jejich vytaženého stavu.
void setup () {pinMode (2, INPUT_PULLUP); pinMode (3, INPUT_PULLUP); attachInterrupt (digitalPinToInterrupt (2), tone1, LOW); attachInterrupt (digitalPinToInterrupt (3), tone2, LOW); Serial.begin (9600); }
Uvnitř funkce smyčky neustále kontrolujeme, jak moc je ohnutý senzor flexu. Můj FlexSensor 1 například dával hodnoty kolem 200, když byl ponechán plochý a klesl až na 130, když jsem ho ohnul na maximum, takže jsem namapoval hodnotu od 200 do 130 jako 1 až 3, protože musím hrát 3 různé typy tónů. Tyto dva řádky musíte vyladit na základě hodnot senzoru Flex a počtu tónů.
void loop () {flexSensor1 = mapa (analogRead (A0), 200,130,1,3); // Mapujte s vlastními hodnotami na základě vašeho senzoru flex flexSensor2 = mapa (analogRead (A1), 170,185,1,3); // Mapujte své vlastní hodnoty na základě vašeho senzoru flexu}
Jak jsme viděli dříve, funkce tone1 () bude provedena, když je na kolíku 2 detekováno přerušení. Co se děje uvnitř funkce tone1 (), je uvedeno výše. Podíváme se na hodnoty FlexSensor1 a hrajeme tón založený na hodnotě FlexSesnor. Tóny budou přehrávány pomocí funkce Tón Arduina. V našem předchozím projektu jsme vysvětlili funkci tone ().
void tone1 () {if (flexSensor1 == 1) tone (8, NOTE_D4,50); jinak if (flexSensor1 == 2) tón (8, NOTE_A3,50); jinak if (flexSensor1 == 3) tón (8, NOTE_G4,50); else tón (8, NOTE_D4,50); }
Níže uvedený řádek slouží k přehrání tónu. Můžete přehrát jakýkoli tón, který je k dispozici v záhlaví souboru „pitches.h“. Například výše uvedený řádek přehrává POZNÁMKA_A3 na kolíku po dobu 50 milisekund.
tón (8, NOTE_A3,50); // tón (PinNum, název poznámky, doba trvání);
Pracovní:
Jakmile je váš hardware připraven, nahrajte kód a připevněte si jej na prsty. Ujistěte se, že se vaše tělo v určitém okamžiku dotýká země obvodu. Nyní se jednoduše dotkněte vodivého materiálu nebo těla a měli byste slyšet příslušný tón. Klepnutím v různých intervalech a na různých pozicích můžete přehrávat vlastní melodii nebo hudbu.
Video níže ukazuje kompletní opracování ročníku projektu. Doufám, že se vám budování projektu líbilo, jakékoli návrhy nebo dotazy můžete zveřejnit v sekci komentářů níže. Zkontrolujte také náš zvukový přehrávač Arduino a projekt generátoru tónů Arduino.