teilweise ...Kennt Ihr Euch aus dem Großraum Hannover persönlich?
au ja ... großes "AVR Grill und Prog Festival"Doch mal sehen, was sich nächstes Jahr so ergibt; da stimme ich Dino zu.
"AVR Grill und Prog Festival"
.und sich der Kreis noch um eine "Nase" erweitern lässt
keineswegs, müssen wir nur auf ein schönen Sommertag warten.Nimmste mir hoffentlich nicht übel.
$regfile = "m8def.dat"
$crystal = 1000000
Dim Hell As Word
Dim An As Word
Dim Aus As Word
Dim Pressed As Word
Dim Neu As Word
Dim Heller As Word
Dim Pwm As Word
Dim Dunkler As Word
Dim Standby As Word
' Festlegen der Starthelligkeit beim Antippen des Tasters
' 0=Dunkel, 255=Hell
Const Starthelligkeit = 254
Config Portb.1 = Output
Config Portd.1 = Output
Config Portd.0 = Input
Config Portd.2 = Input
Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Up , Prescale = 1
Compare1a = 255 : Portd.0 = 1
An = 0 : Neu = 0 : Pwm = 255
Hell = 255 - Starthelligkeit
Dunkler = Hell
If Dunkler = 0 Then Dunkler = 255
On Int0 Int0_isr
Config Int0 = Low Level
Enable Int0
Enable Interrupts
Entry:
Do
Portd.1 = 0
If Pind.0 = 0 Then
Incr Pressed : Waitms 1 : Neu = Heller
End If
If Pwm = 0 Then Heller = 0
If Pwm = 255 Then Heller = 1
If Pressed > 250 Then
If Heller = 0 Then Incr Pwm Else Decr Pwm
Waitms 30
End If
If Pind.0 = 1 And Pressed > 0 And Pressed < 250 Then
If Pressed < 50 Then
If Pwm = 0 Then
Do
Incr Pwm : Compare1a = Pwm : Waitms 5
Pressed = 0 : Neu = 1 : An = 1
Loop Until Pwm = Dunkler Or Pind.0 = 0
Else
Do
Decr Pwm : Compare1a = Pwm : Waitms 5
Pressed = 0 : Neu = 0 : An = 1
Loop Until Pwm = 0 Or Pind.0 = 0
End If
Elseif An = 1 Then
Do
Incr Pwm : Compare1a = Pwm : Waitms 5
Pressed = 0 : Neu = 1 : An = 0
Loop Until Pwm = 255 Or Pind.0 = 0
Else
Do
Decr Pwm : Compare1a = Pwm : Waitms 5
Pressed = 0 : Neu = 0 : An = 1
Loop Until Pwm = Hell Or Pind.0 = 0
End If
If Pind.0 = 0 Then Pressed = 250
Elseif Pressed > 0 And Pind.0 = 1 Then
If Neu = 1 Then Heller = 0
If Neu = 0 Then Heller = 1
Pressed = 0 : Waitms 100
End If
If Pwm = 255 Then An = 0 Else If Aus > 5 Then An = 1
Incr Aus : Compare1a = Pwm
If Pwm = 255 Then Incr Standby Else Standby = 0
Loop Until Standby > 100
Standby = 0
Portd.1 = 1
Mcucr = Mcucr And &B10101111
Mcucr = Mcucr Or &B10100000
sleep
Goto Entry
End
Int0_isr:
nop
Return
' Konfiguriere Timer1
Config Timer1 = Timer , Prescale = 256
On Timer1 Int1_sub
Enable Timer1
Config Int0 = Rising
On Int0 Int0_sub
Enable Int0
$regfile "m8def.dat"
$crystal = 1000000
$hwstack = 82
$framesize = 68
$swstack = 68
'
Initlcd
Cursor Off
Deflcdchar 0 , 6 , 9 , 9 , 6 , 32 , 32 , 32 , 32
Cls
Config Lcdpin = Pin , Rs = Portc.5 , E = Portc.4 , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0
Config Lcd = 16 * 4
Config Lcdbus = 4
Config Portd.7 = Output
Config Portd.6 = Output
Config Portd.5 = Output
Config Portb.0 = Output
Config Portb.2 = Input
Config 1wire = Portb.2
Dim X As Byte
Dim Celsius As Integer
Dim T(2) As Single
Dim Ar1(2) As Single '1. 1wire
Dim Ar2(2) As Single '2. 1wire
Dim Mini(2) As Single 'minimaler Temperaturwert
Dim Maxi(2) As Single 'maximaler Temperaturwert
Dim I As Byte
Dim W As Word
Dim Frost As Single 'Variable für den Soll-Abgleich <=1°C
Dim Kalt As Single 'Variable für den Soll-Abgleich >=60°C
Dim Warm As Single 'Variable für den Soll-Abgleich >=70°C
Frost = 22
Kalt = 24
Warm = 27
Mini(1) = 999
Mini(2) = 999
Maxi(1) = 000
Maxi(2) = 000
Dim Sp(12) As Single '12 bit Genauigkeit
W = 1wirecount()
Locate 1 , 1
Lcd "Anzahl nutzbarer"
Locate 2 , 1
Lcd "Sensoren: " ; W 'Anzahl der Themperatursensoren werden angezeigt
Wait 3
Cls
Do
If Err = 0 Then
Ar1(1) = 1wsearchfirst() 'Sensorabfrage
For I = 1 To 8
Next
End If
If Err = 0 Then 'Sensorabfrage
Ar2(1) = 1wsearchnext()
End If
For I = 1 To 8
' beliebig erweiterbar
1wreset
1wwrite &HCC
1wwrite &H44
Waitms 300
Sp(1) = 1wread(12) '12-bit Genauigkeit
Wait 1
If Err = 0 Then
1wverify Ar1(1)
1wwrite &HBE
Sp(1) = 1wread(12)
For I = 1 To 12
Next
Celsius = Makeint(sp(1) , Sp(2))
Celsius = Celsius * 10
Celsius = Celsius / 16
T(1) = Celsius
T(1) = T(1) / 10
If T(1) < Frost Then
Portd.7 = 1
Else
Portd.7 = 0
End If
Lcd T(1)
Locate 1 , 1
Lcd "Aussen: " ; Fusing(t(1) , "#.#") ; Chr(0) ; "C "
If Mini(1) > T(1) Then Mini(1) = T(1)
If Maxi(1) < T(1) Then Maxi(1) = T(1)
Locate 3 , 1
Lcd "Min: " ; Fusing(mini(1) , "#.#") ; Chr(0) ; "C "
Locate 4 , 1
Lcd "Max: " ; Fusing(maxi(1) , "#.#") ; Chr(0) ; "C "
1wreset
Wait 5
If W >= 2 Then
1wverify Ar2(1)
1wwrite &HBE
Sp(1) = 1wread(12)
For I = 1 To 8
Next
Celsius = Makeint(sp(1) , Sp(2))
Celsius = Celsius * 10
Celsius = Celsius / 16
Print Celsius
T(2) = Celsius
T(2) = T(2) / 10
If T(2) > Kalt Then
Portd.6 = 1
Else
Portd.6 = 0
End If
If T(2) > Warm Then
Portd.5 = 1
Else
Portd.5 = 0
End If
Lcd T(2)
Locate 1 , 1
Lcd "Innen: " ; Fusing(t(2) , "#.#") ; Chr(0) ; "C "
If Mini(2) > T(2) Then Mini(2) = T(2)
If Maxi(2) < T(2) Then Maxi(2) = T(2)
Locate 3 , 1
Lcd "Min: " ; Fusing(mini(2) , "#.#") ; Chr(0) ; "C "
Locate 4 , 1
Lcd "Max: " ; Fusing(maxi(2) , "#.#") ; Chr(0) ; "C "
End If
1wreset
Wait 5
Next
End If
Return
Loop