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 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 |
#include <Adafruit_NeoPixel.h> #define LED_PIN 3 #define LED_COUNT 8 Adafruit_NeoPixel strip(LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800); #define PIR 2 unsigned long cnt=0; int states=0; void setup() { Serial.begin(9600); strip.begin(); strip.show(); strip.setBrightness(10); colorWipe(strip.Color(255, 255, 255)); pinMode(PIR, INPUT); } void loop() { int value=digitalRead(PIR); //Serial.print("PIR : "); //Serial.println(value); // states 여부와 상관없이 언제든지 감지가 되면 states가 1이 된다 if (value==HIGH) { cnt=millis(); states=1; } // 더이상 감지가 안되고 상태가 1이고 5초가 지났다면 else if (states==1 && millis() > cnt+5000) { cnt=millis(); states=2; } // 더이상 감지가 안되고 상태가 2가 된 이후 3초가 지났다면 else if (states==2 && millis() > cnt+3000) { cnt=0; states=0; } Serial.print("states : "); Serial.println(states); switch (states) { case 0: strip.setBrightness(10); break; case 1: strip.setBrightness(200); break; case 2: strip.setBrightness(100); break; } strip.show(); } void colorWipe(uint32_t color) { for(int i=0;i < strip.numPixels();i++) { strip.setPixelColor(i, color); } strip.show(); } |