Line -... |
Line 1... |
- |
|
1 |
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> |
- |
|
2 |
<html> |
- |
|
3 |
<head> |
- |
|
4 |
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> |
- |
|
5 |
<title> MB01B </title> |
- |
|
6 |
<meta name="keywords" content="stavebnice MLAB melodický zvonek"> |
- |
|
7 |
<meta name="description" content="Projekt MLAB, Programovatelný melodický zvonek"> |
- |
|
8 |
<!-- AUTOINCLUDE START "Page/Head.cs.ihtml" DO NOT REMOVE --> |
- |
|
9 |
<link rel="StyleSheet" href="../../../../Web/CSS/MLAB.css" type="text/css" title="MLAB základní styl"> |
- |
|
10 |
<link rel="StyleSheet" href="../../../../Web/CSS/MLAB_Print.css" type="text/css" media="print"> |
- |
|
11 |
<link rel="shortcut icon" type="image/x-icon" href="../../../../Web/PIC/MLAB.ico"> |
- |
|
12 |
<script type="text/javascript" src="../../../../Web/JS/MLAB_Menu.js"></script> |
- |
|
13 |
<!-- AUTOINCLUDE END --> |
- |
|
14 |
</head> |
- |
|
15 |
|
- |
|
16 |
<body lang="cs"> |
- |
|
17 |
|
- |
|
18 |
<!-- AUTOINCLUDE START "Page/Header.cs.ihtml" DO NOT REMOVE --> |
- |
|
19 |
<!-- ============== HLAVICKA ============== --> |
- |
|
20 |
<div class="Header"> |
- |
|
21 |
<script type="text/javascript"> |
- |
|
22 |
<!-- |
- |
|
23 |
SetRelativePath("../../../../"); |
- |
|
24 |
DrawHeader(); |
- |
|
25 |
// --> |
- |
|
26 |
</script> |
- |
|
27 |
<noscript> |
- |
|
28 |
<p><b> Pro zobrazení (vložení) hlavičky je potřeba JavaScript </b></p> |
- |
|
29 |
</noscript> |
- |
|
30 |
</div> |
- |
|
31 |
<!-- AUTOINCLUDE END --> |
- |
|
32 |
|
- |
|
33 |
<!-- AUTOINCLUDE START "Page/Menu.cs.ihtml" DO NOT REMOVE --> |
- |
|
34 |
<!-- ============== MENU ============== --> |
- |
|
35 |
<div class="Menu"> |
- |
|
36 |
<script type="text/javascript"> |
- |
|
37 |
<!-- |
- |
|
38 |
SetRelativePath("../../../../"); |
- |
|
39 |
DrawMenu(); |
- |
|
40 |
// --> |
- |
|
41 |
</script> |
- |
|
42 |
<noscript> |
- |
|
43 |
<p><b> Pro zobrazení (vložení) menu je potřeba JavaScript </b></p> |
- |
|
44 |
</noscript> |
- |
|
45 |
</div> |
- |
|
46 |
<!-- AUTOINCLUDE END --> |
- |
|
47 |
|
- |
|
48 |
<!-- ============== TEXT ============== --> |
- |
|
49 |
<div class="Text"> |
- |
|
50 |
<p class="Title"> |
- |
|
51 |
Melodický zvonek |
- |
|
52 |
</p> |
- |
|
53 |
<p class=Autor> |
- |
|
54 |
Milan Horkel |
- |
|
55 |
</p> |
- |
|
56 |
<p class="Subtitle"> |
- |
|
57 |
Melodický zvonek MB01 používá pro generování hudebních |
- |
|
58 |
tónů procesor PIC16F819 a umožňuje snadné přeprogramování melodií. Zvonek je |
- |
|
59 |
možno napájet z baterie, protože v klidu neodebírá prakticky žádný |
- |
|
60 |
proud. Na výstup je možné připojit reproduktor. |
- |
|
61 |
</p> |
- |
|
62 |
<p class="Subtitle"> |
- |
|
63 |
<img width=290 height=235 src="Pictures/image001.jpg" |
- |
|
64 |
alt="Obrázek melodického zvonku"> |
- |
|
65 |
</p> |
- |
|
66 |
<p> |
- |
|
67 |
<a href="../MB01B.cs.pdf"><img class="NoBorder" |
- |
|
68 |
src="../../../../Web/PIC/FileIco_PDF.ico" |
- |
|
69 |
alt="Acrobat"> PDF verze</a> |
- |
|
70 |
</p> |
- |
|
71 |
|
- |
|
72 |
<h1> Technické parametry </h1> |
- |
|
73 |
|
- |
|
74 |
<table> |
- |
|
75 |
<tr> |
- |
|
76 |
<th> Parametr </th> |
- |
|
77 |
<th> Hodnota </th> |
- |
|
78 |
<th> Poznámka </th> |
- |
|
79 |
</tr> |
- |
|
80 |
<tr> |
- |
|
81 |
<td> Napájení </td> |
- |
|
82 |
<td> 9V </td> |
- |
|
83 |
<td> Asi od 4V, maximum 12V </td> |
- |
|
84 |
</tr> |
- |
|
85 |
<tr> |
- |
|
86 |
<td> Spotřeba v klidu </td> |
- |
|
87 |
<td> ≈0 </td> |
- |
|
88 |
<td> Dáno zbytkovým proudem tranzistorů Q2 a Q3 </td> |
- |
|
89 |
</tr> |
- |
|
90 |
<tr> |
- |
|
91 |
<td> Spotřeba při běhu (potichu) </td> |
- |
|
92 |
<td> 20mA / 30mA </td> |
- |
|
93 |
<td> Při 9V / 12V </td> |
- |
|
94 |
</tr> |
- |
|
95 |
<tr> |
- |
|
96 |
<td> Spotřeba maximálně (nahlas) </td> |
- |
|
97 |
<td> 150mA </td> |
- |
|
98 |
<td> Při 12V </td> |
- |
|
99 |
</tr> |
- |
|
100 |
<tr> |
- |
|
101 |
<td> Počet melodií </td> |
- |
|
102 |
<td> Max 15 </td> |
- |
|
103 |
<td> Všechny možné kombinace 4 tlačítek </td> |
- |
|
104 |
</tr> |
- |
|
105 |
<tr> |
- |
|
106 |
<td> Délka skladeb celkem </td> |
- |
|
107 |
<td> 512 </td> |
- |
|
108 |
<td> Počítají se noty, mezery a změny parametrů (například tempa) </td> |
- |
|
109 |
</tr> |
- |
|
110 |
<tr> |
- |
|
111 |
<td> Spouštění skladeb </td> |
- |
|
112 |
<td> 4 tlačítka </td> |
- |
|
113 |
<td> Skladby od páté výše se spouštějí stiskem více tlačítek najednou </td> |
- |
|
114 |
</tr> |
- |
|
115 |
<tr> |
- |
|
116 |
<td> Rozměry </td> |
- |
|
117 |
<td> 61x71x20mm </td> |
- |
|
118 |
<td> Bez přečnívajícího konektoru a šroubů </td> |
- |
|
119 |
</tr> |
- |
|
120 |
</table> |
- |
|
121 |
|
- |
|
122 |
<h1> Popis konstrukce </h1> |
- |
|
123 |
|
- |
|
124 |
<h2> Slovo úvodem </h2> |
- |
|
125 |
|
- |
|
126 |
<p> |
- |
|
127 |
Cílem návrhu tohoto melodického zvonku bylo navrhnout moderní řešení, |
- |
|
128 |
se kterým i méně vybavený amatér může něco dále dělat. Díky pokroku |
- |
|
129 |
v technologii výroby integrovaných obvodů se v poslední době |
- |
|
130 |
začínají objevovat velmi zajímavé mikrořadiče (jednočipové mikropočítače) |
- |
|
131 |
za velmi rozumnou cenu. Zde byl použit jeden z nich, jmenuje se |
- |
|
132 |
PIC16F819 a vyrábí jej firma MICROCHIP. |
- |
|
133 |
</p> |
- |
|
134 |
|
- |
|
135 |
<p> |
- |
|
136 |
Procesor je poměrně rychlý (5 miliónů instrukcí za sekundu), má malou |
- |
|
137 |
spotřebu (cca 2mA za plného běhu) a funguje v širokém rozsahu napájení |
- |
|
138 |
(od 2V do 5.5V). Je tedy velmi vhodný pro zařízení napájené z baterie. |
- |
|
139 |
Kromě toho má FLASH paměť programu (2048 slov po 14 bitech), kterou je |
- |
|
140 |
možné mnohokrát přeprogramovat. Procesor může tuto paměť FLASH sám |
- |
|
141 |
přeprogramovat. |
- |
|
142 |
</p> |
- |
|
143 |
|
- |
|
144 |
<p> |
- |
|
145 |
Část paměti programu je vyhrazena pro uložení melodií a je tak možné |
- |
|
146 |
dodatečně melodie měnit. Není k tomu potřeba žádný speciální |
- |
|
147 |
programátor, stačí připojit obyčejné PC. Nové definice skladeb se |
- |
|
148 |
přenášejí do melodického zvonku prostřednictvím sériové linky RS232. |
- |
|
149 |
Aby nemohlo dojít k nechtěnému smazání programu, je část paměti |
- |
|
150 |
FLASH procesoru uzamčena, aby ji procesor nemohl přepsat. |
- |
|
151 |
</p> |
- |
|
152 |
|
- |
|
153 |
<h2> Zapojení melodického zvonku </h2> |
- |
|
154 |
|
- |
|
155 |
<p> |
- |
|
156 |
<img width=486 height=888 src="Pictures/image003.gif" |
- |
|
157 |
alt=""> |
- |
|
158 |
</p> |
- |
|
159 |
|
- |
|
160 |
<h3> Procesor a obvody jeho napájení</h3> |
- |
|
161 |
|
- |
|
162 |
<p> |
- |
|
163 |
Srdcem zvonku je procesor U1. Časování je řízeno krystalem X1. Aby bylo |
- |
|
164 |
možno procesor naprogramovat přímo v zapojení, je zde programovací |
- |
|
165 |
konektor J6, který slouží pro naprogramování programu. |
- |
|
166 |
V běžném provozu ani při přeprogramovávání melodií již není třeba. |
- |
|
167 |
</p> |
- |
|
168 |
|
- |
|
169 |
<p> |
- |
|
170 |
Zvonek začíná hrát po stisku některého tlačítka (nebo více najednou). |
- |
|
171 |
Při stlačení tlačítka se přes diody D3 až D6 přivede zemní potenciál |
- |
|
172 |
na vstupy procesoru. Vstupní nožičky procesoru jsou opatřeny ochrannými |
- |
|
173 |
diodami (jsou uvnitř procesoru) a přes tyto diody dojde k připojení |
- |
|
174 |
zemního potenciálu i signálu GND_PIC. Tím dojde k tomu, že procesor |
- |
|
175 |
je napájen (přes odpor R1) a jeho program se rozběhne. Protože procesor |
- |
|
176 |
snese maximálně 5.5V, je velikost napájecího napětí mezi vývody GND a VDD |
- |
|
177 |
procesoru omezeno Zenerovou diodou D2 na cca 5V. |
- |
|
178 |
</p> |
- |
|
179 |
|
- |
|
180 |
<p> |
- |
|
181 |
Po rozběhu programu se nejdříve aktivuje signál POWER_ON# (do stavu L) |
- |
|
182 |
a přes Q1 a Q2 se připojí GND_PIC na zem. Po skončení melodie se signál |
- |
|
183 |
POWER_ON# deaktivuje (přejde do třetího stavu) a procesor tak sám sobě |
- |
|
184 |
vypne napájení. Tím je zajištěna prakticky nulová klidová spotřeba. |
- |
|
185 |
</p> |
- |
|
186 |
|
- |
|
187 |
<p> |
- |
|
188 |
Na vývodu RB3 procesoru generuje program výstupní signál (ať už přímo |
- |
|
189 |
digitálně nebo pomocí PWM) a na vstupu RB1 očekává sériová data |
- |
|
190 |
z počítače při přeprogramovávání melodií. Přestože RS232 signály jsou |
- |
|
191 |
v rozsahu +/- 5 až +/-15V, je možné tyto signály připojit přímo |
- |
|
192 |
ke vstupu pouze přes omezovací odpor R7. Ochranné diody na vstupu procesoru |
- |
|
193 |
ochrání vstupní tranzistory před napětím nad a pod napájecím napětím |
- |
|
194 |
procesoru. Odpor R8 zajišťuje definovanou úroveň na vstupu, pokud není |
- |
|
195 |
nic připojeno. |
- |
|
196 |
</p> |
- |
|
197 |
|
- |
|
198 |
<p> |
- |
|
199 |
Propojka PGM MODE (J5) slouží k vynucenému zapnutí napájení |
- |
|
200 |
v době programování nových melodií i v době programování |
- |
|
201 |
programu do procesoru přes ISP konektor (J6) . Program před vlastním |
- |
|
202 |
programováním paměti FLASH kontroluje, že je tato propojka nasunuta, |
- |
|
203 |
a je tak zajištěno, že ani při vybité baterii nemůže prakticky dojít |
- |
|
204 |
ke smazání melodie. Ke smazání programu nemůže dojít nikdy, protože tato |
- |
|
205 |
část paměti programu je chráněna nastavením ochranných bitů konfiguračního |
- |
|
206 |
slova a procesor sám sobě tuto paměť nemůže přepsat. |
- |
|
207 |
</p> |
- |
|
208 |
|
- |
|
209 |
<h3> NF Zesilovač </h3> |
- |
|
210 |
|
- |
|
211 |
<p> |
- |
|
212 |
Jako koncový zesilovač byl použit obvod LM386 v klasickém zapojení. |
- |
|
213 |
Jeho napájení je spínáno tranzistorem Q3 jen po dobu hraní melodie. |
- |
|
214 |
Tranzistor Q3 je buzen vývodem RA4 procesoru PIC. |
- |
|
215 |
</p> |
- |
|
216 |
|
- |
|
217 |
<h2> Mechanická konstrukce </h2> |
- |
|
218 |
|
- |
|
219 |
<p> |
- |
|
220 |
Melodický zvonek je sestaven na jednostranném plošném spoji se čtyřmi |
- |
|
221 |
upevňovacími otvory v rozích. Podél kratší strany jsou 4 tlačítka |
- |
|
222 |
pro spouštění melodií. Ke konektoru J3 je možné připojit vnější tlačítka. |
- |
|
223 |
Místo odporového trimru P1 je možné připojit (logaritmický) potenciometr |
- |
|
224 |
jako regulátor hlasitosti. |
- |
|
225 |
</p> |
- |
|
226 |
|
- |
|
227 |
<h2> Osazení a oživení </h2> |
- |
|
228 |
|
- |
|
229 |
<h3> Osazení </h3> |
- |
|
230 |
|
- |
|
231 |
<p> |
- |
|
232 |
Při osazování je třeba dodržet polarity diod, tranzistorů a elektrolytických |
- |
|
233 |
kondenzátorů. Pokud jsou použity funkční součástky a jsou správně osazeny, |
- |
|
234 |
mělo by zařízení fungovat na první pokus. Podmínkou je použití naprogramovaného |
- |
|
235 |
procesoru. |
- |
|
236 |
</p> |
- |
|
237 |
|
- |
|
238 |
<h3> Oživení </h3> |
- |
|
239 |
|
- |
|
240 |
<p> |
- |
|
241 |
Nejprve zkontrolujeme polaritu ochranné diody D1 a vizuálně zkontrolujeme |
- |
|
242 |
zejména zkraty. Procesor i zesilovač můžeme zasunout do patic. Pokud si |
- |
|
243 |
troufáme, můžeme je připájet přímo do desky. |
- |
|
244 |
</p> |
- |
|
245 |
|
- |
|
246 |
<p> |
- |
|
247 |
Pokud máme procesor předem naprogramovaný, je oživení snazší, protože by |
- |
|
248 |
zvonek měl rovnou začít fungovat. Nejprve připojíme zdroj o napětí cca 5V |
- |
|
249 |
s omezením proudu (asi na 100mA). Ujistíme se, že <b>není</b> |
- |
|
250 |
nasunuta propojka na J5. V klidu by zvonek neměl odebírat prakticky |
- |
|
251 |
žádný proud. Po stisku tlačítka by měl zvonek hrát některou |
- |
|
252 |
z předprogramovaných melodií. Pokud hraje, postupně zvyšujeme napájecí |
- |
|
253 |
napětí až na cca 10V a přitom kontrolujeme, zda napájecí napětí procesoru |
- |
|
254 |
(nejsnáze se měří na Zenerově diodě D2) nepřekročí 5.5V. |
- |
|
255 |
</p> |
- |
|
256 |
|
- |
|
257 |
<p> |
- |
|
258 |
Pokud nehraje je třeba zkontrolovat toto: |
- |
|
259 |
</p> |
- |
|
260 |
|
- |
|
261 |
<ul> |
- |
|
262 |
<li> napájení na procesoru při stisku tlačítka (dioda D2) – cca 3 až 5V, </li> |
- |
|
263 |
<li> zda kmitá oscilátor procesoru – logickou sondou na vývodu CLKO procesoru, </li> |
- |
|
264 |
<li> zda fungují tlačítka – napětí na RB4 a RB7 klesá k nule při stisku tlačítka, </li> |
- |
|
265 |
<li> zda spínají tranzistory Q1 a Q2 – při nasunuté propojce na J5, </li> |
- |
|
266 |
<li> zda procesor generuje zvuk - na RB3 telefonním sluchátkem nebo piezoelementem proti zemi, </li> |
- |
|
267 |
<li> zda spíná Q3 napětí pro zesilovač U2. </li> |
- |
|
268 |
</ul> |
- |
|
269 |
|
- |
|
270 |
<p> |
- |
|
271 |
Po skončení skladby by se zvonek měl opět vypnout a neměl by odebírat žádný proud. |
- |
|
272 |
</p> |
- |
|
273 |
|
- |
|
274 |
<p> |
- |
|
275 |
Pokud procesor nemáme nahraný, osadíme jej do zvonku, <b>nasuneme</b> |
- |
|
276 |
propojku na J5 a zkontrolujeme při postupném zvyšování napájecího napětí, |
- |
|
277 |
zda na procesoru (D2) je napětí cca 5V. Pokud ano, je možno ke konektoru J6 |
- |
|
278 |
připojit programátor a nahrát do procesoru program. Propojku J5 opět vyjmeme. |
- |
|
279 |
Zbytek oživování je stejný. |
- |
|
280 |
</p> |
- |
|
281 |
|
- |
|
282 |
<p> |
- |
|
283 |
<img width=432 height=346 src="Pictures/image002.jpg" |
- |
|
284 |
alt="Osazovák"> |
- |
|
285 |
</p> |
- |
|
286 |
|
- |
|
287 |
<table class="Soupiska"> |
- |
|
288 |
<tr> |
- |
|
289 |
<th> Reference </th> |
- |
|
290 |
<th> Hodnota </th> |
- |
|
291 |
<th> Reference </th> |
- |
|
292 |
<th> Hodnota </th> |
- |
|
293 |
</tr> |
- |
|
294 |
<tr> |
- |
|
295 |
<th colspan="2"> Odpory </th> |
- |
|
296 |
<th colspan="2"> Polovodiče a krystaly </th> |
- |
|
297 |
</tr> |
- |
|
298 |
<tr> |
- |
|
299 |
<td> R15 </td> |
- |
|
300 |
<td> 10 </td> |
- |
|
301 |
<td> D1 </td> |
- |
|
302 |
<td> 1N4005 </td> |
- |
|
303 |
</tr> |
- |
|
304 |
<tr> |
- |
|
305 |
<td> R4,R1 </td> |
- |
|
306 |
<td> 680 </td> |
- |
|
307 |
<td> D3,D4,D5,D6 </td> |
- |
|
308 |
<td> 1N4148 </td> |
- |
|
309 |
</tr> |
- |
|
310 |
<tr> |
- |
|
311 |
<td> R11 </td> |
- |
|
312 |
<td> 2k2 </td> |
- |
|
313 |
<td> D2 </td> |
- |
|
314 |
<td> BZX83V005.1 </td> |
- |
|
315 |
</tr> |
- |
|
316 |
<tr> |
- |
|
317 |
<td> R2,R3,R5,R6,R9,R10,R13,R14 </td> |
- |
|
318 |
<td> 10k </td> |
- |
|
319 |
<td> Q1 </td> |
- |
|
320 |
<td> BC327 </td> |
- |
|
321 |
</tr> |
- |
|
322 |
<tr> |
- |
|
323 |
<td> R7,R12 </td> |
- |
|
324 |
<td> 27k </td> |
- |
|
325 |
<td> Q2 </td> |
- |
|
326 |
<td> BC337 </td> |
- |
|
327 |
</tr> |
- |
|
328 |
<tr> |
- |
|
329 |
<td> R8 </td> |
- |
|
330 |
<td> 100k </td> |
- |
|
331 |
<td> Q3 </td> |
- |
|
332 |
<td> BC640 </td> |
- |
|
333 |
</tr> |
- |
|
334 |
<tr> |
- |
|
335 |
<th colspan="2"> Odporové trimry </th> |
- |
|
336 |
<td> U1 </td> |
- |
|
337 |
<td> PIC16F819-I/P </td> |
- |
|
338 |
</tr> |
- |
|
339 |
<tr> |
- |
|
340 |
<td> P1 </td> |
- |
|
341 |
<td> 10k </td> |
- |
|
342 |
<td> U2 </td> |
- |
|
343 |
<td> LM386 </td> |
- |
|
344 |
</tr> |
- |
|
345 |
<tr> |
- |
|
346 |
<th colspan="2"> Kondenzátory </th> |
- |
|
347 |
<td> X1 </td> |
- |
|
348 |
<td> 20MHz </td> |
- |
|
349 |
</tr> |
- |
|
350 |
<tr> |
- |
|
351 |
<td> C4,C5 </td> |
- |
|
352 |
<td> 22pF </td> |
- |
|
353 |
<th colspan="2"> Mechanické součásti </th> |
- |
|
354 |
</tr> |
- |
|
355 |
<tr> |
- |
|
356 |
<td> C14 </td> |
- |
|
357 |
<td> 4n7 </td> |
- |
|
358 |
<td> SW1,SW2,SW3,SW4 </td> |
- |
|
359 |
<td> P-B1720 </td> |
- |
|
360 |
</tr> |
- |
|
361 |
<tr> |
- |
|
362 |
<td> C3,C6,C7,C8,C9 </td> |
- |
|
363 |
<td> 10nF </td> |
- |
|
364 |
<td> J1,J2 </td> |
- |
|
365 |
<td> JUMP3 </td> |
- |
|
366 |
</tr> |
- |
|
367 |
<tr> |
- |
|
368 |
<td> C15,C16 </td> |
- |
|
369 |
<td> 33nF </td> |
- |
|
370 |
<td> J3 </td> |
- |
|
371 |
<td> JUMP5 </td> |
- |
|
372 |
</tr> |
- |
|
373 |
<tr> |
- |
|
374 |
<td> C1,C2,C10 </td> |
- |
|
375 |
<td> 100nF </td> |
- |
|
376 |
<td> J5 </td> |
- |
|
377 |
<td> JUMP2 </td> |
- |
|
378 |
</tr> |
- |
|
379 |
<tr> |
- |
|
380 |
<td> C13 </td> |
- |
|
381 |
<td> 1M/63V </td> |
- |
|
382 |
<td> J6 </td> |
- |
|
383 |
<td> PIC_ISP </td> |
- |
|
384 |
</tr> |
- |
|
385 |
<tr> |
- |
|
386 |
<td> C12 </td> |
- |
|
387 |
<td> 47uF/16V </td> |
- |
|
388 |
<td> J4 </td> |
- |
|
389 |
<td> DB9M_90 </td> |
- |
|
390 |
</tr> |
- |
|
391 |
<tr> |
- |
|
392 |
<td> C11,C17 </td> |
- |
|
393 |
<td> 330uF/16V </td> |
- |
|
394 |
<td> </td> |
- |
|
395 |
<td> </td> |
- |
|
396 |
</tr> |
- |
|
397 |
</table> |
- |
|
398 |
|
- |
|
399 |
<h1> Trocha hudební teorie </h1> |
- |
|
400 |
|
- |
|
401 |
<p> |
- |
|
402 |
Aby hudba zněla libozvučně (příjemně), je třeba, aby používané tóny |
- |
|
403 |
ve stupnicích splňovaly podmínku, že jejich frekvence mají (malý) |
- |
|
404 |
společný násobek. Například dvojnásobek jednoho tónu aby byl |
- |
|
405 |
trojnásobkem jiného tónu. Takových stupnic lze skonstruovat mnoho. |
- |
|
406 |
Aby bylo možné na klavír (nebo podobný nástroj, který umí vyrábět |
- |
|
407 |
jen určité konkrétní tóny) hrát skladby komponované v různých |
- |
|
408 |
stupnicích bez přelaďování nástroje, používá se tzv. temperované ladění. |
- |
|
409 |
Temperované ladění není ideální, jedná se o kompromis hřešící na to, |
- |
|
410 |
že lidský sluch není dokonalý. |
- |
|
411 |
</p> |
- |
|
412 |
|
- |
|
413 |
<p> |
- |
|
414 |
Temperované ladění spočívá v tom, že se oktáva rozdělí na 12 stejných |
- |
|
415 |
dílů, které mají geometrický odstup frekvencí tónů. Oktáva zahrnuje frekvence |
- |
|
416 |
v rozsahu 1:2 a je v ní celkem 7 tónů a 5 půltónů. |
- |
|
417 |
Z toho vyplývá, že poměr sousedních tónů a půltónů je vždy stejný a je |
- |
|
418 |
roven 2<sup>1/12</sup>, tedy přibližně 1:1.06 . |
- |
|
419 |
</p> |
- |
|
420 |
|
- |
|
421 |
<p> |
- |
|
422 |
Následující tabulka uvádí pro jednotlivé tóny jejich frekvence. |
- |
|
423 |
Vychází se z frekvence komorního A, která je 440Hz. Tóny o |
- |
|
424 |
oktávu výš mají frekvence dvakrát vyšší, a naopak tóny o oktávu níž mají |
- |
|
425 |
frekvence poloviční. |
- |
|
426 |
</p> |
- |
|
427 |
|
- |
|
428 |
<table> |
- |
|
429 |
<tr> |
- |
|
430 |
<th> ↓ Tón </th> |
- |
|
431 |
<th colspan="8" class="Center"> Frekvence [Hz]</th> |
- |
|
432 |
</tr> |
- |
|
433 |
<tr> |
- |
|
434 |
<th> Oktáva →</th> |
- |
|
435 |
<th class="Center"> 0 </th> |
- |
|
436 |
<th class="Center"> 1 </th> |
- |
|
437 |
<th class="Center"> 2 </th> |
- |
|
438 |
<th class="Center"> 3 </th> |
- |
|
439 |
<th class="Center"> 4 </th> |
- |
|
440 |
<th class="Center"> 5 </th> |
- |
|
441 |
<th class="Center"> 6 </th> |
- |
|
442 |
<th class="Center"> 7 </th> |
- |
|
443 |
</tr> |
- |
|
444 |
<tr> |
- |
|
445 |
<th> C </th> |
- |
|
446 |
<td> 32,70 </td> |
- |
|
447 |
<td> 65,41 </td> |
- |
|
448 |
<td> 130,8 </td> |
- |
|
449 |
<td> 261,6 </td> |
- |
|
450 |
<td> 523,3 </td> |
- |
|
451 |
<td> 1046,5 </td> |
- |
|
452 |
<td> 2093,0 </td> |
- |
|
453 |
<td> 4186,0 </td> |
- |
|
454 |
</tr> |
- |
|
455 |
<tr> |
- |
|
456 |
<th> Cis </th> |
- |
|
457 |
<td> 34,65 </td> |
- |
|
458 |
<td> 69,30 </td> |
- |
|
459 |
<td> 138,6 </td> |
- |
|
460 |
<td> 277,2 </td> |
- |
|
461 |
<td> 554,4 </td> |
- |
|
462 |
<td> 1108,7 </td> |
- |
|
463 |
<td> 2217,5 </td> |
- |
|
464 |
<td> 4434,9 </td> |
- |
|
465 |
</tr> |
- |
|
466 |
<tr> |
- |
|
467 |
<th> D </th> |
- |
|
468 |
<td> 36,71 </td> |
- |
|
469 |
<td> 73,42 </td> |
- |
|
470 |
<td> 146,8 </td> |
- |
|
471 |
<td> 293,7 </td> |
- |
|
472 |
<td> 587,3 </td> |
- |
|
473 |
<td> 1174,7 </td> |
- |
|
474 |
<td> 2349,3 </td> |
- |
|
475 |
<td> 4698,6 </td> |
- |
|
476 |
</tr> |
- |
|
477 |
<tr> |
- |
|
478 |
<th> Dis </th> |
- |
|
479 |
<td> 38,89 </td> |
- |
|
480 |
<td> 77,78 </td> |
- |
|
481 |
<td> 155,6 </td> |
- |
|
482 |
<td> 311,1 </td> |
- |
|
483 |
<td> 622,3 </td> |
- |
|
484 |
<td> 1244,5 </td> |
- |
|
485 |
<td> 2489,0 </td> |
- |
|
486 |
<td> 4978,0 </td> |
- |
|
487 |
</tr> |
- |
|
488 |
<tr> |
- |
|
489 |
<th> E </th> |
- |
|
490 |
<td> 41,20 </td> |
- |
|
491 |
<td> 82,41 </td> |
- |
|
492 |
<td> 164,8 </td> |
- |
|
493 |
<td> 329,6 </td> |
- |
|
494 |
<td> 659,3 </td> |
- |
|
495 |
<td> 1318,5 </td> |
- |
|
496 |
<td> 2637,0 </td> |
- |
|
497 |
<td> 5274,0 </td> |
- |
|
498 |
</tr> |
- |
|
499 |
<tr> |
- |
|
500 |
<th> F </th> |
- |
|
501 |
<td> 43,65 </td> |
- |
|
502 |
<td> 87,31 </td> |
- |
|
503 |
<td> 174,6 </td> |
- |
|
504 |
<td> 349,2 </td> |
- |
|
505 |
<td> 698,5 </td> |
- |
|
506 |
<td> 1396,9 </td> |
- |
|
507 |
<td> 2793,8 </td> |
- |
|
508 |
<td> 5587,7 </td> |
- |
|
509 |
</tr> |
- |
|
510 |
<tr> |
- |
|
511 |
<th> Fis </th> |
- |
|
512 |
<td> 46,25 </td> |
- |
|
513 |
<td> 92,50 </td> |
- |
|
514 |
<td> 185,0 </td> |
- |
|
515 |
<td> 370,0 </td> |
- |
|
516 |
<td> 740,0 </td> |
- |
|
517 |
<td> 1480,0 </td> |
- |
|
518 |
<td> 2960,0 </td> |
- |
|
519 |
<td> 5919,9 </td> |
- |
|
520 |
</tr> |
- |
|
521 |
<tr> |
- |
|
522 |
<th> G </th> |
- |
|
523 |
<td> 49,00 </td> |
- |
|
524 |
<td> 98,00 </td> |
- |
|
525 |
<td> 196,0 </td> |
- |
|
526 |
<td> 392,0 </td> |
- |
|
527 |
<td> 784,0 </td> |
- |
|
528 |
<td> 1568,0 </td> |
- |
|
529 |
<td> 3136,0 </td> |
- |
|
530 |
<td> 6271,9 </td> |
- |
|
531 |
</tr> |
- |
|
532 |
<tr> |
- |
|
533 |
<th> Gis </th> |
- |
|
534 |
<td> 51,91 </td> |
- |
|
535 |
<td> 103,83 </td> |
- |
|
536 |
<td> 207,7 </td> |
- |
|
537 |
<td> 415,3 </td> |
- |
|
538 |
<td> 830,6 </td> |
- |
|
539 |
<td> 1661,2 </td> |
- |
|
540 |
<td> 3322,4 </td> |
- |
|
541 |
<td> 6644,9 </td> |
- |
|
542 |
</tr> |
- |
|
543 |
<tr> |
- |
|
544 |
<th> A </th> |
- |
|
545 |
<td> 55 </td> |
- |
|
546 |
<td> 110 </td> |
- |
|
547 |
<td> 220 </td> |
- |
|
548 |
<td> <b>440</b> </td> |
- |
|
549 |
<td> 880 </td> |
- |
|
550 |
<td> 1760 </td> |
- |
|
551 |
<td> 3520 </td> |
- |
|
552 |
<td> 7040 </td> |
- |
|
553 |
</tr> |
- |
|
554 |
<tr> |
- |
|
555 |
<th> Ais </th> |
- |
|
556 |
<td> 58,27 </td> |
- |
|
557 |
<td> 116,54 </td> |
- |
|
558 |
<td> 233,1 </td> |
- |
|
559 |
<td> 466,2 </td> |
- |
|
560 |
<td> 932,3 </td> |
- |
|
561 |
<td> 1864,7 </td> |
- |
|
562 |
<td> 3729,3 </td> |
- |
|
563 |
<td> 7458,6 </td> |
- |
|
564 |
</tr> |
- |
|
565 |
<tr> |
- |
|
566 |
<th> H </th> |
- |
|
567 |
<td> 61,74 </td> |
- |
|
568 |
<td> 123,47 </td> |
- |
|
569 |
<td> 246,9 </td> |
- |
|
570 |
<td> 493,9 </td> |
- |
|
571 |
<td> 987,8 </td> |
- |
|
572 |
<td> 1975,5 </td> |
- |
|
573 |
<td> 3951,1 </td> |
- |
|
574 |
<td> 7902,1 </td> |
- |
|
575 |
</tr> |
- |
|
576 |
<tr style='color:gray'> |
- |
|
577 |
<th> ( C ) </th> |
- |
|
578 |
<td> 65,41 </td> |
- |
|
579 |
<td> 130,81 </td> |
- |
|
580 |
<td> 261,6 </td> |
- |
|
581 |
<td> 523,3 </td> |
- |
|
582 |
<td> 1046,5 </td> |
- |
|
583 |
<td> 2093,0 </td> |
- |
|
584 |
<td> 4186,0 </td> |
- |
|
585 |
<td> 8372,0 </td> |
- |
|
586 |
</tr> |
- |
|
587 |
</table> |
- |
|
588 |
|
- |
|
589 |
<h1> Programové vybavení </h1> |
- |
|
590 |
|
- |
|
591 |
<h2> Uživatelský návod </h2> |
- |
|
592 |
|
- |
|
593 |
<h3> Přehrávání skladeb </h3> |
- |
|
594 |
|
- |
|
595 |
<p> |
- |
|
596 |
Při přehrávání není na J5 propojka. Hlasitost se nastavuje trimrem P1. |
- |
|
597 |
</p> |
- |
|
598 |
|
- |
|
599 |
<p> |
- |
|
600 |
Melodický zvonek začne hrát stiskem libovolného tlačítka (tlačítek). |
- |
|
601 |
Přestože jsou na desce jen 4 tlačítka, je možné do zvonku naprogramovat |
- |
|
602 |
až 15 skladeb. První čtyři jsou spuštěny přímo při stlačení jednoho |
- |
|
603 |
ze čtyř tlačítek, pro aktivaci dalších skladeb je nutné stisknout |
- |
|
604 |
několik tlačítek najednou dle následující tabulky. |
- |
|
605 |
</p> |
- |
|
606 |
|
- |
|
607 |
<table> |
- |
|
608 |
<tr> |
- |
|
609 |
<th> Číslo skladby </th> |
- |
|
610 |
<th> Kombinace tlačítek </th> |
- |
|
611 |
<th> Číslo skladby </th> |
- |
|
612 |
<th> Kombinace tlačítek </th> |
- |
|
613 |
</tr> |
- |
|
614 |
<tr> |
- |
|
615 |
<td> 1 </td> |
- |
|
616 |
<td> • o o o </td> |
- |
|
617 |
<td> 9 </td> |
- |
|
618 |
<td> o • o • </td> |
- |
|
619 |
</tr> |
- |
|
620 |
<tr> |
- |
|
621 |
<td> 2 </td> |
- |
|
622 |
<td> o • o o </td> |
- |
|
623 |
<td> 10 </td> |
- |
|
624 |
<td> o o • • </td> |
- |
|
625 |
</tr> |
- |
|
626 |
<tr> |
- |
|
627 |
<td> 3 </td> |
- |
|
628 |
<td> o o • o </td> |
- |
|
629 |
<td> 11 </td> |
- |
|
630 |
<td> • • • o </td> |
- |
|
631 |
</tr> |
- |
|
632 |
<tr> |
- |
|
633 |
<td> 4 </td> |
- |
|
634 |
<td> o o o • </td> |
- |
|
635 |
<td> 12 </td> |
- |
|
636 |
<td> • • o • </td> |
- |
|
637 |
</tr> |
- |
|
638 |
<tr> |
- |
|
639 |
<td> 5 </td> |
- |
|
640 |
<td> • • o o </td> |
- |
|
641 |
<td> 13 </td> |
- |
|
642 |
<td> • o • • </td> |
- |
|
643 |
</tr> |
- |
|
644 |
<tr> |
- |
|
645 |
<td> 6 </td> |
- |
|
646 |
<td> • o • o </td> |
- |
|
647 |
<td> 14 </td> |
- |
|
648 |
<td> o • • • </td> |
- |
|
649 |
</tr> |
- |
|
650 |
<tr> |
- |
|
651 |
<td> 7 </td> |
- |
|
652 |
<td> • o o • </td> |
- |
|
653 |
<td> 15 </td> |
- |
|
654 |
<td> • • • • </td> |
- |
|
655 |
</tr> |
- |
|
656 |
<tr> |
- |
|
657 |
<td> 8 </td> |
- |
|
658 |
<td> o • • o </td> |
- |
|
659 |
<td colspan="2"> • znamená stisknuto, o znamená v klidu </td> |
- |
|
660 |
</tr> |
- |
|
661 |
</table> |
- |
|
662 |
|
- |
|
663 |
<h3> Programování skladeb </h3> |
- |
|
664 |
|
- |
|
665 |
<p> |
- |
|
666 |
Při programování se používá propojka na J5 a definice skladeb se přivádí |
- |
|
667 |
z počítače ze sériové linky na konektor J4. Při rozběhu otestuje |
- |
|
668 |
program, zda je na J5 propojka a zda je připojen počítač ke konektoru J4. |
- |
|
669 |
Pokud ano, přejde do režimu programování. To se projeví zacvrdlikáním. Aby |
- |
|
670 |
se program správně spustil při připojení napájení, musí být napájení |
- |
|
671 |
odpojené alespoň 10 sekund. Pokud je nasazena propojka na J5 a nedojde |
- |
|
672 |
ke správnému zresetování procesoru, může dojít k poškození obsahu |
- |
|
673 |
paměti skladeb a skladby bude třeba znovu nahrát. |
- |
|
674 |
</p> |
- |
|
675 |
|
- |
|
676 |
<p> |
- |
|
677 |
Postup pro přechod do programovacího režimu: |
- |
|
678 |
</p> |
- |
|
679 |
|
- |
|
680 |
<ul> |
- |
|
681 |
<li> Odpojíme baterii a počkáme alespoň 10 sekund </li> |
- |
|
682 |
<li> Připojíme kabel RS232 k počítači </li> |
- |
|
683 |
<li> Připojíme baterii </li> |
- |
|
684 |
<li> Nasadíme propojku J5 </li> |
- |
|
685 |
<li> Stiskneme některé tlačítko a mělo by se ozvat zacvrdlikání</li> |
- |
|
686 |
</ul> |
- |
|
687 |
|
- |
|
688 |
<p> |
- |
|
689 |
Pro přenos dat do zvonku je možné použít téměř libovolný terminálový program. |
- |
|
690 |
Parametry přenosu dat do zvonku jsou 9600Bd, 8bitů, 1stopbit, žádná parita. |
- |
|
691 |
Řízení přenosu se nepoužívá. Protože data procesor zapisuje do své paměti |
- |
|
692 |
programu, nemůže číst další data, než dokončí zápis předchozích. Proto |
- |
|
693 |
je nutné nastavit časovou prodlevu mezi řádky na cca 100ms. |
- |
|
694 |
Přenos je jen jednosměrný, zvonek neumí odesílat žádné informace sériovou |
- |
|
695 |
linkou směrem k počítači. Má pouze propojené signály RX a TX tak, aby |
- |
|
696 |
znaky odesílané do zvonku byly zobrazované na displeji terminálu. |
- |
|
697 |
</p> |
- |
|
698 |
|
- |
|
699 |
<p> |
- |
|
700 |
Pro propojení s počítačem se používá nulmodemový kabel (tedy křížený, |
- |
|
701 |
spojení RX-TX, TX-RX). |
- |
|
702 |
</p> |
- |
|
703 |
|
- |
|
704 |
<p> |
- |
|
705 |
V prostředí Windows 98 je k dispozici program Hyperterminál |
- |
|
706 |
(Start/Programy/Příslušenství/Komunikace/Hyperterminál). Pokud není, |
- |
|
707 |
znamená to, že nebyl nainstalován, a je možné nainstalovat jej dodatečně |
- |
|
708 |
nebo použít nějaký jiný terminálový program. Hyperterminál nás na úvod |
- |
|
709 |
vyzve k nastavení základních komunikačních parametrů (9600Bd, 8, |
- |
|
710 |
žádná, 1, žádné). Dále je třeba nastavit |
- |
|
711 |
(Soubor/Vlastnosti/Nastavení/Nastavení ASCII) |
- |
|
712 |
zpoždění řádků 100ms. |
- |
|
713 |
</p> |
- |
|
714 |
|
- |
|
715 |
<p> |
- |
|
716 |
V této chvíli bychom měli vidět znaky psané na klávesnici v okně |
- |
|
717 |
terminálu. Pokud je zvonek v režimu programování, měl by krátce pípnout |
- |
|
718 |
při každém stisku odřádkování. Znamená to, že reaguje na posílaná data. |
- |
|
719 |
Nyní již nic nebrání ručnímu ovládání. |
- |
|
720 |
</p> |
- |
|
721 |
|
- |
|
722 |
<p> |
- |
|
723 |
Větší množství dat (například celou melodii) je vhodné připravit |
- |
|
724 |
do samostatného souboru a ten pak přes schránku vložit do terminálu |
- |
|
725 |
(u Hyperterminálu pravé tlačítko, funkce Vložit k hostiteli). Většina |
- |
|
726 |
terminálových programů umí i přímo odeslat textový soubor protistraně, ale |
- |
|
727 |
Hyperterminál to neumí. |
- |
|
728 |
</p> |
- |
|
729 |
|
- |
|
730 |
<h3> Příkazy a formát dat pro programování skladeb </h3> |
- |
|
731 |
|
- |
|
732 |
<p> |
- |
|
733 |
Procesor vždy nejprve převezme celou řádku a poté se ji snaží zpracovat. |
- |
|
734 |
Pokud řádce nerozumí, pípne odlišně. Z řádky se uvažuje jen prvních 40 znaků. |
- |
|
735 |
Text za „//“ je komentář. Komentář může být libovolně dlouhý. |
- |
|
736 |
</p> |
- |
|
737 |
|
- |
|
738 |
<p> |
- |
|
739 |
Klíčová slova a jejich význam je v následující tabulce. Parametry jsou |
- |
|
740 |
malá přirozená čísla v uvedeném rozsahu. Pokud je zadáno číslo větší, |
- |
|
741 |
zvonek použije jen odpovídající spodní bity čísla. |
- |
|
742 |
</p> |
- |
|
743 |
|
- |
|
744 |
<table> |
- |
|
745 |
<tr> |
- |
|
746 |
<th> Klíčová slova a parametry </th> |
- |
|
747 |
<th> Meze </th> |
- |
|
748 |
<th> Význam </th> |
- |
|
749 |
</tr> |
- |
|
750 |
<tr> |
- |
|
751 |
<td> <code>PLAY <b>n</b></code> </td> |
- |
|
752 |
<td> <code><b>n</b>: 1 .. 15</code> </td> |
- |
|
753 |
<td> Zahraj skladbu <code><b>n</b></code> </td> |
- |
|
754 |
</tr> |
- |
|
755 |
<tr> |
- |
|
756 |
<td> <code>ERASE</code> </td> |
- |
|
757 |
<td> </td> |
- |
|
758 |
<td> Smaž všechny skladby </td> |
- |
|
759 |
</tr> |
- |
|
760 |
<tr> |
- |
|
761 |
<td> <code>BEGIN <b>n</b></code> </td> |
- |
|
762 |
<td> <code><b>n</b>: 0 .. 7</code> </td> |
- |
|
763 |
<td> Začátek definice skladby; číslo udává posunutí skladby o udaný počet |
- |
|
764 |
oktáv nahoru </td> |
- |
|
765 |
</tr> |
- |
|
766 |
<tr> |
- |
|
767 |
<td> <code>TEST <b>n</b></code> </td> |
- |
|
768 |
<td> <code><b>n</b>: 0 .. 7</code> </td> |
- |
|
769 |
<td> Jako <code>BEGIN</code>, ale následující noty nejsou programovány |
- |
|
770 |
do paměti, ale přehrávány </td> |
- |
|
771 |
</tr> |
- |
|
772 |
<tr> |
- |
|
773 |
<td> <code>TEMPO <b>n</b></code> </td> |
- |
|
774 |
<td> <code><b>n</b>: 1 .. 2047</code> </td> |
- |
|
775 |
<td> Délka nejkratší noty v ms; není-li použito, je nastaveno na 100ms; |
- |
|
776 |
může se použít vícekrát v jedné skladbě </td> |
- |
|
777 |
</tr> |
- |
|
778 |
<tr> |
- |
|
779 |
<td> <code>PAUSE <b>n</b></code> </td> |
- |
|
780 |
<td> <code><b>n</b>: 1 .. 2047</code> </td> |
- |
|
781 |
<td> Délka prodlevy mezi notami; není-li použito, je nastaveno na 100ms; |
- |
|
782 |
může se použít vícekrát v jedné skladbě </td> |
- |
|
783 |
</tr> |
- |
|
784 |
<tr> |
- |
|
785 |
<td> <code>[<b>a</b>]<b> C</b> [<b>b</b>]</code> </td> |
- |
|
786 |
<td> <code><b>a</b>: 0 .. 7<br></code> |
- |
|
787 |
<code><b>C</b>: C, Cis, D, Dis, E, F, Fis, <br></code> |
- |
|
788 |
<code> G, Gis, A, Ais, H, Space<br></code> |
- |
|
789 |
<code><b>b</b>: 1 .. 63</code> </td> |
- |
|
790 |
<td> Číslo oktávy (sečítá se s parametrem u <code>BEGIN</code>); není-li |
- |
|
791 |
uvedeno, použije se poslední hodnota<br> |
- |
|
792 |
Nota <code><b>C</b></code> v oktávě <code><b>a</b></code> o délce |
- |
|
793 |
<code><b>b</b></code>; Space je němá nota (mezera)<br> |
- |
|
794 |
Délka je v násobcích parametru <code>TEMPO</code>, není-li uvedena, je 1 </td> |
- |
|
795 |
</tr> |
- |
|
796 |
<tr> |
- |
|
797 |
<td> <code>END</code> </td> |
- |
|
798 |
<td> </td> |
- |
|
799 |
<td> Konec skladby, další noty již budou pouze přehrávány </td> |
- |
|
800 |
</tr> |
- |
|
801 |
<tr> |
- |
|
802 |
<td> / text </td> |
- |
|
803 |
<td> </td> |
- |
|
804 |
<td> Komentář; vše za znakem / do konce řádky se ignoruje </td> |
- |
|
805 |
</tr> |
- |
|
806 |
<tr> |
- |
|
807 |
<td colspan=3> <i>Znaky <code>[</code> a <code>]</code> znamenají volitelný parametr</i> </td> |
- |
|
808 |
</tr> |
- |
|
809 |
</table> |
- |
|
810 |
|
- |
|
811 |
<h2> Program </h2> |
- |
|
812 |
|
- |
|
813 |
<p> |
- |
|
814 |
Program melodického zvonku je napsaný v jazyce C firmy CCS. |
- |
|
815 |
Demoverze překladače je možné stáhnout z webu na adresa |
- |
|
816 |
<a href="http://www.ccsinfo.com/">http://www.ccsinfo.com</a>. |
- |
|
817 |
Demoverze podporuje jen vybrané procesory (obvykle několik typů) |
- |
|
818 |
a umožňuje napsat program v omezeném rozsahu (do 2048 slov). |
- |
|
819 |
</p> |
- |
|
820 |
|
- |
|
821 |
<p> |
- |
|
822 |
Program je bohatě komentovaný a dostupný, je tedy snadné se s ním seznámit. |
- |
|
823 |
Vzhledem k omezeným zdrojům použitého procesoru používá program v hojné |
- |
|
824 |
míře globálních proměnných, protože to vede na kód kratší asi o 10%. |
- |
|
825 |
Některé programové konstrukce také vypadají na první pohled nelogicky, |
- |
|
826 |
ale jsou voleny s ohledem na dosažení minimální délky výsledného |
- |
|
827 |
kódu. Je třeba si uvědomit, že použitý překladač jazyka C patří k těm |
- |
|
828 |
nejlevnějším, a proto neumí generovat příliš optimalizovaný kód. |
- |
|
829 |
</p> |
- |
|
830 |
|
- |
|
831 |
<h3> Hlavní program a základní procedury </h3> |
- |
|
832 |
|
- |
|
833 |
<h4>main()</h4> |
- |
|
834 |
|
- |
|
835 |
<p> |
- |
|
836 |
Na začátku se hlavní program rozhoduje podle přítomnosti propojky na J5 |
- |
|
837 |
a podle přítomnosti klidového signálu na RS232, zda má přejít do režimu |
- |
|
838 |
programování skladeb. Pokud ano, spustí se procedura Download(). |
- |
|
839 |
</p> |
- |
|
840 |
|
- |
|
841 |
<p> |
- |
|
842 |
Pokud není v programovacím režimu, zapíná procesor napájení sobě a zesilovači |
- |
|
843 |
LM386 a po krátké prodlevě načítá stav tlačítek. Pak volá proceduru <code>Play()</code>, |
- |
|
844 |
která na základě čísla skladby v proměnné <code>CisloSkladby</code> |
- |
|
845 |
přehraje požadovanou skladbu. |
- |
|
846 |
</p> |
- |
|
847 |
|
- |
|
848 |
<p> |
- |
|
849 |
Následuje přechod do vypnutého stavu. |
- |
|
850 |
</p> |
- |
|
851 |
|
- |
|
852 |
<h4>Download()</h4> |
- |
|
853 |
|
- |
|
854 |
<p> |
- |
|
855 |
Tato procedura načítá nejprve celou řádku z RS232. Znaky mezera, čárka |
- |
|
856 |
a všechny řídící znaky kromě <code>CR</code> (odřádkování) a <code>BS</code> |
- |
|
857 |
(znak zpět) se chápou jako oddělovač (mezera). Znak <code>BS</code> umožňuje |
- |
|
858 |
návrat o 1 znak zpět. Znaky za znakem lomeno se ignorují stejně, jako |
- |
|
859 |
znaky za maximální délkou řádky. |
- |
|
860 |
</p> |
- |
|
861 |
|
- |
|
862 |
<p> |
- |
|
863 |
Po stisku <code>CR</code> se postupně zpracuje celá řádka. Hledají se |
- |
|
864 |
v ní klíčová slova (procedura <code>Word()</code>) a číselné parametry |
- |
|
865 |
(procedura <code>Number()</code>). Vyskytne-li se chybné slovo, dojde |
- |
|
866 |
k nastavení příznaku <code>Error</code> a na konci řádky místo krátkého |
- |
|
867 |
pípnutí dojde k chybovému pípnutí. |
- |
|
868 |
</p> |
- |
|
869 |
|
- |
|
870 |
<p> |
- |
|
871 |
Klíčová slova, tak jak jsou na řádce, se ihned vykonávají. Tedy noty hrají, |
- |
|
872 |
slova <code>TEMPO</code>, <code>PAUSE</code>, <code>PLAY</code>, <code>ERASE</code> |
- |
|
873 |
a <code>TEST</code> dělají přímo to, co dělat mají. Tato vlastnost |
- |
|
874 |
slouží k testování melodií či jejich úryvků aniž by se musely zapisovat |
- |
|
875 |
do paměti FLASH. |
- |
|
876 |
</p> |
- |
|
877 |
|
- |
|
878 |
<p> |
- |
|
879 |
Po slovu <code>BEGIN</code> se přejde do režimu záznamu do paměti a od |
- |
|
880 |
tohoto okamžiku se vše zaznamenává do paměti. Tento režim končí slovem <code>END</code> |
- |
|
881 |
(ale také slovy <code>ERASE</code>, <code>TEST</code> nebo <code>PLAY</code>). |
- |
|
882 |
</p> |
- |
|
883 |
|
- |
|
884 |
<p> |
- |
|
885 |
Pokud se během zpracování řádky odehrála alespoň jedna nota, nedojde na konci |
- |
|
886 |
řádky k pípnutí (pokud ovšem nebyla někde na řádce chyba). |
- |
|
887 |
</p> |
- |
|
888 |
|
- |
|
889 |
<h4> Play(), PlayData(), Find()</h4> |
- |
|
890 |
|
- |
|
891 |
<p> |
- |
|
892 |
Tyto procedury slouží k přehrání celé skladby, jedné noty a k nalezení |
- |
|
893 |
začátku zadaného čísla skladby. |
- |
|
894 |
</p> |
- |
|
895 |
|
- |
|
896 |
<h4> WriteDataInc(), WriteData, ReadData(), Erase() </h4> |
- |
|
897 |
|
- |
|
898 |
<p> |
- |
|
899 |
Tyto procedury slouží k zápisu, čtení a k mazání paměti skladeb. |
- |
|
900 |
K zápisu nebo ke smazání může dojít jen pokud je nasazena propojka na J5. |
- |
|
901 |
</p> |
- |
|
902 |
|
- |
|
903 |
<h4> SpecBeep()</h4> |
- |
|
904 |
|
- |
|
905 |
<p> |
- |
|
906 |
Tato procedura slouží k pípnutí dle parametru v proměnných |
- |
|
907 |
<code>Beep</code> a <code>Error</code>. |
- |
|
908 |
</p> |
- |
|
909 |
|
- |
|
910 |
<h3> Knihovna pro generování zvuků <code>Sound_t1.c</code> </h3> |
- |
|
911 |
|
- |
|
912 |
<p> |
- |
|
913 |
Tato knihovna používá časovač T1 spolu s jednotkou CCP1 ke generování |
- |
|
914 |
přerušení dle požadované půlperiody hraného tónu. V přerušovací rutině |
- |
|
915 |
<code>IntCCP1()</code> se pak ovládá výstupní port. |
- |
|
916 |
</p> |
- |
|
917 |
|
- |
|
918 |
<p> |
- |
|
919 |
Délka tónu se odměřuje pomocí přetečení časovače T0. Přetečení se zjišťuje |
- |
|
920 |
čtením příznaku T0IF, přerušení se zde nepoužívá. |
- |
|
921 |
</p> |
- |
|
922 |
|
- |
|
923 |
<h3> Definice skladeb <code>Data.c</code> </h3> |
- |
|
924 |
|
- |
|
925 |
<p> |
- |
|
926 |
Skladby se ukládají v poslední čtvrtině paměti FLASH a kódují se dle |
- |
|
927 |
následující tabulky. |
- |
|
928 |
</p> |
- |
|
929 |
|
- |
|
930 |
<table> |
- |
|
931 |
<tr> |
- |
|
932 |
<th> Slovo </th> |
- |
|
933 |
<th> Kód </th> |
- |
|
934 |
<th> Poznámka </th> |
- |
|
935 |
</tr> |
- |
|
936 |
<tr> |
- |
|
937 |
<td> <code>BEGIN n</code> </td> |
- |
|
938 |
<td> <code>1 0 0 n n n n n n n n n n n</code> </td> |
- |
|
939 |
<td> Začátek skladby a posunutí oktávy not skladby o <code><b>n</b></code> </td> |
- |
|
940 |
</tr> |
- |
|
941 |
<tr> |
- |
|
942 |
<td> <code>TEMPO n</code> </td> |
- |
|
943 |
<td> <code>1 0 1 n n n n n n n n n n n</code> </td> |
- |
|
944 |
<td> Změna tempa na <code><b>n</b></code> milisekund </td> |
- |
|
945 |
</tr> |
- |
|
946 |
<tr> |
- |
|
947 |
<td> <code>PAUSE n</code> </td> |
- |
|
948 |
<td> <code>1 1 0 n n n n n n n n n n n</code> </td> |
- |
|
949 |
<td> Změna mezery mezi notami na <code><b>n</b></code> milisekund </td> |
- |
|
950 |
</tr> |
- |
|
951 |
<tr> |
- |
|
952 |
<td> <code>o n d</code> </td> |
- |
|
953 |
<td> <code>0 d d d d d d o o o n n n n</code> </td> |
- |
|
954 |
<td> Nota <code><b>n</b></code> v oktávě <code><b>o</b></code> délky <code><b>d</b></code> </td> |
- |
|
955 |
</tr> |
- |
|
956 |
<tr> |
- |
|
957 |
<td> <code>END</code> </td> |
- |
|
958 |
<td> <code>1 1 1 1 1 1 1 1 1 1 1 1 1 1</code> </td> |
- |
|
959 |
<td> Konec skladeb, prázdná paměť </td> |
- |
|
960 |
</tr> |
- |
|
961 |
</table> |
- |
|
962 |
|
- |
|
963 |
<p> |
- |
|
964 |
Aby se dalo použít stejného souboru s definicí skladby jak pro začlenění |
- |
|
965 |
skladby do firmwaru tak i pro programování přes RS232, jsou v souboru |
- |
|
966 |
<code>Data.c</code> nadefinována makra, která toto umožňují. Definice |
- |
|
967 |
skladby, která má být začleněna do firmwaru musí, používat čárky jako |
- |
|
968 |
oddělovače jednotlivých položek a číselné parametry není možné vynechávat. |
- |
|
969 |
Příklady skladeb napoví vše. |
- |
|
970 |
</p> |
- |
|
971 |
|
- |
|
972 |
</div> |
- |
|
973 |
|
- |
|
974 |
<!-- AUTOINCLUDE START "Page/Footer.cs.ihtml" DO NOT REMOVE --> |
- |
|
975 |
<!-- ============== PATIČKA ============== --> |
- |
|
976 |
<div class="Footer"> |
- |
|
977 |
<script type="text/javascript"> |
- |
|
978 |
<!-- |
- |
|
979 |
SetRelativePath("../../../../"); |
- |
|
980 |
DrawFooter(); |
- |
|
981 |
// --> |
- |
|
982 |
</script> |
- |
|
983 |
<noscript> |
- |
|
984 |
<p><b> Pro zobrazení (vložení) hlavičky je potřeba JavaScript </b></p> |
- |
|
985 |
</noscript> |
- |
|
986 |
</div> |
- |
|
987 |
<!-- AUTOINCLUDE END --> |
- |
|
988 |
|
- |
|
989 |
</body> |
- |
|
990 |
</html> |