add rotate display

This commit is contained in:
2026-02-21 10:33:48 -08:00
parent bd08ac4352
commit 624d453b9d
10 changed files with 42 additions and 8 deletions

View File

@ -231,6 +231,10 @@ void HandleEncoderPressed() {
app.encoder_reversed = app.selected_sub_param == 1;
gravity.encoder.SetReverseDirection(app.encoder_reversed);
}
if (app.selected_param == PARAM_MAIN_ROTATE_DISP) {
app.rotate_display = app.selected_sub_param == 1;
gravity.display.setFlipMode(app.rotate_display ? 1 : 0);
}
if (app.selected_param == PARAM_MAIN_SAVE_DATA) {
if (app.selected_sub_param < StateManager::MAX_SAVE_SLOTS) {
app.selected_save_slot = app.selected_sub_param;
@ -335,6 +339,9 @@ void editMainParameter(int val) {
case PARAM_MAIN_ENCODER_DIR:
updateSelection(app.selected_sub_param, val, 2);
break;
case PARAM_MAIN_ROTATE_DISP:
updateSelection(app.selected_sub_param, val, 2);
break;
case PARAM_MAIN_SAVE_DATA:
case PARAM_MAIN_LOAD_DATA:
updateSelection(app.selected_sub_param, val,
@ -399,6 +406,7 @@ void InitGravity(AppState &app) {
gravity.clock.SetTempo(app.tempo);
gravity.clock.SetSource(app.selected_source);
gravity.encoder.SetReverseDirection(app.encoder_reversed);
gravity.display.setFlipMode(app.rotate_display ? 1 : 0);
}
void ResetOutputs() {

View File

@ -31,6 +31,7 @@ struct AppState {
Clock::Pulse selected_pulse = Clock::PULSE_PPQN_24;
bool editing_param = false;
bool encoder_reversed = false;
bool rotate_display = false;
bool refresh_screen = true;
};

View File

@ -132,6 +132,7 @@ enum ParamsMainPage : uint8_t {
PARAM_MAIN_RESET,
PARAM_MAIN_PULSE,
PARAM_MAIN_ENCODER_DIR,
PARAM_MAIN_ROTATE_DISP,
PARAM_MAIN_SAVE_DATA,
PARAM_MAIN_LOAD_DATA,
PARAM_MAIN_RESET_STATE,
@ -347,6 +348,10 @@ void DisplayMainPage() {
mainText = F("DIR");
subText = app.selected_sub_param == 0 ? F("DEFAULT") : F("REVERSED");
break;
case PARAM_MAIN_ROTATE_DISP:
mainText = F("DISP");
subText = app.selected_sub_param == 0 ? F("DEFAULT") : F("ROTATED");
break;
case PARAM_MAIN_SAVE_DATA:
case PARAM_MAIN_LOAD_DATA:
if (app.selected_sub_param == StateManager::MAX_SAVE_SLOTS) {
@ -388,9 +393,9 @@ void DisplayMainPage() {
// Draw Main Page menu items
String menu_items[PARAM_MAIN_LAST] = {
F("TEMPO"), F("SOURCE"), F("CLK RUN"),
F("CLK RESET"), F("PULSE OUT"), F("ENCODER DIR"),
F("SAVE"), F("LOAD"), F("ERASE")};
F("TEMPO"), F("RUN"), F("RST"), F("SOURCE"),
F("PULSE OUT"), F("ENCODER DIR"), F("ROTATE DISP"), F("SAVE"),
F("LOAD"), F("RESET"), F("ERASE")};
drawMenuItems(menu_items, PARAM_MAIN_LAST);
}

View File

@ -18,7 +18,7 @@
// Define the constants for the current firmware.
const char StateManager::SKETCH_NAME[] = "ALT GRAVITY";
const char StateManager::SEMANTIC_VERSION[] =
"V2.0.0BETA4"; // NOTE: This should match the version in the
"V2.0.0BETA5"; // NOTE: This should match the version in the
// library.properties file.
// Number of available save slots.
@ -215,6 +215,7 @@ void StateManager::_saveMetadata(const AppState &app) {
// Global user settings
current_meta.selected_save_slot = app.selected_save_slot;
current_meta.encoder_reversed = app.encoder_reversed;
current_meta.rotate_display = app.rotate_display;
EEPROM.put(METADATA_START_ADDR, current_meta);
interrupts();
@ -226,5 +227,6 @@ void StateManager::_loadMetadata(AppState &app) {
EEPROM.get(METADATA_START_ADDR, metadata);
app.selected_save_slot = metadata.selected_save_slot;
app.encoder_reversed = metadata.encoder_reversed;
app.rotate_display = metadata.rotate_display;
interrupts();
}

View File

@ -57,6 +57,7 @@ public:
// Additional global/hardware settings
byte selected_save_slot;
bool encoder_reversed;
bool rotate_display;
};
struct ChannelState {
byte base_clock_mod_index;