Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*brass factory Daily cycle event timer version 5 */
- /*Brass Factory Daily cycle. Set it to 3000 for the 1/2 hour cycle.*/
- #define FASTLED_INTERNAL
- #include <FastLED.h>
- int num = 9; //an interval of 3000 lasts about 24.5 minutes real time. version 5 is thus set for 45 minutes
- int32_t interval = (int32_t) num * 500; /*num is an int, the calculation when done as an int and overflow.
- The (int32_t) converts it to the larger type, so the result of the calculation fits and doesn't overflow.*/
- #define NUM_LEDS 84 // NUMBER OF PIXELS IN THE USED STRIP was 50. changed to 84
- #define DATA_PIN 6
- byte maxBrightness = 100; // VALUES FROM 0 - 255 -> THE HIGHER, THE MORE AMPS NEEDED FOR THE LED STRIP
- CRGB leds[NUM_LEDS];
- #define workshoplights 2
- #define district2arcwelders 3
- #define district4arcwelders 4
- #define district3arcwelders 5
- #define district1buildingLights 7
- #define district2buildingLights 8
- #define district3buildingLights 9
- #define district4buildingLights 10
- #define perimeterLights 11
- #define district1securityLights 12
- #define district2securityLights 13
- #define district3securityLights A0
- #define district4securityLights A1
- #define fires1 A2
- #define fires2 A3
- /*The security lights are 12v incandesant lights. They are controlled through a mosfet board. Each section is on its own network of wires.*/
- int32_t ledTimer = 0;
- int32_t ledTimerUpdate = 0;
- //the colors and timing of the colors of the LEDs on the strip.
- DEFINE_GRADIENT_PALETTE (AM_gp) { // Midnight To Noon (amCycle)
- 0, 0, 0, 0, //black
- //5, 0, 0, 0, // Black
- //15, 0, 0, 0, //black
- 50, 0, 0, 0, //black
- 105, 97, 97, 79, //
- 127, 189, 143, 16, //
- 148, 239, 172, 0, //orange
- 169, 212, 202, 0, //dark yellow
- 200, 255, 253, 213, //bright yellow
- 232, 255, 255, 255, //white
- 255, 255, 255, 255, //white
- };
- DEFINE_GRADIENT_PALETTE (PM_gp) { // Noon to Midnight (pmCycle)
- 0, 255, 255, 255, //white
- 5, 255, 255, 255, //white
- 21, 255, 253, 213, //bright yellow
- 50, 212, 202, 0, //dark yellow
- 84, 239, 172, 0, //orange
- 105, 189, 143, 16, //
- 127, 97, 97, 79, //
- 148, 0, 0, 0, //black
- 255, 0, 0, 0, //black
- };
- void setup() {
- Serial.begin(9600);
- FastLED.addLeds<WS2812B, DATA_PIN, GRB>(leds, NUM_LEDS);
- pinMode(perimeterLights, OUTPUT);
- pinMode(district1buildingLights, OUTPUT);
- pinMode(district2buildingLights, OUTPUT);
- pinMode(district3buildingLights, OUTPUT);
- pinMode(district4buildingLights, OUTPUT);
- pinMode(district2arcwelders, OUTPUT);
- pinMode(district3arcwelders, OUTPUT);
- pinMode(district4arcwelders, OUTPUT);
- pinMode(district1securityLights, OUTPUT);
- pinMode(district2securityLights, OUTPUT);
- pinMode(district3securityLights, OUTPUT);
- pinMode(district4securityLights, OUTPUT);
- pinMode(workshoplights, OUTPUT);
- pinMode(fires1, OUTPUT);
- pinMode(fires2, OUTPUT);
- }
- uint8_t paletteIndex = 0;
- CRGBPalette16 currentPalette = AM_gp;
- uint8_t state = 0; // 0 for AM, 1 for PM
- //Routine
- //************************************************************************
- void loop() {
- EVERY_N_MILLISECONDS(interval) {
- paletteIndex++;
- if (paletteIndex == 240)/*Because a linear blend is being used, the index has to be set less than 255.
- If it is set at 255 there will be a discontinuity in the display of colors. Even, as in this case with 240
- selected, the linear blend take the index up to 255 and the full cycle displays on the LED strip.*/
- {
- paletteIndex = 0;
- state = 1 - state;
- currentPalette = state ? PM_gp : AM_gp;
- }
- CRGB color = ColorFromPalette(currentPalette, paletteIndex, maxBrightness, LINEARBLEND);
- fill_solid(leds, NUM_LEDS, color);
- FastLED.show();
- perimiterLightsCycle();
- district1securityLightsCycle();
- district2securityLightsCycle();
- district3securityLightsCycle();
- district4securityLightsCycle();
- district1buildingLightsCycle();
- district2buildingLightsCycle();
- district3buildingLightsCycle();
- district4buildingLightsCycle();
- district2arcweldersCycle();
- district3arcweldersCycle();
- district4arcweldersCycle();
- workshoplightsCycle();
- fires1Cycle();
- fires1Cyc2e();
- }
- }
- //Cycles
- //***********************************************
- // perimitersLightsCycle
- void perimiterLightsCycle() {
- int32_t localInterval = 2 * 240 * interval;
- int32_t localTimer = millis() % localInterval;
- if ((localTimer >= .3 * localInterval) && (localTimer <= .74 * localInterval)) {
- digitalWrite(perimeterLights, LOW);
- } else {
- digitalWrite(perimeterLights, HIGH);
- }
- }
- //***********************************************
- void district1securityLightsCycle() {
- int32_t localInterval = 2 * 240 * interval;
- int32_t localTimer = millis() % localInterval;
- if ((localTimer >= .25 * localInterval) && (localTimer <= .78 * localInterval)) {
- digitalWrite(district1securityLights, LOW);
- } else {
- digitalWrite(district1securityLights, HIGH);
- }
- }
- //***********************************************
- // district2securityLightsCycle
- void district2securityLightsCycle() {
- int32_t localInterval = 2 * 240 * interval;
- int32_t localTimer = millis() % localInterval;
- if ((localTimer >= .26 * localInterval) && (localTimer <= .80 * localInterval)) {
- digitalWrite(district2securityLights, LOW);
- } else {
- digitalWrite(district2securityLights, HIGH);
- }
- }
- //***********************************************
- // district3securityLightsCycle
- void district3securityLightsCycle() {
- int32_t localInterval = 2 * 240 * interval;
- int32_t localTimer = millis() % localInterval;
- if ((localTimer >= .28 * localInterval) && (localTimer <= .76 * localInterval)) {
- digitalWrite(district3securityLights, LOW);
- } else {
- digitalWrite(district3securityLights, HIGH);
- }
- }
- //***********************************************
- // district4securityLightsCycle
- void district4securityLightsCycle() {
- int32_t localInterval = 2 * 240 * interval;
- int32_t localTimer = millis() % localInterval;
- if ((localTimer >= .26 * localInterval) && (localTimer <= .75 * localInterval)) {
- digitalWrite(district4securityLights, LOW);
- } else {
- digitalWrite(district4securityLights, HIGH);
- }
- }
- //*************************************
- //district1buildingLightsCycle
- void district1buildingLightsCycle() {
- int32_t localInterval = 2 * 240 * interval;
- int32_t localTimer = millis() % localInterval;
- if ((localTimer >= .33 * localInterval) && (localTimer <= .66 * localInterval)) {
- digitalWrite(district1buildingLights, HIGH);
- } else {
- digitalWrite(district1buildingLights, LOW);
- }
- }
- //****************************************************
- // district1arcweldersCycle
- void district2arcweldersCycle() {
- int32_t localInterval = 2 * 240 * interval;
- int32_t localTimer = millis() % localInterval;
- if ((localTimer <= .33 * localInterval) || (localTimer >= .79 * localInterval)) {
- digitalWrite(district2arcwelders, HIGH);
- } else {
- digitalWrite(district2arcwelders, LOW);
- }
- }
- //****************************************************
- // district2buildingLightsCycle
- void district2buildingLightsCycle() {
- int32_t localInterval = 2 * 240 * interval;
- int32_t localTimer = millis() % localInterval;
- if ((localTimer >= .25 * localInterval) && (localTimer <= .79 * localInterval)) {
- digitalWrite(district2buildingLights, HIGH);
- } else {
- digitalWrite(district2buildingLights, LOW);
- }
- }
- //****************************************************
- // district3buildingLightsCycle
- void district3buildingLightsCycle() {
- int32_t localInterval = 2 * 240 * interval;
- int32_t localTimer = millis() % localInterval;
- if ((localTimer >= .27 * localInterval) && (localTimer <= .75 * localInterval)) {
- digitalWrite(district3buildingLights, HIGH);
- } else {
- digitalWrite(district3buildingLights, LOW);
- }
- }
- //********************************************************
- // district3arcweldersCycle
- void district3arcweldersCycle() {
- int32_t localInterval = 2 * 240 * interval;
- int32_t localTimer = millis() % localInterval;
- if ((localTimer <= .31 * localInterval) || (localTimer >= .73 * localInterval)) {
- digitalWrite(district3arcwelders, HIGH);
- } else {
- digitalWrite(district3arcwelders, LOW);
- }
- }
- //********************************************************
- // district4buildingLightsCycle
- void district4buildingLightsCycle() {
- int32_t localInterval = 2 * 240 * interval;
- int32_t localTimer = millis() % localInterval;
- if ((localTimer >= .25 * localInterval) && (localTimer <= .73 * localInterval)) {
- digitalWrite(district4buildingLights, HIGH);
- } else {
- digitalWrite(district4buildingLights, LOW);
- }
- }
- //********************************************************
- // district4arcweldersCycle
- void district4arcweldersCycle() {
- int32_t localInterval = 2 * 240 * interval;
- int32_t localTimer = millis() % localInterval;
- if ((localTimer <= .29 * localInterval) || (localTimer >= .70 * localInterval)) {
- digitalWrite(district4arcwelders, HIGH);
- } else {
- digitalWrite(district4arcwelders, LOW);
- }
- }
- //********************************************************
- //workshoplightsCycle
- void workshoplightsCycle() {
- int32_t localInterval = 2 * 240 * interval;
- int32_t localTimer = millis() % localInterval;
- if ((localTimer <= .31 * localInterval) || (localTimer >= .70 * localInterval)) {
- digitalWrite(workshoplights, HIGH);
- } else {
- digitalWrite(workshoplights, LOW);
- }
- }
- //*********************************************************
- //fires1Cycle
- void fires1Cycle() {
- int32_t localInterval = 2 * 240 * interval;
- int32_t localTimer = millis() % localInterval;
- if ((localTimer <= .35 * localInterval) || (localTimer >= .68 * localInterval)) {
- digitalWrite(fires1, HIGH);
- } else {
- digitalWrite(fires1, LOW);
- }
- }
- //*********************************************************
- //fires2Cycle
- void fires1Cyc2e() {
- int32_t localInterval = 2 * 240 * interval;
- int32_t localTimer = millis() % localInterval;
- if ((localTimer <= .35 * localInterval) || (localTimer >= .68 * localInterval)) {
- digitalWrite(fires2, HIGH);
- } else {
- digitalWrite(fires2, LOW);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment