BASIC4MCU | 질문게시판 | FND 코드 도움 좀 부탁드립니다!
페이지 정보
작성자 기사공부힘들당 작성일2020-11-28 19:13 조회3,200회 댓글1건본문
초음파+LED+FND+부저를 이용해서 물체가 10CM안에 들어오면 부저가 울리고 LED가 켜지면서 FND에 숫자가 0~9까지 카운트 되고 다시 0으로 돌아가는 것을 설계하고자 하는데요
물체감지 해서 LED에 불빛 들어오게 하는것 까지는 했는데 어떻게 해야 초음파 센서에서 받은 신호를 FND에서 받고 카운트 할 수있는지 감이 잘 안잡힙니다.
도움을 주신다면 감사하겠습니다.
int trig_pin = 13; // trig 핀을 아두이노의 13번핀에 연결
int echo_pin = 12; // echo 핀을 아두이노의 12번핀에 연결
int piezo_pin = 11; // 부저를 아두이노의 11번핀에 연결
int A = 440; // 경고음의 주파수
int led_pin = 1;
int FND_PIN[8] = {2, 3, 4, 5, 6, 7, 8, 9};
int FND_NUMBER[10][8] = {
{1, 1, 1, 1, 1, 1, 0}, //0
{0, 1, 1, 0, 0, 0, 0}, //1
{1, 1, 0, 1, 1, 0, 1}, //2
{1, 1, 1, 1, 0, 0, 1}, //3
{0, 1, 1, 0, 0, 1, 1}, //4
{1, 0, 1, 1, 0, 1, 1}, //5
{1, 0, 1, 1, 1, 1, 1}, //6
{1, 1, 1, 0, 0, 0, 0}, //7
{1, 1, 1, 1, 1, 1, 1}, //8
{1, 1, 1, 1, 0, 1, 1}, //9
};
void setup() {
Serial.begin(9600); // 시리얼 통신 시작
pinMode(piezo_pin, OUTPUT); // piezo_pin은 출력으로 설정
pinMode(trig_pin, OUTPUT); // trig_pin은 아두이노의 신호를 받으므로 출력모드로 설정
pinMode(echo_pin, INPUT); // echo_pin은 아두이노에 신호를 주므로 입력모드
}
void loop() {
// 초음파를 10us(마이크로 초)동안 발사
digitalWrite(trig_pin, LOW);
digitalWrite(echo_pin, LOW);
delayMicroseconds(2);
digitalWrite(trig_pin, HIGH);
delayMicroseconds(10);
digitalWrite(trig_pin, LOW);
// echo_pin이 HIGH가 될때까지의 시간을 duration 변수에 저장
unsigned long duration = pulseIn(echo_pin, HIGH);
// 거리를 계산
float distance = ((float)(340 * duration) / 10000) / 2;
Serial.print(distance);
Serial.println("cm");
if (distance <= 10) { //
tone(piezo_pin, A); // 경고음을 출력
delay(500); // 경고음을 0.5초간 유지
noTone(piezo_pin); // 부저의 소리 중지
}
if (distance >= 10)
{
digitalWrite(led_pin, LOW);
}
delay(500); // 0.5초 대기후 다시 거리 측정
}
댓글 1
조회수 3,200master님의 댓글
master 작성일FND 예제를 찾아서 공부하세요