BASIC4MCU | 질문게시판 | 인체 감지 코드와 네오픽셀
페이지 정보
작성자 손문일 작성일2019-05-31 06:17 조회3,679회 댓글0건본문
안녕하세요 마스터님
혼자서 또 해보다가 막히네요.
빨강색으로 표시된 코드가 문제인듯 합니다.
현재 인체 감지 코드 와 네오픽셀만 사용중입니다.
문제점
=인체 감지가 된 경우만 네오픽셀 구동됨. 감지가 안되면 구동 멈춤.
바라는 점
1.인체감지가 된 경우
=네오픽셀 코드가 끝까지 구동됨
2. 네오픽셀 코드가 끝까지 구동된후에도 인체감지가 되면
=다시 처음부터 구동
3. 네오픽셀 코드가 끝까지 구동된후에 인체감지가 안되면
=파란색 코드 구동(네오픽셀 5번핀)
감사합니다.~~
#include <Adafruit_NeoPixel.h>
#define PIN 11
Adafruit_NeoPixel strip=Adafruit_NeoPixel(87,PIN,NEO_GRB+NEO_KHZ800); //네오픽셀 총 갯수를 정함
//
int sensor=7; //인체 감지 센서
//
unsigned long t;
uint8_t len=0,i,recv_cmd[8];
//
bool flag=0, out=0;
//
unsigned long t_neo=0, t1_neo=0;
unsigned int val=0, neo_cnt=0,neo1_cnt=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(115200); while(!Serial);
delay(100);
}
//
void loop(){
t=millis();
int val= digitalRead(sensor); //인체 감지 센서
if(val==1) //인체 감지 센서
Serial.println("감지 O");
else
Serial.println("감지 X");
if(val==1){
if(flag==0){ flag=1;}
}
else{
flag=0;
}
a_loop();
//b_loop();
}
//////////////////////////////////////////////////////////////////////////////////////////
void a_loop(){
if(flag){
if(t-t_neo>50){ t_neo=t; //Millis 함수 전체 속도 숫자 높일수록 느려짐
if(neo_cnt<=255){ //0부터 255까지의 구간
// if(++c0_cnt>=1){ c0_cnt=0; //++c0_cnt>=1 의 숫자 1을 올릴수록 느려짐 (10을 할 경우 밀함수 숫자 무엇을 바꿔야 하나? 그리고 빛이 툭툭 끊기는 느낌)
fade=neo_cnt; //fade 함수 (증가)
for(int z=0;z<=24;z++)strip.setPixelColor(0,strip.Color(fade,0,0)); //fade/2는 255를 2로 나눈 수까지 fade시킨다 = 127.5까지 증가시킴
// }
}
else if(neo_cnt<=510){ //255부터 510까지의 구간
if(++c1_cnt>=1){ c1_cnt=0;
fade=neo_cnt-255; //fade=(256~510)-255 = 1~255
for(int z=0;z<=24;z++)strip.setPixelColor(0,strip.Color(0,255,255)); //fade/2는 255를 2로 나눈 수까지 fade시킨다
}
}
else if(neo_cnt<=765){ //510부터 765까지의 구간 // main에 motor 신호
if(++c2_cnt>=1){ c2_cnt=0;
fade=neo_cnt-510; //fade=neo_cnt-510는 증가
for(int z=0;z<=24;z++)strip.setPixelColor(0,strip.Color(0,fade,255)); //fade/2는 255를 2로 나눈 수까지 fade시킨다
}
}
else if(neo_cnt<=1020){ // if(neo_cnt<=767)
if(++c3_cnt>=1){ c3_cnt=0;
fade=neo_cnt-765; //fade=neo_cnt-765는 감소
strip.setPixelColor(0,strip.Color(fade,fade-255,fade-255)); //fade(감소),255-fade(증가),255-fade(증가)
}
}
else if(neo_cnt<=1270){ // if(neo_cnt<=767)
if(++c4_cnt>=1){ c4_cnt=0;
fade=1020-neo_cnt; //fade=neo_cnt-765는 감소
strip.setPixelColor(0,strip.Color(fade,255-fade,255-fade)); //fade(감소),255-fade(증가),255-fade(증가)
}
}
else{ // if(neo_cnt<=767)
if(++c5_cnt>=1){ c5_cnt=0;
fade=neo_cnt-1270; //fade=neo_cnt-765는 감소
strip.setPixelColor(2,strip.Color(fade,255-fade,255-fade)); //fade(감소),255-fade(증가),255-fade(증가)
}
}
if(++neo_cnt>1720){ neo_cnt=0;
if(val==0){flag=0;
fade=neo_cnt-1270;
strip.setPixelColor(5,strip.Color(fade,0,0));
}
}
strip.show();
}
}
}
댓글 0
조회수 3,679등록된 댓글이 없습니다.