Pixy (cmucam5) Library HelloWorld Program

Dependencies:   Pixy mbed

Fork of TestPixy by FRC - Hackathon

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?

UserRevisionLine numberNew 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 }