SmartWheels self-driving race car. Designed for NXP Cup. Uses FRDM-KL25Z, area-scan camera, and simple image processing to detect and navigate any NXP spec track.

Dependencies:   TSI USBDevice mbed-dev

Fork of SmartWheels by haofan Zheng

Camera.h

Committer:
hazheng
Date:
2017-02-01
Revision:
3:c8867972ffc7

File content as of revision 3:c8867972ffc7:

#pragma once
#include "mbed.h"
#include <vector>

#define CAM_MAX_ROW 480
#define CAM_MAX_COL 640

class Camera
{
public:

    Camera();

    ~Camera();
    
    bool HasPicture() const;
    
    const unsigned char * GetPicture() const;
    
private:
    
    void OnPixelClock();
    
    void OnFrameClock();
    
    void OnHorizontalClock();
    
    InterruptIn m_pClock;
    
    InterruptIn m_href;
    
    InterruptIn m_vsnyc;
    
    std::vector<DigitalIn> m_dIn;
    
    unsigned char  m_pics[2][(CAM_MAX_ROW + 1) * (CAM_MAX_COL + 1)];
    
    unsigned char m_currentIndex;
    
    unsigned int m_currentRow;
    
    unsigned int m_currentCol;
    
    bool m_hasPic;
};