Väckarklocka med Tetris att bevisa att du är vaken (6 / 16 steg)
Steg 6: Summer / Timer 2
TCCR2A = bit(COM2A0) | bit(WGM21); Växla OC2A, tydlig Timer på Jämför Match
Nu ställs frekvensen 4 kHz med en prescaler och jämför värdet. En prescaler delar klockan med ett visst nummer och jämför värdet bestämmer perioden. Jag använde prescaler värdet 3 som dividerar klockan med 32, eller gör det 500 kHz. Så 500 kHz/4 kHz är 125 men kom ihåg det växlar mellan stift 11 så vi behöver ett värde av 62. Efter 62 fästingar stiftet går hög och efter 62 fler fästingar kommer det att gå tillbaka låg vilket ger oss totalt 124 fästingar för hela cykeln. Vilket ger oss en frekvens på 4 kHz. Om det är förvirrande bara spela med nummer tills du som planen. Ett lägre tal i något av registret höjer tonhöjden. Här är koden:
TCCR2B = BUZZER_PRESCALER; / / 3, sänka antalet högre pitch;0-mute,1-1,2-8,3-32,4-64,5-128,6-256,7-1024
OCR2A = BUZZER_COMPARE; / / 62, sänka antalet högre tonhöjd
För att faktiskt vända timern på och av gör jag helt enkelt stift 11 ingång (Summer off) eller utgång (Summer på).
pinMode (BUZZER_PIN, indata); //turn alarm off
pinMode (BUZZER_PIN, OUTPTU); //turn larm på
Jag ansluta summern direkt mellan stift 11 och marken. Tack vare det faktum att Atmel ATMega och ATTiny processorer kan källa och sjunka avsevärd ström inte ytterligare krävs förstärkning. Det är faktiskt högre än alla andra väckarklockor som vi har i huset.