BASIC4MCU | 질문게시판 | 라인트레이서 + 초음파
페이지 정보
작성자 호롷홀 작성일2019-12-05 23:49 조회5,680회 댓글0건
https://www.basic4mcu.com/bbs/board.php?bo_table=gac&wr_id=11061
본문
const int Left_motor_back=8; //(IN1)const int Left_motor_go=9; //(IN2)const int Right_motor_go=10; //(IN3)const int Right_motor_back=11; //(IN4)const int Echo=A1,trig=A0;const int SensorRight=3,SensorLeft=4,.;//int SL,SR;float duration,distance;//void setup(){Serial.begin(9600);pinMode(trig,OUTPUT);}//void run(){analogWrite(Right_motor_go,100); analogWrite(Right_motor_back,0);analogWrite(Left_motor_go ,100); analogWrite(Left_motor_back ,0);}//void brake(){analogWrite(Right_motor_go,0); analogWrite(Right_motor_back,0);analogWrite(Left_motor_go ,0); analogWrite(Left_motor_back ,0);}//void left(){analogWrite(Right_motor_go,100); analogWrite(Right_motor_back,0);analogWrite(Left_motor_go , 0); analogWrite(Left_motor_back ,0);}//void right(){analogWrite(Right_motor_go, 0); analogWrite(Right_motor_back,0);analogWrite(Left_motor_go ,100); analogWrite(Left_motor_back ,0);}//void back(int time){analogWrite(Right_motor_go,0); analogWrite(Right_motor_back,100);analogWrite(Left_motor_go ,0); analogWrite(Left_motor_back ,100);delay(time*100);}//==========================================================void loop(){digitalWrite(trig,HIGH); delayMicroseconds(10); digitalWrite(trig,LOW);duration=pulseIn(Echo,HIGH);distance=((float)(340*duration)/10000)/2;Serial.print("\nDIstance: "); Serial.println(distance);//SR=digitalRead(SensorRight);SL=digitalRead(SensorLeft);if (SL==LOW && SR==LOW )run(); // LOW=센서on // 둘 다 켜졌을 때,전진else if(SL==HIGH && SR==LOW )left(); // 오른쪽만 켜졌을 때,왼쪽 회전else if(SL==LOW && SR==HIGH)right(); // 왼쪽만 켜졌을 때,오른쪽 회전else{ //SL==HIGH && SR==HIGHif(distance<20)brake(); // 장애물 20cm 이내발견되면 정지else run(); // 장애물 치웠을 때,다시 전진}}// 라인을 따라가며 장애물 발견시 일시정지후 장애물이 없으면 다시 출발하는 목적
//위와 같은 코드를 적용했는데 동시에 적용되지 않고 한가지씩만 적용되는 문제점
//추가로 블랙라인을 인식하며 주행하다가 블랙라인이 없어지고 초음파만으로 장애물 회피하는 기능은 어떻게 적용해야하나요
댓글 0
조회수 5,680등록된 댓글이 없습니다.