#include <Adafruit_NeoPixel.h> // https://github.com/adafruit/Adafruit_NeoPixel
// https://adafruit.github.io/Adafruit_NeoPixel/html/class_adafruit___neo_pixel.html
// #define PIN 0 // ATtiny88
#define PIN 6 // nano
#define PIX 3 // number of WS2812
Adafruit_NeoPixel pixel(PIX, PIN, NEO_GRB + NEO_KHZ800);
#define EYE2 2 // right eye is on Pix 2
#define EYE1 1 // left eye on Pix 1
#define HAL0 0 // HAL0 on Pix 0
unsigned long timerEYE1, timeoutEYE1, timerHAL0, timeoutHAL0 = 25;
int val, dir = 1;
bool timeoutEYE1Created;
void setup() {
randomSeed(analogRead(A0));
pixel.begin(); // INITIALIZE NeoPixel pixel object
pixel.clear();
pixel.show();
pixel.setPixelColor(EYE1, pixel.Color(0, 255, 0));
pixel.setPixelColor(EYE2, pixel.Color(0, 255, 0));
pixel.show();
}
void loop() {
eyePulse();
}
void eyePulse() {
int pulsetime = 100;
if (!timeoutEYE1Created) { // create one random timeout
timeoutEYE1Created = 1;
timeoutEYE1 = random(3000, 10000);
}
if (millis() - timerHAL0 > timeoutHAL0) {
timerHAL0 = millis();
val += dir;
if (val > 254 || val < 1)
dir = -dir;
pixel.setPixelColor(HAL0, pixel.Color(val, val, val));
pixel.show();
}
if (millis() - timerEYE1 > timeoutEYE1) {
timeoutEYE1Created = 0;
timerEYE1 = millis();
pixel.setPixelColor(EYE2, pixel.Color(255, 0, 0));
pixel.show();
delay(pulsetime);
pixel.setPixelColor(EYE2, pixel.Color(0, 255, 0));
pixel.show();
delay(pulsetime);
pixel.setPixelColor(EYE2, pixel.Color(255, 0, 0));
pixel.show();
delay(pulsetime);
pixel.setPixelColor(EYE2, pixel.Color(0, 255, 0));
}
}