Small fixes.

Added lowest and highes note menu for one instance + fx.
pull/32/head
Holger Wirtz 5 years ago
parent ad8250296c
commit e05ebd39bd
  1. 2
      MicroDexed.ino
  2. 159
      UI.hpp
  3. 7
      UI_1.h
  4. 139
      UI_1_FX.h
  5. 43
      dexed.cpp

@ -1451,7 +1451,7 @@ void check_configuration(void)
void init_configuration(void)
{
#ifdef DEBUG
Serial.print(F("Initializing configuration"));
Serial.println(F("INITIALIZING CONFIGURATION"));
#endif
configuration.checksum = 0xffff;

159
UI.hpp

@ -58,6 +58,7 @@ extern void eeprom_write(void);
extern bool get_voice_names_from_bank(uint8_t b, uint8_t instance_id);
extern bool load_sysex(uint8_t b, uint8_t v);
extern void generate_version_string(char* buffer, uint8_t len);
extern void initial_values_from_eeprom(bool init);
#ifdef DISPLAY_LCD_SPI
extern void change_disp_sd(bool d);
@ -177,6 +178,8 @@ void UI_func_filter_resonance(uint8_t param);
void UI_func_transpose(uint8_t param);
void UI_func_tune(uint8_t param);
void UI_func_midi_channel(uint8_t param);
void UI_func_lowest_note(uint8_t param);
void UI_func_highest_note(uint8_t param);
void UI_func_sound_intensity(uint8_t param);
void UI_func_panorama(uint8_t param);
void UI_func_stereo_mono(uint8_t param);
@ -215,6 +218,7 @@ void UI_func_load(uint8_t param);
void UI_func_save(uint8_t param);
void UI_func_midi_soft_thru(uint8_t param);
void UI_func_velocity_level(uint8_t param);
void UI_func_firmware_reset(uint8_t param);
void UI_function_not_enabled(void);
void UI_function_not_implemented(uint8_t param);
void lcd_display_int(int16_t var, uint8_t size, bool zeros, bool brackets, bool sign);
@ -1516,7 +1520,6 @@ void UI_func_midi_channel(uint8_t param)
}
}
if (LCDML.FUNC_close()) // ****** STABLE END *********
{
// you can here reset some global vars or do nothing
@ -1524,6 +1527,105 @@ void UI_func_midi_channel(uint8_t param)
}
}
void getNoteName(char* noteName, uint8_t noteNumber)
{
char notes [12][3] = {"A", "A#", "B", "C", "C#", "D", "D#", "E", "F", "F#", "G", "G#"};
uint8_t oct_index = noteNumber - 12;
noteNumber -= 21;
sprintf(noteName, "%2s%1d", notes[noteNumber % 12], oct_index / 12);
}
void UI_func_lowest_note(uint8_t param)
{
uint8_t instance_id = 0;
char note_name[4];
if (LCDML.FUNC_getID() > MENU_ID_OF_INSTANCE_2)
instance_id = 1;
if (LCDML.FUNC_setup()) // ****** SETUP *********
{
// setup function
getNoteName(note_name, configuration.dexed[instance_id].lowest_note);
lcd.setCursor(0, 0);
lcd.print(F("Lowest Note"));
lcd.setCursor(0, 1);
lcd.print(F("["));
lcd.print(note_name);
lcd.print(F("]"));
}
if (LCDML.FUNC_loop()) // ****** LOOP *********
{
if (LCDML.BT_checkEnter())
{
LCDML.FUNC_goBackToMenu();
}
else if (LCDML.BT_checkDown() || LCDML.BT_checkUp())
{
if (LCDML.BT_checkDown())
configuration.dexed[instance_id].lowest_note = constrain(configuration.dexed[instance_id].lowest_note + ENCODER[ENC_R].speed(), INSTANCE_LOWEST_NOTE_MIN, INSTANCE_LOWEST_NOTE_MAX);
else if (LCDML.BT_checkUp())
configuration.dexed[instance_id].lowest_note = constrain(configuration.dexed[instance_id].lowest_note - ENCODER[ENC_R].speed(), INSTANCE_LOWEST_NOTE_MIN, INSTANCE_LOWEST_NOTE_MAX);
getNoteName(note_name, configuration.dexed[instance_id].lowest_note);
lcd.setCursor(1, 1);
lcd.print(note_name);
}
}
if (LCDML.FUNC_close()) // ****** STABLE END *********
{
eeprom_write();
}
}
void UI_func_highest_note(uint8_t param)
{
uint8_t instance_id = 0;
char note_name[4];
if (LCDML.FUNC_getID() > MENU_ID_OF_INSTANCE_2)
instance_id = 1;
if (LCDML.FUNC_setup()) // ****** SETUP *********
{
// setup function
getNoteName(note_name, configuration.dexed[instance_id].highest_note);
lcd.setCursor(0, 0);
lcd.print(F("Highest Note"));
lcd.setCursor(0, 1);
lcd.print(F("["));
lcd.print(note_name);
lcd.print(F("]"));
}
if (LCDML.FUNC_loop()) // ****** LOOP *********
{
if (LCDML.BT_checkEnter())
{
LCDML.FUNC_goBackToMenu();
}
else if (LCDML.BT_checkDown() || LCDML.BT_checkUp())
{
if (LCDML.BT_checkDown())
configuration.dexed[instance_id].highest_note = constrain(configuration.dexed[instance_id].highest_note + ENCODER[ENC_R].speed(), INSTANCE_HIGHEST_NOTE_MIN, INSTANCE_HIGHEST_NOTE_MAX);
else if (LCDML.BT_checkUp())
configuration.dexed[instance_id].highest_note = constrain(configuration.dexed[instance_id].highest_note - ENCODER[ENC_R].speed(), INSTANCE_HIGHEST_NOTE_MIN, INSTANCE_HIGHEST_NOTE_MAX);
getNoteName(note_name, configuration.dexed[instance_id].highest_note);
lcd.setCursor(1, 1);
lcd.print(note_name);
}
}
if (LCDML.FUNC_close()) // ****** STABLE END *********
{
eeprom_write();
}
}
void UI_func_sound_intensity(uint8_t param)
{
uint8_t instance_id = 0;
@ -2972,6 +3074,61 @@ void UI_func_velocity_level(uint8_t param)
}
}
void UI_func_firmware_reset(uint8_t param)
{
static bool yesno = false;
if (LCDML.FUNC_setup()) // ****** SETUP *********
{
// setup function
LCDML.DISP_clear();
lcd.print("Firmware reset?");
lcd.setCursor(0, 1);
lcd.print("[NO ]");
}
if (LCDML.FUNC_loop()) // ****** LOOP *********
{
if (LCDML.BT_checkEnter())
{
LCDML.FUNC_goBackToMenu();
}
else if (LCDML.BT_checkDown() || LCDML.BT_checkUp())
{
if (LCDML.BT_checkDown())
yesno = true;
else if (LCDML.BT_checkUp())
yesno = false;
if (yesno == true)
{
lcd.setCursor(1, 1);
lcd.print("YES");
}
else
{
lcd.setCursor(1, 1);
lcd.print("NO ");
}
}
}
if (LCDML.FUNC_close()) // ****** STABLE END *********
{
if (yesno == true)
{
LCDML.DISP_clear();
lcd.print("Firmware reset:");
initial_values_from_eeprom(yesno);
lcd.setCursor(0, 1);
lcd.print("Done.");
delay(500);
}
}
}
void UI_func_voice_selection(uint8_t param)
{
#ifdef DEBUG

@ -69,13 +69,12 @@ LCDML_add(40, LCDML_0_1_17, 6, "OP6", UI_func_OP6);
LCDML_add(41, LCDML_0, 2, "Load/Save", NULL);
LCDML_add(42, LCDML_0_2, 1, "Load", UI_func_load);
LCDML_add(43, LCDML_0_2, 2, "Save", UI_func_save);
LCDML_add(43, LCDML_0_2, 2, "SD Format", UI_func_format);
LCDML_add(44, LCDML_0, 3, "System", NULL);
LCDML_add(45, LCDML_0_3, 1, "Stereo/Mono", UI_func_stereo_mono);
LCDML_add(46, LCDML_0_3, 2, "MIDI Soft THRU", UI_func_midi_soft_thru);
LCDML_add(43, LCDML_0_2, 2, "Reset", UI_func_firmware_reset);
LCDML_add(47, LCDML_0, 4, "Info", UI_func_information);
#define _LCDML_DISP_cnt 47
LCDML_add(47, LCDML_0_3, 3, "Firmware Reset", UI_func_firmware_reset);
LCDML_add(48, LCDML_0, 4, "Info", UI_func_information);
#define _LCDML_DISP_cnt 49
#define MENU_ID_OF_INSTANCE_2 41
#endif

@ -27,72 +27,75 @@
LCDML_add(0, LCDML_0, 1, "Setup", NULL);
LCDML_add(1, LCDML_0_1, 1, "MIDI Channel", UI_func_midi_channel);
LCDML_add(2, LCDML_0_1, 2, "Volume", UI_func_sound_intensity);
LCDML_add(3, LCDML_0_1, 3, "Transpose", UI_func_transpose);
LCDML_add(4, LCDML_0_1, 4, "Tune", UI_func_tune);
LCDML_add(5, LCDML_0_1, 5, "Reverb Send", UI_func_reverb_send);
LCDML_add(6, LCDML_0_1, 6, "Chorus Send", UI_func_chorus_send);
LCDML_add(7, LCDML_0_1, 7, "Delay Send", UI_func_delay_send);
LCDML_add(8, LCDML_0_1, 8, "Filter", NULL);
LCDML_add(9, LCDML_0_1_8, 1, "Cutoff", UI_func_filter_cutoff);
LCDML_add(10, LCDML_0_1_8, 2, "Resonance", UI_func_filter_resonance);
LCDML_add(11, LCDML_0_1, 9, "Panorama", UI_func_panorama);
LCDML_add(12, LCDML_0_1, 10, "Polyphony", UI_func_polyphony);
LCDML_add(13, LCDML_0_1, 11, "Velocity Lvl", UI_func_velocity_level);
LCDML_add(14, LCDML_0_1, 12, "Engine", UI_func_engine);
LCDML_add(15, LCDML_0_1, 13, "Mono/Poly", UI_func_mono_poly);
LCDML_add(16, LCDML_0_1, 14, "Note Refresh", UI_func_note_refresh);
LCDML_add(17, LCDML_0_1, 15, "Pitchbend", NULL);
LCDML_add(18, LCDML_0_1_15, 1, "PB Range", UI_func_pb_range);
LCDML_add(19, LCDML_0_1_15, 2, "PB Step", UI_func_pb_step);
LCDML_add(20, LCDML_0_1, 16, "Mod Wheel", NULL);
LCDML_add(21, LCDML_0_1_16, 1, "MW Range", UI_func_mw_range);
LCDML_add(22, LCDML_0_1_16, 2, "MW Assign", UI_func_mw_assign);
LCDML_add(23, LCDML_0_1_16, 3, "MW Mode", UI_func_mw_mode);
LCDML_add(24, LCDML_0_1, 17, "Foot Ctrl", NULL);
LCDML_add(25, LCDML_0_1_17, 1, "FC Range", UI_func_fc_range);
LCDML_add(26, LCDML_0_1_17, 2, "FC Assign", UI_func_fc_assign);
LCDML_add(27, LCDML_0_1_17, 3, "FC Mode", UI_func_fc_mode);
LCDML_add(28, LCDML_0_1, 18, "Breath Ctrl", NULL);
LCDML_add(29, LCDML_0_1_18, 1, "BC Range", UI_func_bc_range);
LCDML_add(30, LCDML_0_1_18, 2, "BC Assign", UI_func_bc_assign);
LCDML_add(31, LCDML_0_1_18, 3, "BC Mode", UI_func_bc_mode);
LCDML_add(32, LCDML_0_1, 19, "Aftertouch", NULL);
LCDML_add(33, LCDML_0_1_19, 1, "AT Range", UI_func_at_range);
LCDML_add(34, LCDML_0_1_19, 2, "AT Assign", UI_func_at_assign);
LCDML_add(35, LCDML_0_1_19, 3, "AT Mode", UI_func_at_mode);
LCDML_add(36, LCDML_0_1, 20, "Portamento", NULL);
LCDML_add(37, LCDML_0_1_20, 1, "Port. Mode", UI_func_portamento_mode);
LCDML_add(38, LCDML_0_1_20, 2, "Port. Gliss", UI_func_portamento_glissando);
LCDML_add(39, LCDML_0_1_20, 3, "Port. Time", UI_func_portamento_time);
LCDML_add(40, LCDML_0_1, 21, "Operator", NULL);
LCDML_add(41, LCDML_0_1_21, 1, "OP1", UI_func_OP1);
LCDML_add(42, LCDML_0_1_21, 2, "OP2", UI_func_OP2);
LCDML_add(43, LCDML_0_1_21, 3, "OP3", UI_func_OP3);
LCDML_add(44, LCDML_0_1_21, 4, "OP4", UI_func_OP4);
LCDML_add(45, LCDML_0_1_21, 5, "OP5", UI_func_OP5);
LCDML_add(46, LCDML_0_1_21, 6, "OP6", UI_func_OP6);
LCDML_add(47, LCDML_0, 2, "Effect", NULL);
LCDML_add(48, LCDML_0_2, 1, "Reverb", NULL);
LCDML_add(49, LCDML_0_2_1, 1, "Roomsize", UI_func_reverb_roomsize);
LCDML_add(50, LCDML_0_2_1, 2, "Damping", UI_func_reverb_damping);
LCDML_add(51, LCDML_0_2_1, 3, "Level", UI_func_reverb_level);
LCDML_add(52, LCDML_0_2, 2, "Chorus", NULL);
LCDML_add(53, LCDML_0_2_2, 1, "Frequency", UI_func_chorus_frequency);
LCDML_add(54, LCDML_0_2_2, 2, "Waveform", UI_func_chorus_waveform);
LCDML_add(55, LCDML_0_2_2, 3, "Depth", UI_func_chorus_depth);
LCDML_add(56, LCDML_0_2_2, 4, "Level", UI_func_chorus_level);
LCDML_add(57, LCDML_0_2, 3, "Delay", NULL);
LCDML_add(58, LCDML_0_2_3, 1, "Time", UI_func_delay_time);
LCDML_add(59, LCDML_0_2_3, 2, "Feedback", UI_func_delay_feedback);
LCDML_add(60, LCDML_0_2_3, 3, "Level", UI_func_delay_level);
LCDML_add(61, LCDML_0, 3, "Load/Save", NULL);
LCDML_add(62, LCDML_0_3, 1, "Load", UI_func_load);
LCDML_add(63, LCDML_0_3, 2, "Save", UI_func_save);
LCDML_add(64, LCDML_0, 4, "System", NULL);
LCDML_add(65, LCDML_0_4, 1, "Stereo/Mono", UI_func_stereo_mono);
LCDML_add(66, LCDML_0_4, 2, "MIDI Soft THRU", UI_func_midi_soft_thru);
LCDML_add(67, LCDML_0, 5, "Info", UI_func_information);
#define _LCDML_DISP_cnt 67
#define MENU_ID_OF_INSTANCE_2 47
LCDML_add(2, LCDML_0_1, 2, "Lowest Note", UI_func_lowest_note);
LCDML_add(3, LCDML_0_1, 3, "Highest Note", UI_func_highest_note);
LCDML_add(4, LCDML_0_1, 4, "Volume", UI_func_sound_intensity);
LCDML_add(5, LCDML_0_1, 5, "Transpose", UI_func_transpose);
LCDML_add(6, LCDML_0_1, 6, "Tune", UI_func_tune);
LCDML_add(7, LCDML_0_1, 7, "Reverb Send", UI_func_reverb_send);
LCDML_add(8, LCDML_0_1, 8, "Chorus Send", UI_func_chorus_send);
LCDML_add(9, LCDML_0_1, 9, "Delay Send", UI_func_delay_send);
LCDML_add(10, LCDML_0_1, 10, "Filter", NULL);
LCDML_add(11, LCDML_0_1_10, 1, "Cutoff", UI_func_filter_cutoff);
LCDML_add(12, LCDML_0_1_10, 2, "Resonance", UI_func_filter_resonance);
LCDML_add(13, LCDML_0_1, 11, "Panorama", UI_func_panorama);
LCDML_add(14, LCDML_0_1, 12, "Polyphony", UI_func_polyphony);
LCDML_add(15, LCDML_0_1, 13, "Velocity Lvl", UI_func_velocity_level);
LCDML_add(16, LCDML_0_1, 14, "Engine", UI_func_engine);
LCDML_add(17, LCDML_0_1, 15, "Mono/Poly", UI_func_mono_poly);
LCDML_add(18, LCDML_0_1, 16, "Note Refresh", UI_func_note_refresh);
LCDML_add(19, LCDML_0_1, 17, "Pitchbend", NULL);
LCDML_add(20, LCDML_0_1_17, 1, "PB Range", UI_func_pb_range);
LCDML_add(21, LCDML_0_1_17, 2, "PB Step", UI_func_pb_step);
LCDML_add(22, LCDML_0_1, 18, "Mod Wheel", NULL);
LCDML_add(23, LCDML_0_1_18, 1, "MW Range", UI_func_mw_range);
LCDML_add(24, LCDML_0_1_18, 2, "MW Assign", UI_func_mw_assign);
LCDML_add(25, LCDML_0_1_18, 3, "MW Mode", UI_func_mw_mode);
LCDML_add(26, LCDML_0_1, 19, "Foot Ctrl", NULL);
LCDML_add(27, LCDML_0_1_19, 1, "FC Range", UI_func_fc_range);
LCDML_add(28, LCDML_0_1_19, 2, "FC Assign", UI_func_fc_assign);
LCDML_add(29, LCDML_0_1_19, 3, "FC Mode", UI_func_fc_mode);
LCDML_add(30, LCDML_0_1, 20, "Breath Ctrl", NULL);
LCDML_add(31, LCDML_0_1_20, 1, "BC Range", UI_func_bc_range);
LCDML_add(32, LCDML_0_1_20, 2, "BC Assign", UI_func_bc_assign);
LCDML_add(33, LCDML_0_1_20, 3, "BC Mode", UI_func_bc_mode);
LCDML_add(34, LCDML_0_1, 21, "Aftertouch", NULL);
LCDML_add(35, LCDML_0_1_21, 1, "AT Range", UI_func_at_range);
LCDML_add(36, LCDML_0_1_21, 2, "AT Assign", UI_func_at_assign);
LCDML_add(37, LCDML_0_1_21, 3, "AT Mode", UI_func_at_mode);
LCDML_add(38, LCDML_0_1, 22, "Portamento", NULL);
LCDML_add(39, LCDML_0_1_22, 1, "Port. Mode", UI_func_portamento_mode);
LCDML_add(40, LCDML_0_1_22, 2, "Port. Gliss", UI_func_portamento_glissando);
LCDML_add(41, LCDML_0_1_22, 3, "Port. Time", UI_func_portamento_time);
LCDML_add(42, LCDML_0_1, 23, "Operator", NULL);
LCDML_add(43, LCDML_0_1_23, 1, "OP1", UI_func_OP1);
LCDML_add(44, LCDML_0_1_23, 2, "OP2", UI_func_OP2);
LCDML_add(45, LCDML_0_1_23, 3, "OP3", UI_func_OP3);
LCDML_add(46, LCDML_0_1_23, 4, "OP4", UI_func_OP4);
LCDML_add(47, LCDML_0_1_23, 5, "OP5", UI_func_OP5);
LCDML_add(48, LCDML_0_1_23, 6, "OP6", UI_func_OP6);
LCDML_add(49, LCDML_0, 2, "Effect", NULL);
LCDML_add(50, LCDML_0_2, 1, "Reverb", NULL);
LCDML_add(51, LCDML_0_2_1, 1, "Roomsize", UI_func_reverb_roomsize);
LCDML_add(52, LCDML_0_2_1, 2, "Damping", UI_func_reverb_damping);
LCDML_add(53, LCDML_0_2_1, 3, "Level", UI_func_reverb_level);
LCDML_add(54, LCDML_0_2, 2, "Chorus", NULL);
LCDML_add(55, LCDML_0_2_2, 1, "Frequency", UI_func_chorus_frequency);
LCDML_add(56, LCDML_0_2_2, 2, "Waveform", UI_func_chorus_waveform);
LCDML_add(57, LCDML_0_2_2, 3, "Depth", UI_func_chorus_depth);
LCDML_add(58, LCDML_0_2_2, 4, "Level", UI_func_chorus_level);
LCDML_add(59, LCDML_0_2, 3, "Delay", NULL);
LCDML_add(60, LCDML_0_2_3, 1, "Time", UI_func_delay_time);
LCDML_add(61, LCDML_0_2_3, 2, "Feedback", UI_func_delay_feedback);
LCDML_add(62, LCDML_0_2_3, 3, "Level", UI_func_delay_level);
LCDML_add(63, LCDML_0, 3, "Load/Save", NULL);
LCDML_add(64, LCDML_0_3, 1, "Load", UI_func_load);
LCDML_add(65, LCDML_0_3, 2, "Save", UI_func_save);
LCDML_add(66, LCDML_0, 4, "System", NULL);
LCDML_add(67, LCDML_0_4, 1, "Stereo/Mono", UI_func_stereo_mono);
LCDML_add(68, LCDML_0_4, 2, "MIDI Soft THRU", UI_func_midi_soft_thru);
LCDML_add(69, LCDML_0_4, 3, "Firmware Reset", UI_func_firmware_reset);
LCDML_add(70, LCDML_0, 5, "Info", UI_func_information);
#define _LCDML_DISP_cnt 70
#define MENU_ID_OF_INSTANCE_2 49
#endif

@ -642,13 +642,6 @@ void Dexed::setPBController(uint8_t pb_range, uint8_t pb_step)
pb_range = constrain(pb_range, PB_RANGE_MIN, PB_RANGE_MAX);
pb_step = constrain(pb_step, PB_STEP_MIN, PB_STEP_MAX);
#ifdef DEBUG
Serial.print(F("pb_range="));
Serial.println(pb_range, DEC);
Serial.print(F("pb_step="));
Serial.println(pb_step, DEC);
#endif
controllers.values_[kControllerPitchRange] = pb_range;
controllers.values_[kControllerPitchStep] = pb_step;
@ -665,15 +658,6 @@ void Dexed::setMWController(uint8_t mw_range, uint8_t mw_assign, uint8_t mw_mode
mw_assign = constrain(mw_assign, MW_ASSIGN_MIN, MW_ASSIGN_MAX);
mw_mode = constrain(mw_mode, MW_MODE_MIN, MW_MODE_MAX);
#ifdef DEBUG
Serial.print(F("mw_range="));
Serial.println(mw_range, DEC);
Serial.print(F("mw_assign="));
Serial.println(mw_assign, DEC);
Serial.print(F("mw_mode="));
Serial.println(mw_mode, DEC);
#endif
controllers.wheel.setRange(mw_range);
controllers.wheel.setTarget(mw_assign);
controllers.wheel.setMode(mw_mode);
@ -691,15 +675,6 @@ void Dexed::setFCController(uint8_t fc_range, uint8_t fc_assign, uint8_t fc_mode
fc_assign = constrain(fc_assign, FC_ASSIGN_MIN, FC_ASSIGN_MAX);
fc_mode = constrain(fc_mode, FC_MODE_MIN, FC_MODE_MAX);
#ifdef DEBUG
Serial.print(F("fc_range="));
Serial.println(fc_range, DEC);
Serial.print(F("fc_assign="));
Serial.println(fc_assign, DEC);
Serial.print(F("fc_mode="));
Serial.println(fc_mode, DEC);
#endif
controllers.foot.setRange(fc_range);
controllers.foot.setTarget(fc_assign);
controllers.foot.setMode(fc_mode);
@ -717,15 +692,6 @@ void Dexed::setBCController(uint8_t bc_range, uint8_t bc_assign, uint8_t bc_mode
bc_assign = constrain(bc_assign, BC_ASSIGN_MIN, BC_ASSIGN_MAX);
bc_mode = constrain(bc_mode, BC_MODE_MIN, BC_MODE_MAX);
#ifdef DEBUG
Serial.print(F("bc_range="));
Serial.println(bc_range, DEC);
Serial.print(F("bc_assign="));
Serial.println(bc_assign, DEC);
Serial.print(F("bc_mode="));
Serial.println(bc_mode, DEC);
#endif
controllers.breath.setRange(bc_range);
controllers.breath.setTarget(bc_assign);
controllers.breath.setMode(bc_mode);
@ -743,15 +709,6 @@ void Dexed::setATController(uint8_t at_range, uint8_t at_assign, uint8_t at_mode
at_assign = constrain(at_assign, AT_ASSIGN_MIN, AT_ASSIGN_MAX);
at_mode = constrain(at_mode, AT_MODE_MIN, AT_MODE_MAX);
#ifdef DEBUG
Serial.print(F("at_range="));
Serial.println(at_range, DEC);
Serial.print(F("at_assign="));
Serial.println(at_assign, DEC);
Serial.print(F("at_mode="));
Serial.println(at_mode, DEC);
#endif
controllers.at.setRange(at_range);
controllers.at.setTarget(at_assign);
controllers.at.setMode(at_mode);

Loading…
Cancel
Save