an SPI interface the cmu pixy camera

Dependents:   robotic_fish_ver_4_9_pixy UMO

pixy.h

Committer:
sandwich
Date:
2014-07-11
Revision:
9:89b9d1a6457c
Parent:
8:a915c5eff55a

File content as of revision 9:89b9d1a6457c:

#pragma once
#include "mbed.h"

#define INVALID_BLOCK 20
#define CENTER_X 160
#define CENTER_Y 100
#define NUM_BLOCKS 10
//a class to aid in SPI communication with the pixy camera

//this details the object block format of returned data as described in
//http://www.cmucam.org/projects/cmucam5/wiki/Pixy_Serial_Protocol

//blatantly stole this from their code
struct Block 
{
  uint16_t signature;
  uint16_t x;
  uint16_t y;
  uint16_t width;
  uint16_t height;
};

class pixySPI
{
private:
    SPI spi;
    //SPI spi(p5, p6, p7); // mosi, miso, sclk
    short sync; //the block signature. 16 bits
    short readTwoBytesLSB();
    void readNBytes(char* buf, int num);
    Block blocks[NUM_BLOCKS]; //where the blocks are stored
    int numBlocks; //amt
    int bestX;
    int bestY;
public:
    pixySPI(PinName mosi,PinName miso,PinName sclk, int nBlocks);
    ~pixySPI();
    void capture(); //fills in the blocks pointer
    char getRawData();
    Block* getBlocks();
    int getNumBlocks();
    int getBestX();
    int getBestY();
};