Помогите разобраться =(
- Войдите на сайт для отправки комментариев
Сб, 15/09/2018 - 15:59
Всем привет.
Попался мне скетч, загружаю, цепляю ардуинку на шилд - не работает.
Путем монитора сериала вычислил, что не работает часть после if. Что, при этом интересно, все условия под if и вложенными if выполняются. Но работает только часть, которая идет после else
if ( SupressJitter() ) {
if ( ResistorOhms < 3500 ) {
if (IsNear(buttonStableState,976,buttonJitter))
{ // some button was depressed
longPress=false;
if ( shortPress ) {
if ( shortPressLoopsCount==0 ) {
shortPressLoopsCount=nShortPressLoopsToSend;
buttonToPressNr=maps[pressedButtonNr][0];
if ( buttonToPressNr>=10 ) {
buttonToPressNr=buttonToPressNr-10;
RingState=LOW;
} else {RingState=HIGH;}
outVoltage=outButtons[buttonToPressNr];
sendCommand(RingState,outVoltage);
}
shortPressLoopsCount--;
if (shortPressLoopsCount==0) shortPress=false;
}
else {
pressedButtonNr=-1;
sendCommand(HIGH,outDepressedButtonsVoltage);
}
}
else { //some button is pressed
pressedButtonNr=getNearestResistorNr(ResistorOhms);
shortPressLoopsCount=0;
if ( buttonStateStableLoops < nShortPressLoops ) {
// do nothing
}
else {
if ( buttonStateStableLoops < nLongPressLoops ) {
longPress=false;
shortPress=true;
}
else {
longPress=true;
shortPress=false;
buttonToPressNr=maps[pressedButtonNr][1];
if ( buttonToPressNr>=10 ) {
buttonToPressNr=buttonToPressNr-10;
RingState=LOW;
} else {RingState=HIGH;}
outVoltage=outButtons[buttonToPressNr];
sendCommand(RingState,outVoltage);
}
}
}
}
}
То есть то, что после "some button is pressed" - работает, а то, что после "some button was depressed" - не хочет ни в какую =(
Чудес не бывает. Если операторы после if не выполняются, а выполняются операторы после else, значит условие ложно. Проверяйте лучше.
Serial.println(переменная в if), в помощь.
У скетча есть автор. Наерно, он лучше разбираеца, как работает его поделие, чем мы здесь. Спрашивай его.
Всем спасибо за ответы.
Я понимаю, что чудес не бывает, а бывает косяк - прошу помощи в отыскании оного. Уже неделю бьюсь =(
Serial.println показывает, что все кучеряво - SupressJitter выполняется, сопротивление менее 3500 Ом, и даже IsNear меняется с нуля на единицу в момент отпускания кнопки... Вот только пичалько =(
Автор у скетча, конечно, есть, только в его теме на том форуме, где этот скетч был выложен "тишина на Ивановском кладбище" =( и последняя активность профиля в апреле 18го года. И да, в профиле никаких контактов сверх - не указано.
kalapanga, Ох, спасибо, добрый человек =) "в ту минуту" сказал - еще даже ответ не дописав понял, в чем ошибка была. Проверил - заработало =)