초음파와 금속센서 + 서보모터 (추가질문)
페이지 정보
작성자 아두이노초짜 작성일19-05-23 23:26 조회4,987회 댓글0건본문
어제 질문드린 내용 : 초음파 센서와 금속 근접센서를 이용해서 초음파로 물체검출 후에 금속/비금속인지 검출하는 코딩을 요청드렸습니다
답변해주신 코딩이 아래의 내용입니다
-------------------------------------------------------------------------------------------------------
int trigPin=6,echoPin=7;
//
long duration,distance;
bool sensing,flag=1;
//
void setup(){
Serial.begin(9600);
pinMode(echoPin,INPUT);
pinMode(trigPin,OUTPUT);
}
//
void loop(){
digitalWrite(trigPin,1); delayMicroseconds(10); digitalWrite(trigPin,0);
duration=pulseIn(echoPin,1);
distance=((float)(340*duration)/1000)/2;
//-------------------------------
int sensorValue=analogRead(A0); // 금속감지센서
//-------------------------------
sensing=0;
if(distance<500){
if(sensorValue<124)sensing=1;
}
//
if(sensing){
if(flag==0){ flag=1;
Serial.println("OK "); Serial.println(distance); Serial.print("mm\n, "); Serial.println(sensorValue);
}
}
else{
if(flag){ flag=0;
Serial.println("NO "); Serial.println(distance); Serial.print("mm\n, "); Serial.println(sensorValue);
}
}
//-------------------------------
delay(100);
}
-----------------------------------------------------
코딩해주신거 대로 아두이노에 연결해서 바로 실습을 해봤습니다. 시리얼 모니터에 NO /ok 표시와 거리/ 금속감지센서의 값이 모니터에 표시되는걸 확인했습니다
여기서 추가적으로 금속일땐 서보모터 50도 정회전 비금속일땐 50도 역회전을 주는 코딩을 추가하려고 만들어 봤는데 코딩확인중에 오류가 나와서 해결방법을 잘모르겠습니다.
--------------------------------------------------------------------
#include <Servo.h>
int trigPin=6,echoPin=7;
int servo=9;
Servo myservo;
void setup(){
Serial.begin(9600);
myservo.attach(9);
pinMode(echoPin,INPUT);
pinMode(trigPin,OUTPUT);
}
void loop(){
digitalWrite(trigPin,1);
delayMicroseconds(10);
digitalWrite(trigPin,0);
duration=pulseIn(echoPin,1);
distance=((float)(340*duration)/1000)/2;
//-------------------------------
int sensorValue=analogRead(A0); // 금속감지센서
//-------------------------------
sensing=0;
if(distance<500){
if(sensorValue<=124)sensing=1;
}
if(sensing){
if(flag==0){ flag=1;
Serial.println("OK "); Serial.println(distance); Serial.print("mm\n, "); Serial.println(sensorValue); myservo.write( 50)
}
}
else{
if(flag){ flag=0;
Serial.println("NO "); Serial.println(distance); Serial.print("mm\n, "); Serial.println(sensorValue); myservo.write(-50);
}
}
//-------------------------------
선생님이 답해주신 코딩에 서보모터의 대한 코딩을 넣어봤는데 제가 생각한대로 잘안되서... 이렇게 다시 질문을 올리게됬습니다.
조언 부탁드리겠습니다..!!
댓글 : 0
조회수 : 4,987
등록된 댓글이 없습니다.