메뉴 건너뛰기

XEDITION

아두이노

초음파 센서 참고 소스

묵묵이 2017.01.12 13:12 조회 수 : 4

 

블루투스로 자동주행 기능 켜기 끄기 

 

초음파 센서를 사용해서 움직이 이동  참고 소스

 

#include <SoftwareSerial.h> //시리얼 통신 라이브러리 호출

 

//모터 PIN 설정

#define LEFT_A1 4 //왼쪽 바퀴

#define LEFT_B1 5 //왼쪽 바퀴

#define RIGHT_A2 6 //오른쪽 바퀴

#define RIGHT_B2 7 //오른쪽 바퀴

 

 

int bluetoothTx = 2;

int bluetoothRx = 3;

int IR_TRIG = 9;

int IR_ECHO = 8;

 

 SoftwareSerial bluetooth(bluetoothTx, bluetoothRx);

 

void setup() 

{

  Serial.begin(9600);   //시리얼모니터 

  delay(100);

  bluetooth.begin(9600);

  pinMode(IR_TRIG, OUTPUT);

 

  //모터 핀모드 설정

  pinMode(LEFT_A1, OUTPUT);

  pinMode(RIGHT_A2, OUTPUT);

  pinMode(LEFT_B1, OUTPUT);

  pinMode(RIGHT_B2, OUTPUT);  

 

  //초음파 센서 핀모드 설정

  pinMode(IR_ECHO, INPUT);

 

}

 

void loop() 

{

  char cmd;

  float duration, distance;

  if(bluetooth.available() )  

  {

  cmd = (char)bluetooth.read();

  Serial.print("Command=");

  Serial.println(cmd);

    while (1)

    {

    

  if(cmd == '1')

  {  

    Serial.println("초음파 On");

  digitalWrite(IR_TRIG, HIGH);

  delay(10);

  digitalWrite(IR_TRIG, LOW);

  // echoPin 이 HIGH를 유지한 시간

  duration = pulseIn(IR_ECHO, HIGH);

  // HIGH 였을 때 시간(초음파가 보냈다가 다시 들어온 시간)을 가지고 거리를 계산 한다.

  // 340은 초당 초음파(소리)의 속도, 10000은 밀리세컨드를 세컨드로, 왕복거리이므로 2로 나눠주면 거리가 cm 로 나옴

  distance = ((float)(340 * duration) / 10000) / 2;

  Serial.print("nDIstance : ");

  Serial.println(distance);

  

 

     

  if(distance < 20) {         //장애물 감지 (20cm 이내)

     Serial.println("stop");

     stop();  //정지(1초)

     Serial.println("backward");

     backward();  //후진(0.5초)

     int rnd = random(0,2);   //장애물 감지시 좌/우회전 랜덤처리

     if(rnd == 0){

        Serial.println("right");

        right();

     }else{

        Serial.println("left");

        left();

     }

   }else{         //장애물 없음

     Serial.println("forward");

     forward();

   }

    if(cmd == '2') 

   { break;

    Serial.println("초음파 OFF");

    Serial.println("stop");

    digitalWrite(LEFT_A1, LOW);

   digitalWrite(LEFT_B1, LOW);

   digitalWrite(RIGHT_A2, LOW);

   digitalWrite(RIGHT_B2, LOW);

   Serial.end();

   }

   

    }

  

   

}

}

}

 

void forward(){

  digitalWrite(LEFT_A1, HIGH);

  digitalWrite(LEFT_B1, LOW);

  digitalWrite(RIGHT_A2, HIGH);

  digitalWrite(RIGHT_B2, LOW);

}

void backward(){

  digitalWrite(LEFT_A1, LOW);

  digitalWrite(LEFT_B1, HIGH);

  digitalWrite(RIGHT_A2, LOW);

  digitalWrite(RIGHT_B2, HIGH);

  delay(500);

}

void left(){

  digitalWrite(LEFT_A1, LOW);

  digitalWrite(LEFT_B1, HIGH);

  digitalWrite(RIGHT_A2, HIGH);

  digitalWrite(RIGHT_B2, LOW);

  delay(300);

}

void right(){

  digitalWrite(LEFT_A1, HIGH);

  digitalWrite(LEFT_B1, LOW);

  digitalWrite(RIGHT_A2, LOW);

  digitalWrite(RIGHT_B2, HIGH);

  delay(300);

}

void stop(){

  digitalWrite(LEFT_A1, LOW);

  digitalWrite(LEFT_B1, LOW);

  digitalWrite(RIGHT_A2, LOW);

  digitalWrite(RIGHT_B2, LOW);

  delay(1000);

}

 
 
번호 제목 글쓴이 날짜 조회 수
공지 IR 리모콘 코드 따기 [1] 묵묵이 2017.02.10 14
공지 rc 카 작업용 [1] 묵묵이 2017.02.07 14
공지 [sketch_mydust] 미세멘지 측정기 작업 용 [2] 묵묵이 2017.02.07 35
23 sprintf2 사용법 묵묵이 2017.02.07 5
22 디지털 온 습도계 사용 DHT22 [2] file 묵묵이 2017.02.06 5
21 미세먼지 측정기 참조 [3] 묵묵이 2017.02.06 5
20 test ir 리모컨 테스트 [1] 묵묵이 2017.01.23 5
19 ir 리모컨 값 기록 묵묵이 2017.01.18 2
18 아두이노 IR 리모컨 R 신호 반복문제 test 묵묵이 2017.01.18 6
17 아두이노 톤함수를 사용하지 않고 부저 소리내기 묵묵이 2017.01.17 1
16 키보드로 멜로디 연주하기 묵묵이 2017.01.17 4
15 아두이노에 작은별 멜로디 스케치 묵묵이 2017.01.17 4
14 아두이노 미세먼지 측정기 .. 만들기 file 묵묵이 2017.01.17 2
13 서버모터 테스트 소스 묵묵이 2017.01.16 7
12 서보모터 제어하기 묵묵이 2017.01.16 1
11 아두이노 프로 미니 보드와 USB TO TTL 모듈을 이용한 프로그램 업로드 묵묵이 2017.01.13 1
10 ir 리모컨 수신 test ( 현제 작업중 소스) [1] file 묵묵이 2017.01.12 4
9 ir 적외선 센서를 이용한 거리 측청 - test 잘됨 묵묵이 2017.01.12 2
» 초음파 센서 참고 소스 [1] 묵묵이 2017.01.12 4
7 아두이노 기초강좌 - IR 센서 [1] 묵묵이 2017.01.11 7
6 Arduino 아두이노 - relay module control 릴레이 모듈 제어 [1] 묵묵이 2017.01.10 19
5 아두이노 나노 알아보기 묵묵이 2017.01.10 2
위로