BASIC4MCU | 질문게시판 | 네오픽셀과 인체 감지센서
페이지 정보
작성자 손문일 작성일2019-06-05 03:16 조회4,405회 댓글1건본문
안녕하세요 마스터님.
선생님이 짜주신 코드에 거의 답이 있어서 엄청 뜯어보고 하다가 여기까지 왔습니다.
감사합니다.
거의 다 되었는데 코드가 한바퀴 돌고나서는 또다시 구동이 안되네요..TT...TT
다시 최대한 간추려서 보냅니다.
중요한 부분은 빨강으로 칠했습니다..
구동방안
1. 인체 감지되면 Flag 만 구동
2. Flag이 구동이 끝나가면 outflag 가 구동되고 인체 감지감지되기 전까지 계속 255의 빛으로 남아있음
3. 인체가 감지되면 out1flag 이 구동되면서 빛이 점점 줄어들고 다시 Flag구동, 다시 1번으로 돌아감
이렇게 순환됩니다.
첨에는 잘 작동하다가 두번째 부터는 1번 네오픽셀이 불이 안들어와요.
도와주세요...TT..TT
감사합니다.
void loop(){
int val=digitalRead(sensor); //인체 감지 센서
if(val==1){flag=1; Serial.println("감지 O");}
else Serial.println("감지 X");
if(outflag==1){if(val==1) {outflag=0;
out1flag=1;
}
}
out_loop();
out1_loop();
a_loop();
}
=====================================================================================
void out_loop(){
if(outflag){
if(neo1_cnt<=255){
fade1=neo1_cnt;
strip.setPixelColor(1,strip.Color(fade1,0,0));
}
if(++neo1_cnt>255){ //neo1_cnt=0; //이 코드를 넣어야 다음번에도 코드가 구동되는데 넣으면 자동으로 불이 계속 켜짐
}
strip.show();
}
}
=====================================================================================
void out1_loop(){
if(out1flag){
if(neo2_cnt<=255){
fade2=neo2_cnt;
strip.setPixelColor(1,strip.Color(255-fade2,0,0));
}
if(++neo2_cnt>255){ //neo2_cnt=0;
}
strip.show();
}
}
=====================================================================================
void a_loop(){
if(flag){
if(neo_cnt<=255){
if(++c0_cnt>=1){ c0_cnt=0;
fade=neo_cnt;
strip.setPixelColor(0,strip.Color(fade,0,0));
}
}
else if(neo_cnt<=510){
if(++c1_cnt>=1){ c1_cnt=0;
fade=neo_cnt-255;
strip.setPixelColor(0,strip.Color(255-fade,0,0));
}
}
else if(neo_cnt<=765){
if(++c2_cnt>=1){ c2_cnt=0;
fade=neo_cnt-510;
strip.setPixelColor(0,strip.Color(fade,0,0));
}
}
else if(neo_cnt<=1020){
if(++c3_cnt>=1){ c3_cnt=0;
fade=neo_cnt-765;
strip.setPixelColor(0,strip.Color(255-fade,0,0));
}
}
else if(neo_cnt<=1275){
if(++c4_cnt>=1){ c4_cnt=0;
fade=neo_cnt-1020;
strip.setPixelColor(0,strip.Color(fade,0,0));
}
}
else{ //(neo_cnt<=1530)
if(++c5_cnt>=1){ c5_cnt=0;
fade=neo_cnt-1275;
strip.setPixelColor(0,strip.Color(255-fade,0,0));
}
}
if(++neo_cnt>1530){neo_cnt=0;
if(val==0){flag=0;
outflag=1;
}
}
strip.show();
}
}
댓글 1
조회수 4,405master님의 댓글
master 작성일코드만 봐서는 잘 모르겠습니다.