FRC - Hackathon
/
TestPixy
Pixy (cmucam5) Library HelloWorld Program
Fork of TestPixy by
main.cpp@1:b3e8acec058f, 2018-06-01 (annotated)
- Committer:
- haarkon
- Date:
- Fri Jun 01 10:28:25 2018 +0000
- Revision:
- 1:b3e8acec058f
- Parent:
- 0:ff2018f6c7cd
Test and Helloworld program for Pixy (CMUCAM5) smart camera Library
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
haarkon | 0:ff2018f6c7cd | 1 | #include "mbed.h" |
haarkon | 0:ff2018f6c7cd | 2 | #include "Pixy.h" |
haarkon | 0:ff2018f6c7cd | 3 | |
haarkon | 1:b3e8acec058f | 4 | Serial pc (PA_2, PA_3, 921600); // Serial link with PC |
haarkon | 1:b3e8acec058f | 5 | PIXY Pixy (PA_0, PA_1, 230400); // The PIXY |
haarkon | 0:ff2018f6c7cd | 6 | |
haarkon | 1:b3e8acec058f | 7 | DigitalOut led1 (PA_5); // Led1 is for test purpose |
haarkon | 1:b3e8acec058f | 8 | DigitalOut led2 (PD_2); // Led2 is for test purpose |
haarkon | 1:b3e8acec058f | 9 | DigitalOut disquette (PA_12); // Baloon destructor command signal (must be set to 0 if not used) |
haarkon | 0:ff2018f6c7cd | 10 | |
haarkon | 0:ff2018f6c7cd | 11 | int main() |
haarkon | 0:ff2018f6c7cd | 12 | { |
haarkon | 1:b3e8acec058f | 13 | int nbCC, nbNM, cr; // Local treatment variables |
haarkon | 1:b3e8acec058f | 14 | Byte msg, brightness = 50; |
haarkon | 1:b3e8acec058f | 15 | T_pixyCCBloc CCBuf; // Color code object buffer |
haarkon | 1:b3e8acec058f | 16 | T_pixyNMBloc NMBuf; // Normal object buffer |
haarkon | 0:ff2018f6c7cd | 17 | |
haarkon | 1:b3e8acec058f | 18 | pc.printf ("\r\nHelloWorld\r\n"); // display "HelloWorld" |
haarkon | 1:b3e8acec058f | 19 | led1 = 1; // Switch ON Led1 |
haarkon | 1:b3e8acec058f | 20 | led2 = 0; // Switch OFF Led2 |
haarkon | 1:b3e8acec058f | 21 | disquette = 0; // Baloon destructor set to OFF |
haarkon | 0:ff2018f6c7cd | 22 | |
haarkon | 1:b3e8acec058f | 23 | wait (5); // Wait for PIXY to boot up |
haarkon | 1:b3e8acec058f | 24 | if (Pixy.checkPixy() == -1) { // If no pixy is transmitting (neither pixy not teached or not connected or else) |
haarkon | 1:b3e8acec058f | 25 | pc.printf ("\rNo Pixy\n\r"); // display error message |
haarkon | 1:b3e8acec058f | 26 | while(1); // Hang |
haarkon | 1:b3e8acec058f | 27 | } else { // If pixy is talking |
haarkon | 1:b3e8acec058f | 28 | pc.printf ("\rRock'n'Roll\n\r"); // Let fun begin |
haarkon | 0:ff2018f6c7cd | 29 | } |
haarkon | 0:ff2018f6c7cd | 30 | |
haarkon | 0:ff2018f6c7cd | 31 | do { |
haarkon | 1:b3e8acec058f | 32 | Pixy.setBrightness (brightness); // Set brightness (note that 0 brightness is ajustable in PIXYMON) |
haarkon | 1:b3e8acec058f | 33 | wait (0.2); // Wait for brightness to establish |
haarkon | 1:b3e8acec058f | 34 | cr = Pixy.detectedObject (&nbNM, &nbCC); // Read the number of objects detected |
haarkon | 0:ff2018f6c7cd | 35 | pc.printf ("\r\nBrightness = %3d => nbCC = %2d - nbNM = %2d : cr = %2d ? ", brightness, nbCC, nbNM, cr); |
haarkon | 1:b3e8acec058f | 36 | msg = pc.getc(); // Wait for user to choose what to do |
haarkon | 1:b3e8acec058f | 37 | pc.printf("%c\r\n", msg); // Echo |
haarkon | 1:b3e8acec058f | 38 | if (msg=='a') brightness += 5; // if message is 'a' then increase brightness by 5 |
haarkon | 1:b3e8acec058f | 39 | if (msg=='q') brightness -= 5; // if message is 'q' then decrease brightness by 5 |
haarkon | 1:b3e8acec058f | 40 | if (msg=='z') brightness += 1; // if message is 'z' then increase brightness by 1 |
haarkon | 1:b3e8acec058f | 41 | if (msg=='s') brightness -= 1; // if message is 's' then decrease brightness by 1 |
haarkon | 1:b3e8acec058f | 42 | } while (msg != 'X'); // Une 'X' to quit |
haarkon | 0:ff2018f6c7cd | 43 | |
haarkon | 0:ff2018f6c7cd | 44 | while (1) { |
haarkon | 1:b3e8acec058f | 45 | if (Pixy.checkNewImage()) { //Wait for new image |
haarkon | 1:b3e8acec058f | 46 | cr = Pixy.detectedObject (&nbNM, &nbCC); // Get detected object list and display it |
haarkon | 0:ff2018f6c7cd | 47 | pc.printf ("\r\tnbCC = %2d - nbNM = %2d : cr = %2d\n", nbCC, nbNM, cr); |
haarkon | 1:b3e8acec058f | 48 | while (nbCC > 0) { // while there are some CC Blocks to read |
haarkon | 1:b3e8acec058f | 49 | CCBuf = Pixy.getCCBloc (); // Read them from FIFO and display them |
haarkon | 0:ff2018f6c7cd | 50 | nbCC--; |
haarkon | 0:ff2018f6c7cd | 51 | pc.printf ("\rCC %5d : x=%5d, y=%5d - w=%5d, h=%5d, a=%5d\n", CCBuf.signature, CCBuf.x, CCBuf.y, CCBuf.width, CCBuf.height, (short)CCBuf.angle); |
haarkon | 0:ff2018f6c7cd | 52 | } |
haarkon | 1:b3e8acec058f | 53 | while (nbNM > 0) { // while there are some NM Blocks to read |
haarkon | 1:b3e8acec058f | 54 | NMBuf = Pixy.getNMBloc (); // Read them from FIFO and display them |
haarkon | 0:ff2018f6c7cd | 55 | nbNM--; |
haarkon | 0:ff2018f6c7cd | 56 | pc.printf ("\rNM %4x : x=%5d, y=%5d - w=%5d, h=%5d\n", NMBuf.signature, NMBuf.x, NMBuf.y, NMBuf.width, NMBuf.height); |
haarkon | 0:ff2018f6c7cd | 57 | } |
haarkon | 1:b3e8acec058f | 58 | led1 = !led1; // Switch Led1 |
haarkon | 1:b3e8acec058f | 59 | led2 = !led2; // Switch Led2 |
haarkon | 0:ff2018f6c7cd | 60 | } |
haarkon | 0:ff2018f6c7cd | 61 | } |
haarkon | 0:ff2018f6c7cd | 62 | } |