W tym projekcie zamierzamy zbudować kawałek rozrywki z wykorzystaniem Arduino. Wszyscy mamy zwyczaj stukania w Stół lub Pióro w celu tworzenia dowolnej przypadkowej muzyki. Oczywiście może to nie być uważane za dobry manier, ale wszyscy lubimy to robić przynajmniej raz. Dlatego pomyślałem o przeniesieniu go na wyższy poziom, wykorzystując zdolność Arduino do odtwarzania dźwięków. Po zbudowaniu tego projektu będziesz w stanie generować dźwięki, stukając palcami w cokolwiek przewodzącego, i tworzyć własne rytmy, to tak, jakbyś grał na pianinie na dłoni. Brzmi świetnie, więc zbudujmy to.
Wymagane komponenty:
Materiały wymagane do tego projektu są wymienione poniżej, ich trzymanie się nie jest obowiązkowe. Gdy już złapiesz koncepcję, możesz ją zbudować na swój własny sposób.
- Arduini Pro Mini
- Głośnik Peizo
- Czujnik Flex
- Rękawiczki na palce
- Rezystory 10K
- BC547 Tranzystory
- Bateria 9V
Schemat obwodu i wyjaśnienie:
Schemat obwodu dla tego Arduino Palm Piano pokazano poniżej.
Projekt wykorzystuje łącznie cztery czujniki, czyli dwa czujniki flex i dwie pary Darlingtona działające jako czujnik dotyku. Zastosowaliśmy również dwa rezystory obniżające R1 i R2 o wartości 10k każdy, które będą działać jako rezystor obniżający dla czujnika Flex. Tutaj czujnik Flex jest używany do generowania trzech różnych dźwięków za pomocą jednego palca, w zależności od tego, jak bardzo jest zgięty. Możemy więc wytworzyć 6 dźwięków dwoma palcami. Dowiedz się tutaj o czujniku Flex.
Para Darlington:
Zanim przejdziemy dalej, ważne jest, aby wiedzieć, czym jest Darlington i jak dokładnie działa w naszym projekcie. Parę Darlingtona można zdefiniować jako dwa tranzystory bipolarne połączone w taki sposób, że prąd wzmacniany przez pierwszy jest dalej wzmacniany przez drugi tranzystor. Na poniższym obrazku pokazano parę Darlington:
Jak pokazano powyżej, użyliśmy dwóch tranzystorów BC547, których kolektory są połączone w celu zebrania, a emiter pierwszego tranzystora jest połączony z bazą drugiego tranzystora. Obwód ten działa jak wzmacniacz ze wzmocnieniem, co oznacza, że każdy mały sygnał podany do bazy pierwszego tranzystora wystarczy, aby polaryzować bazę drugiego tranzystora. Nasze ciało działa tutaj jak uziemienie, więc za każdym razem, gdy dotykamy podstawy tranzystora, drugi tranzystor jest obciążony. Korzystając z tego na naszą korzyść, zbudowaliśmy czujnik dotyku dla tego projektu.
Pin numer 2 i 3 to piny przerwań w Arduino, które zostaną podniesione za pomocą wewnętrznych rezystorów podciągających, a następnie te piny zostaną utrzymane w uziemieniu za każdym razem, gdy przełącznik Darlington zostanie zamknięty. W ten sposób za każdym razem dotknąć przewód (od podstawy 1 st tranzystora) przerwanie zostanie wyzwolony z Arduino.
Za pomocą dwóch palców można uzyskać tylko dwa rodzaje tonów, dlatego dodałem również czujnik flex, który zmieni ton w zależności od tego, jak bardzo jest zgięty. Zaprogramowałem, aby generować trzy różne tony na palec w zależności od tego, jak bardzo palec (czujnik flex) jest zgięty. Możesz zwiększyć liczbę, jeśli chcesz mieć więcej tonów na wyciągnięcie ręki.
Zrobiłem całą deskę na desce perf, aby łatwo mieściła się w moich dłoniach, ale możesz również użyć płytki prototypowej. Po prostu upewnij się, że w pewnym momencie twoje ciało dotknie masy obwodu. Po przylutowaniu wszystkiego powinno wyglądać mniej więcej tak
Użyłem rękawic z dwoma palcami, aby zabezpieczyć przewody z pary Darlington i czujnika zginania w pozycji, jak pokazano powyżej. Możesz wymyślić własny (lepiej, jeśli to możliwe) pomysł, aby zabezpieczyć je na miejscu podczas odtwarzania swoich dźwięków.
Programowanie Arduino:
Program tego generatora tonów Arduino jest dość prosty. Musimy tylko uważać na przerwania z przewodów Darlingtona i jeśli je znajdziemy, musimy odtworzyć ton, który zależy od tego, jak mocno zgięty jest czujnik flex. Pełny kod znajduje się na końcu tego posta, ale poniżej wyjaśniłem kilka ważnych fragmentów.
Uwaga: Ten program działa z pomocą biblioteki „pitches.h”. Więc upewnij się, że dodałeś plik nagłówkowy do swojego programu, zanim go skompilujesz. Możesz pobrać plik nagłówkowy pitches.h stąd.
W funkcji konfiguracji inicjalizujemy pin 2 i 3 jako wejście z rezystorami podciągającymi. Również zadeklarować je kołków przerwań i wykonać tone1 (), gdy występuje przerwanie na pin 2 i funkcja tone2 (), gdy występuje przerwanie w 3 -cim szpilki. Te przerwania będą wyzwalane, gdy te szpilki osiągną NISKI od stanu podciągnięcia.
void setup () {pinMode (2, INPUT_PULLUP); pinMode (3, INPUT_PULLUP); attachInterrupt (digitalPinToInterrupt (2), tone1, LOW); attachInterrupt (digitalPinToInterrupt (3), tone2, LOW); Serial.begin (9600); }
Wewnątrz funkcji pętli stale sprawdzamy, jak mocno wygięty jest czujnik flex. Na przykład mój FlexSensor 1 podał wartości około 200, gdy został pozostawiony płasko i spadł do 130, gdy wygiąłem go do maksimum, więc zmapowałem wartość od 200 do 130 jako 1 do 3, ponieważ muszę grać 3 różne typy tonów. Musisz dostosować te dwie linie na podstawie wartości czujnika Flex i liczby tonów.
void loop () {flexSensor1 = map (analogRead (A0), 200,130,1,3); // Mapuj z własnymi wartościami w oparciu o twój czujnik flex flexSensor2 = map (analogRead (A1), 170,185,1,3); // Mapuj z własnymi wartościami na podstawie czujnika flex}
Jak widzieliśmy wcześniej, funkcja tone1 () zostanie wykonana po wykryciu przerwania na pinie 2. To, co dzieje się wewnątrz funkcji tone1 (), pokazano powyżej. Patrzymy na wartości FlexSensor1 i odtwarzamy ton oparty na wartości flexSesnor. Dźwięki będą odtwarzane za pomocą funkcji Tone Arduino. Funkcję tone () wyjaśniliśmy w naszym poprzednim projekcie.
void tone1 () {if (flexSensor1 == 1) tone (8, NOTE_D4,50); else if (flexSensor1 == 2) tone (8, NOTE_A3,50); else if (flexSensor1 == 3) tone (8, NOTE_G4,50); else ton (8, NOTE_D4,50); }
Poniższa linia służy do odtwarzania tonu. Możesz odtworzyć dowolny dźwięk, który jest dostępny w pliku nagłówkowym „pitches.h”. Powyższa linia na przykład odtwarza NOTE_A3 na pinie przez 50 milisekund.
ton (8, NOTE_A3,50); // ton (PinNum, nazwa notatki, czas trwania);
Pracujący:
Gdy sprzęt będzie gotowy, prześlij kod i zamontuj go na palcach. Upewnij się, że w pewnym momencie Twoje ciało dotyka uziemienia obwodu. Teraz wystarczy dotknąć dowolnego przewodzącego materiału lub ciała, a odpowiedni dźwięk powinien być słyszalny. Możesz odtwarzać własną melodię lub muzykę, dotykając w różnych odstępach czasu i w różnych pozycjach.
Poniższy film przedstawia przebieg całego projektu. Mam nadzieję, że tworzenie projektu przypadło Ci do gustu. Wszelkie sugestie lub pytania można opublikować w sekcji komentarzy poniżej. Sprawdź również nasz projekt Arduino Audio Player i Arduino Tone Generator.