WildLife Research Hitachi Camera Controlled By Arduino, Command Sketch Needed

Here is the code for the Zoom, Focus & Iris writen in Bascom Basic. As far as I know this will control all the Hitachi VK series "chassis" camera. It uses software serial communication. This program was written for use with the Atmega 8535 micro on the Futurlec board similar to the Arduino. On the Futurlec board the serial wire goes directly from the TX pin on the micro to the RX pin on the camera. You can download the control code from the Download page on nemocam.com. The Code is the same for all the cameras in respect to the same function. The Code for the VK-S914 is the easiest to understand. Hope this helps.

Regards,
Dennis

' ***********************************************************************************************
' *                                                                                                               *
' * Title                : VK-S274 & VK-S274R SERIES Hitachi Block Camera Controller     *
' * Version            : 1.1 Beta                                                                           *
' * Last Updated    : 02.12.2008                                                                       *
' * Target Device    : ATMEGA8535                                                                     *
' * Author             : Farmtech & Neptune769                                                      *
' * Support            : Try Skype Name : farmtech_dk or in MCS Bascom Forum           *
' * Program code    : BASCOM AVR                                                                     *
' * Hardware req.   : VK-S274 or VK-S274R SERIES Hitachi Block Camera                  *
' * Description        : Control : Zoom - Focus & Iris  Via Serialport on Camera           *
' * Baud for camera : 4800.8.E.1 : Even Parity  default for camera                         *
' *                         : 9600.8.N.1 but need setup in Camera (:WE05EF0)                *
' *                                                                                                               *
' * More Commands   : See Datasheet lots of other stuff you can do.                      *
' *                                                                                                                   *
' * Datasheet         : http://www.data-sheet.net/Vk-s454+ebook+pdf.html                 *
' *                       : http://ip.gliebetronics.com:800/hitachi/S274R_Comm_E11.pdf    *
' *                                                                                                                   *
' * Copyright         : None use it as you like                                                            *
' *                                                                                                                   *
' **************************************************************************************************

$regfile = "m8535.dat"
$crystal = 8000000
$hwstack = 40
$swstack = 30
$framesize = 60

Open "comd.2:4800,8,e,1" For Output As #1                   ' 4800 bps , even Parity ; default for camera

'Config Ports for the 6 buttons n PortC we use  buttons to GND
Config Portc.0 = Input : Set Portc.0                        'Zoom NEAR  Button
Config Portc.1 = Input : Set Portc.1                        'Zoom FAR   Button
Config Portc.2 = Input : Set Portc.2                        'Focus NEAR Button IN
Config Portc.3 = Input : Set Portc.3                        'Focus FAR  Button   OUT
Config Portc.4 = Input : Set Portc.4                        'Iris offset (average) + Button
Config Portc.5 = Input : Set Portc.5                        'Iris offset (average) - Button
Config Portc.6 = Input : Set Portc.6                        'Freeze ON / OFF Toggle Button
'Config Portc.7 = Input : Set Portc.7                        'not used yet Button

Dim I As Byte , Irish As Byte , Irisl As Byte , Irisavg As Byte , Freezebit As Byte

'Print Version()

'setup Camera
Print #1 , ":WFCCB01"                                       ' Switch the continuous digital zoom ON
Waitms 10
Print #1 , ":WFDFC10"                                       ' Zoom speed normal
Waitms 10
Print #1 , ":WFCCB40"                                       ' Switch the instant digital zoom ON
Waitms 10
Print #1 , ":WFCBBA8"                                       ' Auto focus ON allways (not on manual Focus)

'setup Iris offset (average) level
Irisavg = &H40                                                 ' Iris is normal hex 40 i hope
Irish = 0                                                          ' Bit set for Iris to HIGH
Irisl = 0                                                           ' Bit set for Iris to LOW
Freezebit = 0                                                   ' togglebit for freez images
Wait 1

'The main program
Do

If Pinc.0 = 0 Then
   Print #1 , ":WFCBB99"                                    ' zoom near
   Bitwait Pinc.0 , Set                                       ' wait for button relace
   Print #1 , ":WFCBBFE"                                    ' stop
   Print #1 , ":WFCBBA8"                                    ' Auto focus on
   Waitms 300                                                 ' wait for auto zoom to get focus
End If

If Pinc.1 = 0 Then
   Print #1 , ":WFCBB9B"                                    ' zoom far
   Bitwait Pinc.1 , Set                                       ' wait for button relace
   Print #1 , ":WFCBBFE"                                   ' stop
   Print #1 , ":WFCBBA8"                                   ' Auto focus on
   Waitms 300                                                 ' wait for auto zoom to get focus
End If

If Pinc.2 = 0 Then
   Print #1 , ":WFCBBFE"                                   ' Auto focus off
   Print #1 , ":WFCBBAA"                                   ' focus near
   Bitwait Pinc.2 , Set                                       ' wait for button relace
   Print #1 , ":WFCBBFE"                                    ' stop
End If

If Pinc.3 = 0 Then
   Print #1 , ":WFCBBFE"                                    ' Auto focus off
   Print #1 , ":WFCBBA9"                                    ' focus far
   Bitwait Pinc.3 , Set                                       ' wait for button relace
   Print #1 , ":WFCBBFE"                                    ' stop
End If

'Iris offset (average) level +   Open
If Pinc.4 = 0 And Irish = 0 Then                           ' if pinc.4 and irisbit high is 0 else skip
  Irisl = 0                                                         ' reset to low bit
  I = Irisavg + 1                                                ' to start from known pos
   For I = Irisavg To 255                                     '  Irisavg to High 00 - FF
      Print #1 , ":WFD9E" ; Hex(i)                        ' Iris offset (average) send
      Irisavg = I                                                 ' put I count into Irisavg
    If I = 255 Then                                            ' If MAX Iris then exit  for
      Irish = 1                                                   ' Set Iris bit TO high so it dont do the OPEN until you have closed it a bit
      Exit For
    End If
   If Pinc.4 = 1 Then Exit For                              ' check for button relace
  Next                                                            ' next i
End If

'Iris offset (average) level -  Close
If Pinc.5 = 0 And Irisl = 0 Then                            ' if pinc.5 and irisbit low is 0 else skip
  Irish = 0                                                        ' reset to high bit
  I = Irisavg                                                      ' to start from known pos
   For I = Irisavg To 0 Step -1                               ' from Irisavg to MIN FF - 00
      Print #1 , ":WFD9E" ; Hex(i)                          ' Iris offset (average) send
      Irisavg = I                                                   ' put I count into Irisavg
    If I = 0 Then                                                 ' If MIN Iris then exit  for
      Irisl = 1                                                      ' Set Iris bit TO low so it dont do the CLOSE until you have open it a bit
      Exit For
    End If
    If Pinc.5 = 1 Then Exit For                             ' check for button relace
  Next                                                            ' next i
End If

If Pinc.6 = 0 And Freezebit = 0 Then
   Print #1 , ":WFF3301"                                    ' Freeze Field ON
   Freezebit = 1                                               ' set freezebit to freeze  OFF
   Bitwait Pinc.6 , Set                                       ' check for button relace
End If

If Pinc.6 = 0 And Freezebit = 1 Then
   Print #1 , ":WFF3300"                                    ' Freeze OFF
   Freezebit = 0                                               ' set freezebit to freeze  ON
   Bitwait Pinc.6 , Set                                       ' check for button relace
End If

'If Pinc.7 = 0 Then
'   Print #1 , ":"                                               ' not used yet
'   Bitwait Pinc.7 , Set
'End If

Loop
Close #1
End