Welcome Anonymous
Fledgling
Fledgling
It is currently Sat Sep 23, 2017 10:37 am

All times are



Post new topic Reply to topic  [ Array ] 
Author Message
PostPosted: Sat Dec 03, 2011 8:56 pm 
Offline
Emperor
Emperor
User avatar

Joined: Fri Aug 13, 2010 8:35 pm
Posts: 552
Location: central kentucky
I am missing the first pic .After the board turns the cam on it wont take a pic till it senses motion the second time then it works great after that . what needs to be changed in the code to correct it .Oh i'm running a p52 with a v2600 slave.
Here's the code I'm using.


'Look for lines marked with ***. These areas are where timings may need changed for different
'camera setups.

#picaxe20x2
'#terminal 9600
#no_data
#no_table
disablebod

'=====================================================
' Map Ports
'=====================================================
Symbol PT_IN = B.0 ' Photo Transistor input
Symbol CDS_Out = C.5 ' Output to LDR voltage Divider
Symbol Flash_Out = C.4 ' slave flash opto
Symbol Flash_Charge = C.3 ' Flash Charge Mosfet
Symbol PT_Out = C.2 ' Photo Transistor output
Symbol Video_Out = C.1 ' Spare Mosfet used to push video button
Symbol Battery_Monitor = B.6 ' ADC Input for battery monitor
Symbol LDR_IN = B.5 ' LDR ADC Input
Symbol Shutter_Out = B.4 ' Shutter Mosfet
Symbol Power_Out = B.3 ' Power Mosfet
Symbol LED_Out = B.2 ' LED
Symbol PIR_In = B.1 ' Input from PIR Circuit
Symbol BkGrnd_Timer = B1
Symbol Byte_Var = B2
Symbol ValidPIR = B3
Symbol PIR_Event = B4
Symbol WlkTestFlag = B5 ' Walk test status flag
Symbol WlkTestTime = B6 ' Number of 15 sec periods for walk test
Symbol Activity_Flag = B7
Symbol Normal_OP = B8
Symbol CamRefresh = B9
Symbol Activity_Count = W5
Symbol Event_Delay = B11
Symbol CamEvent_Flag = B12
Symbol Cam_Mode = B13
Symbol PRELOAD = 63890 ' approx 15 sec at 31khz
Symbol Flash_Flag = b14' Flag to count the # of flashes seen
Symbol TO_Counter = W1 ' Timeout counter
Symbol First_Flash = b15
Symbol Wait_Loop = W2
Symbol CDS_Value = b16
Symbol Night_Flag = b17
Symbol Day = b18
Symbol Night = b19
Symbol SlaveRefresh = b20
Symbol FlashCharge = b21
Symbol PT_On = b22


'=====================================================
' Set Port Directions
'=====================================================
Input PT_IN
Output CDS_Out
Output Flash_Out
Output Flash_Charge
Output PT_Out
Output Video_Out
Output Battery_Monitor
Input LDR_IN
Output Shutter_Out
Output Power_Out
Output LED_Out
Input PIR_In
Output C.7
Output C.0
Output B.7
Output A.0


'=====================================================
'Pullups
'=====================================================
'Disable all PUs
pullup %00000000

'=====================================================
' Configure ADC
'=====================================================
adcsetup = %010000000000 'make adc 10 a input
'============================================================================

' STARTUP
'============================================================================

; Allow board to stabilize for 20 sec

High LED_Out
pause 5000
GoSub CamPWR
pause 5000
GoSub CamPWR
pause 20000
Low LED_Out




Powerup:
WlkTestTime = 2 ' set walk test timer to 15sec intervals of timer
WlkTestFlag = 1 ' Turn on walk test mode
CamRefresh = 0
Event_Delay = 0 ' # of 15sec periods to wait before another cam event occurs
CamEvent_Flag = 0 ' Set flag to off
Cam_Mode = 1
Activity_Flag = 0
Activity_Count = 0
Normal_OP = 1 ' board is operating in normal mode if 0. Activity mode or walktest if 1
Night = 155 ' *** CDS value when night ***
Day = 144 ' *** CDS value when day
Night_Flag = 0
SlaveRefresh = 0
' Do initial board setup for light & battery levels
GoSub CdsChk
IF Night_Flag = 1 Then GoSub Slave_Charge
'=====================================================
'Configure Interrupts
hintsetup %01100110 'set HINT2(PIR) & HINT1(FLASH) to trigger Interrupt at rising edge
Setintflags %00000100,%00000100 'enable interrupt flags


'=====================================================
Main: ' Main loop that checks for a PIR event, charges slave, turns off the cam if in trail mode and increments counters & timers, then sleeps for 15 secs and does it all over again:
'=====================================================
Setintflags %00000100,%00000100 'enable interrupt flags
If PIR_Event = 1 Then GoSub PIR_INTService

' Slave charge every 10 minutes for 10 seconds if night_flag = 1 (40 15 second periods)
If SlaveRefresh = 40 And Night_Flag = 1 Then'***change here for different refresh time for slave***
GoSub Slave_Charge
SlaveRefresh = 0 ' restart our 10min period
EndIf
If CamRefresh = 250 and Night_Flag = 1 Then'*** change here for different refresh time for cam***
Gosub RefreshCam
CamRefresh = 0
Endif

'Turn off cam if no more activity for trail mode.
If Activity_Flag = 1 And Activity_Count = 0 Then
High Power_Out
pause 250
Low Power_Out ' Turn camera off
If Pinc.3 = 1 Then
Low Flash_Charge ' Turn of mosfet for flash charging
Endif
If PinC.2 = 1 Then
Low PT_Out ' Turn off PT
EndIf
Activity_Flag = 0

EndIf


' Turn off walk test if time is up
If WlkTestFlag = 1 And WlkTestTime = 0 Then
WlkTestFlag = 0 'turn off walk test If Time is up
Byte_Var = 0 ' Flash LED to indicate walk test over
For Byte_Var = 0 To 7
pause 400
Toggle LED_Out
Next
Pause 3000 ' pause so CdsCHK does not see led and think it's day time
EndIf



' Increment counters & timers
Inc BkGrnd_Timer
If WlkTestFlag = 1 And WlkTestTime <> 0 Then Dec WlkTestTime : EndIf
'If WLKTestFlag = 0 Then Inc CamRefresh : EndIf
'If Activity_Flag = 1 And Activity_Count >= 0 Then Dec Activity_Count : EndIf

If Night_Flag = 1 Then Inc SlaveRefresh :EndIf
If Night_Flag = 1 Then Inc CamRefresh :Endif

GoSub CdsChk
Sleep 7
GoTo Main


Interrupt:
'sertxd ("Interrupt ",13,10)
If hint2flag = 1 Then 'Check to see if INT2 has been triggered
PIR_Event = 1 'Set the PIR event flag
hint2flag = 0 'reset hint2flag to 0
EndIf

If hint1flag = 1 Then ' Flash has been detected
'sertxd ("Flash Flags ", #Flash_Flag,13,10)
First_Flash = 1
IF PT_On = 0 then Inc Flash_Flag :endif
hint1flag = 0
Setintflags %00000010,%00000010 'enable interrupt flags FOR FLASH ONLY!
EndIf


hintflag = 0

Return


PIR_INTService:

PIR_Event = 0
; +++++++ Now See how long the port is high ++++++++++++++
Byte_Var = 0 'clear the counter
Do While Pinb.1= 1 'While the PIR is high (motion detected)
Inc Byte_Var 'Inc our counter
'Pause 1 'un-comment for a longer period
If Byte_Var >= 2 Then
ValidPIR = 1 'flag the motion detected as valid
Exit
EndIf
Loop



If ValidPIR = 1 Then 'If valid motion then
ValidPIR = 0
Endif
' WalkTest
If WlkTestFlag = 1 Then 'if walktest then turn on led to indicate PIR event
WlkTestTime = 2 'reset walktest timer back to original count again
Byte_Var = 0
For Byte_Var = 0 To 19
Toggle LED_Out
Pause 20
Next
Pause 4000; wait a few secs to settle PIR
GoTo PIR_INTService_Exit
EndIf


If Night_Flag = 1 Then
High PT_Out ' Turn on PT to detect flash
Setintflags %00000010,%00000010 'enable interrupt flags FOR FLASH ONLY!
High Flash_Charge
EndIf

Flash_Flag = 0

If WlkTestFlag = 0 Then
GoSub CamPWR ' Turn the camera on for the first time
Pause 1500 ' *** Change time here for different cameras ***
If night_flag = 1 then
Gosub Fire_Flash
Else
Gosub Shutter
EndIf
pause 4000 '*** delay after pic is taken to save picture. Change if needed ***
Gosub Activity

If Night_Flag = 1 Then
Pause 5000 'Allow flash to recharge
Low Flash_Charge 'and then turn off
Pause 4000
Else
Pause 4000
EndIF


PIR_INTService_Exit:
'sertxd ("PIR Exit ",13,10)
Setintflags %00000100,%00000100
ValidPIR = 0
PIR_Event = 0
Event_Delay = 0
Return
'goto main

LED_Blink:
Byte_Var = 0
For Byte_Var = 0 To 19
Toggle LED_Out
Pause 20

Next
Return


CamPWR:
High Power_Out
pause 250 '*** change here if to hold cams power button down longer or shorter ***
Low Power_Out
Return

Shutter:
High Shutter_Out
pause 400 '*** change here to hold down shutter button longer or shorter ***
Low Shutter_Out

Return


Fire_Flash:
SetFreq m16
flash_flag = 0
'sertxd ("Flash Start ",13,10)
'Gosub Shutter
High Shutter_Out
Do
Inc TO_Counter
If TO_Counter =10000 Then
Flash_Flag = 0 ' Reset flags
TO_Counter = 0
GoSub Flash_Led ' Flash Led to indicate time out.
GoTo Flash_Exit
EndIf
Loop while flash_flag <> 2

' FireFlash


'If Flash_Flag = 2 Then
High Flash_Out

pause 400

Low Flash_Out
Flash_Flag = 0 ' Reset flags
TO_Counter = 0
FlashCharge = 1 ' Flash fired so set flag to charge it.
GoTo Flash_Exit

'EndIf



Flash_Exit:
Low Shutter_Out
First_Flash = 0
Flash_Flag = 0
'Low PT_Out
SetFreq m8
'sertxd ("Flash Exit ",13,10)

Return

Flash_Led:
For b0 = 1 To 50
Toggle LED_Out
pause 20
Next
Return


CdsChk:
High CDS_Out 'Turn on pin to supply voltage to cds voltage divider
readadc 10 , CDS_Value ' Read light value
'sertxd ("CDS Value ",#CDS_Value,13,10)
'IF Night_Flag IS SET THEN WE CHECK TO SEE IF THE LIGHT LEVEL IS > = 144 IF ADC GREATER OR = THEN STILL DARK AND EXIT
'IF ITS BELOW 144 THEN WE CLEAR NITEFLG AND RETURN
'IF Night_Flag = 0 THEN CHECK TO SEE IF ADC ABOVE 155 THEN WE SET NITEFLG AND RETURN
Low CDS_Out 'Turn off voltage divider
If Night_Flag = 1 And CDS_Value >= Day Then
GoTo CdsChk_Exit 'already set and Still dark so we exit
Else
Night_Flag = 0 ' already set and Daylight so clear flag
EndIf
If Night_Flag = 0 And CDS_Value >= Night Then
Night_Flag = 1 ' Its dark so set flag
Gosub Slave_Charge ' Charge the slave up also
Else
Night_Flag = 0 ' Daylight so clear flag
EndIf
CdsChk_Exit:

Return


Slave_Charge:
High Flash_Charge
Pause 10000 ' *** Time slave is on during refresh ***
Low Flash_Charge
Return

RefreshCam:
Gosub CamPWR
pause 4000 '*** Time cam is on during refresh at night ***
Gosub CamPWR
Return

Activity:
Activity_Flag = 1
Activity_Count = 300 '*** set activity counter to 300 allowing 30sec ***

Do while Activity_Count > 0

If PinB.1 = 1 and Night_Flag = 1 Then
Gosub Fire_Flash
pause 5000 '*** let PIR settle and charge cams flash before allowing another pic***
Endif
If PinB.1 = 1 and Night_Flag = 0 Then
Gosub Shutter
pause 3000 '*** pause here after pic is taken at day to let PIR settle ***
Endif
pause 100
Dec Activity_Count
Loop
EndIf

Return


Top
 Profile  
Reply with quote  
PostPosted: Sun Dec 04, 2011 11:00 am 
Offline
Moderator
Moderator
User avatar

Joined: Mon Feb 01, 2010 5:45 pm
Posts: 4385
Location: Sussex County NJ
Rick, in the sub routine "shutter" change the pause from 400 to 3000 and see if that helps.

_________________
Image trailcamkits.com


Top
 Profile  
Reply with quote  
PostPosted: Mon Dec 05, 2011 5:01 am 
Offline
King
King
User avatar

Joined: Tue Feb 16, 2010 3:20 pm
Posts: 482
If that dont work, go to this part of the code and increment the "pause 1500" up by 50 each time until it takes the first pic for you.

Code:
If WlkTestFlag = 0 Then
GoSub CamPWR ' Turn the camera on for the first time
Pause 1500 ' *** Change time here for different cameras ***
If night_flag = 1 then
Gosub Fire_Flash
Else
Gosub Shutter
EndIf
pause 4000 '*** delay after pic is taken to save picture. Change if needed ***
Gosub Activity


Top
 Profile  
Reply with quote  
PostPosted: Mon Dec 05, 2011 7:19 am 
Offline
Emperor
Emperor
User avatar

Joined: Fri Aug 13, 2010 8:35 pm
Posts: 552
Location: central kentucky
Success!!! By changing the time to 1600 it works great. In real time is this 1.6 seconds? The AIO boards are a lot of fun to work on but I have lost a lot of hair working on them. Thanks Mr Bowgod02 and JDH


Top
 Profile  
Reply with quote  
PostPosted: Tue Dec 06, 2011 4:50 am 
Offline
King
King
User avatar

Joined: Tue Feb 16, 2010 3:20 pm
Posts: 482
Your quite welcome and you are correct that its 1.6 seconds.


Top
 Profile  
Reply with quote  
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ Array ] 

All times are


Who is online


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Jump to:  
cron
Powered by phpBB® Forum Software © phpBB Group