// * Rotary Tutorial: https://arduinogetstarted.com/tutorials/arduino-rotary-encoder
// * NeoPixel example: https://github.com/adafruit/Adafruit_NeoPixel/blob/master/examples/simple/simple.ino
#include <Adafruit_NeoPixel.h>
const int neoPin = 2;
const int num_pixels = 3;
const int delay_interval = 250;
const int pirPin = 12;
const int ledONBOARD = 13; // <--Leave in for now
int motionState = 0;
int pirState = 0;
int latch = 0;
//int pixBrightness = 20; //used as percentage
//int pixTemperature = 5000; //used as kelvin (approx)
Adafruit_NeoPixel NeoPixel(num_pixels, neoPin, NEO_GRB + NEO_KHZ800);
void setup() {
NeoPixel.begin();
pinMode(pirPin, INPUT);
pinMode(ledONBOARD, OUTPUT);
Serial.begin(9600);
delay(1000);
}
void loop() {
NeoPixel.clear(); //Clears any pixel data
motionState = digitalRead(pirPin);
if (motionState == HIGH) {
if (pirState == LOW) {
pirState = HIGH;
latch = !latch;
if (latch == HIGH) {
Serial.println("Latch ON");
pixUpdate(20,5000,1);
digitalWrite(ledONBOARD, HIGH); // <--Leave in for now
}
else {
Serial.println("latch OFF");
digitalWrite(ledONBOARD, LOW); // <--Leave in for now
pixUpdate(20,5000,0);
}
}
}
else {
if (pirState == HIGH) {
pirState = LOW;
}
}
}
//---Leave as void (nothing being returned as yet)
void pixUpdate(int pixBrightness, int pixTemperature, bool status) {
NeoPixel.clear();
// Do stuff to setup pixel values
if (status) {
for (int pixel = 0; pixel < num_pixels; pixel++) {
NeoPixel.setPixelColor(pixel, NeoPixel.Color(120,120,120));
}
}
else {
NeoPixel.clear();
}
NeoPixel.show();
}