Skip to content
Snippets Groups Projects
Commit 47d97ba5 authored by Jan Grewe's avatar Jan Grewe
Browse files

initial commit


Signed-off-by: default avatarJan Grewe <jan@faked.org>
parent e1ebb2ba
Branches
No related tags found
No related merge requests found
#include <math.h>
#include <Wire.h>
#include <hexbright.h>
// Modes
#define MODE_OFF_PREVIEW 0
#define MODE_OFF 1
#define MODE_STATIC_PREVIEW 2
#define MODE_STATIC 3
#define MODE_DYNAMIC_PREVIEW 4
#define MODE_FADE 5
#define MODE_BLINKING 6
#define MODE_STROBE 7
#define MODE_DAZZLE 8
#define BRIGHTNESS_COUNT 5
int brightness[BRIGHTNESS_COUNT] = {10, 250, 500, 750, 1000};
int current_brightness = 0;
int increase_brightness = 1;
// State
byte mode;
hexbright hb;
void setup()
{
/// Set DEBUG to a non-zero value in hexbright.h to enable printing
hb.init_hardware();
mode = MODE_OFF;
}
void loop()
{
hb.update();
hb.print_charge(GLED);
//if(mode == MODE_DYNAMIC_PREVIEW || mode == MODE_BLINKING) {
if(mode == MODE_BLINKING) {
static int i = 0;
i = (i+1)%40;
if(i==0) {
hb.set_light(MAX_LEVEL, 0, 50);
}
}
boolean button_just_released = hb.button_just_released();
boolean button_pressed = hb.button_pressed();
int button_pressed_time = hb.button_pressed_time();
byte newMode = mode;
switch (mode) {
case MODE_OFF_PREVIEW:
if(button_just_released) {
newMode = MODE_OFF;
}
break;
case MODE_OFF:
if (button_pressed && button_pressed_time > 500) {
newMode = MODE_DYNAMIC_PREVIEW;
} else if (button_pressed) {
newMode = MODE_STATIC_PREVIEW;
}
break;
case MODE_STATIC_PREVIEW:
if (button_pressed && button_pressed_time > 2000) {
newMode = MODE_OFF_PREVIEW;
} else if(button_just_released) {
newMode = MODE_STATIC;
}
break;
case MODE_STATIC:
if (button_pressed && button_pressed_time > 2000) {
newMode = MODE_OFF_PREVIEW;
} else if (button_pressed && button_pressed_time > 500) {
newMode = MODE_DYNAMIC_PREVIEW;
} else if (button_just_released) {
cycleBrightness();
}
break;
case MODE_DYNAMIC_PREVIEW:
if (button_pressed && button_pressed_time > 2000) {
newMode = MODE_OFF_PREVIEW;
} else if(button_just_released) {
//newMode = MODE_FADE;
newMode = MODE_BLINKING;
//newMode = MODE_STROBE;
//newMode = MODE_DAZZLE;
}
break;
case MODE_BLINKING:
if (button_pressed && button_pressed_time > 2000) {
newMode = MODE_OFF_PREVIEW;
} else if (button_pressed && button_pressed_time > 500) {
newMode = MODE_STATIC_PREVIEW;
} else if(button_just_released) {
newMode = MODE_BLINKING;
}
break;
}
// Do the mode transitions
if (newMode != mode) {
switch (newMode) {
case MODE_OFF_PREVIEW:
Serial.println("Mode = off_preview");
hb.set_light(0, OFF_LEVEL, NOW);
break;
case MODE_OFF:
Serial.println("Mode = off");
current_brightness = 0;
hb.set_light(0, OFF_LEVEL, NOW);
break;
case MODE_STATIC_PREVIEW:
Serial.println("Mode = static_preview");
hb.set_light(CURRENT_LEVEL, brightness[current_brightness], NOW);
break;
case MODE_STATIC:
Serial.println("Mode = static");
increase_brightness = 1;
hb.set_light(CURRENT_LEVEL, brightness[current_brightness], NOW);
break;
case MODE_DYNAMIC_PREVIEW:
Serial.println("Mode = dynamic_preview");
break;
case MODE_BLINKING:
Serial.println("Mode = blinking");
break;
}
mode = newMode;
}
}
void cycleBrightness() {
Serial.println("Cycle Brightness!");
if(current_brightness == BRIGHTNESS_COUNT-1 && increase_brightness == 1) {
increase_brightness = 0;
} else if(current_brightness == 0 && increase_brightness == 0) {
increase_brightness = 1;
}
if(increase_brightness == 1) {
current_brightness = (current_brightness+1)%BRIGHTNESS_COUNT;
} else {
current_brightness = (current_brightness-1)%BRIGHTNESS_COUNT;
}
hb.set_light(CURRENT_LEVEL, brightness[current_brightness], NOW);
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment