BASIC4MCU | 질문게시판 | 질문드립니다.
페이지 정보
작성자 joh1247 작성일2018-09-28 13:56 조회6,219회 댓글0건본문
안녕하세요. 지식인에서 초음파센서 서보모터 질문했던 유저입니다.
https://kin.naver.com/qna/detail.nhn?d1id=1&dirId=104&docId=310883428&ref=me1lnk&scrollTo=answer1
적외선센서랑 LED바 추가할려고합니다.
1. 적외선 거리센서 : 30cm, 20cm 등 측정 거리 값 정확히 측정하는지 시리얼모니터 방법
2. 측정 값에 따라 LED 바 표시 상태 바꾸는 테스트
3.LED바는 2칸씩 움직이게 할려고합니다.
수정 도움 부탁드립니다..
#include <Servo.h>
Servo SV;
//
int trig=8,echo=9;
int Sensor=A0;
int led[10]={2,3,4,5,6,7,11,12,13,A1};
//
int data,mV,Cm=0,level;
//
void setup(){
pinMode(trig,OUTPUT); pinMode(echo,INPUT);
for(int i=0;i<10;i++)pinMode(led[i],OUTPUT);
SV.attach(10);
Serial.begin(9600);
}
//
void loop(){
digitalWrite(trig,1); delayMicroseconds(10); digitalWrite(trig,0);
long duration=pulseIn(echo,HIGH);
long distance=(340*duration)/2/10000;
if(distance<=10){ SV.write(100); delay(1000); }
else { SV.write(10); }
//---------------------------------------
data=analogRead(Sensor);
mV=map(data,0,1023,0,5000); // mV 단위로 변경
Cm=(21.61/(mV-169.6))*1000; // cm 변환
Serial.println(distance);
//
if(Cm>30)Cm=30; if(Cm<10)Cm=10; // max,min 처리
level=map(Cm,10,30,11,0); // level 0~11로 변경(10cm거리면 레벨11)
for(int i=0;i<10;i++){
if(level>i)digitalWrite(led[i],1);
else digitalWrite(led[i],0);
}
//
delay(100);
}
댓글 0
조회수 6,219등록된 댓글이 없습니다.