현재 네오픽셀 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);
}
}
일단 코딩은 이렇게 넣어봤는데 이후에 어떤 코드를 입력하여야 할까요? 부탁드립니다.
|