BASIC4MCU | 질문게시판 | 답변 : 입력신호 처리가 궁금해요
페이지 정보
작성자 master 작성일2019-04-19 13:20 조회9,249회 댓글5건
https://www.basic4mcu.com/bbs/board.php?bo_table=gac&wr_id=8294
작성일
작성일
작성일
본문
// MCU BASIC: https://www.basic4mcu.com// DateTime : 2019-04-19 오후 1:26:50// by Ok-Hyun Park//sensor입력이 들어와서 400이상이면 green led가 5번 깜박이고 끄려고 하는데요.동작중 400이하가 들어왔을때 red로 바로 전환이 안되요.도와주세요//int sign=2;int enter=8;int led_R=4,led_G=3;int spk=10;int sensor=A0;//int mode=0,count=0;//void setup(){pinMode(led_R,OUTPUT); pinMode(led_G,OUTPUT);pinMode(spk,OUTPUT); pinMode(enter,OUTPUT);pinMode(sensor,INPUT); pinMode(sign,INPUT);attachInterrupt(digitalPinToInterrupt(sign),SEN,CHANGE);Serial.begin(9600);}//void SEN(){ mode=0; }digitalWrite(led_G,0); digitalWrite(led_R,1);}//void loop(){SEN();int a=analogRead(A0);if(a>400){if(mode==0){ mode=1; count=0; }}else{ mode=0; }//if(mode==1){if (count< 5){ digitalWrite(led_G,1); digitalWrite(led_R,0); }else if(count<10){ digitalWrite(led_G,0); digitalWrite(led_R,0); }else if(count<12){ digitalWrite(spk,1); }else if(count<14){ digitalWrite(spk,0); }else if(count<19){ digitalWrite(spk,1); }else if(count<21){ digitalWrite(spk,0); }//if(count<21)count++;}else{ digitalWrite(led_G,0); digitalWrite(led_R,1); Serial.println(a); } // mode==0}
댓글 5
조회수 9,249스캉이님의 댓글
스캉이 작성일
void SEN(){{ mode=0; }
digitalWrite(led_G,0); digitalWrite(led_R,1);
}
주신 내용에서 에러가 나서 윗부분만 수정했습니다.
시리얼모니터로 400이상 들어오기전 R LED가 켜졌있다 400이상이 들어오면 G LED가 켜지는데 R LED는 꺼지지 않습니다. G LED가 5회 깜박이다 꺼져야 하는데 계속 켜져 있습니다.
제가 잘못한 부분이 있는지 질문 좀 드려요.
master님의 댓글
master
원 소스에는 5회점멸 부분이 없습니다.
1회만 점멸하죠
master님의 댓글
master
LOW 출력으로 LED가 켜지는지
HIGH 출력으로 LED가 켜지는지
잘 체크해보세요
스캉이님의 댓글
스캉이
HIGH일때 G LED가 켜져요.
제가 구현설명을 잘못했어요. 400이상의 신호가 계속 들어오는데요. 400이상의 신호가 5초이상 들어오는 동안 G LED 5번 깜박이고 OFF로. 5초이내 400이하로 신호가 들어오면 R LED를 계속 켜는건데.. 엉뚱하게 쓴것 같습니다.
스캉이님의 댓글
스캉이 작성일한번만 더 부탁드려도 될까요?