Dependencies: TCS3200 X_NUCLEO_53L0A1 mbed
main.cpp
- Committer:
- kenken0721
- Date:
- 2018-03-23
- Revision:
- 0:dd84da3761e1
File content as of revision 0:dd84da3761e1:
#include "mbed.h" #include "XNucleo53L0A1.h" #include "TCS3200.h" #include <stdio.h> #define VL53L0_I2C_SDA D4 #define VL53L0_I2C_SCL D5 #define NOT_RECEIVE 0 #define RED_RECEIVE 1 #define BLUE_RECEIVE 2 #define YELLOW_RECIEVE 3 TCS3200 color(PB_5, PB_2, PC_4);//カラーセンサ static XNucleo53L0A1 *board=NULL; int count = 0; int red_count = 0; int blue_count = 0; int mode = NOT_RECEIVE; int main(){ long red, green, blue, clear; int status; uint32_t distance; DevI2C *device_i2c = new DevI2C(VL53L0_I2C_SDA, VL53L0_I2C_SCL); board = XNucleo53L0A1::instance(device_i2c, A2, D8, D2); status = board->init_board(); if (status) { printf("Failed to init board!\r\n"); return 0; } while (1) { status = board->sensor_centre->get_distance(&distance); red = color.ReadRed(); blue = color.ReadBlue(); clear = color.ReadClear(); if(clear <= 30 && distance <= 1000){ count++; } if(count >= 1000){ if(red <= 40 && green >= 80 && blue >= 70){ red_count++; }else if(red >= 80 && green >= 60 && blue <= 40){ blue_count++; } count = 0; } if(red_count >= 1000 && distance >= 2000){ mode = RED_RECEIVE; red_count = 0; }else if(blue_count >= 1000 && distance >= 2000){ mode = BLUE_RECEIVE; blue_count = 0; } } }