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;
}
}
}