Ruprecht Altenburger
/
TPixy-Interface
SPI read Pixi Cam V1
pixyUART.h@5:d109b094d4bb, 2021-08-28 (annotated)
- Committer:
- altb2
- Date:
- Sat Aug 28 13:03:58 2021 +0000
- Revision:
- 5:d109b094d4bb
Pixy Cam V1 Interface with UARt connection. Just connect the TX -> RX pin and power supply (see Pixy cam doc)
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
altb2 | 5:d109b094d4bb | 1 | #pragma once |
altb2 | 5:d109b094d4bb | 2 | #include "mbed.h" |
altb2 | 5:d109b094d4bb | 3 | |
altb2 | 5:d109b094d4bb | 4 | #define INVALID_BLOCK 20 |
altb2 | 5:d109b094d4bb | 5 | #define CENTER_X 160 |
altb2 | 5:d109b094d4bb | 6 | #define CENTER_Y 100 |
altb2 | 5:d109b094d4bb | 7 | #define NUM_BLOCKS 10 |
altb2 | 5:d109b094d4bb | 8 | //a class to aid in SPI communication with the pixy camera |
altb2 | 5:d109b094d4bb | 9 | |
altb2 | 5:d109b094d4bb | 10 | //this details the object block format of returned data as described in |
altb2 | 5:d109b094d4bb | 11 | //http://www.cmucam.org/projects/cmucam5/wiki/Pixy_Serial_Protocol |
altb2 | 5:d109b094d4bb | 12 | |
altb2 | 5:d109b094d4bb | 13 | //blatantly stole this from their code |
altb2 | 5:d109b094d4bb | 14 | struct Block |
altb2 | 5:d109b094d4bb | 15 | { |
altb2 | 5:d109b094d4bb | 16 | uint16_t signature; |
altb2 | 5:d109b094d4bb | 17 | uint16_t x; |
altb2 | 5:d109b094d4bb | 18 | uint16_t y; |
altb2 | 5:d109b094d4bb | 19 | uint16_t width; |
altb2 | 5:d109b094d4bb | 20 | uint16_t height; |
altb2 | 5:d109b094d4bb | 21 | }; |
altb2 | 5:d109b094d4bb | 22 | |
altb2 | 5:d109b094d4bb | 23 | class pixyUART |
altb2 | 5:d109b094d4bb | 24 | { |
altb2 | 5:d109b094d4bb | 25 | private: |
altb2 | 5:d109b094d4bb | 26 | BufferedSerial *uart; |
altb2 | 5:d109b094d4bb | 27 | short sync; //the block signature. 16 bits |
altb2 | 5:d109b094d4bb | 28 | int8_t readTwoBytesLSB(uint16_t *); |
altb2 | 5:d109b094d4bb | 29 | void readNBytes(char* buf, int num); |
altb2 | 5:d109b094d4bb | 30 | int numBlocks; //amt |
altb2 | 5:d109b094d4bb | 31 | uint8_t buffer[200]; |
altb2 | 5:d109b094d4bb | 32 | public: |
altb2 | 5:d109b094d4bb | 33 | pixyUART(BufferedSerial * ); |
altb2 | 5:d109b094d4bb | 34 | ~pixyUART(); |
altb2 | 5:d109b094d4bb | 35 | void capture(); //fills in the blocks pointer |
altb2 | 5:d109b094d4bb | 36 | Block* getBlocks(); |
altb2 | 5:d109b094d4bb | 37 | int captured_blocks; |
altb2 | 5:d109b094d4bb | 38 | Block blocks[NUM_BLOCKS]; //where the blocks are stored |
altb2 | 5:d109b094d4bb | 39 | }; |