'------------------------------------------------------------------------------- ' ' Regulator pro lampicku v 1.0 ' ---------------------------- ' ' Zarovka je pripojena na portu B.1 coz je zaroven PWM kanal B (pin 6) ' LEDka je pripojena na portu B.0 coz je zaroven PWM kanal A (pin 5) ' Tlacitko ZAP je pripojene na pinu B.2 proti GND (port ma Pul-Up) (pin 7) ' Tlacitko POH je pripojene na pinu B.4 proti GND (port ma Pul-Up) (pin 3) ' Potenciometr je pripojeny mezi Ucc a GND, jeho vystup je na pinu B.3 (pin 2) ' Reset je zapojeny na Ucc pres odpor (kvuli programovani je povolen) (pin 1) ' Napajeni je 5V stabilizovanych (pin 8) ' Spolecna zem (pin 4) ' ' Po zapnuti napajeni se rozsviti zarovka z nuly na jas urceny potenciometrem a ' zustane svitit. Sviti do vypnuti napajeni nebo do stisknuti tlacitka POH. ' Behem sviceni lze potenciometrem menit jas zarovky od minima do maxima. ' Po stisknuti POH zarovka postupne zhasne a zacne blikat LEDka. ' Ta blika "mekce" pomoci PWM a v tomto stavu lampicka zustane do stisknuti ' tlacitka ZAP. Kdy se zarovka opet postupne rozsviti. Stisknuti tlacitka POH v ' pohotovostnim rezimu nema zadny vyznam. Zrovna tak stisknuti tlacitka ZAP v ' rezimu sviceni. ' ' ------------------------------------------------------------------------------ ' ' Copyright(c) 2008 Sasa Svobodova ' ' Tento program je svobodný software; můžete jej šířit a modifikovat podle ' ustanovení GNU General Public License, vydávané Free Software Foundation. ' ' Tento program je rozšiřován v naději, že bude užitečný, avšak ' BEZ JAKÉKOLI ZÁRUKY; neposkytují se ani odvozené záruky PRODEJNOSTI anebo ' VHODNOSTI PRO URČITÝ ÚČEL. Další podrobnosti hledejte ve ' GNU General Public License. ' ' Kopii GNU General Public License jste měl/a obdržet spolu s tímto ' programem. Pokud se tak nestalo, napište si o ni Free Software Foundation, ' Inc., 675 Mass Ave, Cambridge, MA 02139, USA. ' ' ------------------------------------------------------------------------------ ' ' ' ------------------------------------------------------------------------------ ' --- Nastaveni prekladace ----------------------------------------------------- ' ------------------------------------------------------------------------------ $regfile = "ATtiny13.dat" ' pouzity procesor '$crystal = 128000 ' frekvence oscilatoru 128kHz '$crystal = 4800000 ' frekvence oscilatoru 4.8MHz $crystal = 9600000 ' frekvence oscilatoru 9.6MHz $hwstack = 32 $swstack = 10 $framesize = 40 ' ------------------------------------------------------------------------------ ' --- Konfigurace procesoru a periferii ---------------------------------------- ' ------------------------------------------------------------------------------ Config Portb.0 = Output ' Pin B.0 jako vystup (LEDka) Config Portb.1 = Output ' Pin B.1 jako vystup (zarovka) Config Portb.2 = Input ' Pin B.2 jako vstup (tlacitko ZAP) Config Portb.4 = Input ' Pin B.4 jako vstup (tlacitko STB) Set Portb.4 ' zapnuti Pul-Up odporu Set Portb.2 ' zapnuti Pul-Up odporu Config Adc = Single , Prescaler = 2 , Reference = Avcc ' nastaveni ADC Config Watchdog = 8192 ' nastaveni WD na asi 64ms ' ------------------------------------------------------------------------------ ' --- Dimenzovani promennych, konstanty a aliasy ------------------------------- ' ------------------------------------------------------------------------------ Dim Jas As Integer ' Hodnota JASu Dim X As Byte ' pomocna promenna Const Rychlost = 10 ' urcuje rychlost zmenu jasu zarovky Const Rychlost_led = 10 ' urcuje rychlost zmeny jasu LEDky Const Minimum = 20 ' urcuje minimalni jas zarovky Const Min_led = 20 ' urcuje minimalni jas LEDky Const Max_led = 200 ' urcuje maximalni jas LEDky Tlacitko_poh Alias Pinb.4 Tlacitko_zap Alias Pinb.2 ' ------------------------------------------------------------------------------ ' --- Rozsviceni zarovky ------------------------------------------------------- ' ------------------------------------------------------------------------------ Start Adc Start Watchdog ' spusteni prevodu ADC ' spusteni casovace Watchdog Hlavni: Config Timer0 = Pwm , Prescale = 1 , Compare B Pwm = Clear Down ' nastaveni casovace pro PWM "B" Jas = Getadc(3) ' precteni hodnoty ADC Shift Jas , Right , 2 ' uprava hodnoty ADC (posuv do prava o 2 bity coz je deleni 4) If Jas < Minimum Then Jas = Minimum For X = 0 To Jas ' postupny nabeh jasu Pwm0b = X Waitms Rychlost ' rychlost nabehu Reset Watchdog ' vymazani watchdogu Next X ' hotovo ' ------------------------------------------------------------------------------ ' --- Regulace jasu ------------------------------------------------------------ ' ------------------------------------------------------------------------------ While Tlacitko_poh = 1 ' dokud neni stisknute tlacitko POH, bezi smycka Jas = Getadc(3) ' precteni hodnoty z ADC Shift Jas , Right , 2 ' uprava hodnoty If Jas < Minimum Then Jas = Minimum ' omezeni rozsahu regulace Pwm0b = Jas ' vlastni regulace jasu Reset Watchdog ' vymazani watchdogu Wend ' konec smycky ' ------------------------------------------------------------------------------ ' --- Zhasnuti a prechod do pohotovosti ---------------------------------------- ' ------------------------------------------------------------------------------ For X = Jas To 0 Step -1 ' zhasnuti zarovky Pwm0b = X Waitms Rychlost ' rychlost dobehu Reset Watchdog ' vymazani watchdogu Next X ' hotovo Config Timer0 = Pwm , Prescale = 1 , Compare A Pwm = Clear Down ' nastaveni casovace pro PWM "A" ' ------------------------------------------------------------------------------ ' --- Pohotovostni stav -------------------------------------------------------- ' ------------------------------------------------------------------------------ For X = 0 To Min_led ' Prvni rozsviceni LEDky je od 0 Pwm0a = X ' aby se rozsvitila postupne Waitms Rychlost_led Reset Watchdog ' vymazani watchdogu Next X ' hotovo Do If Tlacitko_zap = 1 Then ' pokud neni stisknute tlacitko, postupe rozsvitim LEDku For X = Min_led To Max_led ' blikani je od minima do maxima Pwm0a = X Waitms Rychlost_led ' rychlost nabehu If Tlacitko_zap = 0 Then Exit For ' pokud stisknu tlacitko, ukoncim beh Reset Watchdog ' vymazani watchdogu Next X ' hotovo End If If Tlacitko_zap = 1 Then ' pokud neni stisknut tlacitko, postupne zhasnu LEDku For X = Max_led To Min_led Step -1 Pwm0a = X Waitms Rychlost_led ' rychlost dobehu If Tlacitko_zap = 0 Then Exit For ' pokud jej stisknu, ukoncim beh Reset Watchdog ' vymazani watchdogu Next X End If If Tlacitko_zap = 0 Then Exit Do ' pokud je tlacitko stale stisknute, ukoncim smycku Loop Goto Hlavni ' prechod do sviceni ' ------------------------------------------------------------------------------ ' --- Konec programu ----------------------------------------------------------- ' ------------------------------------------------------------------------------ End