Я программирую Arduino Sketch, который в общих чертах является калькулятором, использующим 4 числовые системы: десятичную, двоичную, восьмеричную и шестнадцатеричную.Когда я спрашиваю пользователя о числовой системе, он вводит желаемую систему (1 для десятичной, 2 для шестнадцатеричной, 3 для восьмеричной и 4 для двоичной) с помощью клавиатуры, затем, после получения этого ввода, Arduino печатает на ЖК-дисплеевыбранная система.Но эти части кода, кажется, повторяются бесконечно, не выполняя часть, в которую вводятся числа и операнды.Я не могу ввести числа, которые не являются 1, 2, 3 или 4, и если я нажимаю одно из этих чисел, он печатает свою систему, полностью игнорируя предыдущий ввод.
Я пробовал булевы переключатели, чтобы указатьпрограмма не запускает эту часть кода, если она была выполнена ранее, но, похоже, она не работает
Это часть кода, которая получает ввод и проверяет его.Случай переключателя повторяется еще три раза в остальных трех случаях, изменяя числовую систему, которая печатается.
void loop()
{
char base = calcuShift.getKey();
if (base != NO_KEY && (base == '1' || base == '2' || base == '3' || base == '4')) {
switch (base) {
case '1':
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Sistema");
lcd.setCursor(0,1);
lcd.print("Decimal");
delay(3000);
lcd.clear();
break;
После случая переключателя он должен выполнить следующий код:
char key;
if (digitalRead(A0) == HIGH) {
key = calcuShift.getKey();
} else {
key = calcu.getKey();
}
if (key != NO_KEY &&
(key=='1' || key=='2' || key=='3' || key=='4' || key=='5' || key=='6' || key=='7' || key=='8' || key=='9') &&
base == '1') {
if (inicio == false) {
num1 = num1 + key;
int numLength = num1.length();
lcd.setCursor(15-numLength,0);
lcd.print(num1);
} else {
num2 = num2 + key;
int numLength = num2.length();
lcd.setCursor(15-numLength,1);
lcd.print(num2);
final = true;
}
Очевидно, включая другие условные операторы if, которые варьируются в зависимости от переменной "base" (той, которую пользователь вводит в начале).Если это 1 (десятичное число), оно принимает числа от 0 до 9, если это 2 (шестнадцатеричное), оно принимает числа от 0 до F и т. Д. Пользователь вводит свои числа с помощью ключа переменной.Объект calcShift - это обычная клавиатура в режиме сдвига, в которой буквы и другие два операнда вместо чисел и операнды умножения и деления заменены на операнды питания и корня.
Я хочу, чтобы мой калькулятор получал требуемое числовое значениесистема, получает числа в такой системе и выполняет операции с этими числами, возвращая ответ в ранее выбранной системе, но вместо этого просто придерживается ввода переменной "base", которая определяет используемую числовую систему.