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