질문게시판 > 답변 : 아두이노 rc카 응용을 하고 싶은 부분이 있는데 막힘이 있어서 질문 드립니다.

인기검색어 > 아두이노 센서 ATMEGA128

최신글 질문게시판 동영상강좌 가입하기

▼ BASIC4MCU 후원업체 신제품 정보 ▼

▲ BASIC4MCU 후원업체 신제품 정보 ▲

BASIC4MCU > 질문게시판

답변 : 아두이노 rc카 응용을 하고 싶은 부분이 있는데 막힘이 있어서 질문 드립니다.

페이지 정보

작성자 master 작성일19-11-16 10:18 조회6,917회 댓글0건

본문

 

// DateTime : 2019-11-16 오전 10:15:48
// by Ok-Hyun Park
//
int Echo=A1,Trig=A0;
int Left_motor_back=8,Left_motor_go=9,Right_motor_go=10,Right_motor_back=11;
int key=7,beep=12,servopin=2,led3=3,led4=4;
//
int Front_Distance=0,Left_Distance=0,Right_Distance=0;
int myangle,pulsewidth,val;
//
void setup(){
  Serial.begin(9600);
  pinMode(key,INPUT);  pinMode(beep,OUTPUT);
  pinMode(Echo,INPUT); pinMode(Trig,OUTPUT);
  pinMode(servopin,OUTPUT); pinMode(led3,OUTPUT); pinMode(led4,OUTPUT);
  keysacn();
}
//
void run(){ //자동차가 달릴때 설정
  analogWrite(Right_motor_go,100); analogWrite(Right_motor_back,0);
  analogWrite(Left_motor_go ,100); analogWrite(Left_motor_back ,0);
}
//
void brake(int time){ //자동차 멈출때 설정
  analogWrite(Right_motor_go,0); analogWrite(Right_motor_back,0);
  analogWrite(Left_motor_go ,0); analogWrite(Left_motor_back ,0);
  delay(time*100);
}
//
void left(int time){ // 자동차 좌회전
  analogWrite(Right_motor_go,100); analogWrite(Right_motor_back,0);
  analogWrite(Left_motor_go ,  0); analogWrite(Left_motor_back ,0);
  delay(time*100);
}
//
void spin_left(int time){ //자동차 스핀 왼쪽
  analogWrite(Right_motor_go,100); analogWrite(Right_motor_back,  0);
  analogWrite(Left_motor_go ,  0); analogWrite(Left_motor_back ,255);
  delay(time*100);
}
//
void right(int time){ //자동차 우회전
  analogWrite(Right_motor_go,  0); analogWrite(Right_motor_back,0);
  analogWrite(Left_motor_go ,100); analogWrite(Left_motor_back ,0);
  delay(time*100);
}
//
void spin_right(int time){ //자동차 스핀 우회전
  analogWrite(Right_motor_go,  0); analogWrite(Right_motor_back,100);
  analogWrite(Left_motor_go ,100); analogWrite(Left_motor_back ,  0);
  delay(time*100);
}
//
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 keysacn(){
  int val=digitalRead(key);
  while(!digitalRead(key))val=digitalRead(key); // 키를 누를 때까지 대기
  while(digitalRead(key)){                      // 키를 누르면,뗄 때까지 대기
    delay(10); val=digitalRead(key);
    if(val==HIGH){ digitalWrite(beep,HIGH); } // 키를 누르면 부저 ON
    else         { digitalWrite(beep,LOW ); } // 키를 누르지 않으면 부저 OFF
  }
}
//
void klaxon(int time){ digitalWrite(beep,HIGH); delay(500); digitalWrite(beep,LOW); }
//
void light_on(int time)   { digitalWrite(led3,HIGH); digitalWrite(led4,HIGH); }
void light_off(int time)  { digitalWrite(led3,LOW ); digitalWrite(led4,LOW ); }
void light_right(int time){ digitalWrite(led3,HIGH); digitalWrite(led4,LOW ); }
void light_left(int time) { digitalWrite(led3,LOW ); digitalWrite(led4,HIGH); }
//
float Distance_test(){ //거리 테스트
  digitalWrite(Trig,HIGH); delayMicroseconds(10); digitalWrite(Trig,LOW); //Trig
  float Fdistance=pulseIn(Echo,HIGH); Fdistance=Fdistance/58//Echo
  return Fdistance;
}
//
void servopulse(int servopin,int myangle){ //서브모터 설정
  pulsewidth=(myangle*10)+600;
  digitalWrite(servopin,HIGH); delayMicroseconds(pulsewidth); digitalWrite(servopin,LOW);
  delay(20-pulsewidth/1000);
}
//
void front_detection(){ //앞쪽 장애물 감지
  for(int i=0i<=5i++)servopulse(servopin,90); //서보 90도
  Front_Distance=Distance_test();
}
//
void left_detection(){ //왼쪽 장애물 감지
  for(int i=0i<=15i++)servopulse(servopin,165); //서보 175도
  Left_Distance=Distance_test();
}
//
void right_detection(){
  for(int i=0i<=15i++)servopulse(servopin,15); //서보 15도
  Right_Distance=Distance_test();
}
//
void loop(){
  front_detection();
  light_on(10);
  if(Front_Distance<20){
    back(2); brake(2);
    left_detection();
    right_detection();
    klaxon(2);
    //
    if    ((Left_Distance<20)&&(Right_Distance<20)){ spin_left(0.7);                      }
    else if(Left_Distance>Right_Distance          ){ light_right(10); left(5);  brake(1); }
    else                                           { light_left(10);  right(5); brake(1); }
  }
  elserun(); }
}
//
빨간부분이용해서
저희가 하고 싶은 부분은 후진시 부저가 끊겨서 소리나는 것과 그리고 차가 좌회전할떄 좌측 led 켜짐 우측 led켜짐 입니다.
delay를 이용하여 하기는 했는데   편리한 방법이 있을꺼 같아서 질문드립니다!!

 

부저는 두 군데서 제어합니다.

후진시 소리가 끊긴다는 것은

void back(int time){ // 자동차 후진 

이 함수 실행 중에 부저 소리가 끊어진다는 것인가요?

 

LED를 딜레이 사용하고 있다는 말이 무슨 말인지

더 편리한 방법을 왜 찾는 것인지 모르겠습니다.

뭐가 불편하다는 것인가요?

 

  • BASIC4MCU 작성글 SNS에 공유하기
  • 페이스북으로 보내기
  • 트위터로 보내기
  • 구글플러스로 보내기
  • 카카오톡으로 보내기

댓글 : 0

조회수 : 6,917

등록된 댓글이 없습니다.

게시물 검색

BASIC4MCU > 질문게시판 목록

제목 날짜
공지 MCU, AVR, 아두이노 등 전자공학에 관련된 질문은… 스태프  19-01-15
공지 사이트 이용 안내 댓글[29] master  17-10-29
질문 타이머 인터럽트를 이용한 LCD제어 질문입니다. Tell 새글 23-09-27
답변 답변 : 타이머 인터럽트를 이용한 LCD제어 질문입니다… master 새글 09:19
질문 아두이노 무한루프 코드 질문... 댓글[1] vnpaz 새글 23-09-27
질문 질문있습니다ㅠㅠ 부탁드려요 댓글[1] keldeo 새글 23-09-27
질문 0 ~ 99 이중 for문으로 작성하는법! 댓글[2] 상어 새글 23-09-26
질문 리튬배터리로 화면 출력 질문드립니다 ! 댓글[1] 멘탈나간다 새글 23-09-26
질문 lcd,바코드,서보모터, 아두이노 질문 드립니다. ㅠㅠ 댓글[1] 아두이노개발자 새글 23-09-26
질문 stm32에서 변수 값을 유지하는 방법 댓글[1] 라칸  23-09-26
질문 안녕하세요 스위치로 led 제어 관련 질문이 있습니다 댓글[1] 노형빈  23-09-25
질문 16X16 도트 매트릭스 구동방법 질문입니다. 댓글[1] 첨부파일맹균  23-09-25
질문 stm32에서 RTC 시간 함수 쓰는데 의문점 댓글[1] 라칸  23-09-25
질문 GPS 모듈 관련 질문입니다. 댓글[3] 지구과학  23-09-22
질문 아두이노 블루투스와 초음파센서를 이용한 장애물 정지 댓글[2] 둘둘이  23-09-22
답변 답변 : 아두이노 블루투스와 초음파센서를 이용한 장애물… 댓글[1] master  23-09-25
질문 stm32 보드에서 시간설정과 불러오기를 하는데 댓글[5] 라칸  23-09-22
질문 아두이노 인터럽트 질문입니다. 댓글[2] Tell  23-09-21
답변 답변 : 아두이노 인터럽트 질문입니다. 댓글[1] master  23-09-22
질문 아두이노와 거리 감지 센서의 전류 관련 댓글[1] hmkim  23-09-21
질문 아두이노 코딩 질문있습니다. 도와주세요.... 댓글[1] 첨부파일vnpaz  23-09-20
질문 아두이노를 사용한 dc모터 위치제어 댓글[2] 모터위치  23-09-20
질문 stm32 디버깅이나 rst버튼 없이 하는 방법좀 댓글[1] 라칸  23-09-20
질문 LCD에 숫자 표기법을 바꾸고 싶습니 댓글[2] Bs드리프터  23-09-19
질문 알코올 측정기(MQ-3) 관련 질문 소오금  23-09-18
답변 답변 : 알코올 측정기(MQ-3) 관련 질문 master  23-09-19
질문 스텝모터 제어하는 소스파일 수정방법 질문드립니다. Bs드리프터  23-09-15
답변 답변 : 스텝모터 제어하는 소스파일 수정방법 질문드립니… 댓글[1] master  23-09-15
질문 atmega 128을 이용한 악기 튜너기 댓글[1] 아두이노짱  23-09-15
질문 stm32 보드 ip주소 찾는법 댓글[1] 라칸  23-09-13
게시물 검색


Privacy Policy
MCU BASIC ⓒ 2017
PC버전