Skip to content

Commit f87d5f9

Browse files
Merge pull request scott-linenberger#3 from jdherder/feature/fire
Fire Display Mode
2 parents e4dad32 + 20243dd commit f87d5f9

File tree

5 files changed

+62
-0
lines changed

5 files changed

+62
-0
lines changed

Fire.cpp

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
#include "Fire.h"
2+
#include <math.h>
3+
4+
Fire::Fire() {}
5+
6+
void Fire::start(Adafruit_NeoPixel * neoPixels) {
7+
/* check if timeout has expired */
8+
if (millis() - timestamp < timeout) {
9+
/* timeout hasn't expired, return */
10+
return;
11+
}
12+
13+
setColors(neoPixels);
14+
15+
/* update the timestamp */
16+
timestamp = millis();
17+
}
18+
19+
void Fire::setColors(Adafruit_NeoPixel * neoPixels) {
20+
int min = 0;
21+
int max = 150;
22+
23+
for (uint8_t i = 0; i < neoPixels->numPixels(); i++) {
24+
int randomYellowValue = min + (rand() % static_cast<int>(max - min + 1));
25+
neoPixels->setPixelColor(i, neoPixels->Color(255, randomYellowValue, 0));
26+
}
27+
28+
neoPixels->show();
29+
}

Fire.h

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
#ifndef FIRE_H
2+
#define FIRE_H
3+
4+
#include <Arduino.h>
5+
#include <Adafruit_NeoPixel.h>
6+
7+
class Fire {
8+
/* emergency vars */
9+
unsigned long timestamp = 0;
10+
11+
/* time in ms between light swaps */
12+
uint16_t timeout = 100;
13+
14+
public:
15+
Fire();
16+
void start(Adafruit_NeoPixel * neoPixels);
17+
18+
private:
19+
void setColors(Adafruit_NeoPixel * neoPixels);
20+
};
21+
22+
#endif

StatusIndicator.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,10 @@ void StatusIndicator::run() {
5555
fader.fade(neoPixels, true, false, false);
5656
break;
5757

58+
case STATE_FIRE:
59+
fire.start(neoPixels);
60+
break;
61+
5862
case STATE_EMERGENCY:
5963
emergency.start(neoPixels);
6064
break;

StatusIndicator.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
#include <EEPROM.h>
66
#include "PixelFader.h"
77
#include "PixelParty.h"
8+
#include "Fire.h";
89
#include "Emergency.h"
910
#include "ColorCycle.h"
1011

@@ -16,6 +17,7 @@
1617
#define STATE_RED 5
1718
#define STATE_GREEN_PULSING 6
1819
#define STATE_RED_PULSING 7
20+
#define STATE_FIRE 96
1921
#define STATE_EMERGENCY 97
2022
#define STATE_COLORCYCLE 98
2123
#define STATE_PARTY_TIME 99
@@ -24,6 +26,7 @@ class StatusIndicator {
2426
Adafruit_NeoPixel *neoPixels;
2527
PixelFader fader = PixelFader();
2628
PixelParty pixelParty = PixelParty();
29+
Fire fire = Fire();
2730
Emergency emergency = Emergency();
2831
ColorCycle colorCycle = ColorCycle();
2932

examples/basicUsage/basicUsage.ino

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,10 @@ void handleMessage(AdafruitIO_Data *data) {
118118
responseMsg = responseMsg + "Do not Disturb";
119119
break;
120120

121+
case STATE_FIRE:
122+
responseMsg = responseMsg + "Fire!";
123+
break;
124+
121125
case STATE_EMERGENCY:
122126
responseMsg = responseMsg + "Emergency";
123127
break;

0 commit comments

Comments
 (0)