W tym projekcie opracujemy generator tonów wykorzystujący Arduino Uno. Będziemy mieć przyciski połączone z UNO, a każdy z nich generuje inną intensywność tonu. Częstotliwość tonu generowanego przez UNO jest taka sama na każdym wewnętrznym. To intensywność dźwięku, która zmienia się z każdym naciśnięciem. To jeden z najłatwiejszych sposobów wykonania fortepianu za pomocą Arduino Uno. Sprawdź także ten obwód fortepianowy.
Tony można zwiększyć do 20. Zapewnia to najlepszą wariację tonów i znacznie płynniejsze zmiany. Intensywność tonu jest zmieniana przez PWM (modulacja szerokości impulsu). Przykład PWM pokazano na poniższym wykresie.
W PWM częstotliwość sygnału lub okres czasu sygnału (Ton + Toff) jest zawsze stały. Zmienia się tylko stosunek czasu WŁĄCZ i WYŁĄCZ. Na przykład na drugim wykresie na powyższym rysunku czas WŁĄCZENIA wynosi 80%, a czas WYŁĄCZENIA 20% całkowitego czasu trwania.
Na trzecim wykresie czas WŁĄCZENIA wynosi 50%, a czas WYŁĄCZENIA 50% całkowitego czasu trwania. Czyli w pierwszym przypadku mamy wskaźnik cła 80%, aw drugim 20%.
Przy tej zmianie współczynnika wypełnienia mamy zmianę w Vrms (średnia kwadratowa wartość napięcia), gdy to napięcie jest podawane do brzęczyka, wydaje inny dźwięk, gdy następuje zmiana współczynnika wypełnienia.
Zamierzamy zaprogramować UNO tak, aby dostarczał sygnał PWM o różnym współczynniku wypełnienia dla każdego z przycisków. Mamy więc pod ręką generator brzmień, który generuje inny ton za każdym naciśnięciem przycisku.
Wymagane składniki
Sprzęt: Arduino Uno, zasilacz (5v), kondensator 1000 uF, kondensator 100 nF, brzęczyk, przyciski (8 sztuk).
Oprogramowanie: AURDINO nightly lub Atmel studio 6.2
Schemat obwodu i objaśnienie robocze
Obwód generatora tonów pokazano na poniższym schemacie.
Aby odfiltrować szum z napięcia zasilania, kondensatory są umieszczone na zaciskach, jak pokazano na schemacie.
PWM Arduino Uno można uzyskać na dowolnym z pinów oznaczonych jako „~” na płytce drukowanej. W UNO jest sześć kanałów PWM. Nie możemy jednak użyć pinów PWM ustanowionych przez PINS 0-7, ponieważ PINS są preferowane dla interfejsu przycisków.
Jest powód dla wyboru PINS 0-7 jako wejść, ponieważ PINS 0-7 reprezentują PORTD mikrokontrolera. Więc w tym drugim przypadku możemy wziąć cały BYTE z PORTD.
Teraz, aby uzyskać inny współczynnik wypełnienia PWM, użyjemy następującego polecenia.
analogWrite (9, VALUE); |
Z powyższego warunku możemy bezpośrednio uzyskać sygnał PWM na odpowiednim pinie. Pierwszy parametr w nawiasach służy do wyboru numeru pinu sygnału PWM. Drugi parametr służy do zapisu współczynnika wypełnienia.
Wartość PWM Arduino Uno można zmienić w zakresie od 0 do 255. Od „0” jako najniższego do „255” jako najwyższego. Z 255 jako współczynnikiem wypełnienia otrzymamy 5V na PIN9. Jeśli współczynnik wypełnienia podano jako 125, na PIN9 otrzymamy 2,5V. Mamy zamiar podzielić współczynnik wypełnienia 0-250 na 8 przycisków podłączonych do PORTD UNO. Tutaj wybieram 25 przyrostów dla każdego przycisku, ale jest to Twój wybór.
Dzięki temu otrzymamy sygnał PWM, którego współczynnik wypełnienia zmienia się z każdym przyciskiem. Mając to na brzęczyk, mamy generator tonów. Działanie tego generatora tonów opartego na Arduino jest wyjaśnione krok po kroku w kodzie C podanym poniżej.