BASIC4MCU | 질문게시판 | 답변 : 답변 : 인체 감지 코드와 네오픽셀
페이지 정보
작성자 손문일 작성일2019-06-01 09:10 조회4,953회 댓글2건본문
안녕하세요 마스터님
답변해주신거 구동해봤는데 안되서 제가 최대한 해보고 있습니다.
또 막히는 부분이 있어서 부탁드려요.
코드 아래쪽에 빨간색으로 문의사항 표시해 두었습니다.
항상 감사드립니다.~~
#include <Adafruit_NeoPixel.h>
#define PIN 11
Adafruit_NeoPixel strip=Adafruit_NeoPixel(87,PIN,NEO_GRB+NEO_KHZ800); //네오픽셀 총 갯수를 정함
//
int sensor=7; //인체 감지 센서
//
//
uint8_t len=0,i,recv_cmd[8];
unsigned long t;
//
bool val=0, flag=0;
//
unsigned long t_neo=0, t1_neo=0;
unsigned int neo_cnt=0,neo_cnt1=0,fade=0,c0_cnt=0,c1_cnt=0,c2_cnt=0,c3_cnt=0,c4_cnt=0,c5_cnt=0;
//
void setup(){
pinMode(7,INPUT); // echoPin을 입력이다.
//
strip.begin(); strip.show(); // Initialize all pixels to 'off'
strip.setBrightness(255); // Set BRIGHTNESS to about 1/5 (max = 255)
//
Serial.begin(9600); while(!Serial);
delay(100);
}
//--------------------------------------------------------------------------------------
//
//
void loop(){
t=millis();
int val=digitalRead(sensor); //인체 감지 센서
if(val==1){flag=1;Serial.println("감지 O");}
else Serial.println("감지 X");
a_loop();
// b_loop();
//2550_loop();
//024_loop();
}
//////////////////////////////////////////////////////////////////////////////////////////
void a_loop(){
if(flag){
if(t-t_neo>1){ t_neo=t;
if(neo_cnt<=255){
if(++c0_cnt>=1){ c0_cnt=0;
fade=neo_cnt;
for(int z=0;z<=24;z++)strip.setPixelColor(0,strip.Color(fade,0,0));
}
}
else if(neo_cnt<=510){
if(++c1_cnt>=1){ c1_cnt=0;
fade=neo_cnt-255;
for(int z=0;z<=24;z++)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;
for(int z=0;z<=24;z++)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 if(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; //센서가 감지 안된경우 네오픽셀 1번핀 빛이 점점 밝아짐(fade)
fade=neo_cnt; //?? neo_cnt; 를 어떻게 해야하는지 모르겠습니다.
strip.setPixelColor(1,strip.Color(fade,0,100)); //fade가 작동을 안합니다. 머리에 쥐가나요...TT..TT
}
else //센서가 감지된 경우 점점 fade 빛이 줄어들어야함
strip.setPixelColor(1,strip.Color(255-fade,0,255)); //fade가 작동을 안합니다.
}
strip.show();
}
}
}
댓글 2
조회수 4,953master님의 댓글
master 작성일
소스코드 복잡도가 어느 이상으로 올라가면
실제로 동작시키면서 디버깅을 해야하는데
물건이 있는 본인이 아니면 다른 사람은 할 수가 없습니다.
잘 만들어보세요
손문일님의 댓글
손문일 작성일
넵 알겠습니다.~~
감사합니다~~
어떻게든 해보겠습니다~~ ^^;;