HAL_I2C_Mem_Read(&hi2c1, I2C_TCS34725_ADDR<<1|I2C_READ, TCS34725_STATUS_ADDR|TCS34725_CMD_MASK, 1, buffer, 1, 3000);
if(buffer[0]&TCS34725__STATUS_AVALID) {
uint8_t R,G,B,C;
uint8_t R1,G1,B1,C1;
uint16_t r,g,b,c;
R = 10;
float r_norm, g_norm, b_norm;
float h, s, v;
for(int i =0;i<10;i++) {
//Get Clear RAW data
C = TCS34725_Get_RawData(&hi2c1,TCS34725_CDATA_ADDR|TCS34725_CMD_MASK);
C1 = TCS34725_Get_RawData(&hi2c1,TCS34725_CDATAH_ADDR|TCS34725_CMD_MASK);
c = (C1<<8)|C;
//Get RED RAW data
R = TCS34725_Get_RawData(&hi2c1,TCS34725_RDATA_ADDR|TCS34725_CMD_MASK);
R1 = TCS34725_Get_RawData(&hi2c1,TCS34725_RDATAH_ADDR|TCS34725_CMD_MASK);
r = (R1<<8)|R;
//Get Green RAW data
G = TCS34725_Get_RawData(&hi2c1,TCS34725_GDATA_ADDR|TCS34725_CMD_MASK);
G1 = TCS34725_Get_RawData(&hi2c1,TCS34725_GDATAH_ADDR|TCS34725_CMD_MASK);
g = (G1<<8)|G;
//Get Blue RAW data
B = TCS34725_Get_RawData(&hi2c1,TCS34725_BDATA_ADDR|TCS34725_CMD_MASK);
B1 = TCS34725_Get_RawData(&hi2c1,TCS34725_BDATAH_ADDR|TCS34725_CMD_MASK);
b = (B1<<8)|B;
}
}
VL6180 距离传感器
这个传感器只需要调用驱动中的函数就可以读取数据。使用如下,range 是读取的距离数据。
uint32_t range;
range = VL6180X_GetRange();
语音传感器
语音传感器需要写的代码较多,首先我们要先写入语料,定义为全局变量。
constchar TEXT1_Buffer[]={"wo yao ting che"};
constchar TEXT2_Buffer[]={"ni hao wo shi liu zhi jing"};
constchar TEXT3_Buffer[]={"ni hao wo shi duan xin yu"};
constchar TEXT4_Buffer[]={"ni hao wo shi yang bo xiang"};
constchar TEXT5_Buffer[]={"ni hao wo shi sun fan"};
constchar TEXT6_Buffer[]={"ni hao wo shi xiao shuo"};
constchar TEXT7_Buffer[]={"ni hao wo shi chen jiang hao"};
intmain(void) {
/* USER CODE BEGIN 1 *//* USER CODE END 1 *//* MCU Configuration--------------------------------------------------------*//* Reset of all peripherals, Initializes the Flash interface and the Systick. */
HAL_Init();
/* USER CODE BEGIN Init *//* USER CODE END Init *//* Configure the system clock */
SystemClock_Config();
/* USER CODE BEGIN SysInit *//* USER CODE END SysInit *//* Initialize all configured peripherals */
MX_GPIO_Init();
MX_DMA_Init();
MX_USART1_UART_Init();
MX_USART2_UART_Init();
MX_I2C1_Init();
MX_USART6_UART_Init();
MX_I2C3_Init();
/* USER CODE BEGIN 2 */
HAL_UARTEx_ReceiveToIdle_DMA(&huart6,rx_buffer,Rx_Buffer_size);
HAL_Delay_us_init(84);
Aivoice_init();
if(VL6180X_GetID()==VL6180X_DEFAULT_ID)
{
VL6180X_Init();
}
TCS34725_ENABLE();
Sevo_start(Right_Close,Middle_on,Left_Close);
ParkingStatus_init();
Car_state(1);
/* USER CODE END 2 *//* Infinite loop *//* USER CODE BEGIN WHILE *///语音模块语料初始化
AIVoice_init(1);
while (1)
{
if(Voice_Control_flag == 1)
{
Voice_Control();
}
if(Color_Control_flag == 1)
{
Sevo_start(Right_Open,Middle_on,Left_Open);
HAL_Delay(2000);
Color_Control();
HAL_Delay(6000);
Sevo_start(Right_Close,Middle_on,Left_Close);
Color_Control_flag = 0;
}
if(TemporaryParking_Control_flag == 1)
{
Sevo_start(Left_Open,Right_Open,Middle_on);
Uart_printf(&huart6,"Space number 6 .\r\n");
Car_state(6);
HAL_Delay(6000);
Sevo_start(Right_Close,Middle_on,Left_Close);
TemporaryParking_Control_flag = 0;
}
/* USER CODE END WHILE *//* USER CODE BEGIN 3 */
}
/* USER CODE END 3 */
}