'****************************************************************
'* Project : Rolluik Sturing / Shutter Control *
'* Author : Coenen Stijn [Stynus] *
'* Notice : Licenced under Creative Commons *
'* : Attribution-Noncommercial 2.0 Belgium Licence *
'* : http://creativecommons.org/licenses/by-nc/2.0/be/ *
'* Date : 22/08/2009 *
'* Version : 1.0 *
'****************************************************************
Device 12F629
Config INTRC_OSC_NOCLKOUT, WDT_OFF, PWRTE_Off, BODEN_OFF, MCLRE_OFF
'****************************************************************
All_Digital TRUE
PortB_Pullups = 1
Symbol donker = 0
Symbol licht = 1
Symbol aan = 0
Symbol uit = 1
Symbol OmhoogIn = GPIO.5
Symbol OmlaagIn = GPIO.4
Symbol OmhoogUit = GPIO.2
Symbol OmlaagUit = GPIO.1
Symbol LDR = GPIO.0
Dim teller As Byte
; 76543210
GPIO = %00000000
TRISIO = %00110001
'****************************************************************
Opstarten:
Clear
GoSub Omhoog
DelayMS 1000
'****************************************************************
Main:
'************************************************************
Dag: 'Als de rollen omhoog zijn wordt dit porgramma uitgevoerd
While 1 = 1
If LDR = donker Then
If OmlaagIn = uit And OmhoogIn = uit Then
Inc teller 'Als het donker is elke seconde teller +1
DelayMS 1000
EndIf
Else
teller = 0 'Als het terug licht is teller op 0 zetten
EndIf 'is tegen valse detectie
If teller = 100 Then 'Als het 100sec donker?
teller = 0 'teller resetten voor de volgende keer
Break
EndIf
'handbediening
GoSub Handbediening
Wend
'Rollen omlaag
GoSub Omlaag
'************************************************************
Nacht: 'Als de rollen omlaag zijn wordt dit porgramma uitgevoerd
While 1 = 1
'LDR
If LDR = licht Then
If OmlaagIn = uit And OmhoogIn = uit Then
Inc teller 'Als het donker is elke seconde teller +1
DelayMS 1000
EndIf
Else
teller = 0 'Als het terug licht is teller op 0 zetten
EndIf 'is tegen valse detectie
If teller = 100 Then 'Als het 100sec donker?
teller = 0 'teller resetten voor de volgende keer
Break
EndIf
'Handbediening:
GoSub Handbediening
Wend
GoSub Omhoog
GoTo Main
'****************************************************************
Subs:
Omlaag:
High OmlaagUit
Low OmhoogUit
DelayMS 30000
Low OmlaagUit
Low OmhoogUit
Return
Omhoog:
Low OmlaagUit
High OmhoogUit
DelayMS 30000
Low OmlaagUit
Low OmhoogUit
Return
Handbediening:
If OmlaagIn = aan Then
While OmlaagIn = aan
High OmlaagUit
Low OmhoogUit
Wend
DelayMS 2
If OmlaagIn = aan Then
GoTo Handbediening
EndIf
EndIf
If OmhoogIn = aan Then
While OmhoogIn = aan
Low OmlaagUit
High OmhoogUit
Wend
DelayMS 2
If OmhoogIn = aan Then
GoTo Handbediening
EndIf
EndIf
Low OmlaagUit
Low OmhoogUit
Return
'****************************************************************
End