Страница 1 из 1

Не понятно почему так работает...

Добавлено: 15 окт 2021, 20:12
Unikus
Делаю некоторые эксперименты с кодом...
void loop(){
int i,n,sum;

char customKey = customKeypad.getKey();

switch (customKey) {
case '1':n = 1;
Serial.println(n);
sum = n*10 + n;
Serial.println(sum);
break;
}

switch (customKey) {

case '2':n = 2;
Serial.println(n);
sum = sum*10 + n;
Serial.println(sum);
break;
}
}

Описание, по customKey идёт считывание кнопки с матричной клавиатуры. И в зависимости от нажатой кнопки получить результат... Что получается в итоге : при нажатии кнопки "1" результат "1", "11 " ... при "2" результат "2", "112" ... То есть, значение "sum" для второй кнопки берётся из первого "case" ? Но ведь она даже не нажималась ... Что происходит ?

Re: Не понятно почему так работает...

Добавлено: 17 окт 2021, 17:54
Эдуард
Здравствуйте!
У вас значение sum во втором блоке зависит от предыдущего состояния sum = sum*10 + n;.
Также непонятно, зачем вам отдельные конструкции switch. Используйте тогда if.

Re: Не понятно почему так работает...

Добавлено: 02 ноя 2021, 16:21
Unikus
Переделал немного код. Ожидалось , что при нажатии кнопки "2" в порт выведется следующая инфо :
2
22
222
2222
Но, получается только :
2
22

..........

int i,n,sum;

char customKey = customKeypad.getKey();

switch (customKey) {
case '1':n = 1;
Serial.println(n);
sum = n*10 + n;
Serial.println(sum);
break;


case '2':n = 2;
Serial.println(n);
for (int i=3; i!=0;i--); {
sum = n*10 + n;
Serial.println(sum);}
break;
}
}

Re: Не понятно почему так работает...

Добавлено: 03 ноя 2021, 22:34
Unikus
Упс... напортачил с синтаксисом... исправил , начало работать.