Browse Source

more led handling

main
Hendrik Langer 7 years ago
parent
commit
4d31205033
  1. 2
      src/hardware.h
  2. 23
      src/led.cpp
  3. 5
      src/led.h
  4. 8
      src/screen.cpp

2
src/hardware.h

@ -10,7 +10,7 @@ static constexpr uint8_t rotaryPinA = 39;
static constexpr uint8_t rotaryPinB = 38; static constexpr uint8_t rotaryPinB = 38;
static constexpr uint8_t rotaryPinButton = 17; static constexpr uint8_t rotaryPinButton = 17;
static constexpr uint8_t PROGMEM LED_PIN = 21; static constexpr uint8_t PROGMEM LED_PIN = 21;
static constexpr uint8_t PROGMEM NUM_LEDS = 21; static constexpr uint8_t PROGMEM NUM_LEDS = 10;
#define LED_TYPE WS2812B #define LED_TYPE WS2812B
#define COLOR_ORDER GRB #define COLOR_ORDER GRB
static constexpr uint8_t ext_wakeup_pin_1 = 0; static constexpr uint8_t ext_wakeup_pin_1 = 0;

23
src/led.cpp

@ -22,29 +22,13 @@ void Led::loop_confetti(void)
fadeToBlackBy( leds, NUM_LEDS, 10); fadeToBlackBy( leds, NUM_LEDS, 10);
int pos = random16(NUM_LEDS); int pos = random16(NUM_LEDS);
leds[pos] += CHSV( index + random8(64), 200, 255); leds[pos] += CHSV( index + random8(64), 200, 255);
leds[0] = CRGB::White;
leds[1] = CRGB::White;
leds[NUM_LEDS-1] = CRGB::White;
leds[NUM_LEDS-2] = CRGB::White;
leds[NUM_LEDS-3] = CRGB::White;
} }
void Led::loop_dispense(void) { void Led::loop_sweep(void) {
// top: led 9 and 10
// a colored dot sweeping back and forth, with fading trails // a colored dot sweeping back and forth, with fading trails
fadeToBlackBy( leds, NUM_LEDS, 20); fadeToBlackBy( leds, NUM_LEDS, 20);
int pos = beatsin16( 13, 0, NUM_LEDS-1 ); int pos = beatsin16( 13, 0, NUM_LEDS-1 );
leds[pos] += CHSV( index, 255, 192); leds[pos] += CHSV( index, 255, 192);
leds[0] = CRGB::White;
leds[NUM_LEDS-1] = CRGB::White;
leds[NUM_LEDS-2] = CRGB::White;
}
void Led::loop_denied(void) {
fill_solid(leds, NUM_LEDS, CRGB::Red);
} }
void Led::loop_steady(void) { void Led::loop_steady(void) {
@ -55,16 +39,15 @@ void Led::changeAnimation(uint8_t num, uint16_t duration) {
if (duration == 0) this->duration = UINT16_MAX; if (duration == 0) this->duration = UINT16_MAX;
else this->duration = duration; else this->duration = duration;
if (num == 0) refresh = &Led::loop_steady; if (num == 0) refresh = &Led::loop_steady;
else if (num == 1) refresh = &Led::loop_dispense; else if (num == 1) refresh = &Led::loop_sweep;
else if (num == 2) refresh = &Led::loop_confetti; else if (num == 2) refresh = &Led::loop_confetti;
else if (num == 3) refresh = &Led::loop_rainbow; else if (num == 3) refresh = &Led::loop_rainbow;
else if (num == 4) refresh = &Led::loop_denied;
} }
void Led::changeColor(uint8_t r, uint8_t g, uint8_t b) { void Led::changeColor(uint8_t r, uint8_t g, uint8_t b) {
color = CRGB(r, g, b); color = CRGB(r, g, b);
} }
void Led::changeBrightness(uint8_t brightness) { void Led::setBrightness(uint8_t brightness) {
if (brightness > 254) { // don't set first byte to 255 on tm1829 if (brightness > 254) { // don't set first byte to 255 on tm1829
FastLED.setBrightness(254); FastLED.setBrightness(254);
} else { } else {

5
src/led.h

@ -14,7 +14,7 @@ class Led {
void setup(void); void setup(void);
void changeAnimation(uint8_t num, uint16_t duration); void changeAnimation(uint8_t num, uint16_t duration);
void changeColor(uint8_t, uint8_t, uint8_t); void changeColor(uint8_t, uint8_t, uint8_t);
void changeBrightness(uint8_t); void setBrightness(uint8_t);
private: private:
CRGB leds[NUM_LEDS]; CRGB leds[NUM_LEDS];
void animationTask(void*); void animationTask(void*);
@ -24,8 +24,7 @@ class Led {
void loop_steady(void); void loop_steady(void);
void loop_rainbow(void); void loop_rainbow(void);
void loop_confetti(void); void loop_confetti(void);
void loop_dispense(void); void loop_sweep(void);
void loop_denied(void);
uint16_t duration; uint16_t duration;
uint8_t index; uint8_t index;
CRGB color; CRGB color;

8
src/screen.cpp

@ -112,6 +112,7 @@ StationMenu::StationMenu() {
"Live Ireland", "Live Ireland",
"Ye Ol Celtic Pub", "Ye Ol Celtic Pub",
"Gone Country - NZCMR", "Gone Country - NZCMR",
"Radio Essen",
"xd0.de MPD", "xd0.de MPD",
"\xAB Return"}; "\xAB Return"};
} }
@ -149,9 +150,12 @@ uint8_t StationMenu::select() {
mp3.start("http://192.99.41.102:5044/stream"); mp3.start("http://192.99.41.102:5044/stream");
break; break;
case 10: case 10:
mp3.start("http://172.16.75.17:8000/mopidy"); mp3.start("http://radioessen.cast.addradio.de/radioessen/simulcast/high/stream.mp3");
break; break;
case 11: case 11:
mp3.start("http://172.16.75.17:8000/mopidy");
break;
case 12:
menuChange = eMainMenu; menuChange = eMainMenu;
return current_pos; return current_pos;
break; break;
@ -254,6 +258,7 @@ void MainScreen::next() {
if (volume < 100) volume++; if (volume < 100) volume++;
lastVolumeChange = millis(); lastVolumeChange = millis();
mp3.setVolume(volume); mp3.setVolume(volume);
led.setBrightness((255*volume)/100);
Serial.printf("volume: %d\n", volume); Serial.printf("volume: %d\n", volume);
} }
@ -261,5 +266,6 @@ void MainScreen::previous() {
if (volume > 0) volume--; if (volume > 0) volume--;
lastVolumeChange = millis(); lastVolumeChange = millis();
mp3.setVolume(volume); mp3.setVolume(volume);
led.setBrightness((255*volume)/100);
Serial.printf("volume: %d\n", volume); Serial.printf("volume: %d\n", volume);
} }

Loading…
Cancel
Save