BASIC4MCU | 질문게시판 | 라인트레이서 조도센서 질
페이지 정보
작성자 어면범 작성일2022-11-26 23:36 조회606회 댓글0건본문
안녕하세요 조도센서 코드를 어느 부분에 넣어줘야할지 잘 모르겠어서 질문 남깁니다. 1번코드를 2번코드 안에 넣으려 합니다.
1
void setup()
{
pinMode(A4, INPUT);
Serial.begin(9600);
pinMode(2, OUTPUT);
}
void loop()
{
Serial.println(analogRead(A4)); // if 값은 주변 환경 조도값에 따라 변경
if (analogRead(A4) < 80) {
digitalWrite(2, HIGH);
} else {
digitalWrite(2, LOW);
}
}
------------------------------------------------------------------------------------------------------------------------
2
int IN1=8,IN2=9,IN3=10,IN4=11;
int ULTRASENS_T=5,ULTRASENS_E=7;
int leftLineSensor=13,rightLineSensor=12;
int ENA=3,ENB=6;
void forward(){
analogWrite(3,90); analogWrite(6,90);
digitalWrite(IN1,1); digitalWrite(IN2,0); digitalWrite(IN3,1); digitalWrite(IN4,0);
}
void back() { digitalWrite(IN1,0); digitalWrite(IN2,1); digitalWrite(IN3,0); digitalWrite(IN4,1); }
void left() { digitalWrite(IN1,0); digitalWrite(IN2,0); digitalWrite(IN3,1); digitalWrite(IN4,0); }
void right(){ digitalWrite(IN1,1); digitalWrite(IN2,0); digitalWrite(IN3,0); digitalWrite(IN4,0); }
void stop() { digitalWrite(IN1,0); digitalWrite(IN2,0); digitalWrite(IN3,0); digitalWrite(IN4,0); }
void avd1(){ analogWrite(3,190); analogWrite(6,90); } // 회피 1차 동작
void avd2(){ analogWrite(3,90); analogWrite(6,190); } // 회피 2차 동작
void avd3(){ analogWrite(3,190); analogWrite(6,40); } // 회피 3차 동작
void setup(){
Serial.begin(9600);
pinMode(IN1,OUTPUT); pinMode(IN2,OUTPUT); // A 모터
pinMode(IN3,OUTPUT); pinMode(IN4,OUTPUT); // B 모터
pinMode(leftLineSensor,INPUT); pinMode(rightLineSensor,INPUT);
pinMode(ULTRASENS_T,OUTPUT); pinMode(ULTRASENS_E,INPUT);
}
long howclose(){
long duration=0,distance=0;
digitalWrite(ULTRASENS_T,1); delayMicroseconds(10); digitalWrite(ULTRASENS_T,0);
duration=pulseIn(ULTRASENS_E,1);
distance=duration/29/2;
Serial.print(distance); Serial.println("cm");
return distance;
}
void loop(){
long distance=howclose();
if(distance>20){
if (!digitalRead(leftLineSensor)&& !digitalRead(rightLineSensor)){ forward(); } // 양쪽 센서가 '미감지(반사신호OK) 경우 : 전진
else if(!digitalRead(leftLineSensor)&& digitalRead(rightLineSensor)){ left(); } // 왼쪽 센서만 '선감지(반사신호X)' 경우 : 좌회전
else if( digitalRead(leftLineSensor)&& !digitalRead(rightLineSensor)){ right(); } // 오른쪽 센서만 '선감지(반사신호X)' 경우 : 우회전
else if( digitalRead(leftLineSensor)&& digitalRead(rightLineSensor)){ stop(); } // 양쪽 센서 모두 '선감지(반사신호X)' 경우 : 정지
delay(100);
}
else if(distance<10){ stop(); delay(0); }
else{ avd1(); delay(1300); avd2(); delay(2700); avd3(); delay(2000); } // 10 < distance < 20
}
댓글 0
조회수 606등록된 댓글이 없습니다.