abc

Dependencies:   mbed-rtos mbed pixy pixy_test

Fork of aUtO_volume_v4 by ese519

Committer:
jfields
Date:
Thu Dec 10 02:41:42 2015 +0000
Revision:
4:fe091424b406
Parent:
3:56a1264e43aa
Child:
5:06fa76d9d7bd
abc

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jfields 0:6618ecb9567e 1 #include "mbed.h"
jfields 0:6618ecb9567e 2 #include "Pixy.h"
jfields 0:6618ecb9567e 3
jfields 1:5302a23c97c4 4 // init board
jfields 0:6618ecb9567e 5 Pixy pixy(Pixy::SPI, p11, p12, p13);
jfields 0:6618ecb9567e 6 Serial pc(USBTX, USBRX);
jfields 4:fe091424b406 7 DigitalOut pin1(p24);
jfields 4:fe091424b406 8 DigitalOut pin2(p25);
jfields 0:6618ecb9567e 9
jfields 3:56a1264e43aa 10 #if defined(TARGET_LPC1768)
jfields 3:56a1264e43aa 11 Serial blue(p9, p10); // TX, RX
jfields 3:56a1264e43aa 12 //Serial blue(p13, p14); // TX, RX
jfields 3:56a1264e43aa 13 #elif defined(TARGET_LPC4330_M4)
jfields 3:56a1264e43aa 14 Serial blue(P6_4, P6_5); // UART0_TX, UART0_RX
jfields 3:56a1264e43aa 15 //Serial blue(P2_3, P2_4); // UART3_TX, UART3_RX
jfields 3:56a1264e43aa 16 #endif
jfields 3:56a1264e43aa 17
jfields 1:5302a23c97c4 18 // global vars
jfields 1:5302a23c97c4 19 int num_readings = 0;
jfields 1:5302a23c97c4 20 int total_y = 0;
jfields 4:fe091424b406 21 float result_level = 0; // mL
jfields 4:fe091424b406 22 float result_hourly = 0; // mL/hr
jfields 4:fe091424b406 23 float prev_level = 0;
jfields 1:5302a23c97c4 24
jfields 4:fe091424b406 25 // funcs and threads
jfields 1:5302a23c97c4 26 void get_volume(int i);
jfields 4:fe091424b406 27 void get_hourly(void const *args);
jfields 4:fe091424b406 28 RtosTimer get_hourly_thread(get_hourly, osTimerPeriodic);
jfields 1:5302a23c97c4 29
jfields 0:6618ecb9567e 30 int main() {
jfields 1:5302a23c97c4 31
jfields 3:56a1264e43aa 32 // init bluetooth
jfields 3:56a1264e43aa 33 blue.baud(9600);
jfields 3:56a1264e43aa 34
jfields 3:56a1264e43aa 35 // init pc
jfields 3:56a1264e43aa 36 pc.baud(9600);
jfields 3:56a1264e43aa 37 pc.printf("Bluetooth Start\r\n");
jfields 3:56a1264e43aa 38 pc.printf("ready\n\r");
jfields 3:56a1264e43aa 39
jfields 1:5302a23c97c4 40 // init pixy
jfields 0:6618ecb9567e 41 pixy.setSerialOutput(&pc);
jfields 1:5302a23c97c4 42
jfields 4:fe091424b406 43 // start entry pump
jfields 4:fe091424b406 44 pin1 = 1;
jfields 4:fe091424b406 45 pin2 = 0;
jfields 4:fe091424b406 46
jfields 4:fe091424b406 47 // start hourly thread
jfields 4:fe091424b406 48 get_hourly_thread.start(10000);
jfields 4:fe091424b406 49
jfields 0:6618ecb9567e 50 while (1) {
jfields 1:5302a23c97c4 51
jfields 1:5302a23c97c4 52 // get pixy data
jfields 0:6618ecb9567e 53 uint16_t blocks;
jfields 0:6618ecb9567e 54 blocks = pixy.getBlocks();
jfields 1:5302a23c97c4 55
jfields 1:5302a23c97c4 56 // store data
jfields 0:6618ecb9567e 57 if (blocks) {
jfields 1:5302a23c97c4 58 for (int j = 0; j < blocks; j++) {
jfields 1:5302a23c97c4 59 get_volume(pixy.blocks[j].y);
jfields 0:6618ecb9567e 60 }
jfields 0:6618ecb9567e 61 }
jfields 1:5302a23c97c4 62 }
jfields 0:6618ecb9567e 63 }
jfields 1:5302a23c97c4 64
jfields 4:fe091424b406 65 void update_display(void const *args) {
jfields 4:fe091424b406 66 result_hourly = (result_level-prev_level)*6
jfields 4:fe091424b406 67 prev_level = result_level;
jfields 4:fe091424b406 68 }
jfields 4:fe091424b406 69
jfields 1:5302a23c97c4 70 void get_volume(int y) {
jfields 1:5302a23c97c4 71
jfields 1:5302a23c97c4 72 // update data
jfields 1:5302a23c97c4 73 total_y += y;
jfields 1:5302a23c97c4 74 num_readings++;
jfields 1:5302a23c97c4 75
jfields 1:5302a23c97c4 76 // output results
jfields 4:fe091424b406 77 if (num_readings >= 10) {
jfields 2:1354ce60c0b9 78 float average_y = (float)total_y/num_readings;
jfields 4:fe091424b406 79 float result_level = -0.2642*average_y + 38.453;
jfields 1:5302a23c97c4 80
jfields 3:56a1264e43aa 81 // to pc
jfields 3:56a1264e43aa 82 pc.printf("y = %d, num_readings = %d, average = %.2f, mL = %.2f\r\n", y, num_readings, average_y, result);
jfields 4:fe091424b406 83 pc.printf("%.2f %.2f\r\n", result_level, result_hourly);
jfields 3:56a1264e43aa 84
jfields 3:56a1264e43aa 85 // to bluetooth
jfields 3:56a1264e43aa 86 //blue.printf("y = %d, num_readings = %d, average = %.2f, mL = %.2f\r\n", y, num_readings, average_y, result);
jfields 3:56a1264e43aa 87 blue.printf("%.2f\r\n", result);
jfields 3:56a1264e43aa 88
jfields 1:5302a23c97c4 89 // reset vars
jfields 1:5302a23c97c4 90 num_readings = 0;
jfields 1:5302a23c97c4 91 total_y = 0;
jfields 1:5302a23c97c4 92 }
jfields 1:5302a23c97c4 93 }