UMO

Dependencies:   mbed pixy pixy_cam

Committer:
srijani987
Date:
Thu Dec 10 02:25:58 2015 +0000
Revision:
0:640a85b62ac6
UMO

Who changed what in which revision?

UserRevisionLine numberNew contents of line
srijani987 0:640a85b62ac6 1 #include "mbed.h"
srijani987 0:640a85b62ac6 2 #include "Pixy.h"
srijani987 0:640a85b62ac6 3
srijani987 0:640a85b62ac6 4 // init board
srijani987 0:640a85b62ac6 5 Pixy pixy(Pixy::SPI, p11, p12, p13);
srijani987 0:640a85b62ac6 6 Serial pc(USBTX, USBRX);
srijani987 0:640a85b62ac6 7 DigitalOut pin1(p24);
srijani987 0:640a85b62ac6 8 DigitalOut pin2(p25);
srijani987 0:640a85b62ac6 9 DigitalOut led1(LED1);
srijani987 0:640a85b62ac6 10
srijani987 0:640a85b62ac6 11 #if defined(TARGET_LPC1768)
srijani987 0:640a85b62ac6 12 Serial blue(p9, p10); // TX, RX
srijani987 0:640a85b62ac6 13 //Serial blue(p13, p14); // TX, RX
srijani987 0:640a85b62ac6 14 #elif defined(TARGET_LPC4330_M4)
srijani987 0:640a85b62ac6 15 Serial blue(P6_4, P6_5); // UART0_TX, UART0_RX
srijani987 0:640a85b62ac6 16 //Serial blue(P2_3, P2_4); // UART3_TX, UART3_RX
srijani987 0:640a85b62ac6 17 #endif
srijani987 0:640a85b62ac6 18
srijani987 0:640a85b62ac6 19 // global vars
srijani987 0:640a85b62ac6 20 int num_readings = 0;
srijani987 0:640a85b62ac6 21 int total_y = 0;
srijani987 0:640a85b62ac6 22 float result = 0;
srijani987 0:640a85b62ac6 23
srijani987 0:640a85b62ac6 24 // funcs
srijani987 0:640a85b62ac6 25 void get_volume(int i);
srijani987 0:640a85b62ac6 26
srijani987 0:640a85b62ac6 27 int main() {
srijani987 0:640a85b62ac6 28
srijani987 0:640a85b62ac6 29 pin1 = 1;
srijani987 0:640a85b62ac6 30 pin2 = 0;
srijani987 0:640a85b62ac6 31
srijani987 0:640a85b62ac6 32 // init pixy
srijani987 0:640a85b62ac6 33 pc.printf("ready\n\r");
srijani987 0:640a85b62ac6 34 pixy.setSerialOutput(&pc);
srijani987 0:640a85b62ac6 35
srijani987 0:640a85b62ac6 36 while (1) {
srijani987 0:640a85b62ac6 37
srijani987 0:640a85b62ac6 38 // get pixy data
srijani987 0:640a85b62ac6 39 uint16_t blocks;
srijani987 0:640a85b62ac6 40 blocks = pixy.getBlocks();
srijani987 0:640a85b62ac6 41
srijani987 0:640a85b62ac6 42 // store data
srijani987 0:640a85b62ac6 43 if (blocks) {
srijani987 0:640a85b62ac6 44 //led1 = 1;
srijani987 0:640a85b62ac6 45 for (int j = 0; j < blocks; j++) {
srijani987 0:640a85b62ac6 46 get_volume(pixy.blocks[j].y);
srijani987 0:640a85b62ac6 47 //led1 = 1;
srijani987 0:640a85b62ac6 48 if(result >= 30.0)
srijani987 0:640a85b62ac6 49 {//led1 = 1;
srijani987 0:640a85b62ac6 50 pin1 = 0;
srijani987 0:640a85b62ac6 51 pin2 = 1;}
srijani987 0:640a85b62ac6 52 if(result < 2.0){
srijani987 0:640a85b62ac6 53 pin2 = 0;
srijani987 0:640a85b62ac6 54 pin1 = 1; }
srijani987 0:640a85b62ac6 55
srijani987 0:640a85b62ac6 56
srijani987 0:640a85b62ac6 57 }
srijani987 0:640a85b62ac6 58 }
srijani987 0:640a85b62ac6 59 }
srijani987 0:640a85b62ac6 60 }
srijani987 0:640a85b62ac6 61
srijani987 0:640a85b62ac6 62
srijani987 0:640a85b62ac6 63 void get_volume(int y) {
srijani987 0:640a85b62ac6 64
srijani987 0:640a85b62ac6 65 // led1 = 1;
srijani987 0:640a85b62ac6 66
srijani987 0:640a85b62ac6 67 // update data
srijani987 0:640a85b62ac6 68 total_y += y;
srijani987 0:640a85b62ac6 69 num_readings++;
srijani987 0:640a85b62ac6 70
srijani987 0:640a85b62ac6 71 // output results
srijani987 0:640a85b62ac6 72 if (num_readings > 30) {
srijani987 0:640a85b62ac6 73 float average_y = (float)total_y/num_readings;
srijani987 0:640a85b62ac6 74 result = -0.2642*average_y + 38.453;
srijani987 0:640a85b62ac6 75 pc.printf("Volume is : %.2f mL\r\n", result);
srijani987 0:640a85b62ac6 76 blue.printf("Volume is : %.2f mL\r\n", result);
srijani987 0:640a85b62ac6 77
srijani987 0:640a85b62ac6 78
srijani987 0:640a85b62ac6 79 // reset vars
srijani987 0:640a85b62ac6 80 num_readings = 0;
srijani987 0:640a85b62ac6 81 total_y = 0;
srijani987 0:640a85b62ac6 82 }
srijani987 0:640a85b62ac6 83 }