You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
RaceSubCar/2021_Arduino_Demo.ino

90 lines
2.7 KiB
Arduino

#include <ExtSRAMInterface.h>
#include "AccurateMotor.h"
#include <Ultrasonic.h>
#include <BKRC_Voice.h>
#include "GlobalDatas.h"
#include <CoreBeep.h>
#include <DCMotor.h>
#include <CoreKEY.h>
#include <CoreLED.h>
#include <Command.h>
#include "Handler.h"
#include <BH1750.h>
#include <BEEP.h>
void setup()
{
Serial.begin(115200);
CoreLED.Initialization();
CoreKEY.Initialization();
CoreBeep.Initialization();
ExtSRAMInterface.Initialization();
LED.Initialization();
BH1750.Initialization();
BEEP.Initialization();
Infrare.Initialization();
Ultrasonic.Initialization();
DCMotor.Initialization(30000);
BKRC_Voice.Initialization();
while (!Serial);
sendflag = 0;
frisrtime = 0;
Tcount = 0;
}
void loop()
{
uint8_t si = 0;
frisrtime = millis();
CoreKEY.Kwhile(Handler::KEY_Handler); //按键检测
if (ExtSRAMInterface.ExMem_Read(0x6100) != 0x00) //从车接收ZigBee数据
{
ExtSRAMInterface.ExMem_Read_Bytes(ZigBee_command, 8);
ZigBee_judge = ZigBee_command[6]; //获取校验和
Command.Judgment(ZigBee_command); //计算校验和
if ((ZigBee_judge == ZigBee_command[6]) && (ZigBee_command[0] == 0x55) && (ZigBee_command[7] == 0xBB))
Handler::ZigBeeRx_Handler(ZigBee_command); //ZigBee接收数据处理
}
if (ExtSRAMInterface.ExMem_Read(0x6038) != 0x00) //检测OpenMV识别结果
{
Data_Type = ExtSRAMInterface.ExMem_Read(0x603A);
Data_Flag = ExtSRAMInterface.ExMem_Read(0x603B);
Data_Length = ExtSRAMInterface.ExMem_Read(0x603C);
Data_Length = Data_Length + 6;
ExtSRAMInterface.ExMem_Read_Bytes(0x6038, Data_OTABuf, Data_Length);
if ((Data_OTABuf[0] == 0x55) && (Data_OTABuf[1] == 0x02))
{
ExtSRAMInterface.ExMem_Write_Bytes(0x6180, Data_OTABuf, Data_Length); //使用自定义数据区上传OpenMV识别结果
Handler::OpenMVRx_Handler(Data_OTABuf); //接收OpenMV数据处理函数
}
}
if (((millis() - frisrtime >= TSendCycle) || (Tcount >= TSendCycle)) && (sendflag == 1)) //获取、上传任务版数据
{
uint16_t tp = (uint16_t)(Ultrasonic.Ranging(CM) * 10.0);
ZigBee_back[5] = (tp >> 8) & 0xff;
ZigBee_back[4] = tp & 0xff;
tp = BH1750.ReadLightLevel();
ZigBee_back[7] = (tp >> 8) & 0xff;
ZigBee_back[6] = tp & 0xff;
ZigBee_back[9] = (uint8_t)ExtSRAMInterface.ExMem_Read(0x6003);
if (ZigBee_back[9] >= 0x80) ZigBee_back[9] = 0xff - ZigBee_back[9];
ZigBee_back[8] = (uint8_t)ExtSRAMInterface.ExMem_Read(0x6002);
ExtSRAMInterface.ExMem_Write_Bytes(0x6080, ZigBee_back, 16);
Tcount = 0x00;
}
else if (sendflag == 1)
{
Tcount += (millis() - frisrtime);
}
//空闲时进行流水灯
DebugOpt::DoLEDFlow();
}