Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
pixy2/Pixy2.h@10:b1bdc51e1c50, 2020-11-24 (annotated)
- Committer:
 - maspadaru
 - Date:
 - Tue Nov 24 14:26:05 2020 +0000
 - Revision:
 - 10:b1bdc51e1c50
 
added Pixy2
Who changed what in which revision?
| User | Revision | Line number | New contents of line | 
|---|---|---|---|
| maspadaru | 10:b1bdc51e1c50 | 1 | // | 
| maspadaru | 10:b1bdc51e1c50 | 2 | // begin license header | 
| maspadaru | 10:b1bdc51e1c50 | 3 | // | 
| maspadaru | 10:b1bdc51e1c50 | 4 | // This file is part of Pixy CMUcam5 or "Pixy" for short | 
| maspadaru | 10:b1bdc51e1c50 | 5 | // | 
| maspadaru | 10:b1bdc51e1c50 | 6 | // All Pixy source code is provided under the terms of the | 
| maspadaru | 10:b1bdc51e1c50 | 7 | // GNU General Public License v2 (http://www.gnu.org/licenses/gpl-2.0.html). | 
| maspadaru | 10:b1bdc51e1c50 | 8 | // Those wishing to use Pixy source code, software and/or | 
| maspadaru | 10:b1bdc51e1c50 | 9 | // technologies under different licensing terms should contact us at | 
| maspadaru | 10:b1bdc51e1c50 | 10 | // cmucam@cs.cmu.edu. Such licensing terms are available for | 
| maspadaru | 10:b1bdc51e1c50 | 11 | // all portions of the Pixy codebase presented here. | 
| maspadaru | 10:b1bdc51e1c50 | 12 | // | 
| maspadaru | 10:b1bdc51e1c50 | 13 | // end license header | 
| maspadaru | 10:b1bdc51e1c50 | 14 | // | 
| maspadaru | 10:b1bdc51e1c50 | 15 | // Arduino ICSP SPI link class | 
| maspadaru | 10:b1bdc51e1c50 | 16 | |
| maspadaru | 10:b1bdc51e1c50 | 17 | #ifndef _PIXY2_H | 
| maspadaru | 10:b1bdc51e1c50 | 18 | #define _PIXY2_H | 
| maspadaru | 10:b1bdc51e1c50 | 19 | |
| maspadaru | 10:b1bdc51e1c50 | 20 | #include "TPixy2.h" | 
| maspadaru | 10:b1bdc51e1c50 | 21 | #include "mbed.h" | 
| maspadaru | 10:b1bdc51e1c50 | 22 | |
| maspadaru | 10:b1bdc51e1c50 | 23 | #define PIXY_SPI_CLOCKRATE 2000000 | 
| maspadaru | 10:b1bdc51e1c50 | 24 | |
| maspadaru | 10:b1bdc51e1c50 | 25 | class Link2SPI { | 
| maspadaru | 10:b1bdc51e1c50 | 26 | public: | 
| maspadaru | 10:b1bdc51e1c50 | 27 | Link2SPI() { | 
| maspadaru | 10:b1bdc51e1c50 | 28 | spi = new SPI(p5, p6, p7); | 
| maspadaru | 10:b1bdc51e1c50 | 29 | } | 
| maspadaru | 10:b1bdc51e1c50 | 30 | |
| maspadaru | 10:b1bdc51e1c50 | 31 | Link2SPI(SPI *spi) { | 
| maspadaru | 10:b1bdc51e1c50 | 32 | this->spi = spi; | 
| maspadaru | 10:b1bdc51e1c50 | 33 | } | 
| maspadaru | 10:b1bdc51e1c50 | 34 | |
| maspadaru | 10:b1bdc51e1c50 | 35 | int8_t open(uint32_t arg) | 
| maspadaru | 10:b1bdc51e1c50 | 36 | { | 
| maspadaru | 10:b1bdc51e1c50 | 37 | spi->format(8, 3); | 
| maspadaru | 10:b1bdc51e1c50 | 38 | spi->frequency(PIXY_SPI_CLOCKRATE); | 
| maspadaru | 10:b1bdc51e1c50 | 39 | |
| maspadaru | 10:b1bdc51e1c50 | 40 | return 0; | 
| maspadaru | 10:b1bdc51e1c50 | 41 | } | 
| maspadaru | 10:b1bdc51e1c50 | 42 | |
| maspadaru | 10:b1bdc51e1c50 | 43 | void close() | 
| maspadaru | 10:b1bdc51e1c50 | 44 | { | 
| maspadaru | 10:b1bdc51e1c50 | 45 | } | 
| maspadaru | 10:b1bdc51e1c50 | 46 | |
| maspadaru | 10:b1bdc51e1c50 | 47 | int16_t recv(uint8_t* buf, uint8_t len, uint16_t* cs = NULL) | 
| maspadaru | 10:b1bdc51e1c50 | 48 | { | 
| maspadaru | 10:b1bdc51e1c50 | 49 | uint8_t i; | 
| maspadaru | 10:b1bdc51e1c50 | 50 | |
| maspadaru | 10:b1bdc51e1c50 | 51 | if (cs) { | 
| maspadaru | 10:b1bdc51e1c50 | 52 | *cs = 0; | 
| maspadaru | 10:b1bdc51e1c50 | 53 | } | 
| maspadaru | 10:b1bdc51e1c50 | 54 | for (i = 0; i < len; i++) { | 
| maspadaru | 10:b1bdc51e1c50 | 55 | buf[i] = spi->write(0x00); | 
| maspadaru | 10:b1bdc51e1c50 | 56 | if (cs) { | 
| maspadaru | 10:b1bdc51e1c50 | 57 | *cs += buf[i]; | 
| maspadaru | 10:b1bdc51e1c50 | 58 | } | 
| maspadaru | 10:b1bdc51e1c50 | 59 | } | 
| maspadaru | 10:b1bdc51e1c50 | 60 | |
| maspadaru | 10:b1bdc51e1c50 | 61 | return len; | 
| maspadaru | 10:b1bdc51e1c50 | 62 | } | 
| maspadaru | 10:b1bdc51e1c50 | 63 | |
| maspadaru | 10:b1bdc51e1c50 | 64 | int16_t send(uint8_t* buf, uint8_t len) | 
| maspadaru | 10:b1bdc51e1c50 | 65 | { | 
| maspadaru | 10:b1bdc51e1c50 | 66 | uint8_t i; | 
| maspadaru | 10:b1bdc51e1c50 | 67 | |
| maspadaru | 10:b1bdc51e1c50 | 68 | for (i = 0; i < len; i++) { | 
| maspadaru | 10:b1bdc51e1c50 | 69 | spi->write(buf[i]); | 
| maspadaru | 10:b1bdc51e1c50 | 70 | } | 
| maspadaru | 10:b1bdc51e1c50 | 71 | |
| maspadaru | 10:b1bdc51e1c50 | 72 | return len; | 
| maspadaru | 10:b1bdc51e1c50 | 73 | } | 
| maspadaru | 10:b1bdc51e1c50 | 74 | |
| maspadaru | 10:b1bdc51e1c50 | 75 | private: | 
| maspadaru | 10:b1bdc51e1c50 | 76 | SPI *spi; | 
| maspadaru | 10:b1bdc51e1c50 | 77 | }; | 
| maspadaru | 10:b1bdc51e1c50 | 78 | |
| maspadaru | 10:b1bdc51e1c50 | 79 | typedef TPixy2<Link2SPI> Pixy2; | 
| maspadaru | 10:b1bdc51e1c50 | 80 | |
| maspadaru | 10:b1bdc51e1c50 | 81 | #endif | 
| maspadaru | 10:b1bdc51e1c50 | 82 |