U ovom ćemo projektu napraviti zabavu koristeći Arduino. Svi imamo tu naviku prisluškivati stol ili olovku za stvaranje bilo koje nasumične glazbe. Naravno, to se možda ne bi moglo smatrati dobrim manirom, ali svi uživamo u tome barem jednom. Stoga sam mislio podići ga na sljedeću razinu koristeći Arduinoovu sposobnost reprodukcije tonova. Jednom kada napravite ovaj projekt, moći ćete generirati tonove tapkajući prstima po bilo čemu vodljivom i stvoriti vlastite ritmove, poput sviranja klavira na dlanu. Zvuči u redu, pa, hajde da ga izgradimo.
Potrebne komponente:
Materijali potrebni za ovaj projekt navedeni su u nastavku, nije obavezno pridržavati se istih. Jednom kada shvatite koncept, možete ga koristiti na svoj način.
- Arduini Pro Mini
- Peizo zvučnik
- Flex senzor
- Rukavice za prste
- Otpornici 10K
- BC547 Tranzistori
- 9V baterija
Kružni dijagram i objašnjenje:
Shema sklopa za ovaj Arduino Palm klavir prikazana je u nastavku.

Projekt koristi ukupno četiri senzora, to su dva flex senzora i dva Darlingtonova para koja djeluju kao senzor za dodir. Također smo koristili dva otporna otpora R1 i R2 vrijednosti po 10k, koji će djelovati kao spuštajući otpor za Flex senzor. Ovdje se Flex senzor koristi za stvaranje tri različita tona jednim prstom, ovisno o tome koliko je savijen. Tako možemo proizvesti 6 zvukova pomoću dva prsta. Ovdje saznajte o Flex senzoru.
Darlingtonski par:
Prije nego što nastavimo, važno je znati što je Darlington i kako točno djeluje u našem projektu. Darlingtonov par može se definirati kao dva bipolarna tranzistora povezana na takav način da struja pojačana prvim dodatno pojačava drugi tranzistor. Par Darlington prikazan je na donjoj slici:

Kao što je gore prikazano, koristili smo dva BC547 tranzistora čiji su kolektori vezani za okupljanje, a emiter prvog tranzistora povezan je s bazom drugog tranzistora. Ovaj krug djeluje kao pojačalo s pojačanjem, što znači da je svaki mali signal koji se daje na bazu prvog tranzistora dovoljan da odmakne bazu drugog tranzistora. Naše tijelo ovdje djeluje kao tlo, pa kad god dodirnemo bazu tranzistora, drugi tranzistor postane pristran. Koristeći ovo u svoju korist, izgradili smo senzor za dodir za ovaj projekt.
Pin broj 2 i 3 su prekidačke iglice na Arduinu koje će se visoko povući pomoću unutarnjih otpornika za izvlačenje, a zatim će se te iglice držati na zemlji kad god se Darlingtonova sklopka zatvori. Na taj način svaki put kad dodirnete žicu (od baze 1 -og tranzistora) prekid će se pokrenuti s Arduino.
Korištenje dva prsta može proizvesti samo dvije vrste tonova, stoga sam dodao i fleksibilni senzor koji će promijeniti ton na temelju toga koliko je savijen. Programirao sam da proizvedem tri različita tona po prstu ovisno o tome koliko je prst (flex senzor) savijen. Broj možete povećati ako želite imati više tonova na vrhovima prstiju.
Napravio sam kompletnu ploču na parfemskoj ploči tako da mi lako stane na dlanove, ali možete koristiti i ploču za kruh. Samo se pobrinite da vaše tijelo u nekom trenutku dodirne tlo kruga. Nakon što sve zalemite, to bi trebalo izgledati otprilike ovako


Upotrijebio sam dvije rukavice za prste kako bih učvrstio žice od para Darlington i flex senzora u položaju kako je gore prikazano. Možete smisliti vlastitu (bolje ako je moguće) ideju kako biste ih učvrstili na mjestu dok svirate svoje tonove.
Arduino programiranje:
Program za ovaj Arduino Generator tonskih tonova prilično je izravno usmjeren. Moramo paziti na prekide s Darlingtonovih žica, a ako ih pronađemo, moramo reproducirati ton koji ovisi o tome koliko je savijen senzor savijanja. Kompletni kod dan je na kraju ovog posta, ali u nastavku sam objasnio nekoliko važnih dijelova.
Napomena: Ovaj program radi uz pomoć biblioteke "pitches.h". Stoga provjerite jeste li dodali zaglavnu datoteku u svoj program prije nego što ga prevedete. Datoteku zaglavlja pitches.h možete preuzeti ovdje.
U funkciji podešavanja inicijaliziramo pin 2 i 3 kao ulaz s otporima na izvlačenje. Također ih proglašavamo prekidačima i izvršavamo ton1 () kada postoji prekid na pinu 2 i funkciju tone2 () kada postoji prekid na 3. pinu. Ovi će se prekidi aktivirati kad god ovi pinovi NISU iz svog povučenog stanja.
void setup () {pinMode (2, INPUT_PULLUP); pinMode (3, INPUT_PULLUP); attachInterrupt (digitalPinToInterrupt (2), tone1, LOW); attachInterrupt (digitalPinToInterrupt (3), tone2, LOW); Serial.begin (9600); }
Unutar funkcije petlje neprestano provjeravamo koliko je savijen flex senzor. Na primjer, moj FlexSensor 1 dao je vrijednosti oko 200 kada je ostao ravan i spustio se sve do 130 kada sam ga savio do maksimuma, tako da sam vrijednost od 200 do 130 mapirao kao 1 do 3, jer moram igrati 3 različite vrste tonova. Ove dvije linije morate prilagoditi na temelju vrijednosti vašeg Flex senzora i broja tonova.
void loop () {flexSensor1 = map (analogRead (A0), 200,130,1,3); // Mapiranje s vlastitim vrijednostima na temelju vašeg flex senzora flexSensor2 = map (analogRead (A1), 170,185,1,3); // Mapiranje s vlastitim vrijednostima na temelju vašeg flex senzora}
Kao što smo ranije vidjeli, funkcija tone1 () izvršit će se kada se na pinu 2 otkrije prekid. Što se događa unutar funkcije tone1 () prikazano je gore. Gledamo vrijednosti FlexSensor1 i sviramo ton zasnovan na vrijednosti flexSesnor. Tonovi će se reproducirati pomoću funkcije Arduino Tone. Objasnili smo funkciju tone () u našem prethodnom projektu.
void tone1 () {if (flexSensor1 == 1) tone (8, NOTE_D4,50); inače ako (flexSensor1 == 2) ton (8, NAPOMENA_A3,50); inače if (flexSensor1 == 3) ton (8, NOTE_G4,50); else ton (8, NAPOMENA_D4,50); }
Red za dolje koristi se za reprodukciju tona. Možete reproducirati bilo koji ton koji je dostupan u zaglavnoj datoteci "pitches.h". Na primjer, gornji redak reproducira NOTE_A3 na pin u trajanju od 50 mili sekundi.
ton (8, NAPOMENA_A3,50); // ton (PinNum, naziv bilješke, trajanje);
Radno:
Nakon što hardver bude spreman, prenesite kôd i pričvrstite ga na prste. Uvjerite se da vaše tijelo u nekom trenutku dodiruje tlo kruga. Sada jednostavno dodirnite bilo koji provodni materijal ili svoje tijelo i trebali biste čuti odgovarajući ton. Možete puštati vlastitu melodiju ili glazbu tapkajući u različitim intervalima i na različitim položajima.
Video u nastavku prikazuje cjelokupnu Djelovanje og projekta. Nadam se da vam se svidjelo u izradi projekta, bilo koji prijedlog ili pitanje možete objaviti u odjeljku za komentare u nastavku. Također provjerite naš Arduino Audio Player i Arduino Tone Generator Project.
