Instructable
Video
//Hannah Rudin 11.28.2017
//Making Studio Final Project: Mountain Safety Jacket draft1
//PURPOSE: allow wearer to adjust through several light settings using single analog soft-button.
// Use tilt switch to read user's motion: if wearer is motionless for more than 10s,
// lights will begin blinking endlessly until circuit is reset. (This timer will last longer on the actual
// product, but is short for demo purposes.)
#include
#include
//Output Pins
#define PIXEL_PIN_L 6 //left arm
#define PIXEL_PIN_R 1 //right arm
#define PIXEL_PIN_H 9 //head
#define BOARD_PIXEL 8 //floraboard neopixel
#define BRIGHTNESS 80
//neopixel on FLORA board
Adafruit_NeoPixel floraboard = Adafruit_NeoPixel(1, BOARD_PIXEL, NEO_GRB + NEO_KHZ800);
// pixel strips
Adafruit_NeoPixel leftstrip = Adafruit_NeoPixel(4, PIXEL_PIN_L, NEO_GRB + NEO_KHZ800);
Adafruit_NeoPixel rightstrip = Adafruit_NeoPixel(4, PIXEL_PIN_R, NEO_GRB + NEO_KHZ800);
Adafruit_NeoPixel headstrip = Adafruit_NeoPixel(4, PIXEL_PIN_H, NEO_GRB + NEO_KHZ800);
Adafruit_NeoPixel strip[] = {floraboard,leftstrip,rightstrip,headstrip};
int numPix[] = {floraboard.numPixels(),leftstrip.numPixels(),rightstrip.numPixels(),headstrip.numPixels()};
#define NUMSTRIPS 4
//// timer 10s (~1000 counts of 10ms)
//#define TIMER_MAX_COUNT 1000
//int timercount = 0;
//tilt switch
#define SENSOR1 12 //for sensing movement (tilt switch)
//Bounce sensor1 = Bounce();
int LEDstate = HIGH; // the current state of the output pin
int reading; // the current reading from the input pin
int previous = LOW; // the previous reading from the input pin
long time = 0;
long timer_max = 360000; //time to blink trigger = 360s = 6 min
//// toggle settings
//#define BUTTON1 10 //for toggling settings
//Bounce button1 = Bounce();
//int buttonval;
int setting = 0;
void setup()
{
// Serial.begin(9600);
pinMode(SENSOR1, INPUT); //set tilt switch sensor as input
// pinMode(BUTTON1, INPUT_PULLUP); //set toggle button sensor as input
// button1.attach(BUTTON1);
// button1.interval(30); // interval in ms
// initialize strips to off
for(int n = 0; n < NUMSTRIPS; n++) { strip[n].setBrightness(BRIGHTNESS); strip[n].begin(); strip[n].show(); } } void loop() { //soft button toggleLights(setting); delay(3000); setting += 1; if(setting > 4)
{
setting = 0;
}
//movement sensor
int switchstate;
reading = digitalRead(SENSOR1);
// If the switch changed, due to bounce or pressing...
if (reading != previous) {
// reset the debouncing timer
time = millis();
}
if ((millis() - time) > timer_max) {
// whatever the switch is at, its been there for a long time
endlessBlink();
}
previous = reading;
}
void toggleLights(int setting)
{
switch(setting) {
case 0:
allOff();
break;
case 1:
allBrightWhite();
break;
case 2:
allHalfWhite();
break;
case 3:
allBrightRed();
break;
case 4:
exitBlink(4);
break;
// case 5:
// wristsBrightWhite();
// break;
default:
allOff();
}
showStrips();
}
void endlessBlink()
{
while(1)
{
allBrightRed();
showStrips();
delay(1000);
allOff();
showStrips();
delay(500);
}
}
void exitBlink(int setting)
{
int current = 0;
while(current < 5)
{
allOff();
showStrips();
delay(500);
allBrightRed();
showStrips();
delay(1000);
current += 1;
}
}
void allBrightWhite()
{
for(int n = 0; n < NUMSTRIPS; n++)
{
strip[n].setBrightness(BRIGHTNESS);
for(int p = 0; p < numPix[n]; p++)
{
strip[n].setPixelColor(p, strip[n].Color(255,255,255));
}
}
}
void allHalfWhite()
{
for(int n = 0; n < NUMSTRIPS; n++)
{
strip[n].setBrightness(BRIGHTNESS/2);
for(int p = 0; p < numPix[n]; p++)
{
strip[n].setPixelColor(p, strip[n].Color(255,255,255));
}
}
}
void allBrightRed()
{
for(int n = 0; n < NUMSTRIPS; n++)
{
strip[n].setBrightness(BRIGHTNESS);
for(int p = 0; p < numPix[n]; p++)
{
strip[n].setPixelColor(p, strip[n].Color(255,0,0));
}
}
}
void headBrightWhite()
{
leftstrip.setBrightness(BRIGHTNESS);
floraboard.setBrightness(BRIGHTNESS);
for(int p = 0; p < 4; p++)
{
leftstrip.setPixelColor(p, leftstrip.Color(255,255,255));
}
floraboard.setPixelColor(1,floraboard.Color(255,255,255));
}
void wristsBrightWhite()
{
leftstrip.setBrightness(BRIGHTNESS);
floraboard.setBrightness(BRIGHTNESS);
for(int p = 4; p < 12; p++)
{
leftstrip.setPixelColor(p, leftstrip.Color(255,255,255));
}
floraboard.setPixelColor(1,floraboard.Color(255,255,255));
}
void allOff()
{
for(int n = 0; n < NUMSTRIPS; n++)
{
strip[n].setBrightness(BRIGHTNESS);
for(int p = 0; p < numPix[n]; p++)
{
strip[n].setPixelColor(p, strip[n].Color(0,0,0));
}
}
}
void showStrips()
{
for(int n = 0; n < NUMSTRIPS; n++)
{
strip[n].show();
}
}
Author: Hannah Rudin
MFA Candidate in Products of Design at the School of Visual Arts in NYC. Currently pursuing a thesis project on merging design and team-building practices to counter social and political polarization in America.
View all posts by Hannah Rudin