http://kocoafab.cc/fboard/484 의 두 번째 질문입니다.
int trigPin = 12;
int echoPin = 13;
int safeZone = 30;
#define PIN_RX 2
#define PIN_TX 3
#include
SoftwareSerial btSerial(PIN_RX, PIN_TX);
char val;
void setup()
{
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
Serial.begin(9600);
btSerial.begin(9600);
Serial.println("HC-SR04. distance measure start!");
btSerial.println("HC-SR04. distance measure start!");
Serial.println();
}
void loop()
{
float duration, distance;
digitalWrite(trigPin, LOW);
digitalWrite(echoPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = ((float)(340 * duration) / 10000) / 2;
if( btSerial.available() )
{
val = btSerial.read();
if(val == '3') //SONAR
{
btSerial.println("Auto Sonar Start!");
if (distance < 30) // 만약 30cm 안에 장애물이 감지되면,
{
Serial.print(val);
Serial.println("right"); // 오른쪽으로 회전합니다.
}
else // 아닐경우,
{
Serial.print(val);
Serial.println("forward"); // 계속 전진합니다.
}
delay(500);
}
}
}
while문 밖에다가 써봤는데 그것이 안되서 아예 처음부터 코딩을 하여서.
이런식으로 작성하고 시리얼 통신으로 테스트 해봤는데
3을 입력받고 계속 초음파 센서를 통한 거리재기가 계속 나오지 않고
3을 입력 받을때만 작동합니다.. 어떻게 하면 좋죠
HC-SR04. distance measure start!
3forward
3forward
3forward
3right
|