INHOUDSOPGAWE:

Mikrokontroleerder-stofklankopwekker in C-kode: 8 stappe (met foto's)
Mikrokontroleerder-stofklankopwekker in C-kode: 8 stappe (met foto's)

Video: Mikrokontroleerder-stofklankopwekker in C-kode: 8 stappe (met foto's)

Video: Mikrokontroleerder-stofklankopwekker in C-kode: 8 stappe (met foto's)
Video: Счетчик подписчиков YouTube с ESP8266 и Arduino 2024, November
Anonim
Mikrobeheerder Stof Toon Generator in C-kode
Mikrobeheerder Stof Toon Generator in C-kode

Einde Oktober verlede jaar het instruktiewe gebruikers carmitsu vir my 'n boodskap gestuur nadat ek my kosblik -synth gesien het. Uit sy boodskap: Ek gee musiek op laerskool. Ons speel baie blokfluitmusiek. dws die kinders speel klein fluitjies …… Ek het verskeie spesiale behoeftes wat hierdie swart plakkaatborde kan gebruik met sirkels met die naam van die noot op. Hierdie studente druk op die sirkels met notename, terwyl die res van die studente 'n liedjie speel … Die meeste kinders met spesiale behoeftes kan dit redelik goed en betyds met die musiek doen. Ek wil 'n baie eenvoudige klankgenerator bou, sodat hierdie kinders dieselfde toonhoogte kan speel as dié wat die studente op hul blokfluit speel. Ek sou net 'n paar staanplekke wees. Ek het gedink ek kan 'n klein knoppie aan die onderkant van hul ronde sirkels heg, sodat wanneer hulle daarop druk, die geluid uit 'n klein luidspreker sal kom, hard genoeg sodat hulle kan hoor. Hoe kon ek dit weerstaan as ek 'n onderwyser was en van skool gehou het? Om die waarheid te sê, ek kon nie. Dit is amper 'n kroniek van die projek en instruksies oor hoe u u eie bou.

Stap 1: Die begin of die rede waarom ek nie by analoog kon bly nie

Die begin of waarom ek nie by analoog kon bly nie
Die begin of waarom ek nie by analoog kon bly nie

Die goeie dinge begin op die volgende bladsy. As u wil weet hoe ek die onderdele wat ek gedoen het, gebruik het, lees dan verder. Die ware timer: Nadat ek 'n bietjie gedink het aan die projek, het ek dadelik aan die piezo-toongenerator uit my op-amps Forest Mims III-boek gedink. Dit lyk asof dit 'n goeie pad is, dit is net 'n piezo, 'n 741 IC en 'n paar passiewe komponente. Geen groot probleem nie? Dit het 2 probleme, 1) as u die skakelaar ingedruk het, is dit moontlik om die toonhoogte te verander 2) dit is verby onmoontlik om in te stem. Die eerste kan waarskynlik met 'n paar debounce -tegnologie oorkom word, alhoewel ek nie weet hoe om dit te doen sonder om 'n ander toonbank by te voeg nie. Dit kan ook 'n probleem wees met die gebruik van 'n piezo. Die tweede uitgawe het net ongemaklik geraak toe u 'n sekere toonhoogte probeer raak het. Wat van die 555? Die datablad toon 'n tydsfunksie wat gebaseer is op weerstande en kapasitors. Dit is wonderlik totdat u die werklike waardes van dele in die regte wêreld begin intik, en dan vind u dit moeilik om 'n 440Hz -toonhoogte te bereik. U kan snypotte gebruik om dit in te stel, maar mettertyd is dit geneig om te beweeg. Deur die instrument voortdurend op te stel, saamgestel bo-op die vinnige styging in die koste en hoeveelheid onderdele, en my vrou wat die toonhoogte verander toe sy op die knoppie druk, het die 555 vir hierdie projek gedood. op-amps sedert ek gebore is. Hoe moeilik kan dit wees om 'n baie eenvoudige een te maak, met min dele en spesifieke aantekeninge? Harder as wat ek gedink het. Die meeste ontwerpe daar buite is baie ingewikkeld vir hierdie projek. Synth -ontwerpers is op soek na die perfekte golfvorm/toon. Dit is direk in stryd met 'n projek wat veronderstel is om goedkoop genoeg te wees vir skool- of onderwysersbegrotings. Dit is maklik genoeg om 'n sleutelbord te bou, dit is net 'n klomp weerstande en krag of 'n klomp diodes en krag. Dit is die res van die kringontwerp en die koste van pasgemaakte PCB's wat op die eerste elektroniese vlak handuit ruk vir iemand. Herdefiniëring van die projek: die projek is dus herdefinieer voordat ek regtig aan die gang was. Ek het iets nodig gehad wat betyds met 'n druk op 'n knoppie 'n luidsprekerpen kon wissel. Ek wou nie 'n PCB ontwerp en koop nie. Dit moes so min as moontlik komponente gebruik en as 'n beginnerspak saamgestel word. Dit het my die hele tyd in die gesig gestaar. Duh !! Mikrobeheerder! Mikrobeheerder: Nadat ek 'n Arduino -kit vir Modern Devices Bare Bones en 'n eenvoudige teikenbord van Evil Mad Scientist gekoop het en hulle maande lank op my lessenaar laat sit het, het ek die perfekte inleidingsprojek gehad. Ek het begin kyk na die tyd wat dit neem om albei bymekaar te maak, die leerkurwe vir die kode, die koste, die ekstra dele wat ek nodig het en dit laat doen wat ek wil, en ek het dit op die teikenbord gevestig. Die koste was redelik gelyk, $ 15 plus 'n $ 20 FTDI -kabel vir die Arduino, $ 12 plus 'n $ 22 USBtinyISP -programmeerder. Ek het reeds C ++ geken van die klein kollege waar ek kon staan, en ek het gedink dat C vir mikrobeheerders nie so erg sou wees nie, maar behalwe om 'n liggie te knipper om seker te maak dat ek my kit behoorlik bymekaar sit, het ek geen Arduino -ervaring nie. Albei kan gemonteer word. Dit was nogal 'n opskudding, so ek het besluit op die minder dele van die twee, die teikenbord.

Stap 2: Wat u benodig Rev 1

Wat u nodig het Rev 1
Wat u nodig het Rev 1

Onderdele KosteUSBtinyISP AVR Programmeerkit (USB SpokePOV Dongle) v2.0 $ 22,00 https://www.adafruit.com/index.php? Main_page = product_info & cPath = 16 & products_id = 46 Evil Mad Scientist labs ATmegaXX8 Mini Dev Kits $ 12 Headers, 6-pin DIP, 5-pk $ 2,75 https://evilmadscience.com/tinykitlist/74-atmegaxx8Speaker (8-ohm Mini) $ 2,79https://www.radioshack.com/product/index.jsp? ProductId = 2062406SPST Normaalweg oop tydelike skakelaars (ons gebruik 5) $ 3,49 (4 pakke) https://www.radioshack.com/product/index.jsp?productId=2062539"AAA "batteryhouer $ 1,79 https://www.radioshack.com/product/index.jsp? ProductId = 2102735SPST Submini-skuifskakelaar (opsioneel vir kragskakelaar) $ 2,69 (2-pak) https://www.radioshack.com/product/index.jsp?productId=2062490LED en weerstand (opsioneel, as u 'n kraglig wil hê) $ moet gratis wees as hulle rondlê Draad $ moet ook rondlê Silwer soldeersel (as dit naby kinders gaan, moet u waarskynlik nie lood gebruik nie, ouers raak nogal vreemd oor sulke dinge;)) Vryf alkohol (om weer move flux) As u 'n paar plekke wil bespaar, hoef u nie onderdele by RadioShack te kry nie. Ek het gedoen omdat hulle naby en voorspelbaar is.

Stap 3: Vergadering Rev 1

Vergadering Eerste 1
Vergadering Eerste 1
Vergadering Rev 1
Vergadering Rev 1

Sit u onderdele saam soos aangedui. Maak seker dat u vryfalkohol en 'n vloeibare kwas gebruik as u klaar is met die oplossing van soldeer. Die skematiese is hieronder vir diegene wat dit verkies. D1 en R1 kan wees wat u wil, dit is net 'n kraglig. C1 is net om die krag 'n bietjie meer konsekwent te maak. Ek het 'n 10uF gebruik. Hierdie skematiese weergawe is dieselfde vir die latere weergawes; vervang net drukknoppies vir stofskakelaars. in die laaste hersiening het ek skakelaars bygevoeg na PC4 en PC5 of penne 27 en 28.

Stap 4: Wat u benodig Rev 2

Wat u nodig het Rev 2
Wat u nodig het Rev 2

U ruil dus basies die Radio Shack -knoppies vir handgemaakte materiaal. U benodig: veelvoudige kleure stof, of een kleur as u elke noot dieselfde kleur wil hê. Die kwiltafdeling van u naaste stofwinkel is die beste plek om dit goedkoop te kry. Die kwiltkwartiere kos $ 1,50 en u kan baie skakelaars uit een kry. Geleidende materiaal, ek stel voor dat die Flectron -stof van LessEMF $ 20 is vir 'n stuk van 12 "x54". Jy kan dit by die meeste stofwinkels goedkoop kry. JoAnn het die gereedskap en 25 vir $ 2. Hiervoor benodig u 'n hamer. Draad, ek het 22AWG gebruik, ek stel voor dat u kleiner as u dit het. Smelt, om die gekleurde en geleidende stof aanmekaar te sit. Vra by die winkel en u kan dit waarskynlik by die tuin koop. Dit sal waarskynlik goed werk, alhoewel ek voorstel dat u dit aan iemand vra, ek het eers baie los goed gebruik en daarna oorgegaan na 'n stywer breiwerk. Ek stel voor dat u net 'n paar verskillende soorte probeer, totdat u agterkom wat die beste werk. krimpdrade saam as hulle by mekaar verbyloop, en hulle sal baie beter bly.

Stap 5: Vergadering Rev 2

Vergadering Rev 2
Vergadering Rev 2
Vergadering Rev 2
Vergadering Rev 2
Vergadering Rev 2
Vergadering Rev 2

Lê die veelkleurige stof oor mekaar en sny 'n vierkant uit; dit hoef nie perfek te wees nie. Stryk die stof sodat daar geen voue is nie, plaas dit weer op mekaar en maak seker dat die rande almal pas. Sny die rande wat nie. Sny die boonste en onderste ronde af en laat die linker- en regterkant reguit. U gaan die skakelaar omdraai nadat u naaldwerk gedoen het, dus moenie die afgeronde sye te rond maak nie en laat genoeg hoogte aan die plat kante om die skakelaar maklik deur te druk as u klaar is. Rond die plat kant van die eerste en laaste skakelaar af. Keer oor na u naaimasjien en sit twee van die rondtes bymekaar sodat die goeie kant na mekaar kyk en maak 'n naat aan die plat dele vas. Sodra die bokant van die knoppies vasgemaak, sny vierkante uit die geleidende stof en smelt eenkant. Sny draad in lengte en strook een kant. soldeer die draad om een van die ooglede. (die soldeer sal waarskynlik nie aan die oog vassteek nie) Sny 'n klein gaatjie in die stof aan die een hoek en hamer die oog om die stof en draad vas te maak. verwyder die agterkant van die versmelting en versmelt die geleidende stof aan die agterkant van die gekleurde stof. Herhaal vir al die skakelaars. Om dinge te vergemaklik, kan u die drade saamkrimp wanneer die een draad oor die draad gaan vir die volgende skakelaar. Kry 'n stuk stof in die lengte van die skakelaarset en sny 'n strook geleidende stof in lengte. Anders as die gekleurde skakelaars, is dit 'n lang stuk. Dit is wat die knoppies raak om die verbinding te maak. Sny 'n klein spleet en maak 'n draad daaraan vas met 'n oogjie, soos die gekleurde skakelaars. Smeer dit aan die agterkant van die onderste stof vas. Saai die bo- en onderkant saam met die geleidende stof na buite, gebruik 'n werfstok om die stel om te draai nadat dit vasgewerk is. Sny 'n paar klein gaatjies in die kolfblad, ek gebruik 'n eetstokkie om dit te kry 'n sirkel, verwyder dan die eetstokkie en maak die snit. Sny dit in die vorm en steek dit in die skakelaars. Dit is wat die geleidende stof uitmekaar hou. Dit kan makliker wees om die kolf in te sit terwyl u die skakelaars omdraai in plaas van daarna. Die goed wat ek gebruik het, het taamlik sleg geskeur terwyl ek dit ingesit het, en ek moes 'n ander kolfblad kry. Uiteindelik moet u die drade aan die teikenbord haak, en u is gereed. Die lang onderste strook word gemaal.

Stap 6: Wat u benodig Rev 3

Wat u nodig het Rev 3
Wat u nodig het Rev 3

In Rev 3 het ek die skakelaars onafhanklik van die bedrading gemaak. Dit het baie tyd bespaar. Ek hou ook meer van die voorkoms van die voltooide resultaat, so hier is die nuwe onderdele wat jy nodig het: Snaps, het dit pas by JoAnn's gekry. Hulle het 'n installeringsgereedskap vir $ 7, maar ek sou een van die tanggereedskap voorstel, aangesien ek my gereedskap uitmekaar moes haal om die snaps in die middel te installeer. Naaiwerk is 'n goeie alternatief, hoewel dit langer neem om aan te hou. Geleidende draad, Spark Fun bevat dinge wat in u naaimasjien kan kom. Ek moes baie stadig in my masjien gaan, anders sou die draad breek. U kilometers kan wissel

Stap 7: Vergadering Rev 3

Vergadering Rev 3
Vergadering Rev 3
Vergadering Rev 3
Vergadering Rev 3
Vergadering Rev 3
Vergadering Rev 3
Vergadering Rev 3
Vergadering Rev 3

Hierdie hersiening was baie beter as die vorige in terme van tyd tot bou. Plus, met verwyderbare skakelaars het my gesonde verstand meer as een keer gered. Begin deur die basis te maak. Dit is net 'n kwilt kwart gevou in die helfte. Sit 'n laag kolfblad bo -op en werk vas, en laat 'n gat om dit om te draai. Druk die ding deur die gat, en u het basies 'n tipe kussing. Ek het dit gewat sodat dit makliker was om mee te werk. Gebruik gewone draad en raak moerig. Ek het diamante op hierdie een gemaak, maar miskien sal ek die volgende keer 'n draak agter in sit, of iets goeds. Nou, na die skakelaars. Ek hou van hierdie ontwerp, want u kan basies vooraf baie daarvan maak en net gebruik wat u wil. begin deur 'n stuk karton, papier of stof te gebruik en sny 'n peervorm daaruit. Gebruik dit as 'n gids om 'n bokant en onderkant vir elke skakelaar te sny. Ek sny een kleur vir elke onderkant en 'n ander kleur vir die bokante, maar jy kan kreatief wees en doen wat jy wil. Sny jou gids tot 'n stokkielekkervorm wat maklik in die skakelaar pas. Verleng die "stok" sodat dit oor die rand van die "peer" kan draai. Sny die vorm uit die smeltende en geleidende stof en smelt die een kant van die geleidende stof saam. Verwyder die agterkant van die smeltmateriaal en smelt dit aan die bokant van die stof aan die onderkant en die onderkant van die stof aan die bokant. Draai die ekstra bietjie om die bokant. Gaan na u naaimasjien en plaas gate tussen die boonste en onderste stof. Naai die geleidende stof buite en slaan oor die "stok" -gedeelte van die skakelaar. Ek het gevind dat dit moontlik is om die boonste geleidende stof aan die onderkant vas te maak en 'n kort te maak. Dit is beter om nie deur die geleidende stof te werk nie. Heg snaps aan en die skakelaar is gedoen. Ek het dit makliker gevind om die manlike snap vir al die onderste/GND -verbindings te gebruik en die vroulike snap vir al die tops. Dit maak al die skakelaars uitruilbaar. Die kring: Die ding met die sny van rondes is dat u baie ekstra stukkies het. Ek het my stukkies geneem, groot stukke versmelting saamgesmelt in groot stukke geleidende materiaal en dit gebruik om die kleiner reghoeke wat ek as blokkies gebruik het, uit te sny. Plaas u skakelaars grof en smelt die pads op die basis met genoeg ruimte om 'n lyn daaraan vas te maak. Die voet van die naaimasjien wat ek gebruik het, het nie daartoe gelei dat ek regtig naby die snap was nie, so hou dit in gedagte en gee jouself ruimte. Aangesien ek 'n geleidende draad gekry het wat in my naaimasjien kon kom, het ek net 'n lyn van pad na blok en agterna vasgewerk. Ek moes stadig gaan, anders sou die draad breek, maar dit was baie vinniger as met naaldwerk. Ook met 'n geleidende draad op die spoel en naald, het ek 'n baie goeie verbinding gekry. Die goed breek soos 'n gek, maar 'n bietjie handwerkgom of Elmers maak dit reg. Probeer om die lyne van mekaar af weg te hou, en u hoef nie probleme te hê nie. Finale samestelling: Sluit al u skakelaars aan, koppel die bord, laai kode en u is klaar. Ek het draad gebruik om van die bord na die kussing te kom, en dan het ek die draad met die hand vasgemaak. Vir die volgende weergawe, sal ek die bord in 'n plastiekboks met knope monteer om dit aan die basis vas te maak, sodat ledige vingers dit nie uitmekaar trek nie.

Stap 8: Kode

Kode
Kode

As u nog nooit 'n skyfie geprogrammeer het nie, is dit 'n ietwat uitdagende taak. Dit help nie dat die gereedskap flakkerig is nie en dat u meestal dieselfde operasie verskeie kere moet uitvoer. Die twee beste hulpbronne wat ek gevind het om 'n idee te kry van wat aangaan, is die bladsy vir die USBtinyISP, https://www.ladyada.net/make/usbtinyisp/ en die ongelukskursus in die programmering van die geraas speelgoed, http:/ /blog.makezine.com/archive/2008/05/noise_toy_crashcourse_in.html Dit moet u kan help.

Baie mense hou van Arduino vir hierdie kodering, en daar is niks daarmee verkeerd om dit te gebruik nie, behalwe dat ek voel dat dit baie opblaas in 'n normaalweg eenvoudige program. Ek ken ook C en ken Arduino nie. Miskien eendag, as daar tyd is.:) Kode: {{{#include // Gebruik 'n speld om die SPK /// Typedefs ////////// typedef unsigned char u8 aan te skakel; int main (leeg) {u8 btnState0; u8 btnState1; u8 btnState2; u8 btnState3; u8 btnState4; u8 btnState5; u8 btnState6; DDRB = (1 << DDB6); // Stel SPK in vir uitvoer PORTD = (1 << PD0) | (1 << PD1) | (1 << PD2) | (1 << PD3) | (1 << PD4); // Stel knop hoog PORTC = (1 << PC4) | (1 << PC6); TCCR2B = (1 << CS21); // Stel tydopnemer in terwyl (1) {btnState0 = ~ PINC & (1 << PC5); btnState1 = ~ PINC & (1 << PC4); btnState2 = ~ PIND & (1 << PD0); btnState3 = ~ PIND & (1 << PD1); btnState4 = ~ PIND & (1 << PD2); btnState5 = ~ PIND & (1 << PD3); btnState6 = ~ PIND & (1 << PD4); if (btnState0) {if (TCNT2> = 190) {PORTB ^= (1 << PD6); // Flip SPK Pin TCNT2 = 0; }} if (btnState1) {if (TCNT2> = 179) {PORTB ^= (1 << PD6); // Flip SPK Pin TCNT2 = 0; }} if (btnState2) {if (TCNT2> = 159) {PORTB ^= (1 << PD6); // Flip SPK Pin TCNT2 = 0; }} if (btnState3) {if (TCNT2> = 142) {PORTB ^= (1 << PD6); // Flip SPK Pin TCNT2 = 0; }} if (btnState4) {if (TCNT2> = 126) {PORTB ^= (1 << PD6); // Flip SPK Pin TCNT2 = 0; }} if (btnState5) {if (TCNT2> = 119) {PORTB ^= (1 << PD6); // Flip SPK Pin TCNT2 = 0; }} if (btnState6) {if (TCNT2> = 106) {PORTB ^= (1 << PD6); // Flip SPK Pin TCNT2 = 0; }}}}}}}} Waar kom die staanplekke vandaan? 'N Bietjie wiskunde was nodig. Die timer op die atmega 168 loop op 1MHz. Dit is veel te vinnig vir klank, so ons moet die voorverpakkingsmiddel /8 gebruik. Aangesien ons dan die uitsetpen hoog en laag moet draai om 1 siklus te maak, moet ons die antwoord met 2 deel om die regte toonhoogte te kry. Die formule lyk so: Pitch om kode in te voer = (1000000/8)/(Doelfrekwensie*2) Vir A (440) sou dit 125000/880 = 142,045 of 142 vir ons doeleindes wees, aangesien die waarde 'n heelgetal moet wees. Die doelfrekwensies van notas kan omtrent oral op die internet gevind word en is oor die algemeen dieselfde. Ek wil nog steeds 'n saakverklaring byvoeg in plaas van 'n klomp Ifs te gebruik en PWM te gebruik om die volume en toonhoogte van die luidspreker beter te beheer, maar vir eers werk dit.

Aanbeveel: