This repository has been archived by the owner on Jun 14, 2024. It is now read-only.
forked from meltingrabbit/CanSatForHighSchoolStudents
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Adafruit_VC0706.h
132 lines (112 loc) · 4.16 KB
/
Adafruit_VC0706.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
/***************************************************
This is a library for the Adafruit TTL JPEG Camera (VC0706 chipset)
Pick one up today in the adafruit shop!
------> http://www.adafruit.com/products/397
These displays use Serial to communicate, 2 pins are required to interface
Adafruit invests time and resources providing this open source code,
please support Adafruit and open-source hardware by purchasing
products from Adafruit!
Written by Limor Fried/Ladyada for Adafruit Industries.
BSD license, all text above must be included in any redistribution
****************************************************/
#if ARDUINO >= 100
#include "Arduino.h"
#if not defined (_VARIANT_ARDUINO_DUE_X_) && not defined (_VARIANT_ARDUINO_ZERO_)
#include <SoftwareSerial.h>
#endif
#else
#include "WProgram.h"
#include "NewSoftSerial.h"
#endif
#define VC0706_RESET 0x26
// #define VC0706_GEN_VERSION 0x11
// #define VC0706_SET_PORT 0x24
#define VC0706_READ_FBUF 0x32
#define VC0706_GET_FBUF_LEN 0x34
#define VC0706_FBUF_CTRL 0x36
// #define VC0706_DOWNSIZE_CTRL 0x54
// #define VC0706_DOWNSIZE_STATUS 0x55
// #define VC0706_READ_DATA 0x30
#define VC0706_WRITE_DATA 0x31
// #define VC0706_COMM_MOTION_CTRL 0x37
// #define VC0706_COMM_MOTION_STATUS 0x38
// #define VC0706_COMM_MOTION_DETECTED 0x39
// #define VC0706_MOTION_CTRL 0x42
// #define VC0706_MOTION_STATUS 0x43
// #define VC0706_TVOUT_CTRL 0x44
// #define VC0706_OSD_ADD_CHAR 0x45
#define VC0706_STOPCURRENTFRAME 0x0
// #define VC0706_STOPNEXTFRAME 0x1
// #define VC0706_RESUMEFRAME 0x3
// #define VC0706_STEPFRAME 0x2
#define VC0706_640x480 0x00
#define VC0706_320x240 0x11
#define VC0706_160x120 0x22
// #define VC0706_MOTIONCONTROL 0x0
// #define VC0706_UARTMOTION 0x01
// #define VC0706_ACTIVATEMOTION 0x01
// #define VC0706_SET_ZOOM 0x52
// #define VC0706_GET_ZOOM 0x53
#define CAMERABUFFSIZ 100
// #define CAMERABUFFSIZ 50 // 減らした.多分問題ないが,怖いので安全コードも足した. L.370, L.458あたり
#define CAMERADELAY 10
class Adafruit_VC0706 {
public:
#if not defined (_VARIANT_ARDUINO_DUE_X_) && not defined (_VARIANT_ARDUINO_ZERO_)
#if ARDUINO >= 100
Adafruit_VC0706(SoftwareSerial *ser); // Constructor when using SoftwareSerial
#else
Adafruit_VC0706(NewSoftSerial *ser); // Constructor when using NewSoftSerial
#endif
#endif
Adafruit_VC0706(HardwareSerial *ser); // Constructor when using HardwareSerial
boolean begin(uint16_t baud = 38400);
boolean reset(void);
// boolean TVon(void);
// boolean TVoff(void);
boolean takePicture(void);
uint8_t *readPicture(uint8_t n);
// boolean resumeVideo(void);
uint32_t frameLength(void);
// char *getVersion(void);
uint8_t available();
// uint8_t getDownsize(void);
// boolean setDownsize(uint8_t);
// uint8_t getImageSize();
boolean setImageSize(uint8_t);
// boolean getMotionDetect();
// uint8_t getMotionStatus(uint8_t);
// boolean motionDetected();
// boolean setMotionDetect(boolean f);
// boolean setMotionStatus(uint8_t x, uint8_t d1, uint8_t d2);
boolean cameraFrameBuffCtrl(uint8_t command);
// uint8_t getCompression();
// boolean setCompression(uint8_t c);
// boolean getPTZ(uint16_t &w, uint16_t &h, uint16_t &wz, uint16_t &hz, uint16_t &pan, uint16_t &tilt);
// boolean setPTZ(uint16_t wz, uint16_t hz, uint16_t pan, uint16_t tilt);
// void OSD(uint8_t x, uint8_t y, char *s); // isnt supported by the chip :(
// char* setBaud9600();
// char* setBaud19200();
// char* setBaud38400();
// char* setBaud57600();
// char* setBaud115200();
private:
uint8_t serialNum;
uint8_t camerabuff[CAMERABUFFSIZ+1];
uint8_t bufferLen;
uint16_t frameptr;
#if not defined (_VARIANT_ARDUINO_DUE_X_) && not defined (_VARIANT_ARDUINO_ZERO_)
#if ARDUINO >= 100
SoftwareSerial *swSerial;
#else
NewSoftSerial *swSerial;
#endif
#endif
HardwareSerial *hwSerial;
void common_init(void);
boolean runCommand(uint8_t cmd, uint8_t args[], uint8_t argn, uint8_t resp, boolean flushflag = true);
void sendCommand(uint8_t cmd, uint8_t args[], uint8_t argn);
uint8_t readResponse(uint8_t numbytes, uint8_t timeout);
boolean verifyResponse(uint8_t command);
// void printBuff(void);
};