Welcome Anonymous
Fledgling
Fledgling
It is currently Mon Jun 26, 2017 11:11 am

All times are



Post new topic Reply to topic  [ Array ] 
Author Message
 Post subject: WX1 research camera code
PostPosted: Mon Oct 17, 2011 5:35 pm 
Offline
King
King
User avatar

Joined: Tue Feb 16, 2010 3:20 pm
Posts: 482
Code:
'=========================

'Sony WX1 w/ Slave Flash.
 
'Two dip switches to control use of slave flash if needed and also video for a day only setup.

'=========================


'Press F8 to check sertext and bring up the screen



#picaxe20x2
'#terminal 9600
#no_data
#no_table
disablebod

'=====================================================
' Map Ports
'=====================================================
'Symbol SlaveDip = C.7
'Symbol VideoDip = C.6
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 Shutter_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 Video_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 = B10
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
Input C.7
Input C.6
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 = 2 ' # 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 ; lux level 7 = 100k(R16) 2v @ 4v 2 X 256 / 4 = 128
Day = 144
Night_Flag = 0
SlaveRefresh = 0
CamRefresh = 0


' Do initial board setup for light & battery levels
GoSub CdsChk
If Night_Flag = 1 And PinC.7 = 1 Then
GoSub Slave_Charge
Endif
'=====================================================
'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:
'=====================================================

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 And PinC.7 = 1 Then
GoSub Slave_Charge
SlaveRefresh = 0 ' restart our 10min period
EndIf

If CamRefresh = 200 And Night_Flag = 1 And PinC.6 = 0 Then
Gosub Refresh_Cam
CamRefresh = 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
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

' 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
Endif
'If Night_Flag = 1 And PinC.6 = 1 Then 'Check if its night or day and video dip switch
'Goto Main                             'If Cam set to Day video mode and its dark, abort and return to main
'Endif

If Night_Flag = 1 And PinC.7 = 1 Then 'Check for slaves dipswitch
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 Activity_Flag = 0 And WlkTestFlag = 0  Then
GoSub CamPWR                          ' Turn the camera on for the first time
Pause 800                             '**************************************

If night_flag = 1 And PinC.7 = 1 then
Gosub Fire_Flash  ':Endif

'If night_flag = 0 And PinC.6 = 1 then
'Gosub Take_Video ':Endif
Else
'If Night_Flag = 0 And PinC.6 = 0 then
Gosub Shutter ':Endif
EndIf
'Endif
'endif
'endif

'Activity_Flag = 1
Pause 5000
'Activity_Count = 2 ' set activity counter to 2 allowing 30sec
Gosub CamPwr ' power cam down
CamRefresh = 0

EndIf

If Night_Flag = 1 and PinC.7 = 1 Then
Pause 10000 'Allow flash to recharge
Low Flash_Charge 'and then turn off
FlashCharge = 0
SlaveRefresh = 0
CamRefresh = 0
ValidPIR = 0
PIR_Event = 0
Pause 20000
Else
Pause 30000
'ValidPIR = 0
EndIF

'EndIf
PIR_INTService_Exit:
'sertxd ("PIR Exit ",13,10)
Setintflags %00000100,%00000100
ValidPIR = 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
Low Power_Out
Return

Shutter:
If Night_Flag = 0 and PinC.6 = 1 then
Gosub Take_Video :endif
If Night_Flag = 1 and PinC.6 = 1 then
return
else
High Shutter_Out
pause 2200
Low Shutter_Out
Endif
Return

Take_Video:
High Shutter_Out
pause 1000
Low Shutter_Out
Pause 30000      'Take 30 second video
High Shutter_Out
pause 250
Low Shutter_Out
Return


Fire_Flash:
SetFreq m16
flash_flag = 0
'sertxd ("Flash Start ",13,10)
High Shutter_Out
Do
Inc TO_Counter
If TO_Counter =5000 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)
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 ' charge for 10sec
Low Flash_Charge
Return


Refresh_Cam:
High Power_Out
pause 250
Low Power_Out
pause 4000           'Camera on for 4 seconds
High Power_Out
pause 250
Low Power_Out
Return


Top
 Profile  
Reply with quote  
PostPosted: Mon Oct 17, 2011 5:37 pm 
Offline
King
King
User avatar

Joined: Tue Feb 16, 2010 3:20 pm
Posts: 482
Joe,
If you load this code in editor, look at line #256 and change it from 800 to say 1200 or 2000 just to see if it will shutter then. If it shutters from jumping the pins on the AIO, then I'm guessing its missing theshutter signal somehow. ?


Top
 Profile  
Reply with quote  
PostPosted: Mon Oct 17, 2011 6:03 pm 
Offline
Moderator
Moderator
User avatar

Joined: Sun Jan 31, 2010 4:39 pm
Posts: 1420
bowgod02 wrote:
Joe,
If you load this code in editor, look at line #256 and change it from 800 to say 1200 or 2000 just to see if it will shutter then. If it shutters from jumping the pins on the AIO, then I'm guessing its missing theshutter signal somehow. ?

Will do Ron, Thanks :cheers

_________________
JCTA- Joe's Custom Trailcam Accessories


Top
 Profile  
Reply with quote  
PostPosted: Tue Oct 18, 2011 2:40 pm 
Offline
King
King
User avatar

Joined: Tue Feb 16, 2010 3:20 pm
Posts: 482
Let me know what you find.


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:  
Powered by phpBB® Forum Software © phpBB Group