에듀이노-아두이노 전문 교육쇼핑몰 에듀이노-코딩 교육 전문 쇼핑몰 - 아두이노 라즈베리파이 등 전자부품

기술문의

뒤로가기
제목

라인트레이싱과 초음파 센서 동시 동작에 대해 질문있습니다.

작성자 안수철(ip:)

작성일 2021-06-16

조회 101

평점 0점  

추천 추천하기

내용

라인트레이싱 동작 완료 후 거기에 초음파 센서 추가하여 부착했습니다.(서보 연결 부의 핀이 9번과 10번으로 연동이 된다하여 거기에 부착하였습니다.)

초음파 센서를 활용하여 라인트레이싱 중 전방에 장애물을 감지할 시 정지하였다가 장애물이 사라지면 다시 주행하는 동작을 원하였으나

현재 라인트레이싱 주행은 가능하고 초음파 센서 동작에서 장애물을 감지하여 정지하는 동작까지 수행하였으나 다시 주행하도록 하는 부분에 있어서 동작하지 않아

어떤식으로 소스 코드를 구성할지에 대해서 질문드리고 싶습니다.

추가적으로 초음파 센서 연결 이외에도 다른 센서들 또한 부품 장착이 가능하다 전달받았는데 가능한지 궁금합니다.

첨부파일

비밀번호
수정

비밀번호 입력후 수정 혹은 삭제해주세요.

댓글목록

  • 작성자 아두이노짱

    작성일 2021-06-16

    평점 0점  

    스팸글 음.. 작성하신 코드를 한 번 보여주셔야할 것 같아요

    +센서는 추가적으로 더 연결할 수는 있으나 공급 전원에 따라 작동이 불안정해질 수 있어요
  • 작성자 아나수철

    작성일 2021-06-16

    평점 0점  

    스팸글

    #include
    #include

    AF_DCMotor motor_L(1); // 모터드라이버 L293D 1: M1에 연결, 4: M4에 연결
    AF_DCMotor motor_R(4);


    int trig = 9;
    int echo = 10;


    void setup() {
    Serial.begin(9600); // PC와의 시리얼 통신속도
    Serial.println("Eduino Smart Car Start!");

    // turn on motor
    motor_L.setSpeed(200); // 왼쪽 모터의 속도
    motor_L.run(RELEASE);
    motor_R.setSpeed(200); // 오른쪽 모터의 속도
    motor_R.run(RELEASE);

    pinMode(trig,OUTPUT);
    pinMode(echo,INPUT);

    }



    void loop() {
    int val1 = digitalRead(A0); // 라인센서1
    int val2 = digitalRead(A5); // 라인센서2

    float distance=-1;
    digitalWrite(trig,LOW);
    delayMicroseconds(2);
    digitalWrite(trig,HIGH);
    delayMicroseconds(10);
    digitalWrite(trig,LOW);

    //if(digitalRead(echo)==LOW){
    distance=(float)pulseIn(echo,HIGH)/29/2;


    //}
    //else
    //{
    //pinMode(echo,OUTPUT);
    //digitalWrite(echo,LOW);
    //pinMode(echo,INPUT);
    //}

    Serial.print("초음파 :"); Serial.println(distance);
    Serial.print("좌 :"); Serial.println(val1);
    Serial.print("우 :");
    Serial.println(val2);

    if(distance>15) {
    if (val1 == 0 && val2 == 0) { // 직진

    motor_L.run(FORWARD);
    motor_R.run(FORWARD);

    }
    else if (val1 == 0 && val2 == 1) { // 우회전

    motor_L.run(FORWARD);
    motor_R.run(RELEASE);
    }
    else if (val1 == 1 && val2 == 0) { // 좌회전

    motor_L.run(RELEASE);
    motor_R.run(FORWARD);
    }

    }
    else
    {

    motor_L.run(RELEASE);
    motor_R.run(RELEASE);

    }
    }

    이렇게입니다.
  • 작성자 아두이노짱

    작성일 2021-06-16

    평점 0점  

    스팸글 음.. 일단 초음파 발생부분이라고 해야되나요

    float distance=-1;
    digitalWrite(trig,LOW);
    delayMicroseconds(2);
    digitalWrite(trig,HIGH);
    delayMicroseconds(10);
    digitalWrite(trig,LOW);

    //if(digitalRead(echo)==LOW){
    distance=(float)pulseIn(echo,HIGH)/29/2;

    이 부분이 조금 이상한데요
    크게 의미는 없지만 -1 값을 대입하는 이유가 있나요?
    그리구 아래 초음파 센서 작동 관련하여 코드 붙여드리겠습니다 해당 코드 참고하셔서 작성해보세요

    long duration, distance;
    digitalWrite(trigPin, HIGH); // trigPin에서 초음파 발생(echoPin도 HIGH)
    delayMicroseconds(10);
    digitalWrite(trigPin, LOW);
    duration = pulseIn(echoPin, HIGH); // echoPin 이 HIGH를 유지한 시간을 저장 한다.
    distance = ((float)(340 * duration) / 1000) / 2;
  • 작성자 안수철

    작성일 2021-06-22

    평점 0점  

    스팸글 혹시 전체적인 코드도 알 수 있을까요?
댓글 수정

이름

비밀번호

내용

/ byte

수정 취소

비밀번호 :

확인 취소

댓글 입력

이름

비밀번호

내용

/ byte

평점

왼쪽의 문자를 공백없이 입력하세요.

에게만 댓글 작성 권한이 있습니다.

댓글 입력

이름

비밀번호

내용

/ byte

왼쪽의 문자를 공백없이 입력하세요.

에게만 댓글 작성 권한이 있습니다.

관련 글 보기


고객센터

    1670-9626

  • 팩스.063-902-6678
  • 이메일.eduino@robodyne.co.kr
  • Kakao. 에듀이노
  • 운영시간 : AM 10:00 ~ PM 6:00
  • 점심시간 : 12:00 - 13:00 토/일/공휴일 휴무
  • 고객센터 연결하기
입금계좌
  • 예금주: (주)로보다인시스템
  • 국민. 754801-01-760296
  • 농협. 301-0234-1423-01
  • IBK기업은행. 506-080015-01-016
배송 안내
  • 배송 방법 : 택배
  • 배송 지역 : 전국지역
  • 배송 비용 : 조건부 무료 : 주문 금액 100,000원 미만일 때 배송비 2,500원을 추가합니다.
  • 배송 기간 : 1일 ~ 2일
  • 배송 안내 :
    - 제주도, 산간벽지나 도서지방은 별도의 추가금액을 지불하셔야 하는 경우가 있습니다.
    고객님께서 주문하신 상품은 입금 확인후 배송해 드립니다. 다만, 상품종류에 따라서 상품의 배송이 다소 지연될 수 있습니다.
교환/반품 안내
교환 및 반품이 가능한 경우
- 상품을 공급 받으신 날로부터 7일이내 단, 가전제품의
  경우 포장을 개봉하였거나 포장이 훼손되어 상품가치가 상실된 경우에는 교환/반품이 불가능합니다.
- 공급받으신 상품 및 용역의 내용이 표시.광고 내용과
  다르거나 다르게 이행된 경우에는 공급받은 날로부터 3월이내, 그사실을 알게 된 날로부터 30일이내

교환 및 반품이 불가능한 경우
- 고객님의 책임 있는 사유로 상품등이 멸실 또는 훼손된 경우. 단, 상품의 내용을 확인하기 위하여
  포장 등을 훼손한 경우는 제외
- 포장을 개봉하였거나 포장이 훼손되어 상품가치가 상실된 경우
  (예 : 가전제품, 식품, 음반 등, 단 액정화면이 부착된 노트북, LCD모니터, 디지털 카메라 등의 불량화소에
  따른 반품/교환은 제조사 기준에 따릅니다.)
- 고객님의 사용 또는 일부 소비에 의하여 상품의 가치가 현저히 감소한 경우 단, 화장품등의 경우 시용제품을
  제공한 경우에 한 합니다.
- 시간의 경과에 의하여 재판매가 곤란할 정도로 상품등의 가치가 현저히 감소한 경우
- 복제가 가능한 상품등의 포장을 훼손한 경우
  (자세한 내용은 고객만족센터 1:1 E-MAIL상담을 이용해 주시기 바랍니다.)

※ 고객님의 마음이 바뀌어 교환, 반품을 하실 경우 상품반송 비용은 고객님께서 부담하셔야 합니다.
  (색상 교환, 사이즈 교환 등 포함)
빠른 메뉴 바로가기