'****************************************************************
'*  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