정보나눔

오픈소스하드웨어 프로젝트에 대한 다양한 정보를 나누는 공간입니다.

네오픽셀 LED 실행 중 정지 및 시간 측정에 대해 질문있습니다.
Bigstar | 2017-04-06

현재 네오픽셀 LED를 4x4 키패드로 3가지 모드로 제어중인데요.

 

각각의 LED모드를 실행 중에 버튼을 이용하여 '정지' 시키는 것을 추가해보려합니다.

 

또한 LED가 '정지' 된 시점에 delay 값과의 차이를 시리얼모니터로 나타내려하는데 너무 어렵습니다.

 

#include <Adafruit_NeoPixel.h>  
#include <Keypad.h>
#define PIN 10

#ifdef __AVR__ 
#include <avr/power.h> 
#endif 

Adafruit_NeoPixel strip = Adafruit_NeoPixel(24, PIN, NEO_GRB + NEO_KHZ800);  //NeoPixel

const byte ROWS = 4;
const byte COLS = 4;
char keys[] = {'1','2','3','A','4','5','6','B','7','8','9','C','*','0','#','D'};
byte colPins[ROWS] = {5,4,3,2};
byte rowPins[COLS] = {9,8,7,6};
                      
                      Keypad keypad = Keypad(keys, rowPins, colPins, ROWS, COLS);
                      
                      void setup(){
                        strip.begin(); //NeoPixel
                        strip.show();  //NeoPixel 
                        
                        #if defined (__AVR_ATtiny85__)
                        
                          if (F_CPU == 16000000) clock_prescale_set(clock_div_1); 
                      #endif 
                      }
                      
                      void loop(){
                         char key = keypad.getKey();
                        
                        if(key == '1'){
                           colorWipe1(strip.Color(255, 0, 0), 50);
                           colorWipe1(strip.Color(0, 0, 0), 50);
                        } else if (key == '2') {
                          colorWipe2(strip.Color(0, 255, 0), 50);                       
                          colorWipe2(strip.Color(0, 0, 0), 50);
                        } else if (key == '3') {
                          colorWipe3(strip.Color(0, 0, 255), 50);                       
                          colorWipe3(strip.Color(0, 0, 0), 50); 
                        }
                       }

void colorWipe1(uint32_t c, uint8_t wait) { 
  for(uint16_t i=0; i<strip.numPixels(); i++) { 
      strip.setPixelColor(i, c); 
      strip.show(); 
      delay(5); 
  } 
}

void colorWipe2(uint32_t c, uint8_t wait) { 
  for(uint16_t i=0; i<strip.numPixels(); i++) { 
      strip.setPixelColor(i, c); 
      strip.show(); 
      delay(5);
  }
}

void colorWipe3(uint32_t c, uint8_t wait) { 
  for(uint16_t i=0; i<strip.numPixels(); i++) { 
      strip.setPixelColor(i, c); 
      strip.show(); 
      delay(5);
  } 
}

 

일단 코딩은 이렇게 넣어봤는데 이후에 어떤 코드를 입력하여야 할까요? 부탁드립니다.

이전글   |    아두이노 메가와 블루투스 HC-06간에 AT커맨드가 불통입니다. ... 2017-04-06
다음글   |    아두이노 소스코드좀 봐주세요ㅠㅠ 2017-04-07