BASIC4MCU | 질문게시판 | 라인트레이서+ 서브모터 +적외선센서
페이지 정보
작성자 helpme 작성일2020-06-24 00:37 조회3,275회 댓글0건본문
라인트레이서에 적외선센서 이용해서 감지되면 서브모터 돌리는 코드를 짜는데 선감지 잘되던데 막상돌려보면 가질않네요 ㅜㅜ 라인만따라가는건 잘되는데 센서랑 서브모터 넣으니까 아예 안가네요
#include Servo servo;
int trigPin = 13;
int echoPin = 12;
int servoPin=9;
int angle=180;
int E1 = 4;
int M1 = 5;
int M2 = 6;
int E2 = 7;
void setup() {
pinMode(E1, OUTPUT);
pinMode(M1, OUTPUT);
pinMode(E2, OUTPUT);
pinMode(M2, OUTPUT);
digitalWrite(E1, HIGH);
digitalWrite(E2, HIGH);
servo.attach(servoPin);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
}
void loop() {
int D1 = digitalRead(11);
int D2 = digitalRead(10);
int D3 = digitalRead(8);
int D4 = digitalRead(3);
int D5 = digitalRead(2);
float duration, distance;
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = ((float)(340 * duration) / 1000) / 2;
if (D1==1 && D2==0 && D3==0 && D4==0 && D5==0) {
analogWrite(M1, 100);
analogWrite(M2, 0);
}
else if(D1==0 && D2==1 && D3==0 && D4==0 && D5==0) {
analogWrite(M1, 100);
analogWrite(M2, 50);
}
else if(D1==0 && D2==0 && D3==1 && D4==0 && D5==0) {
analogWrite(M1, 100);
analogWrite(M2, 100);
}
else if(D1==0 && D2==0 && D3==0 && D4==1 && D5==0) {
analogWrite(M1, 50);
analogWrite(M2, 100);
} else if(D1==0 && D2==0 && D3==0 && D4==0 && D5==1) {
analogWrite(M1, 0);
analogWrite(M2, 100);
}
else if(D1==1 && D2==1 && D3==0 && D4==0 && D5==0) {
analogWrite(M1, 100); analogWrite(M2, 30);
}
else if(D1==0 && D2==1 && D3==1 && D4==0 && D5==0) {
analogWrite(M1, 100); analogWrite(M2, 70);
}
else if(D1==0 && D2==0 && D3==1 && D4==1 && D5==0) {
analogWrite(M1, 70); analogWrite(M2, 100);
}
else if(D1==0 && D2==0 && D3==0 && D4==1 && D5==1) {
analogWrite(M1, 30); analogWrite(M2, 100);
}
else if(D1==1 && D2==1 && D3==1 && D4==0 && D5==0) {
analogWrite(M1, 100); analogWrite(M2, 50);
}
else if(D1==0 && D2==1 && D3==1 && D4==1 && D5==0) {
analogWrite(M1, 100); analogWrite(M2, 100);
} else if(D1==0 && D2==0 && D3==1 && D4==1 && D5==1) {
analogWrite(M1, 50); analogWrite(M2, 100);
} else if(D1==1 && D2==1 && D3==1 && D4==1 && D5==0) {
analogWrite(M1, 100); analogWrite(M2, 80);
} else if(D1==0 && D2==1 && D3==1 && D4==1 && D5==1) {
analogWrite(M1, 80); analogWrite(M2, 100);
} else if(D1==1 && D2==1 && D3==1 && D4==1 && D5==1) {
analogWrite(M1, 0); analogWrite(M2, 0);
} else{ }
if(distance<100){ angle=0; servo.write(angle); delay(500); }
else{ angle=180; delay(10); } servo.write(angle);
}
댓글 0
조회수 3,275등록된 댓글이 없습니다.