Hi all,
need some help running 2 neopixel animations at the same time. Millis is not something i'm familiar with using and i'm struggling to implement it. If anyone could help writing this into my code it'd be greatly appreciated. There a lot more to do on the project but i just need help getting off the ground. Code is attached.
Cheers
//
#include "FastLED.h" // Include Neopixel library
#define SPOT_1 12 // Defines pinouts for Neopixel rings
#define SPOT_2 9
#define SPOT_3 11
#define NUM_STRIPS 2
#define NUM_LEDS 16 // Number of neopixels per ring.
#define LED_TYPE NEOPIXEL // Defines use of neopixel chipset
CRGB spot1[NUM_LEDS], spot2[NUM_LEDS]; // Creates neopixel arrays
int HE1 = 18; // Sets Hall Effect Sensor pins
int HE2 = 21;
int HE1State = 0; // Sets initial sensor states to LOW
int HE2State = 0;
void setup() {
delay(100);
Serial.begin(9600);
FastLED.addLeds<LED_TYPE, SPOT_1>(spot1, NUM_LEDS); // Links all Neopixel rings to FastLED library.
FastLED.addLeds<LED_TYPE, SPOT_2>(spot2, NUM_LEDS);
pinMode(HE1, INPUT);
pinMode(HE2, INPUT);
}
void loop() {
Serial.println(F("Reading Signals "));
HE1State = digitalRead(HE1); // Look at reading all of the Hall Effect sensor inputs during the loop.
HE2State = digitalRead(HE2);
Serial.println(F("Signals read "));
if (HE1State == LOW) { //If sensor is LOW flash Red
flash();
Serial.println(F("HE1 Flash "));
}
if (HE1State == HIGH) { //If sensor is HIGH solid Blue
solid(); // Delay affects speed of circling light. Higher delay = slower speed.
Serial.println(F("HE1 Solid "));
}
if (HE2State == LOW) { //If sensor is LOW flash Red
flash2();
Serial.println(F("HE2 Flash "));
}
if (HE2State == HIGH) { //If sensor is HIGH solid Blue
solid2();
Serial.println(F("HE2 Solid "));
}
}
void flash() {
Serial.println(F("Sensor 1 Low "));
for (int i = 0; i < NUM_LEDS; i++) {
spot1[i] = CRGB::Red;
FastLED.show();
delay(30); // Delay affects speed of circling light. Higher delay = slower speed.
for (int i = 0; i < NUM_LEDS; i++)
spot1[i].fadeToBlackBy(50);
FastLED.show();
}
}
void solid() {
Serial.println(F("Sensor 1 High "));
fill_solid( spot1, NUM_LEDS, CRGB::Blue);
FastLED.show();
delay(1000); // Delay affects speed of circling light. Higher delay = slower speed.
}
void flash2() {
Serial.println(F("Sensor 2 Low "));
for (int i = 0; i < NUM_LEDS; i++) {
spot2[i] = CRGB::Red;
FastLED.show();
delay(30); // Delay affects speed of circling light. Higher delay = slower speed.
for (int i = 0; i < NUM_LEDS; i++)
spot2[i].fadeToBlackBy(50);
FastLED.show();
}
}
void solid2() {
Serial.println(F("Sensor 2 High "));
fill_solid( spot2, NUM_LEDS, CRGB::Blue);
FastLED.show();
delay(1000); // Delay affects speed of circling light. Higher delay = slower speed.
}