BASIC4MCU | 질문게시판 | 다른 회로의 LED 깜빡임을 카운트하는 것 질문드립니다.
페이지 정보
작성자 inharang 작성일2020-10-13 13:52 조회4,610회 댓글2건본문
안녕하세요.
LED의 깜빡이는 횟수를 카운트하는 회로와 코드를 작성하고 싶은데 잘 안되서 문의드립니다.
일단 LED는 A회로에서 제어되고 있으며 LED가 LOW , HIGH를 반복 동작하면서 켜지니까 그것을 카운트 하고 싶어서
아두이노로 B회로를 구성하여 LED의 깜빡임 횟수를 카운트하려합니다. (카운트 횟수는 약 300회 이상, 시리얼 모니터로 출력예정)
일단 구성은 아래 그림처럼 회로 A가 LED를 ON/OFF 제어를 하고
아두이노(B)는 그 신호를 받아 카운터만 할 수 있도록 구성했습니다.
작성한 코드는
int LED = 7;
int state = 0;
int ledState;
int count = 0;void setup(){
pinMode(LED, INPUT);
}void loop(){
ledState = digitalRead(LED);
if (ledState == HIGH){
if(state == 0){
delay(10);
state = 1;
}
}
if (ledState == LOW){
if(state == 1){
count += 1;
delay(10);
state = 0;
}
}Serial.println(state);
}
입니다. 혹시 이 방법이 잘못된 것인지 확인 부탁드립니다..
아니면 다른 회로의 LED 깜빡임을 0부터 카운트할 수 있는 다른 방법이 있을까요??
도움 부탁드립니다. ㅠㅠ
댓글 2
조회수 4,610master님의 댓글
master 작성일
회로가 우선 잘못되어 있습니다.
A sig --- 저항---LED---GND
LED 캐소드를 B 7핀에 연결하지말고 GND에 연결하세요
A sig ---------- B 7pin
A sig에서 선을 하나 더 빼서 B 7pin에 연결합니다.
B 7pin은 LED 켜지는 것을 체크하는 것이 아니고 A sig을 체크하는 겁니다.
저항과 LED 중간을 체크하는 것도 LED 때문에 제대로 전압 체크를 하지 못합니다.
결국 A sig을 체크하는 것이 가장 확실한 전압 레벨을 체크 가능합니다.
master님의 댓글
master 작성일
//
int sig=7;
int count=0;
//
void setup(){}
//
void loop(){
while(digitalRead(sig)==0); // HIGH가 될 때까지 대기
count++;
Serial.println(count);
while(digitalRead(sig)); // LOW가 될 때까지 대기
}