BASIC4MCU | 질문게시판 | LED 점등
페이지 정보
작성자 슬레이브 작성일2020-12-01 01:38 조회6,428회 댓글3건본문
안녕하십니까
스위치가 눌린 횟수만큼 딜레이 해주는 소스를 만들고 있습니다. (최대 9번까지 누릅니다.)
ex) 스위치를 2번 누르면 2초 간격으로 LED 점등
3번 누르면 3초 간격으로 LED 점등
if(조건) {
PORTC=0x00;
delay? ;
}
else if {
PORTC=0xFF; }
이런 느낌으로 소스를 구성 중 입니다. (if문에 쓰여있는 조건은 질문하는 것과는 다른 조건입니다.)
도저히 어떻게 해야할지 갈피가 잡히지 않아서 질문드립니다.
힌트 주시면 감사하겠습니다.
댓글 3
조회수 6,428master님의 댓글
master 작성일
아두이노인지 AVR인지 모르겠지만
스위치 엣지 검출하는 예제를 먼저 공부하세요
master님의 댓글
master 작성일
if(스위치입력==1?){ // 누를 때 1이 된다면
if(flag==0){ flag=1; } // 상승엣지 검출
}
else{
if(flag==1){ flag=0; } // 하강엣지 검출
}
여기서 채터링을 방지하기 위해서 약간의 딜레이를 추가해주면
if(스위치입력==1?){ // 누를 때 1이 된다면
if(flag==0){ flag=1; delay(50); } // 상승엣지 검출
}
else{
if(flag==1){ flag=0; delay(50); } // 하강엣지 검출
}
누를 때 0~9까지 증가하는 변수를 하나 추가하면
if(스위치입력==1?){ // 누를 때 1이 된다면
if(flag==0){ flag=1; if(++cnt>9)cnt=0; delay(50); } // 상승엣지 검출
}
else{
if(flag==1){ flag=0; delay(50); } // 하강엣지 검출
}
//-----------------
if(++cnt>9)cnt=0; 스위치를 누를 때마다 cnt가 1씩 증가하도록 했으니
cnt값을 사용해서 딜레이를 변경하세요
슬레이브님의 댓글
슬레이브 작성일감사합니다! 답변 해주신 내용과 예제 참고하여 해보겠습니다.