Dependencies: TCS3200 X_NUCLEO_53L0A1 mbed
main.cpp@0:dd84da3761e1, 2018-03-23 (annotated)
- Committer:
- kenken0721
- Date:
- Fri Mar 23 13:36:00 2018 +0000
- Revision:
- 0:dd84da3761e1
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
kenken0721 | 0:dd84da3761e1 | 1 | #include "mbed.h" |
kenken0721 | 0:dd84da3761e1 | 2 | #include "XNucleo53L0A1.h" |
kenken0721 | 0:dd84da3761e1 | 3 | #include "TCS3200.h" |
kenken0721 | 0:dd84da3761e1 | 4 | #include <stdio.h> |
kenken0721 | 0:dd84da3761e1 | 5 | |
kenken0721 | 0:dd84da3761e1 | 6 | #define VL53L0_I2C_SDA D4 |
kenken0721 | 0:dd84da3761e1 | 7 | #define VL53L0_I2C_SCL D5 |
kenken0721 | 0:dd84da3761e1 | 8 | |
kenken0721 | 0:dd84da3761e1 | 9 | #define NOT_RECEIVE 0 |
kenken0721 | 0:dd84da3761e1 | 10 | #define RED_RECEIVE 1 |
kenken0721 | 0:dd84da3761e1 | 11 | #define BLUE_RECEIVE 2 |
kenken0721 | 0:dd84da3761e1 | 12 | #define YELLOW_RECIEVE 3 |
kenken0721 | 0:dd84da3761e1 | 13 | |
kenken0721 | 0:dd84da3761e1 | 14 | |
kenken0721 | 0:dd84da3761e1 | 15 | TCS3200 color(PB_5, PB_2, PC_4);//カラーセンサ |
kenken0721 | 0:dd84da3761e1 | 16 | static XNucleo53L0A1 *board=NULL; |
kenken0721 | 0:dd84da3761e1 | 17 | int count = 0; |
kenken0721 | 0:dd84da3761e1 | 18 | int red_count = 0; |
kenken0721 | 0:dd84da3761e1 | 19 | int blue_count = 0; |
kenken0721 | 0:dd84da3761e1 | 20 | int mode = NOT_RECEIVE; |
kenken0721 | 0:dd84da3761e1 | 21 | |
kenken0721 | 0:dd84da3761e1 | 22 | int main(){ |
kenken0721 | 0:dd84da3761e1 | 23 | long red, green, blue, clear; |
kenken0721 | 0:dd84da3761e1 | 24 | int status; |
kenken0721 | 0:dd84da3761e1 | 25 | uint32_t distance; |
kenken0721 | 0:dd84da3761e1 | 26 | DevI2C *device_i2c = new DevI2C(VL53L0_I2C_SDA, VL53L0_I2C_SCL); |
kenken0721 | 0:dd84da3761e1 | 27 | board = XNucleo53L0A1::instance(device_i2c, A2, D8, D2); |
kenken0721 | 0:dd84da3761e1 | 28 | status = board->init_board(); |
kenken0721 | 0:dd84da3761e1 | 29 | if (status) { |
kenken0721 | 0:dd84da3761e1 | 30 | printf("Failed to init board!\r\n"); |
kenken0721 | 0:dd84da3761e1 | 31 | return 0; |
kenken0721 | 0:dd84da3761e1 | 32 | } |
kenken0721 | 0:dd84da3761e1 | 33 | while (1) { |
kenken0721 | 0:dd84da3761e1 | 34 | status = board->sensor_centre->get_distance(&distance); |
kenken0721 | 0:dd84da3761e1 | 35 | red = color.ReadRed(); |
kenken0721 | 0:dd84da3761e1 | 36 | blue = color.ReadBlue(); |
kenken0721 | 0:dd84da3761e1 | 37 | clear = color.ReadClear(); |
kenken0721 | 0:dd84da3761e1 | 38 | if(clear <= 30 && distance <= 1000){ |
kenken0721 | 0:dd84da3761e1 | 39 | count++; |
kenken0721 | 0:dd84da3761e1 | 40 | } |
kenken0721 | 0:dd84da3761e1 | 41 | if(count >= 1000){ |
kenken0721 | 0:dd84da3761e1 | 42 | if(red <= 40 && green >= 80 && blue >= 70){ |
kenken0721 | 0:dd84da3761e1 | 43 | red_count++; |
kenken0721 | 0:dd84da3761e1 | 44 | }else if(red >= 80 && green >= 60 && blue <= 40){ |
kenken0721 | 0:dd84da3761e1 | 45 | blue_count++; |
kenken0721 | 0:dd84da3761e1 | 46 | } |
kenken0721 | 0:dd84da3761e1 | 47 | count = 0; |
kenken0721 | 0:dd84da3761e1 | 48 | } |
kenken0721 | 0:dd84da3761e1 | 49 | if(red_count >= 1000 && distance >= 2000){ |
kenken0721 | 0:dd84da3761e1 | 50 | mode = RED_RECEIVE; |
kenken0721 | 0:dd84da3761e1 | 51 | red_count = 0; |
kenken0721 | 0:dd84da3761e1 | 52 | }else if(blue_count >= 1000 && distance >= 2000){ |
kenken0721 | 0:dd84da3761e1 | 53 | mode = BLUE_RECEIVE; |
kenken0721 | 0:dd84da3761e1 | 54 | blue_count = 0; |
kenken0721 | 0:dd84da3761e1 | 55 | } |
kenken0721 | 0:dd84da3761e1 | 56 | } |
kenken0721 | 0:dd84da3761e1 | 57 | } |