Spisu treści:
- Krok 1: Przekształć partyturę muzyczną w nuty cyfrowe: wartości opóźnienia
- Krok 2: Przekształć partyturę muzyczną w nuty cyfrowe: wartości w hercach
- Krok 3: Projekt obwodu
- Krok 4: Przesyłanie kodu: instrukcje
- Krok 5: Przesyłanie kodu: co to wszystko oznacza?
- Krok 6: Zakończony!
Wideo: Digitalizuj piosenkę za pomocą Arduino: 6 kroków
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:32
Chciałem stworzyć projekt, który łączył dwa moje ulubione przedmioty: naukę i muzykę. Pomyślałem o wszystkich sposobach, w jakie mógłbym połączyć te dwie domeny, i pomyślałem, że byłoby interesujące sprawić, by Arduino grało Fur Elise, wyświetlając wysokość nuty w Hertzach. Teraz zacznijmy budować!
Będziesz potrzebował jednego Arduino Uno lub Mega, wielu kabli rozruchowych, brzęczyka Piezo, płytki stykowej, ekranu LCD 16*2 ze wszystkimi pinami wycieraczek i potencjometru 10k (możesz również usłyszeć, że są one nazywane potencjometrami). Najlepiej jest zebrać wszystkie te materiały razem przed rozpoczęciem budowy.
Krok 1: Przekształć partyturę muzyczną w nuty cyfrowe: wartości opóźnienia
Cyfrowa transkrypcja nuty z partytury na jej cyfrowy odpowiednik składa się z dwóch kroków. Najpierw będziemy musieli wpisać czas trwania notatki w milisekundach. Do tego zadania użyłem wykresu znalezionego w Internecie. W oparciu o to, czy nuta była półnutą, ćwierćnutą, ósemką itd., przepisałem długość nuty na milisekundy. Możesz zobaczyć te liczby w moim kodzie jako delay(); funkcja i liczba w nawiasach będą wartością opóźnienia w milisekundach, którą określiliśmy w tym kroku.
Krok 2: Przekształć partyturę muzyczną w nuty cyfrowe: wartości w hercach
Zanim przystąpię do tego kroku, zdefiniuję kilka terminów technicznych. „Wartość” nuty może być używana zamiennie ze słowami „wysokość”, „wartość” i „nuta”. Teraz musisz przeczytać każdą nutę utworu z partytury. Będziesz musiał następnie przetłumaczyć każdą nutę na Hertz za pomocą tabeli muzyki na Hertz, którą możesz łatwo znaleźć w Internecie. Jedną rzeczą do zapamiętania jest to, że środkowe C jest wymienione na stole jako C4, a oktawa wyższe to C5 i tak dalej. Gdy wszystkie te nuty zostaną przepisane na Hertz, będziesz umieszczał wartości w funkcji ton(x, y, z); gdzie X to numer pin lub const int, sposób definiowania zmiennych, który wyjaśnię później. Y będzie wartością w hercach, którą właśnie zapisałeś, a Z będzie czasem trwania nuty w milisekundach zaokrąglonym do najbliższej setnej części. Opóźnienie(); wartości to czas trwania nuty. Teraz zaprojektujmy obwód, który może odtwarzać muzykę.
Krok 3: Projekt obwodu
Teraz, gdy przetłumaczyliśmy wszystkie notatki na wartości cyfrowe, które komputer może zrozumieć, nadszedł czas na zbudowanie obwodu. Rozpocznij od wzięcia płytki stykowej i umieszczenie ekranu LCD z pierwszym pinem (GND) w rzędzie 14. Umieść brzęczyk w dowolnym miejscu i umieść obok niego potencjometr. Celem jest wyrównanie wszystkiego, aby zminimalizować bałagan na przewodach. Umieść Arduino obok płytki stykowej i podłącz pin 5v do szyny dodatniej płytki stykowej, a pin uziemiający do szyny ujemnej. Teraz jesteśmy gotowi do podłączenia zworek pomiędzy Arduino a komponentami.
Porozmawiajmy teraz o pinach na wyświetlaczu LCD i o tym, jak je podłączyć.
GND oznacza uziemienie, jest to przewód ujemny w prądzie stałym. Podłącz GND do ujemnej szyny płytki stykowej.
VCC to skrót od Voltage at the Common Collector, do którego podłączasz swoje 5-woltowe źródło zasilania (dodatnia szyna zasilająca).
VO oznacza kontrast, podłącz go do środkowego styku potencjometru. Podłącz lewy pin potencjometru do dodatniej szyny zasilającej, a prawy pin do uziemionej szyny zasilającej.
RS oznacza Register Select i jest używany przez Arduino, aby poinformować wyświetlacz, gdzie przechowywać dane. Podłącz ten pin do pinu 12 w Arduino.
RW oznacza pin odczytu/zapisu, którego Arduino używa do sprawdzania, czy ekran pokazuje to, co zaprogramowałeś. Podłącz ten pin do szyny ujemnej na płytce stykowej.
E oznacza Enable, które informuje wyświetlacz LCD, które piksele należy włączyć (włączyć) lub wyłączyć (wyłączyć). Podłącz ten pin do pinu Arduino 11.
D4, D5, D6 i D7 to styki wyświetlacza, które kontrolują wyświetlane znaki i litery. Podłącz je odpowiednio do pinów 5, 4, 3 i 2 Arduino.
Pin A, czasami oznaczony jako LED, jest anodą LED podświetlenia. Podłącz go do dodatniej szyny zasilającej za pomocą przewodu lub rezystora 220 omów. Rezystor jest lepszy do dłuższego użytkowania, ponieważ oszczędza wyświetlacz LCD, ale jeśli urządzenie nie będzie używane w dzień iw nocy, nie potrzebujesz rezystora.
Pin K, czasami również (mylnie) oznaczony jako LED, jest pinem uziemiającym LED. Podłącz to do uziemionej szyny zasilającej.
Krok 4: Przesyłanie kodu: instrukcje
Podłącz Arduino do portu USB komputera. Prześlij poniższy kod za pomocą programatora Arduino IDE.
#włączać
const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2; LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
pusta konfiguracja () {
// ustaw liczbę kolumn i wierszy LCD: lcd.begin(16, 2); // Wydrukuj wiadomość na wyświetlaczu LCD. lcd.print("Podziałka w hercach:!"); opóźnienie (1000); void loop() { //odtwórz e4 delay(600);//pauza na 0,6 sekundy dźwięk(10, 329,63, 300);//odtwórz e do brzęczyka na pinie 10, ostatni przez 0,3 sekundy lcd.print(" 329.63");//wyświetlanie komunikatu na LCD "329.63"
opóźnienie (350);//opóźnienie o 0,35 sekundy
lcd.clear();//wyczyść LCD i zresetuj dla następnej wiadomości // odtwórz ton d4#(10, 311.13, 300); lcd.print("311.13"); opóźnienie(350); lcd.clear(); // odtwórz ton e4(10, 329,63, 300); lcd.print("329.63"); opóźnienie(350); lcd.clear(); // odtwórz ton d4#(10, 311,13, 300); lcd.print("311.13"); opóźnienie(350); lcd.clear(); // odtwórz ton e4(10, 329,63, 300); lcd.print("329.63"); opóźnienie(350); lcd.clear(); // odtwórz ton b3(10, 246,94, 300); lcd.print("246.94"); opóźnienie(400); lcd.clear(); // odtwórz ton d4 (10, 293.66, 300); lcd.print("293.66"); opóźnienie(400); lcd.clear(); // odtwórz ton c4(10, 261.63, 300); lcd.print("261.63"); opóźnienie(400); lcd.clear(); // odtwórz ton a3(10, 220, 900); lcd.print("220.0"); opóźnienie (1000); lcd.clear();//line60//helpsave//avrdude.failure.eeprom // odtwórz ton d3(10, 146.83, 300); lcd.print("146.63"); opóźnienie(350); lcd.clear(); //odtwórz dźwięk f3 (10, 174.61, 300); lcd.print("174.61"); opóźnienie(400); lcd.clear(); //odtwórz dźwięk a3 (10, 220, 300); lcd.print("220"); opóźnienie(400); lcd.clear(); // odtwórz ton b3(10, 246,94, 900); lcd.print("246.94"); opóźnienie (1000); lcd.clear();
// odtwórz e3
ton (10, 164,81, 300); lcd.print("164.81"); opóźnienie(400); lcd.clear(); // odtwórz dźwięk g3#(10, 207.65, 300); lcd.print("207.65"); opóźnienie(400); lcd.clear(); // odtwórz ton b3(10, 246,94, 300); lcd.print("246.94"); opóźnienie(400); lcd.clear(); // odtwórz ton c4(10, 261.63, 900); lcd.print("261.63"); opóźnienie (1000); lcd.clear(); //odtwórz e ton(10, 164,81, 300); lcd.print("164.81"); opóźnienie(400); lcd.clear(); // odtwórz ton e4(10, 329,63, 300); lcd.print("329.63"); opóźnienie(400); lcd.clear(); // odtwórz ton d4#(10, 311,13, 300); lcd.print("311.13"); opóźnienie(400); lcd.clear(); // odtwórz ton e4(10, 329,63, 300); lcd.print("329.63"); opóźnienie(400); lcd.clear(); // odtwórz ton d4#(10, 311,13, 300); lcd.print("311.13"); opóźnienie(400); lcd.clear(); // odtwórz ton e4(10, 329,63, 300); lcd.print("329.63"); opóźnienie(400); lcd.clear(); // odtwórz ton b3(10, 246,94, 300); lcd.print("246.94"); opóźnienie(400); lcd.clear(); // odtwórz ton d4(10, 293.66, 300); lcd.print("293.66"); opóźnienie(400); lcd.clear(); // odtwórz ton c4(10, 261.63, 300); lcd.print("261.63"); opóźnienie(400); lcd.clear(); // odtwórz ton a3(10, 220, 900); lcd.print("220.0"); opóźnienie (1000); lcd.clear(); // odtwórz ton d3 (10, 146,83, 300); lcd.print("146.83"); opóźnienie(400); lcd.clear(); // odtwórz ton f3(10, 174.61, 300); //eeprom 20--6 yesno, flash 65--0 noyes lcd.print("174.61"); opóźnienie(400); lcd.clear(); // odtwórz ton a3(10, 220, 300); lcd.print("220.0"); opóźnienie(400); lcd.clear(); // odtwórz ton b3(10, 246,94, 900); lcd.print("246.94"); opóźnienie (1000); lcd.clear(); // odtwórz ton f3(10, 174.61, 300); lcd.print("174.61"); opóźnienie(400); lcd.clear(); // odtwórz ton c4(10, 261.63, 300); lcd.print("261.63"); opóźnienie(400); lcd.clear(); // odtwórz ton b3(10, 246,94, 300); lcd.print("246.94"); opóźnienie(400); lcd.clear(); // odtwórz ton a3(10, 220, 900); lcd.print("220.0"); opóźnienie (1000); lcd.clear(); // odtwórz ton b3(10, 246,94, 300); lcd.print("246.94"); opóźnienie(400); lcd.clear(); // odtwórz ton c4(10, 261.63, 300); lcd.print("261.63"); opóźnienie(400); lcd.clear(); // odtwórz ton d4(10, 293.66, 300); lcd.print("293.66"); opóźnienie(400); lcd.clear(); // odtwórz ton e4(10, 329,63, 900); lcd.print("329.63"); opóźnienie (1000); lcd.clear(); // odtwórz dźwięk g3 (10, 196, 300); lcd.print("196,0"); opóźnienie(400); lcd.clear(); // odtwórz dźwięk f4 (10, 349,23, 300); lcd.print("349.23"); opóźnienie(400); lcd.clear(); //odtwórz dźwięk e4 (10, 329,23, 300); lcd.print("329.23"); opóźnienie(400); lcd.clear(); // odtwórz ton d4 (10, 293,63, 900); lcd.print("293.63"); opóźnienie (1000); lcd.clear(); // odtwórz ton e3(10, 164,81, 300); lcd.print("164.81"); opóźnienie(400); lcd.clear(); // odtwórz ton e4(10, 329,63, 300); lcd.print("329.63"); opóźnienie(400); lcd.clear(); // odtwórz ton d4(10, 293.63, 300); lcd.print("293.63"); opóźnienie(400); lcd.clear(); // odtwórz ton c4(10, 261.63, 900); lcd.print("261.63"); opóźnienie (1000); lcd.clear(); // odtwórz ton d3 (10, 146,83, 300); lcd.print("146.83"); opóźnienie(400); lcd.clear(); // odtwórz ton d4(10, 293.63, 300); lcd.print("293.63"); opóźnienie(400); lcd.clear(); // odtwórz ton c4(10, 261.63, 300); lcd.print("261.63"); opóźnienie(400); lcd.clear(); // odtwórz ton b3(10, 246,94, 900); lcd.print("246.94"); opóźnienie (1000); lcd.clear(); // odtwórz ton e4(10, 329,63, 300); lcd.print("329.63"); opóźnienie(400); lcd.clear(); // odtwórz ton d4#(10, 311,13, 300); lcd.print("311.13"); opóźnienie(350); lcd.clear(); // odtwórz ton e4(10, 329,63, 300); lcd.print("329.63"); opóźnienie(350); lcd.clear(); // odtwórz ton d4#(10, 311,13, 300); lcd.print("311.13"); opóźnienie(350); lcd.clear(); // odtwórz ton e4(10, 329,63, 300); lcd.print("329.63"); opóźnienie(350); lcd.clear(); // odtwórz ton b3(10, 246,94, 300); lcd.print("246.94"); opóźnienie(400); lcd.clear(); // odtwórz ton d4 (10, 293.66, 300); lcd.print("293.66"); opóźnienie(400); lcd.clear(); // odtwórz ton c4(10, 261.63, 300); lcd.print("261.63"); opóźnienie(400); lcd.clear(); // odtwórz ton a3(10, 220, 900); lcd.print("220.0"); opóźnienie (1000); lcd.clear(); // odtwórz ton d3 (10, 146,83, 300); lcd.print("146.83"); opóźnienie(350); lcd.clear(); //odtwórz dźwięk f3 (10, 174.61, 300); lcd.print("174.61"); opóźnienie(400); lcd.clear(); //odtwórz dźwięk a3 (10, 220, 300); lcd.print("220.0"); opóźnienie(400); // odtwórz b3 lcd.clear(); ton (10, 246,94, 900); lcd.print("246.94"); opóźnienie (1000); lcd.clear(); // odtwórz ton e3(10, 164,81, 300); lcd.print("164.81"); opóźnienie(400); lcd.clear(); // odtwórz dźwięk g#3(10, 207,65, 300); lcd.print("207.65"); opóźnienie(400); lcd.clear(); // odtwórz ton b3(10, 246,94, 300); lcd.print("246.94"); opóźnienie(400); lcd.clear(); // odtwórz ton c4(10, 261.63, 900); lcd.print("261.63"); opóźnienie (1000); opóźnienie(300); lcd.clear(); //odtwórz dźwięk e3 (10, 164,81, 300); lcd.print("164.81"); opóźnienie(400); lcd.clear(); // odtwórz ton e4(10, 329,63, 300); lcd.print("329.63"); opóźnienie(400); lcd.clear(); // odtwórz ton d4#(10, 311,13, 300); lcd.print("311.13"); opóźnienie(400); lcd.clear(); // odtwórz ton e4(10, 329,63, 300); lcd.print("329.63"); opóźnienie(400); lcd.clear(); // odtwórz ton d4#(10, 311,13, 300); lcd.print("311.13"); opóźnienie(400); lcd.clear(); // odtwórz ton e4(10, 329,63, 300); lcd.print("329.63"); opóźnienie(400); lcd.clear(); // odtwórz ton b3(10, 246,94, 300); lcd.print("246.94"); opóźnienie(400); lcd.clear(); // odtwórz ton d4 (10, 293.66, 300); lcd.print("293.66"); opóźnienie(400); lcd.clear(); // odtwórz ton c4(10, 261.63, 300); lcd.print("261.63"); opóźnienie(400); lcd.clear(); // odtwórz ton a3(10, 220, 900); lcd.print("220.0"); opóźnienie (1000); lcd.clear(); // odtwórz ton d3 (10, 146,83, 300); lcd.print("146.83"); opóźnienie(400); lcd.clear(); // odtwórz ton f3(10, 174.61, 300); lcd.print("174.61"); opóźnienie(400); lcd.clear(); // odtwórz ton a3(10, 220, 300); lcd.print("220.0"); opóźnienie(400); lcd.clear(); // odtwórz ton b3(10, 246,94, 900); lcd.print("246.94"); opóźnienie (1000); lcd.clear(); // odtwórz ton f3(10, 174.61, 300); lcd.print("174.61"); opóźnienie(400); lcd.clear(); // odtwórz ton c4(10, 261.63, 300); lcd.print("261.63"); opóźnienie(400); lcd.clear(); // odtwórz ton b3(10, 246,94, 300); lcd.print("246.94"); opóźnienie(400); lcd.clear(); // odtwórz ton a3(10, 220, 900); lcd.print("220.0"); opóźnienie (1000); lcd.clear(); }
Krok 5: Przesyłanie kodu: co to wszystko oznacza?
Zdefiniujmy niektóre funkcje w języku angielskim, abyś mógł zrozumieć kod.
ton (x, y, z); = zagraj ton o wysokości y Hertz, do brzęczyka na pinie x, przez z milisekund.
lcd.print("XYZ"); = wydrukować wiadomość ze znakami XYZ na ekranie LCD. (np. wyświetl skok herca)
opóźnienie(x); = pauza na x milisekund.
const int X=Y = ustaw zmienną stałą X na pin Y i użyj X lub Y do przypisania zadań do urządzenia.
lcd.clear(); = wyczyść ekran LCD i zresetuj, aby wyświetlić nowy wyświetlacz
pinMode(X, WYJŚCIE); = ustaw pin X dla trybu wyjścia
Gdy zrozumiesz wszystkie te funkcje, możesz łatwo zastąpić zmienne danymi, które zbierasz podczas tłumaczenia utworu, a następnie możesz zakodować własną piosenkę!
Krok 6: Zakończony!
Masz Arduino, które odtwarza Fur Elise i wyświetla wartości nut w Hertzach, albo stworzyłeś Arduino, które odtwarza melodię wybranej piosenki i wyświetla tekst, który chcesz pokazać. Dziękuję za odwiedzenie tego samouczka i mam nadzieję, że ten projekt na Arduino.
Zalecana:
Zrób to sam -- Jak zrobić pająka, którym można sterować za pomocą smartfona za pomocą Arduino Uno: 6 kroków
Zrób to sam || Jak zrobić robota-pająka, którym można sterować za pomocą smartfona za pomocą Arduino Uno: Podczas tworzenia robota-pająka można nauczyć się wielu rzeczy o robotyce. Podobnie jak tworzenie robotów jest zarówno zabawne, jak i trudne. W tym filmie pokażemy, jak zrobić robota Spider, którym możemy sterować za pomocą naszego smartfona (Androi
Sterowanie oświetleniem domu za pomocą Asystenta Google za pomocą Arduino: 7 kroków
Sterowanie oświetleniem domu za pomocą Asystenta Google za pomocą Arduino: (Aktualizacja z 22 sierpnia 2020 r.: Ta instrukcja ma 2 lata i opiera się na niektórych aplikacjach innych firm. Wszelkie zmiany po ich stronie mogą uniemożliwić działanie tego projektu. Może lub nie pracować teraz, ale możesz śledzić to jako odniesienie i modyfikować zgodnie z
Digitalizuj swój system Hi-Fi: 6 kroków (ze zdjęciami)
Digitalizuj swój system Hi-Fi: W tej instrukcji chciałbym pokazać, jak zdigitalizowałem swój analogowy system hi-fi, a tym samym zrealizowałem radio internetowe, dostęp do kolekcji muzyki przechowywanej na moim NAS itp. Implementacja opiera się głównie na Raspberry Pi, czapka Hifiberry i dotyk
Jak zrobić drona za pomocą Arduino UNO - Zrób quadkopter za pomocą mikrokontrolera: 8 kroków (ze zdjęciami)
Jak zrobić drona za pomocą Arduino UNO | Zrób quadkopter za pomocą mikrokontrolera: WprowadzenieOdwiedź mój kanał YouTubeDron to bardzo drogi gadżet (produkt) do kupienia. W tym poście zamierzam omówić, jak robię to tanio?? I jak możesz zrobić taki własny w niskiej cenie… Cóż, w Indiach wszystkie materiały (silniki, ESC
Bezprzewodowy pilot za pomocą modułu 2,4 Ghz NRF24L01 z Arduino - Nrf24l01 4-kanałowy / 6-kanałowy nadajnik-odbiornik do quadkoptera - Helikopter RC - Samolot zdalnie sterowany za pomocą Arduino: 5 kroków (ze zdjęciami)
Bezprzewodowy pilot za pomocą modułu 2,4 Ghz NRF24L01 z Arduino | Nrf24l01 4-kanałowy / 6-kanałowy nadajnik-odbiornik do quadkoptera | Helikopter RC | Samolot RC przy użyciu Arduino: obsługa samochodu RC | Quadkopter | Dron | Samolot RC | Łódź RC, zawsze potrzebujemy odbiornika i nadajnika, załóżmy, że do RC QUADCOPTER potrzebujemy 6-kanałowy nadajnik i odbiornik, a ten typ TX i RX jest zbyt drogi, więc zrobimy go na naszym