Spisu treści:

Generator tonu tkaniny mikrokontrolera w kodzie C: 8 kroków (ze zdjęciami)
Generator tonu tkaniny mikrokontrolera w kodzie C: 8 kroków (ze zdjęciami)

Wideo: Generator tonu tkaniny mikrokontrolera w kodzie C: 8 kroków (ze zdjęciami)

Wideo: Generator tonu tkaniny mikrokontrolera w kodzie C: 8 kroków (ze zdjęciami)
Wideo: Мне вопросы не задавать😂 2024, Listopad
Anonim
Generator tonów tkaniny mikrokontrolera w kodzie C
Generator tonów tkaniny mikrokontrolera w kodzie C

Pod koniec października zeszłego roku użytkownik Carmitsu wysłał mi wiadomość po obejrzeniu mojego syntezatora lunchbox. Z jego przesłania: uczę muzyki w szkole podstawowej. Gramy dużo muzyki na flety proste. tzn. dzieci grają na małych fletach…… Mam kilka dzieci o specjalnych potrzebach, które mogą używać tych czarnych tablic plakatowych z kółkami, na których znajduje się nazwa notatki. Ci uczniowie naciskają na kółka z nazwami nut w tym samym czasie, gdy reszta uczniów gra piosenkę… Większość dzieci ze specjalnymi potrzebami może to robić całkiem dobrze i zgodnie z muzyką. To, o co mi chodzi, to zbudowanie bardzo prostego generatora dźwięku, aby te dzieciaki mogły grać na tym samym boisku, na którym grają uczniowie na swoich magnetofonach. Byłbym tylko kilka wyciągów. Pomyślałem, że mógłbym przymocować jakiś mały przycisk do spodu ich okrągłych kółek, tak aby po naciśnięciu na nie dźwięk wydobywał się z małego głośnika, wystarczająco głośnego, aby mogli słyszeć. Mając matkę, która jest nauczycielką i lubiła szkołę, jak mógłbym się oprzeć? Prawdę mówiąc, nie mogłem. To właściwie kronika projektu i instrukcje, jak zbudować własny.

Krok 1: Początek lub dlaczego nie mogłem trzymać się analogu

Początek, czyli dlaczego nie mogłem trzymać się analogu
Początek, czyli dlaczego nie mogłem trzymać się analogu

Dobre rzeczy zaczynają się na następnej stronie. Jeśli chcesz wiedzieć, w jaki sposób wykorzystałem części, które zrobiłem, czytaj dalej. Prawdziwy zegar: Po zastanowieniu się nad projektem od razu pomyślałem o generatorze piezoelektrycznym z mojej książki Forest Mims III. Wydawało się, że to dobra droga, to tylko piezo, układ scalony 741 i kilka elementów pasywnych. Nic wielkiego, prawda? Cóż, ma 2 problemy, 1) kiedy wciskasz przełącznik, można zmienić wysokość 2) jest prawie niemożliwy do dostrojenia. Pierwszy prawdopodobnie można by pokonać za pomocą jakiejś technologii debounce, chociaż nie wiedziałem, jak to zrobić bez dodania kolejnego licznika. Może to być również problem z używaniem piezo. Drugi problem po prostu stał się nieporęczny, gdy zacząłeś próbować uderzyć w określony ton. A co z 555? W arkuszu danych pokazano funkcję czasu dlay opartą na rezystorach i kondensatorach. Co jest świetne, dopóki nie zaczniesz wpisywać rzeczywistych wartości części ze świata rzeczywistego, wtedy okaże się, że uderzenie w 440 Hz staje się trochę trudne. Możesz użyć potencjometrów, aby go dostroić, ale z czasem mają tendencję do poruszania się. Ciągłe dostrajanie instrumentu, skompilowane z szybkim wzrostem kosztów i ilości części, a moja żona zmieniająca tonację po naciśnięciu przycisku zabiła 555 dla tego projektu. wzmacniacze operacyjne od czasu, zanim się urodziłem. Jak trudne może być zrobienie naprawdę prostego, z kilkoma częściami i konkretnymi uwagami? Trudniej niż myślałem. Większość projektów jest bardzo skomplikowana dla tego projektu. Projektanci syntezatorów poszukują idealnego kształtu fali/tonu. To bezpośrednio koliduje z projektem, który ma być wystarczająco tani dla budżetu szkoły lub nauczycieli. Zbudowanie klawiatury jest dość łatwe, to tylko kilka rezystorów i mocy lub kilka diod i mocy. To reszta projektu obwodu i koszt niestandardowych płytek drukowanych zaczyna wymykać się spod kontroli kogoś na początkującym poziomie elektroniki. Redefinicja projektu: więc projekt został przedefiniowany, zanim w ogóle zacząłem. Potrzebowałem czegoś, co z czasem przestawi szpilkę głośnika za naciśnięciem przycisku. Nie chciałem projektować i kupować PCB. Musiał używać jak najmniejszej liczby komponentów i być zmontowany jako zestaw dla początkujących. Cały czas patrzył mi prosto w twarz. Duh!! Mikrokontroler! Mikrokontroler: Więc po zakupie zarówno zestawu Modern Devices Bare Bones Arduino, jak i Evil Mad Scientist Simple Target Board i posadzeniu ich na biurku przez miesiące nieużywane, miałem idealny projekt wprowadzający. Zacząłem analizować czas potrzebny na złożenie obu elementów, krzywą uczenia się kodu, koszt, potrzebne dodatkowe części i sprawienie, aby robił to, co chcę, i osiadł na docelowej tablicy. Koszt był dość równy, 15 USD plus kabel FTDI 20 USD dla Arduino, 12 USD plus programator USBtinyISP za 22 USD. Znałem już C++ z małej uczelni, którą mogłem wytrzymać, i pomyślałem, że C dla mikrokontrolerów nie będzie taki zły, podczas gdy poza miganiem światła, aby upewnić się, że poprawnie zmontowałem swój zestaw, nie miałem doświadczenia z Arduino. Oba można było zamontować. To była w zasadzie rzucanie w górę, więc zdecydowałem się na mniejszą część tych dwóch, tablicę docelową.

Krok 2: Czego potrzebujesz Rev 1

Czego potrzebujesz Rev 1
Czego potrzebujesz Rev 1

Koszt części Zestaw programatora USBtinyISP AVR (USB SpokePOV Dongle)v2.0 $22.00https://www.adafruit.com/index.php?main_page=product_info&cPath=16&products_id=46Evil Mad Scientist labs ATmegaXX8 Mini Dev Kits 12 USD Headers, 6-pin DIP, 5-pk $2.75https://evilmadscience.com/tinykitlist/74-atmegaxx8Speaker (8-ohm Mini) $2.79https://www.radioshack.com/product/index.jsp?productId=2062406SPST Normalnie otwarte przełączniki chwilowe (użyliśmy 5) 3,49 USD (4 szt.) https://www.radioshack.com/product/index.jsp?productId=2062539 Uchwyt baterii „AAA” 1,79 USDhttps://www.radioshack.com/product/index.jsp?productId=2102735SPST Submini Slide Switch (opcjonalnie dla włącznika zasilania) $2,69 (2 sztuki)https://www.radioshack.com/product/index.jsp?productId=2062490LED i rezystor (opcjonalnie, jeśli potrzebujesz światła zasilania) $powinny być bezpłatne jeśli leżą w pobliżuDrut $powinien też leżeć w pobliżuSrebrny lut (jeśli to idzie gdzieś w pobliżu dzieci, prawdopodobnie nie należy używać ołowiu, rodzice są dość dziwni z tego typu rzeczy;))Wcieranie alkoholu (aby ponownie move flux) Jeśli chcesz mieć jakieś miejsca, aby zaoszczędzić pieniądze, nie musisz kupować części z RadioShack. Zrobiłem to, ponieważ są bliskie i przewidywalne.

Krok 3: Montaż Rev 1

Montaż Rev 1
Montaż Rev 1
Montaż Rev 1
Montaż Rev 1

Połącz swoje części, jak pokazano. Pamiętaj, aby użyć spirytusu i pędzla do topnika, gdy skończysz, aby pozbyć się topnika z lutowania. Schemat jest poniżej dla tych, którzy go wolą. D1 i R1 mogą być czymkolwiek chcesz, to tylko lampka mocy. C1 ma tylko pomóc uczynić moc bardziej spójną. Użyłem 10uF. Ten schemat jest taki sam dla późniejszych wersji, wystarczy zamienić przyciski na przełączniki tkaniny. w ostatniej wersji dodałem przełączniki na PC4 i PC5 lub piny 27 i 28.

Krok 4: Czego potrzebujesz Rev 2

Czego potrzebujesz Rev 2
Czego potrzebujesz Rev 2

Więc w zasadzie zamieniasz przyciski Radio Shack na ręcznie wykonane tkaniny. Potrzebujesz: Wiele kolorów tkaniny lub jeden kolor, jeśli chcesz, aby każda nuta miała ten sam kolor. Sekcja pikowania w najbliższym sklepie z tkaninami to najlepsze miejsce, aby to tanio kupić. Ćwiartki pikowania kosztują 1,50 USD, a z jednego można uzyskać mnóstwo przełączników. Tkanina przewodząca, sugeruję, że tkanina Flectron od LessEMF to 20 USD za sztukę 12 "x 54" Oczka do mocowania drutu do tkaniny. Możesz je kupić w większości sklepów z tkaninami tanio. JoAnn ma narzędzie i 25 za 2 USD Potrzebujesz do tego młotka. Drut, ja użyłem 22 AWG, sugeruję mniejszy, jeśli go masz. Łączenie, aby kolorowa i przewodząca tkanina skleiła się ze sobą. Zapytaj w sklepie i prawdopodobnie kupisz go na podwórku. To prawdopodobnie zadziałałoby dobrze, chociaż sugeruję, abyś zapytał kogośBatting, najpierw użyłem naprawdę luźnych rzeczy, a potem przerzuciłem się na coś ciaśniejszego. Proponuję po prostu wypróbować kilka różnych, aż znajdziesz to, co działa najlepiej. Rurki termokurczliwe sprawiły, że całość była o wiele łatwiejsza w zarządzaniu. termokurczliwe druty razem, gdy się mijają, będą znacznie lepsze.

Krok 5: Montaż Rev 2

Montaż Rev 2
Montaż Rev 2
Montaż Rev 2
Montaż Rev 2
Montaż Rev 2
Montaż Rev 2

Połóż wielokolorową tkaninę na sobie i wytnij kwadrat, nie musi być idealny. Prasuj tkaninę, aby uzyskać wszelkie zagięcia, ponownie ułóż je jeden na drugim i upewnij się, że wszystkie krawędzie pasują do siebie. Wytnij wszystkie krawędzie, które tego nie robią. Obetnij górną i dolną część, pozostawiając lewą i prawą stronę prosto. Zamierzasz odwrócić przełącznik po szyciu, więc nie rób zaokrąglonych boków zbyt okrągłych i zostaw wystarczająco dużo wysokości na płaskich bokach, aby łatwo wcisnąć przełącznik, gdy skończysz. Zaokrąglij płaską stronę pierwszego i ostatniego przełącznika. Podejdź do maszyny do szycia i połącz ze sobą dwa okrążenia tak, aby dobra strona była zwrócona do siebie i zszyj szew na płaskich częściach. zszyte, wyciąć kwadraty z przewodzącej tkaniny i zgrzać jedną stronę. Przytnij drut na długość i zdejmij jeden koniec. przylutuj drut wokół jednego z oczek. (lut prawdopodobnie nie przyklei się do oczka) Wytnij mały nacięcie w tkaninie w jednym rogu i wbij oczko, aby przymocować tkaninę i drut. usuń podkład z utrwalacza i przyklej przewodzącą tkaninę do tylnej strony kolorowego materiału. Powtórz dla wszystkich przełączników. Aby było łatwiej, możesz obkurczać przewody razem, gdy jeden przewód przechodzi przez przewód dla następnego przełącznika. Pobierz lub utwórz kawałek tkaniny o długości zestawu przełączników i wytnij pasek przewodzącej tkaniny na jego długość. W przeciwieństwie do kolorowych przełączników jest to jeden długi kawałek. To będzie to, czego dotykają przyciski, aby nawiązać połączenie. Wytnij małą szczelinę i przymocuj do niej drut za pomocą oczka, jak kolorowe przełączniki. Przyklej go do tylnej części dolnej tkaniny. Zszyj górę i dół razem z tkaniną przewodzącą skierowaną na zewnątrz, po zszyciu użyj patyczka do odwrócenia kompletu. Wytnij kilka małych otworów w mrugnięciu, do koło, a następnie po prostu wyjmij pałeczki i wykonaj cięcie. Przytnij je do kształtu i włóż do przełączników. To właśnie oddziela tkaninę przewodzącą. Łatwiej jest włożyć mrugnięcie podczas odwracania przełączników zamiast po. Rzeczy, których używałem, podarłem się dość źle podczas wkładania i musiałem uzyskać różne mrugnięcia. Na koniec podłącz przewody do tarczy docelowej i gotowe. Długi dolny pasek zostanie zmielony.

Krok 6: Czego potrzebujesz Rev 3

Czego potrzebujesz Rev 3
Czego potrzebujesz Rev 3

W Rev 3 zrobiłem przełączniki niezależne od okablowania. To zaoszczędziło mnóstwo czasu. O wiele bardziej podoba mi się również wygląd końcowego rezultatu. Oto nowe części, których potrzebujesz: Snapy, właśnie dostałem je od JoAnn. Przybyli z narzędziem instalacyjnym, które nie jest złe za 7 USD. Sugerowałem zamiast tego jedno z narzędzi szczypiec, ponieważ musiałem rozebrać moje narzędzie, aby zainstalować zatrzaski pośrodku. Naszywki byłyby dobrą alternatywą, choć ich przywieranie trwa dłużej. Przewodząca nić Spark Fun ma rzeczy, które zmieszczą się w Twojej maszynie do szycia. Musiałem jechać bardzo wolno w mojej maszynie, inaczej nitka się zerwała. Twój przebieg może się różnić

Krok 7: Montaż Rev 3

Montaż Rev 3
Montaż Rev 3
Montaż Rev 3
Montaż Rev 3
Montaż Rev 3
Montaż Rev 3
Montaż Rev 3
Montaż Rev 3

Ta wersja była o wiele lepsza niż poprzednia pod względem czasu do zbudowania. Dodatkowo posiadanie wymiennych przełączników uratowało mi zdrowie psychiczne więcej niż jeden raz. Zacznij od stworzenia podstawy. To tylko jedna ćwiartka pikowania złożona na pół. Na wierzch połóż warstwę mrugnięcia i zszyj, pozostawiając otwór do odwrócenia. Przepchnij przedmiot przez otwór i w zasadzie masz coś w rodzaju poduszki. Pikowałam, żeby łatwiej się z nią pracowało. Użyj gładkiego gwintu i nakręć. Zrobiłem na tym diamenty, ale może następnym razem wstawię smoka z tyłu, albo coś fajnego. Teraz przejdźmy do przełączników. Podoba mi się ten projekt, ponieważ możesz zrobić ich mnóstwo z wyprzedzeniem i po prostu użyć tego, co chcesz. zacznij od kawałka tektury, papieru lub tkaniny i wytnij z niego kształt gruszki. Użyj tego jako przewodnika, aby wyciąć górę i dół dla każdego przełącznika. Wycięłam jeden kolor dla każdego dołu i inny kolor dla góry, ale możesz być kreatywny i robić, co chcesz. Skróć swój przewodnik do kształtu lizaka, który z łatwością zmieści się w przełączniku. Wydłuż "kij", aby mógł zawinąć się na krawędzi "gruszki". Wytnij kształt z utrwalającej i przewodzącej tkaniny i połącz jedną stronę tkaniny przewodzącej. Usuń podkład z materiału utrwalającego i przyklej go do górnej części tkaniny, która będzie znajdować się na spodzie, i dolnej części tkaniny, która będzie na górze. Owiń dodatkowy kawałek wokół góry. Podejdź do maszyny do szycia i umieść mrugnięcie z otworami między górną a dolną tkaniną. Zszyj materiał przewodzący na zewnątrz i omiń „drążkową” część przełącznika. Stwierdziłem, że można uszyć górną tkaninę przewodzącą do dołu tworząc krótki. Lepiej nie przeszywać tkaniny przewodzącej. Dołącz zatrzaski i przełącznik jest gotowy. Uznałem, że łatwiej jest użyć męskiego zatrzasku do wszystkich połączeń dolnych / GND i żeńskiego zatrzasku do wszystkich górnych części. To sprawia, że wszystkie przełączniki są wymienne. Obwód: Rzeczą w cięciu rund jest to, że masz dużo dodatkowych bitów. Wziąłem moje skrawki, połączyłem duże kawałki kleju z dużymi kawałkami materiału przewodzącego i użyłem ich do wycięcia mniejszych prostokątów, których użyłem jako podkładek. Z grubsza rozłóż przełączniki i połącz podkładki z podstawą z wystarczającą ilością miejsca, aby przyszyć do nich linkę i zatrzasnąć. Stopka maszyny do szycia, której używałem, nie podobała się, że jest naprawdę blisko zatrzasku, więc miej to na uwadze i daj sobie trochę miejsca. Ponieważ dostałem przewodzącą nić, która mogła wejść do mojej maszyny do szycia, po prostu uszyłem linię od podkładki do podkładki iz powrotem. Musiałem jechać powoli, bo inaczej nitka się zerwie, ale było to o tonę szybsze niż szycie ręczne. Również z przewodzącą nicią na szpulce i igle uzyskałem naprawdę dobre, solidne połączenie. Rzeczy strzępią się jak szalone, ale odrobina kleju rzemieślniczego lub Elmers wyjaśnia to. Staraj się trzymać linie z dala od siebie i nie powinieneś mieć żadnych problemów. Montaż końcowy: wciśnij wszystkie przełączniki, podłącz płytkę, wczytaj kod i gotowe. Użyłem drutu, aby dostać się z deski do podkładki, a następnie ręcznie przyszyłem drut do podstawy. Do kolejnej wersji zamontuję płytkę w plastikowym pudełeczku z zatrzaskami, aby przymocować ją do podstawy tak, aby nierozciągnięte palce nie rozrywały jej.

Krok 8: Kod

Kod
Kod

Jeśli nigdy wcześniej nie programowałeś chipa, jest to nieco zniechęcające zadanie. Nie pomaga to, że narzędzia są niestabilne i przez większość czasu trzeba wielokrotnie wykonywać tę samą operację. Dwa najlepsze źródła, jakie znalazłem, aby zrozumieć, co się dzieje, to strona dla USBtinyISP, https://www.ladyada.net/make/usbtinyisp/ i przyspieszony kurs programowania zabawki dźwiękowej, http:/ /blog.makezine.com/archive/2008/05/noise_toy_crashcourse_in.html Powinny one umożliwić Ci rozpoczęcie pracy.

Wiele osób lubi Arduino za to kodowanie i nie ma nic złego w używaniu go, z wyjątkiem tego, że wydaje mi się, że dodaje dużo rozdęcia do normalnie prostego programu. Poza tym znałem C i nie znam Arduino. Może pewnego dnia, jeśli będzie czas.:) Kod: {{{ #include //Użyj pinezki, aby włączyć SPK /// Typedefs ////////// typedef unsigned char u8; int main(void) { u8 btnState0; u8 btnState1; u8 btnState2; u8 btnState3; u8 btnState4; u8 btnState5; u8 btnState6; DDRB = (1 << DDB6); //Ustaw SPK dla wyjścia PORTD =(1 << PD0) | (1 << PD1) | (1 << PD2) | (1 << PD3) | (1 << PD4); //Ustaw przycisk wysoki PORTC = (1 << PC4) | (1 << PC6); TCCR2B = (1 << CS21); //Ustaw Timer while (1) { btnState0 = ~ PINC & (1 << PC5); btnState1 = ~ PINC & (1 << PC4); btnState2 = ~PIN & (1 << PD0); btnState3 = ~PIN & (1 << PD1); btnState4 = ~PIN & (1 << PD2); btnState5 = ~PIN & (1 << PD3); btnState6 = ~PIN & (1 << PD4); if (btnState0) { if (TCNT2 >= 190) { PORTB ^= (1 << PD6); //Odwróć pin SPK TCNT2 = 0; } } if (btnState1) { if (TCNT2 >= 179) { PORTB ^= (1 << PD6); //Odwróć pin SPK TCNT2 = 0; } } if (btnState2) { if (TCNT2 >= 159) { PORTB ^= (1 << PD6); //Odwróć pin SPK TCNT2 = 0; } } if (btnState3) { if (TCNT2 >= 142) { PORTB ^= (1 << PD6); //Odwróć pin SPK TCNT2 = 0; } } if (btnState4) { if (TCNT2 >= 126) { PORTB ^= (1 << PD6); //Odwróć pin SPK TCNT2 = 0; } } if (btnState5) { if (TCNT2 >= 119) { PORTB ^= (1 << PD6); //Odwróć pin SPK TCNT2 = 0; } } if (btnState6) { if (TCNT2 >= 106) { PORTB ^= (1 << PD6); //Odwróć pin SPK TCNT2 = 0; } } } } }}} Skąd pochodzą prezentacje? Potrzebna była trochę matematyki. Zegar timera na atmega 168 działa z częstotliwością 1 MHz. To zdecydowanie za szybko dla dźwięku, więc musimy użyć preskalera /8. Następnie, ponieważ musimy odwrócić pin wyjściowy w górę, a następnie w dół, aby wykonać 1 cykl, musimy podzielić odpowiedź przez 2, aby uzyskać właściwy skok. Wzór wygląda tak: Skok do wprowadzenia kodu= (1000000/8)/(Częstotliwość docelowa*2) Dla A(440) będzie to 125000/880=142.045 lub 142 dla naszych celów, ponieważ wartość musi być liczbą całkowitą. Docelowe częstotliwości notatek można znaleźć niemal w dowolnym miejscu w Internecie i generalnie są one takie same. Nadal chcę dodać oświadczenie o sprawie zamiast używać kilku funkcji If i używać PWM, aby lepiej kontrolować głośność i wysokość głośnika, ale na razie to działa.

Zalecana: