질문게시판 > 답변 : 초음파 카운트

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

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

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

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

BASIC4MCU > 질문게시판

답변 : 초음파 카운트

페이지 정보

작성자 master 작성일22-12-09 11:56 조회220회 댓글0건

본문

초음파 2개 통과 했을때에 카운트 되는 것까지 구동하였습니다.

count가 5이상 되었을때. 서보모터가 구동되는 것으로 현재까지 작성하였습니다.

여기서 추가로 역방향일떄,피에조 부저가 울리는 것으로 구현하고 싶습니다.

피에조 구현은 맨 아래에 /* */에 적어두었습니다.

 

A가 레이다1......

풀어서 이야기 하자면,A>B,D>C는 count+!

B>A,C>D는 COUnt-1 입니다.

그이후 count가 5이상이면 서보모터가 구동됩니다.

구동한다면  

check(거리)가 5cm 이하에서는 A>B. 

5~10cm 에서는 B>A가 원칙으로,5cm 이하에서 b>A의 움직임 포착/5-10에서 A>B움직임이 포착하면 부저 i가 울리게 하고 싶습니다.

같은 방식으로  

check(거리)가 5cm 이하에서는 D>c. 5~10cm 에서는 c>d가 원칙으로,5cm 이하에서 d>Ac 움직임 포착/5-10에서 c>d움직임이 포착하면 부저 j가 울리게 하고 싶습니다.

또한 count가 15가 넘어가면 일반 부저가 삐ㅣㅣㅣ하고 우는 것으로 구현하고 싶은데,피에조가 처음이라 너무 어려운것 같아 도움을 요청합니다!

//

//-------------------

#include <Servo.h>

Servo myservo1;

Servo myservo2;

//

#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd1(0x27,16,2);

LiquidCrystal_I2C lcd2(0x27,16,2);

//

int trig1=46,echo1=47;

int trig2=48,echo2=49;

int trig3=50,echo3=51;

int trig4=52,echo4=53;

int piezo8=8;

int piezo9=9;

//

int numTones=52;//피에조 12,13번 노래

int tones[]={ //피에조 노래 연주 위에줄은 13번꺼,밑에는 12번거

  415,415,391,391,349,349,391,391,233,233,246,246,246,246,415,415,391,391,349,349,391,391,391,

  391,391,415,466,466,466,466,523,523,523,311,311,311,311,466,466,466,466,311,349,391,391,391,

  349,349,349,311,349,349,349

};

int count=0;

int Stat12=0,Stat34=0;

//

void setup(){

  pinMode(trig1,OUTPUT);  pinMode(echo1,INPUT);

  pinMode(trig2,OUTPUT);  pinMode(echo2,INPUT);

  pinMode(trig3,OUTPUT);  pinMode(echo3,INPUT);

  pinMode(trig4,OUTPUT);  pinMode(echo4,INPUT);

  lcd1.begin();           lcd1.backlight();

  lcd2.begin();           lcd2.backlight();

  myservo1.attach(2);     myservo2.attach(3);

  pinMode(12,OUTPUT);     pinMode(13,OUTPUT);

  pinMode(piezo8,OUTPUT); pinMode(piezo9,OUTPUT);

  Serial.begin(9600);

}

//

int check(int trig_pin,int echo_pin){

  digitalWrite(trig_pin,1); delayMicroseconds(10); digitalWrite(trig_pin,0);

  double dura=pulseIn(echo_pin,1);

  double dist=dura/58;

  if(dist<10)return 1;

  return 0;

}

//

void loop(){

  int radar1=check(trig1,echo1);

  int radar2=check(trig2,echo2);

  int radar3=check(trig3,echo3);

  int radar4=check(trig4,echo4);

  Serial.print("Radar 1 : "); Serial.println(radar1);

  Serial.print("Radar 2 : "); Serial.println(radar2);

  Serial.print("Radar 3 : "); Serial.println(radar3);

  Serial.print("Radar 4 : "); Serial.println(radar4);

  Serial.println("------");

  delay(50);

  //

  if(radar1==1 && radar2==0){

    Serial.println("State #1");

    for(int i=0;i<=10;i++){

      int radar2_2=check(trig2,echo2);

      if(radar2_2==1){ count+=1; delay(10); break; }

      delay(10);

    }

  }

  else if(radar1==0 && radar2==1){

    Serial.println("State #2");

    for(int i=0;i<=10;i++){

      int radar1_2=check(trig1,echo1);

      if(radar1_2==1){ count-=1; delay(10); break; }

      delay(10);

    }

  }

  //

  if(radar3==1 && radar4==0){

    Serial.println("State #3");

    for(int i=0;i<=15;i++){

      int radar4_2=check(trig4,echo4); Serial.println(radar4_2);

      if(radar4_2==1){ count+=1; delay(50); break; }

      delay(50);

    }

  }

  else if(radar3==0 && radar4==1){

    Serial.println("State #4");

    for(int i=0;i<=15;i++){

      int radar3_2=check(trig3,echo3); Serial.println(radar3_2);

      if(radar3_2==1){ count-=1; delay(50); break; }

      delay(50);

    }

  }

  Serial.println(count);

  //

  if(count>5){ myservo1.write(90); myservo2.write(90); digitalWrite(12,1); digitalWrite(13,0); }

  else       { myservo1.write( 0); myservo2.write( 0); digitalWrite(12,0); digitalWrite(13,1); }

  //

  lcd1.setCursor(0,0); lcd1.print("People "); lcd1.setCursor(8,0); lcd1.print(count);

  lcd2.setCursor(0,0); lcd2.print("People "); lcd2.setCursor(8,0); lcd2.print(count);

  delay(100);

  lcd1.clear(); lcd2.clear();

}

//

/*

  for(int i= 0;i<23;i++){ tone(piezo8,tones[i]); delay(200); } noTone(piezo8); while(true){}               

  for(int j=24;j<53;j++){ tone(piezo9,tones[j]); delay(200); } noTone(piezo9); while(true){}

*/

 

기능이 많아서 전체를 이해하기엔 많은 시간이 소요될 것 같아서 도움을 드리지 못합니다.

잘 분석해서 완성시켜보세요

코드정리만 해드립니다.

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

댓글 : 0

조회수 : 220

등록된 댓글이 없습니다.

게시물 검색

BASIC4MCU > 질문게시판 목록

제목 날짜
공지 MCU, AVR, 아두이노 등 전자공학에 관련된 질문은… 스태프  19-01-15
공지 사이트 이용 안내 댓글[28] master  17-10-29
질문 아두이노 코딩 질문 첨부파일pmh11 새글 23-04-01
질문 라즈베리 파이 질문 댓글[1] rasp 새글 23-03-31
질문 아두이노 코드관련 질문 댓글[1] 왕초봉 새글 23-03-31
질문 아두이노 led 부저 스위치 김똘  23-03-30
답변 답변 : 아두이노 led 부저 스위치 댓글[4] master  23-03-30
질문 아두이노 근접센서 2개 연결 질문 댓글[1] 김민종  23-03-29
질문 아두이노 코딩 에러 질문 댓글[1] 첨부파일박무농  23-03-25
질문 아두이노를 이용한 타이머, 태양전지 제어 댓글[2] 박무농  23-03-25
질문 sd카드 이미지 전송 댓글[2] 던지기마스터  23-03-24
질문 초음파센서를 이용한 모터제어 질문있습니다. 댓글[3] 첨부파일뉴비에오  23-03-24
질문 부품 관련 문의 댓글[1] 타코  23-03-23
질문 모터 작동 시, 일부 모듈이 꺼지는 현상에 대해 질문드… 그렇찌  23-03-22
답변 답변 : 모터 작동 시, 일부 모듈이 꺼지는 현상에 대… master  23-03-23
질문 ESP로 원격 모터제어를 할 수 있나용? 댓글[1] 비차  23-03-22
질문 HC06을 마스터로 설정하면 HC06끼리만 통신되나요? 댓글[4] 비차  23-03-21
질문 아두이노 제어하기 댓글[3] 매드닥터  23-03-19
질문 atmega128 압력센서 관련 질문입니다 댓글[1] 공린이  23-03-19
질문 아두이노 스텝모터 각도제어 질문 댓글[3] master  23-03-17
질문 아두이노와 파이썬(중점좌표) 시리얼 통신 질문드립니다. 댓글[1] 첨부파일아두이노어렵잖아  23-03-16
질문 아두이노 3LED 버튼 관련 질문 댓글[1] 이츤  23-03-16
질문 ATmega328p로 pca9685를 이용하여 서보모터… 댓글[1] 첨부파일토비  23-03-15
질문 hm-10 다중연결 질문있습니다. 댓글[1] 첨부파일뉴비에오  23-03-14
질문 while loop 실행 속도 댓글[1] 412904  23-03-12
질문 AND 연산 질문드립니다. 댓글[1] 412904  23-03-11
질문 아두이노 테트리스 게임 댓글[1] 첨부파일지욱애  23-03-02
질문 아두이노우노 블루투스 2개 연결 댓글[1] dsfadfs  23-02-28
질문 스텝모터 코딩 질문입니다.. 댓글[2] 무야더싱  23-02-25
질문 아두이노 나노33 IOT 의 BLE 연결 문제 가루밀  23-02-24
게시물 검색


Privacy Policy
MCU BASIC ⓒ 2017
PC버전