Добрый день. Скажите пожалуйста на сколько правильно такое решение. При нажатии на кнопку меняется значение переменной. Повторное нажатие кнопки снова увеличивает значение при этом удержание кнопки не меняет значение после нажатия. Код (C++): //Функция обработки Меню, задача - при нажатии кнопки, переменной lines прибавить значение // каждое нажатие +1 по нарастающей до необходимого сисла. пример от 1 до 5 byte bouncer; // Инициируем bouncer void menu() { bouncer = digitalRead(12); //Считываем нажатие кнопки, 0 не нажата, 1 нажата if((bouncer) == 0){ //Проверяем нажата ли кнопка, и если нажата обрабатываем условие if(digitalRead(12) == HIGH && bouncer==bouncer){ //Считываем нажатие кнопки,и прибавляем 1 в lines++; если bouncer==bouncer тогда истина lines++; if(lines == 5) lines = 1; //Если lines == 5 сбрасываем lines в 1. То есть обнуляем цикл и начинаем с начала tft.setCursor(80, 110); tft.setTextColor(YELLOW,BLACK); tft.setTextSize(3); tft. print("MENU"); tft. print('\t'); tft. print(lines); tft.setCursor(80, 140); tft. print("BUTTON "); tft. print('\t'); tft. print(bouncer); } } }
Обнаружил глюк tft. print(" "); // Без этой строки данные выводятся не постоянно, могут быть пропуски. Подскажите почему так. Код (C++): void menu() { vall= digitalRead(12); tft. print(" "); // Без этой строки данные выводятся не предсказуемо if((vall) == 0){ if(digitalRead(12) == HIGH && vall==vall){ lines++; if(lines == 6) lines = 1; tft.setCursor(80, 110); tft.setTextColor(YELLOW,BLACK); tft.setTextSize(3); tft. print("lines"); tft. print('\t'); tft. print(lines); vall + 1; } } }