abc
Dependencies: mbed-rtos mbed pixy pixy_test
Fork of aUtO_volume_v3 by
main.cpp@4:fe091424b406, 2015-12-10 (annotated)
- 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?
User | Revision | Line number | New 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 | } |