|
|
|
|
#ifndef __OPENMV_OPT__
|
|
|
|
|
#define __OPENMV_OPT__
|
|
|
|
|
|
|
|
|
|
#include <ExtSRAMInterface.h>
|
|
|
|
|
#include "AccurateMotor.h"
|
|
|
|
|
#include "GlobalDatas.h"
|
|
|
|
|
#include <Command.h>
|
|
|
|
|
#include <BEEP.h>
|
|
|
|
|
|
|
|
|
|
namespace OpenMVOpt
|
|
|
|
|
{
|
|
|
|
|
extern uint8_t Data_OpenMVBuf[8];
|
|
|
|
|
extern uint8_t ROI_Query_CMD[8];
|
|
|
|
|
|
|
|
|
|
//bool TrackCallback();
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD>false<73><65>ֹͣѭ<D6B9><D1AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѭ<EFBFBD><D1AD>
|
|
|
|
|
typedef bool(*TrackCallback)();
|
|
|
|
|
|
|
|
|
|
struct ImageROIData
|
|
|
|
|
{
|
|
|
|
|
bool up;
|
|
|
|
|
bool down;
|
|
|
|
|
bool left;
|
|
|
|
|
bool right;
|
|
|
|
|
bool middle_up;
|
|
|
|
|
bool middle_down;
|
|
|
|
|
bool data_validate;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̬<EFBFBD><CCAC><EFBFBD><EFBFBD>
|
|
|
|
|
void AdjustCarPosition(uint8_t Car_Speed);
|
|
|
|
|
bool AdjustCarPoseInPlace();
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD>ROI<4F><49><EFBFBD><EFBFBD>
|
|
|
|
|
ImageROIData GetROIData();
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˴<EFBFBD><CBB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ
|
|
|
|
|
bool ROIFoundWhite(const ImageROIData& data);
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶѭ<C6B5><D1AD>
|
|
|
|
|
void OpenMVTrack_Disc_StartUp();
|
|
|
|
|
//ֹͣ<CDA3><D6B9>Ƶѭ<C6B5><D1AD>
|
|
|
|
|
void OpenMVTrack_Disc_CloseUp();
|
|
|
|
|
//ѭ<><D1AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ·<D2BB>ڣ<EFBFBD>
|
|
|
|
|
void OpenMV_Track(uint8_t Car_Speed, TrackCallback cb, bool enable_white_detect = true);
|
|
|
|
|
//ԭ<><D4AD>ѭ<EFBFBD><D1AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̬<EFBFBD><CCAC><EFBFBD><EFBFBD><EFBFBD>н<EFBFBD><D0BD><EFBFBD>
|
|
|
|
|
void OpenMV_TrackInPlace();
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ά<EFBFBD><CEAC>ʶ<EFBFBD><CAB6>
|
|
|
|
|
void OpenMVQr_Disc_StartUp();
|
|
|
|
|
//ֹͣ<CDA3><D6B9>ά<EFBFBD><CEAC>ʶ<EFBFBD><CAB6>
|
|
|
|
|
void OpenMVQr_Disc_CloseUp();
|
|
|
|
|
//<2F>ȴ<EFBFBD><C8B4><EFBFBD>ά<EFBFBD><CEAC><EFBFBD><EFBFBD><EFBFBD>ݻش<DDBB><D8B4><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>룩
|
|
|
|
|
bool OpenMV_WaitQRData(uint8_t* data, uint16_t max_len, uint16_t timeout = 0);
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ά<EFBFBD><CEAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
String DecodeQRData(uint8_t* data, uint16_t len);
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>Ƕȿ<C7B6><C8BF><EFBFBD>
|
|
|
|
|
void Servo_Control(int8_t angle);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
#endif
|