수업때 진행한 순서대로 소스 올려요.
- for문을 이용해서 led를 한꺼번에 컨트롤하기
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
#include <Adafruit_NeoPixel.h> #ifdef __AVR__ #include <avr/power.h> // Required for 16 MHz Adafruit Trinket #endif #define PIN D3 //#define PIN 3 #define NUMPIXELS 7 Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800); #define DELAYVAL 500 // Time (in milliseconds) to pause between pixels void setup() { pixels.begin(); pixels.setBrightness(100); Serial.begin(115200); } void loop() { pixels.clear(); pixels.show(); Serial.println("clear"); delay(1000); for (int i = 0; i < NUMPIXELS; i++) { //i==0 pixels.setPixelColor(i, pixels.Color(255,100,30)); } pixels.show(); Serial.println(); Serial.println("show"); delay(1000); } |
2. for문을 이용한 fade효과 만들기
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
#include <Adafruit_NeoPixel.h> #ifdef __AVR__ #include <avr/power.h> // Required for 16 MHz Adafruit Trinket #endif #define PIN D3 //#define PIN 3 #define NUMPIXELS 7 Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800); #define DELAYVAL 500 // Time (in milliseconds) to pause between pixels void setup() { pixels.begin(); pixels.clear(); pixels.setBrightness(100); for (int i = 0; i < NUMPIXELS; i++) { pixels.setPixelColor(i, pixels.Color(255,100,30)); } pixels.show(); Serial.begin(115200); } void loop() { pixels.clear(); for(int j=100; j>=0; j--){ Serial.println(j); pixels.setBrightness(j); for (int m = 0; m < NUMPIXELS; m++) { pixels.setPixelColor(m, pixels.Color(255,100,30)); } pixels.show(); delay(20); } pixels.clear(); for(int k=0; k<101; k++) { Serial.println(k); pixels.setBrightness(k); for (int m = 0; m < NUMPIXELS; m++) { pixels.setPixelColor(m, pixels.Color(255,100,30)); } pixels.show(); delay(20); } } |
3. 중복된 코드를 함수로 바꿔 코드 줄이기
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
#include <Adafruit_NeoPixel.h> #ifdef __AVR__ #include <avr/power.h> // Required for 16 MHz Adafruit Trinket #endif #define PIN D3 //#define PIN 3 #define NUMPIXELS 7 int wColor[3] = {255,100,30}; Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800); #define DELAYVAL 500 // Time (in milliseconds) to pause between pixels void setup() { pixels.begin(); pixels.clear(); pixels.setBrightness(100); for (int i = 0; i < NUMPIXELS; i++) { pixels.setPixelColor(i, pixels.Color(wColor[0],wColor[1],wColor[2])); } pixels.show(); Serial.begin(115200); } void loop() { //Serial.println("start"); pixels.clear(); for(int j=100; j>=0; j--){ // Serial.println(j); bControl(j); } pixels.clear(); for(int k=0; k<101; k++) { bControl(k); } } void bControl(int num){ pixels.setBrightness(num);//밝기 조절 for (int m = 0; m < NUMPIXELS; m++) { pixels.setPixelColor(m,pixels.Color(wColor[0],wColor[1],wColor[2])); } pixels.show(); delay(20); } |