/*
PIR sensor tester
*/
int ledPin = 12; // choose the pin for the LED
int inputPin = 14; // choose the input pin (for PIR sensor)
int pirState = LOW; // we start, assuming no motion detected
int val = 0; // variable for reading the pin status
// Adafruit NeoPixel library
#include <Adafruit_NeoPixel.h>
// Which pin on the Arduino is connected to the NeoPixels?
#define PIN 13
// How many NeoPixels are attached to the Arduino?
#define NUMPIXELS 24 // Popular NeoPixel ring size
// When setting up the NeoPixel library, we tell it how many pixels,
// and which pin to use to send signals. Note that for older NeoPixel
// strips you might need to change the third parameter -- see the
// strandtest example for more information on possible values.
Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
#define DELAYVAL 30 // Time (in milliseconds) to pause between pixels
#define COLOURRGB 180, 180, 180 // Colour of the pixels in RGB
#define COLOURRGB2 0, 0, 0 // Colour of the pixels in RGB
// Done Flag to play animations once
bool doneFlag = false;
void setup() {
Serial.begin(115200);
Serial.println("Hello, ESP32!");
pixels.begin(); // INITIALIZE NeoPixel strip object (REQUIRED)
// PIR SETUP
pinMode(ledPin, OUTPUT); // declare LED as output
pinMode(inputPin, INPUT); // declare sensor as input
}
void loop() {
// Wait
//delay(1000);
// PIR LOOP
val = digitalRead(inputPin); // read input value
if (val == HIGH) { // check if the input is HIGH
digitalWrite(ledPin, HIGH); // turn LED ON
if (doneFlag == false) {
pixels.setPixelColor(0, COLOURRGB); delay(DELAYVAL); pixels.show();
pixels.setPixelColor(1, COLOURRGB); delay(DELAYVAL); pixels.show();
pixels.setPixelColor(2, COLOURRGB); delay(DELAYVAL); pixels.show();
pixels.setPixelColor(3, COLOURRGB); delay(DELAYVAL); pixels.show();
pixels.setPixelColor(4, COLOURRGB); delay(DELAYVAL); pixels.show();
pixels.setPixelColor(5, COLOURRGB); delay(DELAYVAL); pixels.show();
pixels.setPixelColor(6, COLOURRGB); delay(DELAYVAL); pixels.show();
pixels.setPixelColor(7, COLOURRGB); delay(DELAYVAL); pixels.show();
pixels.setPixelColor(8, COLOURRGB); delay(DELAYVAL); pixels.show();
pixels.setPixelColor(9, COLOURRGB); delay(DELAYVAL); pixels.show();
pixels.setPixelColor(10, COLOURRGB); delay(DELAYVAL); pixels.show();
pixels.setPixelColor(11, COLOURRGB); delay(DELAYVAL); pixels.show();
pixels.setPixelColor(12, COLOURRGB); delay(DELAYVAL); pixels.show();
pixels.setPixelColor(13, COLOURRGB); delay(DELAYVAL); pixels.show();
pixels.setPixelColor(14, COLOURRGB); delay(DELAYVAL); pixels.show();
pixels.setPixelColor(15, COLOURRGB); delay(DELAYVAL); pixels.show();
pixels.setPixelColor(16, COLOURRGB); delay(DELAYVAL); pixels.show();
pixels.setPixelColor(17, COLOURRGB); delay(DELAYVAL); pixels.show();
pixels.setPixelColor(18, COLOURRGB); delay(DELAYVAL); pixels.show();
pixels.setPixelColor(19, COLOURRGB); delay(DELAYVAL); pixels.show();
pixels.setPixelColor(20, COLOURRGB); delay(DELAYVAL); pixels.show();
pixels.setPixelColor(21, COLOURRGB); delay(DELAYVAL); pixels.show();
pixels.setPixelColor(22, COLOURRGB); delay(DELAYVAL); pixels.show();
pixels.setPixelColor(23, COLOURRGB); delay(DELAYVAL); pixels.show();
pixels.setPixelColor(24, COLOURRGB); delay(DELAYVAL); pixels.show();
delay (6000);
doneFlag = true;
}
if (pirState == LOW) {
// we have just turned on
Serial.println("Motion detected!");
// We only want to print on the output change, not state
doneFlag = false;
pirState = HIGH;
}
} else {
digitalWrite(ledPin, LOW); // turn LED OFF
// Turn Off Lights
pixels.setPixelColor(24, COLOURRGB2); delay(DELAYVAL); pixels.show();
pixels.setPixelColor(23, COLOURRGB2); delay(DELAYVAL); pixels.show();
pixels.setPixelColor(22, COLOURRGB2); delay(DELAYVAL); pixels.show();
pixels.setPixelColor(21, COLOURRGB2); delay(DELAYVAL); pixels.show();
pixels.setPixelColor(20, COLOURRGB2); delay(DELAYVAL); pixels.show();
pixels.setPixelColor(19, COLOURRGB2); delay(DELAYVAL); pixels.show();
pixels.setPixelColor(18, COLOURRGB2); delay(DELAYVAL); pixels.show();
pixels.setPixelColor(17, COLOURRGB2); delay(DELAYVAL); pixels.show();
pixels.setPixelColor(16, COLOURRGB2); delay(DELAYVAL); pixels.show();
pixels.setPixelColor(15, COLOURRGB2); delay(DELAYVAL); pixels.show();
pixels.setPixelColor(14, COLOURRGB2); delay(DELAYVAL); pixels.show();
pixels.setPixelColor(13, COLOURRGB2); delay(DELAYVAL); pixels.show();
pixels.setPixelColor(12, COLOURRGB2); delay(DELAYVAL); pixels.show();
pixels.setPixelColor(11, COLOURRGB2); delay(DELAYVAL); pixels.show();
pixels.setPixelColor(10, COLOURRGB2); delay(DELAYVAL); pixels.show();
pixels.setPixelColor(9, COLOURRGB2); delay(DELAYVAL); pixels.show();
pixels.setPixelColor(8, COLOURRGB2); delay(DELAYVAL); pixels.show();
pixels.setPixelColor(7, COLOURRGB2); delay(DELAYVAL); pixels.show();
pixels.setPixelColor(6, COLOURRGB2); delay(DELAYVAL); pixels.show();
pixels.setPixelColor(5, COLOURRGB2); delay(DELAYVAL); pixels.show();
pixels.setPixelColor(4, COLOURRGB2); delay(DELAYVAL); pixels.show();
pixels.setPixelColor(3, COLOURRGB2); delay(DELAYVAL); pixels.show();
pixels.setPixelColor(2, COLOURRGB2); delay(DELAYVAL); pixels.show();
pixels.setPixelColor(1, COLOURRGB2); delay(DELAYVAL); pixels.show();
pixels.setPixelColor(0, COLOURRGB2); delay(DELAYVAL); pixels.show();
pixels.clear(); // Set all pixel colors to 'off'
if (pirState == HIGH) {
// we have just turned of
Serial.println("Motion ended!");
// We only want to print on the output change, not state
pirState = LOW;
}
}
}