diff --git a/src/Arduboy2.cpp b/src/Arduboy2.cpp index 84aee16..c59c5c1 100644 --- a/src/Arduboy2.cpp +++ b/src/Arduboy2.cpp @@ -49,32 +49,32 @@ void Arduboy2Base::begin() void Arduboy2Base::flashlight() { // sendLCDCommand(OLED_ALL_PIXELS_ON); // smaller than allPixelsOn() - setRGBled(255,255,255); + digitalWriteRGB(RGB_ON, RGB_ON, RGB_ON); while(!pressed(DOWN_BUTTON)) { idle(); } - setRGBled(0,0,0); + digitalWriteRGB(RGB_OFF, RGB_OFF, RGB_OFF); } void Arduboy2Base::systemButtons() { while (pressed(B_BUTTON)) { - digitalWrite(BLUE_LED, LOW); // turn on blue LED + digitalWrite(BLUE_LED, RGB_ON); // turn on blue LED sysCtrlSound(UP_BUTTON + B_BUTTON, GREEN_LED, 0xff); sysCtrlSound(DOWN_BUTTON + B_BUTTON, RED_LED, 0); delay(200); } - digitalWrite(BLUE_LED, HIGH); // turn off blue LED + digitalWrite(BLUE_LED, RGB_OFF); // turn off blue LED } void Arduboy2Base::sysCtrlSound(uint8_t buttons, uint8_t led, uint8_t eeVal) { if (pressed(buttons)) { - digitalWrite(BLUE_LED, HIGH); // turn off blue LED + digitalWrite(BLUE_LED, RGB_OFF); // turn off blue LED delay(200); - digitalWrite(led, LOW); // turn on "acknowledge" LED + digitalWrite(led, RGB_ON); // turn on "acknowledge" LED EEPROM.update(EEPROM_AUDIO_ON_OFF, eeVal); delay(500); - digitalWrite(led, HIGH); // turn off "acknowledge" LED + digitalWrite(led, RGB_OFF); // turn off "acknowledge" LED while (pressed(buttons)) {} // Wait for button release } @@ -82,12 +82,18 @@ void Arduboy2Base::sysCtrlSound(uint8_t buttons, uint8_t led, uint8_t eeVal) { void Arduboy2Base::bootLogo() { - // setRGBled(10,0,0); - for(int8_t y = -18; y<=24; y++) { - setRGBled(24-y, 0, 0); + digitalWrite(RED_LED, RGB_ON); + + for(int8_t y = -18; y <= 24; y++) { + if (y == -4) { + digitalWriteRGB(RGB_OFF, RGB_ON, RGB_OFF); // green LED on + } + else if (y == 24) { + digitalWriteRGB(RGB_OFF, RGB_OFF, RGB_ON); // blue LED on + } clear(); - drawBitmap(20,y, arduboy_logo, 88, 16, WHITE); + drawBitmap(20, y, arduboy_logo, 88, 16, WHITE); display(); delay(27); // longer delay post boot, we put it inside the loop to @@ -98,7 +104,7 @@ void Arduboy2Base::bootLogo() } delay(750); - setRGBled(0,0,0); + digitalWrite(BLUE_LED, RGB_OFF); } /* Frame management */ diff --git a/src/core/core.cpp b/src/core/core.cpp index 7380f0b..e2b5731 100644 --- a/src/core/core.cpp +++ b/src/core/core.cpp @@ -312,6 +312,17 @@ void ArduboyCore::setRGBled(uint8_t red, uint8_t green, uint8_t blue) // only blue on devkit digitalWrite(BLUE_LED, ~blue); #endif +} + + void ArduboyCore::digitalWriteRGB(uint8_t red, uint8_t green, uint8_t blue) +{ +#ifdef ARDUBOY_10 + digitalWrite(RED_LED, red); + digitalWrite(GREEN_LED, green); + digitalWrite(BLUE_LED, blue); +#elif defined(AB_DEVKIT) + digitalWrite(BLUE_LED, blue); +#endif } /* Buttons */ diff --git a/src/core/core.h b/src/core/core.h index a607187..3575f4b 100644 --- a/src/core/core.h +++ b/src/core/core.h @@ -32,6 +32,8 @@ #define SAFE_MODE //< include safe mode (44 bytes) #endif +#define RGB_ON LOW // for digitially setting an RGB LED on +#define RGB_OFF HIGH // for digitially setting an RGB LED off #ifdef ARDUBOY_10 @@ -254,9 +256,19 @@ public: /// send a single byte command to the OLED void static sendLCDCommand(uint8_t command); - /// set the light output of the RGB LEB + /// set the light output of the RGB LED + /** + * The brightness of each LED can be set to a value from + * 0 (fully off) to 255 (fully on). + */ void static setRGBled(uint8_t red, uint8_t green, uint8_t blue); + /// set the RGB LEDs digitally, to either fully on or fully off + /** + * Use value RGB_ON or RGB_OFF for each color of LED. + */ + void static digitalWriteRGB(uint8_t red, uint8_t green, uint8_t blue); + /// boots the hardware /** * - sets input/output/pullup mode for pins