this is something I did for the grand kids one day (just grab the file had not recheck
to make sure it still works)
thought it mite help you it uses a A/D to drive a servo
remember I'm not a pro. just a hobbyist
Code:
'****************************************************************
'* Name : LIGHT BOX.BAS *
'* Author : grounded *
'* Notice : Copyright (c) *
'* : All Rights Reserved *
'* Date : 3/12/2007 *
'* Version : 1.0 *
'* Notes : IF YOU SHINE A LIGHT ON THE PHOTO CELL THE BOX OPENS
'* : AND STAYS OPEN UNTIL THE LIGHT IS REMOVED
'****************************************************************
pic16f676 'fuses set in inc file
'INTRC_OSC_NOCLKOUT, WDT_ON, MCLR_OFF,
'CPD_OFF, BOD_OFF, PWRT_ON,PROTECT_OFF
DEFINE OSC 4
DEFINE ADC_BITS 10
DEFINE ADC_CLOCK 3
DEFINE ADC_SAMPLEUS 50
Pause 7000 'DELAY TO LET STABILIZE AFTER POWER UP & MODE
CMCON = 7 'COMPARATOR OFF
VRCON = 0 'VOLTAGE REF. DISABLE
TRISA = %00001101 'MAKE A.2 & A.3 INPUTS
TRISC = %00000011 'MAKE .C.0,C.1 PORTC INPUTS
ANSEL = %00000001 'PORTA.0 A/D IN,RST DIGITAL
ADCON0.7 = 1 'RIGHT JUSTIFY FOR 10 BIT
OPTION_REG=%01000000 'RAISING EDGE/WEAK PULL UP
WPUA = %00000000 'NO WEAK PULLUPS
SYMBOL ADC =PORTA.0 'ADCIN
SYMBOL LDR =PORTA.1 'PHOTO POWER
SYMBOL PIR =PORTA.2 'PIR TRIPS HIGH
SYMBOL MODE =PORTA.3 'MODE BUTTON
SYMBOL smA =PORTA.4 'SERVO CONTROL OUTPUT
SYMBOL LED =PORTA.5 'WALKTEST AND POWER LED
SYMBOL DIPB =PORTC.0 'DIP SWITCH 2 N/A
SYMBOL DIPA =PORTC.1 'DIP SWITCH 1 N/A
SYMBOL DPO =PORTC.2 'DIP SWITCH POWER N/A
SYMBOL RL =PORTC.3 'N/A REMOTE LIGHT N/A
SYMBOL CPO =PORTC.4 'CAM POWER BUTTON N/A
SYMBOL RC =PORTC.5 'RECORD BUTTON N/A
'****************************SET UP VARIBLES***************************
NIGHT VAR WORD:NIGHT=0 'LDR/ADCIN VAR FOR LIGHT SENSOR
'********************************TURN EVERYTHING OFF*********************
ADC=0:LDR=0:PIR=0:MODE=0:smA=0:LED=0:DIPA=0:DIPB=0:DPO=0:RL=0:CPO=0:RC=0
'************************************ CAL MODE*******************
led=1 :pause 3000 :led=0
IF MODE=0 Then GoTo CAL 'IF MODE BUTTON =0 THEN GOTO LRD CAL MODE
GoTo MAIN 'SKIP CAL MODE GO MAIN
CAL:
LDR=1:Pause 250 'TURN LDR/ADCIN POWER ON
LED=1:Pause 250:LED=0:Pause 250
LED=1:Pause 250:LED=0:Pause 1000 ' FLASH YOUR IN CAL MODE
TEST:
NIGHT=0
LED=0
ADCIN 0,NIGHT 'CHECK AN# READ AN1 & STORE IN NIGHT VAR
IF NIGHT=<200 Then LED=1 'IF LED IS ON THEN IT'S LIGHT ENOUGHT TO OPEN BOX
Pause 250
IF MODE =0 Then GoTo main 'LEAVE CAL MODE
GoTo TEST 'LOOP AND CHECK FOR LIGHT AGAIN
main:
asc var word : asc=70
ldr=1
NIGHT=0
LED=0
ADCIN 0,NIGHT 'CHECK AN# READ AN1 & STORE IN NIGHT VAR
pause 250
if night =< 200 then goto open
goto main
open
PULSOUT SMA,asc
PAUSE 18
ASC=ASC+1
if ASC=>240 THEN PAUSE 2000: GOTO shut
GOTO open
shut:
NIGHT=0
pause 20
ADCIN 0,NIGHT 'CHECK AN# READ AN1 & STORE IN NIGHT VAR
pause 20
if night => 200 then goto close
goto shut
close
led=0
PULSOUT SMA,asc
PAUSE 18
ASC=ASC-1
'
if ASC=<65 THEN PAUSE 2000: GOTO main
GOTO close
Bookmarks