안드로이드용
아이폰용 블루투스4
자율주행영상 QR
컨트롤러 주행영상 QR
#include <SoftwareSerial.h>
SoftwareSerial BTSerial(10, 11); // Rx , Tx
void setup() {
pinMode(9, OUTPUT); // enable 핀에 high 입력해서 at command 모드로 들어
digitalWrite(9, HIGH);
Serial.begin(9600);
Serial.println("Enter AT Commands:");
BTSerial.begin(9600);
}
void loop() {
// pc 출력, HC05 입력코드
if(Serial.available()) // 아두이노 시리얼 모니터를 통해 데이터를 받음
BTSerial.write(Serial.read()); // 받은 데이터 HC05에 입력
// HC05 출력, pc입력 코드
if(BTSerial.available()) // HC05에서 데이터를 읽어옴
Serial.write(BTSerial.read()); // 읽은 데이터를 pc(시리얼 모니터)에 입력
}
#define TRIG_PORT GPIOC
#define TRIG_PIN GPIO_PIN_0
void HCSR04_TRIG(void)
{
HAL_GPIO_WritePin(TRIG_PORT, TRIG_PIN, GPIO_PIN_SET);
delay_us(10);
HAL_GPIO_WritePin(TRIG_PORT, TRIG_PIN, GPIO_PIN_RESET);
__HAL_TIM_SET_COUNTER(&htim4, 0);
__HAL_TIM_ENABLE_IT(&htim4, TIM_IT_CC1);
__HAL_TIM_ENABLE_IT(&htim4, TIM_IT_CC2);
__HAL_TIM_ENABLE_IT(&htim4, TIM_IT_CC3);
__HAL_TIM_ENABLE_IT(&htim4, TIM_IT_CC4);
}
void SonicTask01(void *argument)
{
for(;;)
{
if(autoFlag == 1)
{
HCSR04_TRIG_ALL();
HAL_Delay(10);
if (autoFlag == 0)
{
autostop();
continue;
}
if ((distance_R <= 20 && distance_L <= 20) || distance_M <= 35)
{
autostop();
if (distance_L > distance_R)
auto_Left();
else
auto_Right();
}
else if (distance_R <= 15 && distance_L > 20)
front_Left();
else if (distance_L <= 15 && distance_R > 20)
front_Right();
else
autofrontBehave();
}
osDelay(1);
}
}
TIM2(PA0) → buzzer