Tokrat si bomo privoščili malce glasbe! Velikokrat se pojavi potreba po raznih zvočnih efektih, na primer med tipkanjem po tipkovnici, za opozorilne zvoke, alarme, budilko, drobne napravice za zabavo in podobno. Programski jezik Bascom ima vgrajen ukaz, s katerim bomo lahko zaigrali tudi preprosto pesmico, z malo več dela pa tudi kakšno bolj zapleteno! Vse je odvisno od vaše potrpežljivosti in želje, da bi mikrokontroler nazadnje le »zaigral« tisto, kar bi mi radi slišali.
Pisk, ton, melodija
Želel bi vam predstaviti neko nalogo in pokazati, kako se te naloge lotiti s splošnim znanjem, raziskovanjem med različnimi viri, z uporabo logičnega razmišljanja, preprosto matematiko in malce iznajdljivosti. Pred nami so namreč vedno neke naloge in za začetek je najbolj pomembno to, da prepoznamo in se seznanimo z osnovnimi lastnostmi ključnih faktorjev, ki v tej nalogi nastopajo.
Najbrž bi želeli kar takoj nekaj zaigrati, vendar ne gre tako hitro! Najprej moramo spoznati zakonitosti in medsebojne odvisnosti dejavnikov, ki vplivajo na točnost višine proizvedenega tona, da bomo posamezne tone lahko razvrstili znotraj oktave in posamezne oktave znotraj slišnega območja.
Dogovorjen je bil in nato tudi določen osnovni ton za uglaševanje vseh inštrumentov, ki je ton A četrte oktave s frekvenco točno 440 Herzov. Vsa glasbila civiliziranega sveta so uglašena tako, zato se lahko glasbeniki z različnih koncev sveta preprosto zberejo v istem orkestru in začnejo igrati. Enako velja tudi za vokalne izvajalce, pri katerih pa lahko celo nekaj Herzov odloča o tem, ali bodo neko skladbo lahko odpeli ali ne!
Na sliki 1 vidimo, kakšne so frekvence posameznih tonov od osnovnega A tona 440 Hz do 880 Hz, ki je A ton naslednje oktave. Že v osnovni šoli smo pri glasbenem pouku morali vedeti, da oktavo sestavlja dvanajst tonov. Ti so na inštrumentih s tipkami »dostopni« prek črno-belih tipk. V vsaki oktavi je sedem belih in pet črnih tipk, skupaj torej res dvanajst. Frekvence posameznih tonov znotraj oktave pa niso razporejene z enakomernimi razmaki, zato jih bomo morali izračunati. Da bo stvar malo bolj preprosta, bomo pomnožili kar osnovne frekvence tonov najnižje oktave, ki jo bomo še igrali na našem »inštrumentu«. Prilagam tabelo, ki je na sliki 2 in iz katere je razvidno tudi to, da ima isti ton v naslednji oktavi točno dvakrat višjo frekvenco od istega tona prejšnje oktave. Še en pomemben podatek, ki nam bo pri naši nalogi zelo koristil.
Če vzamemo za primer osnovno frekvenco tona »C1«, ki je 261,63 Hz, dobimo z množenjem s številom 2 523,26 Hz, in če še to frekvenco pomnožimo z 2, dobimo 1046,52 Hz in tako naprej. To nam bo v programu zelo poenostavilo izbiro in nastavitev oktave. Oglejmo si enega izmed načinov, kako lahko določimo, kakšne višine mora biti nek ton!
Na začetku je treba določiti, v kakšni obliki bomo »note« posredovali mikrokontrolerju. Med več možnimi načini sem izbral podobno obliko, kot jo uporabljajo nekateri mobilni telefoni. V podprogram »Igraj« posredujem dva parametra v obliki dveh znakovnih nizov za višino tona, oktavo in trajanje note.
Igraj „P“, „1/16“ povzroči pavzo v trajanju ene šestnajstinke. Igraj „A2“, „1/8“ pomeni, naj zaigra ton A druge oktave v trajanju ene osminke. Igraj „Ais3“, „1/4“ pomeni ton Ais tretje oktave v trajanju ene četrtinke.
Pri trajanju posamezne note se bomo omejili na 1/1, ½, ¼, 1/8 in 1/16, »C« ton prve oktave, ki jo bomo zaigrali, pa bo pripadal (naši) oktavi 1 in bo imel frekvenco 261,63 Hz. Ta oznaka (zaporedna številka) oktave res nekaj pomeni le nam v tem programu, saj bomo z njo kasneje računali, glasbeniki in fiziki pa imajo svoj način označevanja oktav, ki se spet razlikujeta med sabo.
Podprogramu, ki bo izračunal vse potrebno za pravilno višino in dolžino zvoka, bomo prek vhodnih parametrov določili vrednosti, s katerimi bo operiral. V prvem parametru (Nota) imamo višino tona, številka pa obenem na hitro določa, v katero oktavo spada. Ta številka nam bo prišla zelo prav, saj bo omejila število zank, v kateri bomo osnovno frekvenco tona (v prvi oktavi) pomnožili z dve. Drugi parameter (Trajanje) določa trajanje posameznega tona, saj je s samim Bascom ukazom Sound trajanje različno pri različnih frekvencah.
Bascom ukaz Sound
Na izhodnem priključku ukaz sound povzroči signal pravokotne oblike, ki nastane tako, da ukaz šteje glavni takt mikrokontrolerja, ki je pred tem že deljen z 12 (faktor »K«). Ko prešteje toliko period, kot smo jih določili s parametrom Period, obrne (negira) trenutni signal na izhodnem priključku in spet začne šteti Period število takt impulzov/12 mikrokontrolerja. Iz tega lahko sklepamo, da bo manjša vrednost Period povzročila višjo frekvenco pravokotnega signala na izhodnem priključku in obratno.
Sound Izhodni_pin,_ Pulzov , Period
Parameter Pulzov nam določa, koliko period naj bo pravokotni signal na izhodnem priključku. Spet lahko ugotovimo, da je trajanje tona odvisno od frekvence, saj je trajanje nekega določenega števila period pri višjih frekvencah časovno sorazmerno krajše kot pri nižjih. Ker je trajanje tona odvisno od njegove frekvence, ga bomo morali za enako dolžino not preračunavati.
Elektronika za začetnike – Programiranje mikrokontrolerjev VI (30)
2011_SE196_45