Skocz do zawartości

Pianinko z regulacją wysokości dźwięku za pomocą czujnika odległości


DominusSaltus

Pomocna odpowiedź

Projekt to niewielkie pianinko, na którym jest możliwość wydobycia jednocześnie czterech dźwięków w tym samym czasie, a skala dźwięków możliwych do zagrania w ogóle wynosi oktawę i jeden półton. Najniższy dźwięk to c4 w notacji amerykańskiej, najwyższy – cis5. Zmianę wysokości dźwięku w tym zakresie umożliwia ultradźwiękowy czujnik odległości. Interwały pomiędzy dźwiękami wydobywanymi przez poszczególne przyciski są stałe i wynoszą:

  • pierwszy przycisk (od lewej) – pryma,
  • drugi przycisk  - tercja mała,
  • trzeci przycisk – tercja duża,
  • czwarty przycisk – kwinta czysta.

Ustawienie dłoni lub płaskiego przedmiotu przed czujnikiem pozwala na dobór prymy. I tak, gdy obiekt znajdzie się w odległości 3-4 cm od czujnika wysokości dźwięków są następujące: c4, dis4, e4, g4;  w przypadku, gdy odległość będzie wynosić 23-24 cm: fis4, a4, b4, cis5. Takie dobranie interwałów pozwala na uzyskanie podstawowych trójdźwięków zarówno durowych jak i mollowych. Pomimo tylko czterech przycisków, przy odrobinie wprawy, użytkownik jest w stanie dotrzeć do każdego dźwięku pomiędzy c4 a cis5. Dodatkowo, na czterocyfrowym siedmiosegmentowym wyświetlaczu pokazywane są nazwy dźwięków aktualnie przypisanych do przycisków. Zapalona kropka oznacza krzyżyk, czyli podwyższenie dźwięku o pół tonu (tzn. jeśli wyświetlona na pierwszej pozycji litera to „C.” oznacza to, że pryma wynosi cis4 (cis5 nie jest dostępne dla prymy i możliwe jest jej zagranie tylko na czwartym przycisku – kwincie czystej).

Całość obsługuje Atmega328p, która komunikuje się z czujnikiem odległości HC-SR04, wysyła sygnał do wzmacniacza audio lm386 oraz wyświetla za pomocą rejestru przesuwnego 74hc595 i ekspandera I2C pcf8574 poszczególne dźwięki na wyświetlaczu. Zasilanie doprowadzane jest przez złącze śrubowe ARK, przy czym szczególnie zalecane jest zasilanie czterema bateriami AA 1.5V – łącznie 6V.

obraz.thumb.png.2939ab622abed641cbdc3b29da53baea.png obraz.thumb.png.0f0aede5ee5ac927eec65cf996d84739.png

Powyżej zamieszczone są dwa zdjęcia gotowego układu. Pianinko zostało wykonane na dwóch płytkach prototypowych tego typu. Zostały one połączone śrubami w plastikowych dystansach.

Poniżej schemat ideowy układu:

obraz.thumb.png.2d6911422ee1e2cd45616fbe02d3801b.png

 

 

 

 

Poniżej opisy poszczególnych modułów projektu:

a) Układ wzmacniacza audio oraz podłączenie przycisków

obraz.thumb.png.251a7cac4b8841a1654259aa89afea6d.png

Sygnał z mikrokontrolera zostaje w pierwszej kolejności przefiltrowany przez filtr RC składający się z rezystora 330 Ω oraz kondensatora 100 nF połączonych równolegle. Częstotliwość odcięcia wynosi około 4800 Hz (zakres częstotliwości słyszalnych przez człowieka wynosi od 20Hz do 20kHz, jednak w tym przypadku nie ma potrzeby stosowania tak dużego zakresu). Następnie szeregowo umieszczone są kondensator C2 zapewniający odcięcie składowej stałej sygnału, rezystor R17, który ogranicza napięcie wejściowe na wzmacniacz oraz potencjometr pełniący funkcję regulatora głośności.

Poza tym dołączone do układu zostały kondensatory i rezystory pełniące funkcje redukcji zakłóceń. Do pinów 1 i 8 został dołączony drugi potencjometr z kondensatorem 10 μF – pełnią funkcję gain w powyższym układzie. Przyciski zostały podłączone między potencjał a masę przez rezystory 220 Ω oraz do pinów cyfrowych mikrokontrolera.

b) Podłączenie mikrokontrolera oraz układ stabilizacji napięcia

obraz.thumb.png.ff3b10ae0d3a8201bfd2f6df437cbee2.png

 

c) Podłączenie wyświetlacza i czujnika

obraz.thumb.png.15bcb13832ef464e166c757ff8394b17.png

Anody poszczególnych cyfr wyświetlacza zostały podłączone przez tranzystory, ponieważ wyjścia układu PCF8574 nie mają odpowiedniej wydajności prądowej, by wysterować diody w wyświetlaczu. Użycie ekspandera jest konieczne z powodu niedostatecznej ilości pinów cyfrowych mikrokontrolera.

Użyte biblioteki:

  • MusicWithoutDelay.h – biblioteka umożliwiająca zaimplementowanie odgrywania muzyki bez opóźnienia w głównej pętli programu
  • SensorToButton.h – biblioteka ułatwiająca obsługiwanie zarowno przycisków jak i czujników
  • NewPing.h – biblioteka obsługująca czujnik odległości
  • PCF8574.h – biblioteka obsługująca ekspander
  • Notes.h – biblioteka własna zawierająca definicje oraz deklaracje stałych

Część z bibliotek została zmodyfikowana:

#define MAX_SENSOR_DISTANCE 26

Dobrana maksymalna wartość odległości w centymetrach (sensor nie będzie oczekiwać na pingi dłużej niż potrzeba, aby dźwięk przebył wymagane 26 centymetrów – dzięki temu zmniejszone zostaje do minimum opóźnienie w programie potrzebne na odczyt odległości), (NewPing.h)

void SensorToButton::debounceIt(uint16_t r){

  changed = defaultTo;     //true for isWasPressed(), false for isWasReleased()

  if (r > myThreshold1 && r <=myThreshold2) {          //modyfikacja warunku

    state = myDir;

  }

Modyfikacja warunku w bibliotece SensorToButton.cpp:
Zmiana strlen_P() na sizeof() w MusicWithoutDelay.cpp w konstruktorze przy zapisywaniu nazwy piosenki:

  pLoc=loc;

  loc = sizeof(mySong);

  totalTime = 0;

  skipCount = pLoc;

  //

  while (((unsigned)skipCount) < sizeof(mySong)) {

    totalTime += skipSolver();

  }

Obsługa układu:

Aby włączyć układ, należy podłączyć zasilanie 6V do złącza śrubowego (po lewej masa, po prawej potencjał dodatni). Następnie naciskając przyciski można odtwarzać odpowiednie dźwięki. Wysokość dobierana jest na podstawie odległości przeszkody od czujnika ultradźwiękowego. W specyfikacji czujnika zalecane jest użycie płaskiej powierzchni o polu równym około 0.5 metra kwadratowego, ale na potrzeby tego projektu wystarczy nieduża powierzchnia, np. Okładka zeszytu czy notesu.

Przeszkoda powinna być umieszczona w odległości od 3 cm (najniższe dźwięki) do 24 cm (najwyższe). Gdy będzie ustawiona poza tym przedziałem lub nieprostopadle do sensora możliwe jest błędne działanie układu lub pozostawiona będzie ostatnia znana wartość. Nazwy dźwięków można odczytywać na bieżąco z wyświetlacza, przy czym lewa cyfra odpowiada lewemu przyciskowi itd. Wyświetlają się litery: c, d, e, f, g, a, b oraz kropki oznaczające podwyższenie dźwięku  o półtonu. Głośność można regulować potencjometrami znajdującymi się z tyłu układu – lewy spełnia funkcję volume, prawy natomiast – gain.

obraz.thumb.png.af2151eacf6b7aafa8a7531382c8808a.png

Przydatne linki:

  1. Dokumentacja biblioteki MusicWithoutDelay
  2. Dokumentacja mikrokontrolera Atmega328p
  3. Artykuł dotyczący budowy układu wzmacniacza audio
  4. https://www.instructables.com/id/Temperature-Displayed-on-4-Digit-7-segment-common/
  5. Dokumentacja układu PCF8574
  6. Dokumentacja układu 74hc595
  • Lubię! 1
Link do komentarza
Share on other sites

Podoba Ci się ten projekt? Zostaw pozytywny komentarz i daj znać autorowi, że zbudował coś fajnego!

Masz uwagi? Napisz kulturalnie co warto zmienić. Doceń pracę autora nad konstrukcją oraz opisem.

@DominusSaltus, właśnie zaakceptowałem opis. Dziękuję za przedstawienie projektu, zachęcam do prezentowania kolejnych DIY oraz aktywności na naszym forum 😉

Masz może jakieś nagranie, które prezentowałoby działający układ?

  • Lubię! 1
Link do komentarza
Share on other sites

Ciekawy projekt. Jak było ze stabilnością prymy w zależności od drgań ręki? Pływała, czy jakoś to kompensowałeś, albo zakresy były dosyć szerokie?

Ja równiez naciskam na pokazanie filmu. Jak nie masz to zrób projekt jeszcze raz 😛

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.