BASIC4MCU | 질문게시판 | 답변 : 초음파 센서를 사용한 dc모터 제어에 관해 질문 있습니다.
페이지 정보
작성자 master 작성일2022-07-05 10:56 조회15,937회 댓글2건본문
int trig=8,echo=9;
int In1 =5,In2 =4;
//
void setup(){
pinMode(trig,OUTPUT); pinMode(echo,INPUT);
pinMode(In2, OUTPUT);
Serial.begin(9600);
}
//
void loop(){
float Lenght, distance;
digitalWrite(trig,1); delayMicroseconds(10); digitalWrite(trig,0);
Lenght = pulseIn(echo, HIGH);
distance = ((float)(340*Lenght) / 10000) / 2;
Serial.print(distance); Serial.println("Cm");
if(distance< 30)distance= 30;
if(distance>255)distance=255;
//
analogWrite(In1,distance);
delay(100);
}
모터는 부하에 따라서 일정크기 이상의 PWM을 줘야지 움직입니다.
위 예는 30을 최저값으로 출력하고 있습니다.
실험해서 적당한 값을 찾으세요
댓글 2
조회수 15,937뉴비에오님의 댓글
뉴비에오 작성일감사합니다!
master님의 댓글
master 작성일
if(distance< 30)distance= 30;
if(distance>255)distance=255;
이 방법은 30cm이하에서 모두 동일한 속도를 가집니다.
distance += 30;
if(distance>255)distance=255;
이렇게 변경하면 30cm이하에서도 속도가 달라집니다.