'minimalista akváriumi fűtés(PWM)/hűtés kapcsoló és hőmérő 5 diódás érzékelővel $regfile = "ATtiny13.dat" $crystal = 9600000 '8-as osztás nélkül. $prog &HFF , &H3A , &HFF , &H00 ' generated. Take care that the chip supports all fuse bytes. 'konfigok Config Timer0 = Pwm , Compare A Pwm = Clear Down , Prescale = 1 'időzítő PWM beállítása. Tccr0a = &B10100001 ' PWM A beállítása Set Ddrb.0 Config Adc = Single , Prescaler = Auto , Reference = Avcc 'ADC beállítása... Config Portb.2 = Input 'adc1 - hőérzékelő IC 7-es láb Config Portb.0 = Output 'PWM kapcsolt kimenet (ez kapcsolja a fűtőt) IC 5-ös láb Config Portb.3 = Output 'ledes jelző kimenet IC 2-es láb Config Portb.4 = Output 'kapcsolt kimenet (ez kapcsolja a hűtőegységet) IC 3-as láb 'változók Dim Hofok As Word 'számított hőfok celsius Dim Hofokkapcs As Byte 'ennél a hőfoknál kapcsol ki a fűtés Dim Fut As Bit 'futést jelző bit Dim Huteskapcs As Byte 'ennél a hőfoknál kapcsol be a hűtés Dim Futoteljesitmeny As Word 'PWM értéke, azaz a fűtő teljesítménye Dim N As Byte 'villogás szám Dim X As Byte 'segédváltozó 'kezdőértékek megadása Enable Interrupts ' megszakítások engedélyezése Enable Timer0 ' Timer0 engedélyezése Start Adc ' ADC índítása Start Timer0 ' Timer0 indítása Ocr0a = 0 'PWM érték beállítása azaz nincs fűtés Futoteljesitmeny = 255 'fűtő teljesítménye (0-255, 0 nem fűt, 128 fél teljesítménnyel fűt, 255 Teljes Erővel Fűt , 'ha Nagyobb 255 Nél Akkor Teljes Erővel Fűt 'Valamint A Fel és Lekapcsolás átmenet Nélküli Ami Pl. A Relés Kapcsolású Fűtésnél Lehet Előnyös) Const Korrekcio = 297 '5 diódás érzékelő korrekciós értéke Hofokkapcs = 22 'ennél a hőfoknál kapcsol ki a fűtés Huteskapcs = 31 'ennél a hőfoknál kapcsol be a hűtés Reset Portb.4 'csak a biztonság kedvéért Fut = 0 'csak a biztonság kedvéért ' főciklus Do Wait 10 'hőmérséklet lekérdezése Hofok = Getadc(1) 'analóg feszültség lekérdezés Shift Hofok , Right 'átszámítás celsiusra: 2 vel osztás azaz jobbra rotálás If Hofok <= Korrekcio Then Hofok = Korrekcio - Hofok 'szakadás ellenőrzés ill. konstansból kivonás, így megfordul a dióda jelleg 'fűtés/hűtés esedékesség eldöntése ill. ha szakadt a hőérzékelő akkor is lekapcsolja a fűtést/hűtést If Fut = 0 And Hofok < Hofokkapcs And Hofok >= 1 Then If Futoteljesitmeny > 255 Then Ocr0a = 255 'fűtő bekapcsol Else For X = 0 To Futoteljesitmeny Ocr0a = X 'fűtő fokozatosan bekapcsol Waitms 20 Next End If Fut = 1 End If If Fut = 1 And Hofok >= Hofokkapcs Then If Futoteljesitmeny > 255 Then Ocr0a = 0 'fűtő kikapcsol Else For X = Futoteljesitmeny To 0 Step -1 Ocr0a = X 'fűtő fokozatosan kikapcsol Waitms 20 Next End If Fut = 0 End If If Hofok >= Huteskapcs And Hofok < 50 Then Set Portb.4 Else Reset Portb.4 'életjel küldése a működésről és a mért hőfok értékének kijelzése is egyben N = 0 If Hofok > 29 And Hofok < 36 Then N = 3 Gosub Villog N = Hofok - 30 End If If Hofok > 19 And Hofok < 30 Then N = 2 Gosub Villog N = Hofok - 20 End If If Hofok > 9 And Hofok < 20 Then N = 1 Gosub Villog N = Hofok - 10 End If If Hofok > 3 And Hofok < 10 Then N = Hofok Gosub Villog Loop End Villog: If N = 0 Then ' ha a hőfok érték akváriumi értékhatáron (4-35 Celsius) kívüli akkor (folytonos) hibajelzés Set Portb.3 Return Else Reset Portb.3 End If Wait 2 Do Set Portb.3 Waitms 500 Reset Portb.3 Waitms 500 Decr N Loop Until N = 0 Return