BASIC4MCU | 질문게시판 | 아두이노와 초음파 센서로 모터 제어 코드 질문있습니다.
페이지 정보
작성자 blackbunn 작성일2022-12-07 15:46 조회2,040회 댓글0건
https://www.basic4mcu.com/bbs/board.php?bo_table=gac&wr_id=22086
본문
안녕하세요 저는 아두이노와 초음파 센서, DC모터2개 를 이용하여
초음파 센서 거리별로
물제가 감지 안되었을때 0, 멈춰있다가
50 cm 앞에 물체가 감지 되었을때 2개의 모터중 왼쪽이 작동하고,
30cm 앞에 물체가 감지 되었을때 오른쪽이 작동하고
마지막으로 10cm 앞에 물체가 왔을때 둘다 돌아가는 장치를 만들고 있습니다.
모터 드라이버는 L293D 를 사용하여 연결하였고 코드를 작성하였는데 컴파일은 되지만
원활하게 모터가 작동이 안되어 작성한 코드에 대한 수정또는 조언 부탁드리겠습니다.
감사합니다.
어래는 작성한 코드 입니다.
int trig = 3;int echo = 4;unsigned long duration;unsigned long distance;#define FORWARD 1 // 모터 정방향#define BACKWARD 2 //모터 역방향#define RELEASE 3 // 모터 정지int enablePin = 5;int motorPin1 = 7;int motorPin2 = 6;int motorPin3 = 9;int motorPin4 = 8;void setup() {Serial.begin(9600);// 초음파 인풋pinMode(trig, OUTPUT);pinMode(echo, INPUT);// 모터 인풋pinMode(enablePin, OUTPUT);pinMode(motorPin1, OUTPUT);pinMode(motorPin2, OUTPUT);pinMode(motorPin3, OUTPUT);pinMode(motorPin4, OUTPUT);motorMove(RELEASE);}void loop() {digitalWrite(trig, LOW);delayMicroseconds(2);digitalWrite(trig, HIGH);delayMicroseconds(10);digitalWrite(trig, LOW);long duration = pulseIn(echo, HIGH);long distance = (duration * 340) / 2 / 10000;if (distance <= 10) { //10cm이내int spin = map(distance, 10, 0, 0, 255);analogWrite(motorMove, spin);}if (distance <= 30) { //30cm 이내int spin = map(distance, 0, 10, 0, 255);analogWrite(motorMove, spin);}if (distance <= 50) { //50cm 이내int spin = map(distance, 0, 10, 0, 255);analogWrite(motorMove, spin);}motorMove(FORWARD);delay(1000);motorMove(BACKWARD);delay(1000);motorMove(RELEASE);delay(1000);}
댓글 0
조회수 2,040등록된 댓글이 없습니다.