I did something similar for a chicken coop door and originally had problems with the ldr as well.
I countered this and shadows etc by flipping a counter. Single microswitch and a small 12v model motor.
This code worked well.
Code:'############################################### '# # '# Automatic chicken coop sliding door. # '# # '# 12 Volt Battery powered. # '# Open when light, close when dark. # '# Sleep 4 hours between to conserve power # '# and to prevent retriggering. # '# # '# Uses single microswitch as feed back. # '# # '# Pic 16f818 --- Rob Lane - Dec 2011 # '# # '############################################### OSCCON=$60 'set 4mhz internal oscillator '(Set INT_OSC in programmer fuses) ' Define ADCIN parameters Define ADC_BITS 10 'Set number of bits in result Define ADC_SAMPLEUS 50 'Set sampling time in uS Photo var word 'Create 'photo' to store result of ldr input Counter1 var byte 'flip flop counter variable 'PIN ASSIGNMENTS LDR var porta.0 MotorUp var portb.4 MotorDown var portb.5 Switch var portb.6 Counter1=1 'Set counter for power up, door must 'be closed in daylight for startup. pause 5000 TRISA=%00000001 ' Set PORTA TRISB=%01000000 ' Set PORTB input switch '######################################################### Main: ADCIN ldr, photo 'read ldr adc value IF Photo <15000 Then checkup 'daylight IF Photo >30000 Then checkdown 'darkness 'sleep 300 'about 5 minutes low power goto Main '########################################################## checkup: if counter1=1 then up goto main up: High MotorUp 'start motor up pause 1000 'wait 1 sec so micro switch opens stopup: if switch = 1 then pressedup 'check microswitch state goto stopup 'check again till true pressedup: low motorup 'stop motor Counter1=2 'flip flop counter for up/down of door sleep 150 'sleep 14400 'sleep 4 hours goto main '########################################################## checkdown: if counter1=2 then down goto main down: high MotorDown 'start motor down pause 1000 stopdown: if switch = 1 then presseddown 'check again goto stopdown presseddown: low MotorDown Counter1=1 sleep 150 'sleep 14400 goto main end
Bookmarks