Данная функция рабочая. просто я удалил весь код, так как он не нужен. Подскажите пожалуйста каким образом opcion передает значения при нажатии на кнопку в блоки if Код (C++): if (opcion ==1) На что влияет переменная Код (C++): int a Код (C++): void menu(int a) без вставленной Код (C++): void menu(int a) ошибка. В место a Можно воткнуть любую переменную Код (C++): void setup() { } void item_menu() { if(digitalRead(12) == HIGH){ opcion++; if(opcion == 3) opcion = 1; menu(opcion); } } void loop() { item_menu();} void menu(int a) { if (opcion ==1) { //Код } if (opcion ==2) { //Код } }
В функции menu обрабатывается переменная opcion (значение которой устанавливается в функции item_menu и зависит от количества нажатий кнопки на пине 12). В зависимости от значения переменной opcion отрисовывается то или иное содержимое экрана. Также в функцию menu передается некое значение a, которое в данном урезанном коде никак не обрабатывается и не используется.
? Идентификатор opcion не объявлен. Вероятно в исходном варианте это глобальная переменная. Нажатия как таковые не подсчитываются. Проверка идет только по удержанию.
Вот код он полностью работает, выводит блоки 1 и 2. Код (C++): int opcion = 1; void setup() { Serial.begin(9600); tft.reset(); tft.begin(0x7575); tft.setRotation(1); menu(1); } void item_menu() { if(digitalRead(12) == HIGH){ opcion++; if(opcion == 3) opcion = 1; menu(opcion); delay(100); } } void loop(){ item_menu(); } void menu(int seleccion){ if (opcion ==1 ) { tft.fillScreen(BLACK); //Очистка экрана от левых данных tft.setCursor(280, 2); tft.setTextColor(WHITE); tft.setTextSize(1); tft.print("MENU 1"); tft.setCursor(10, 90); tft.setTextColor(YELLOW); tft.setTextSize(3); tft.print("MENU 1"); } if (opcion ==2) { tft.fillScreen(BLACK); tft.setCursor(280, 2); tft.setTextColor(WHITE); tft.setTextSize(1); tft.print("MENU 2"); } } получается что menu(opcion); передает значения в функцию в переменную opcion Только не пойму какой толк от переменной (int seleccion) название могу любое вписать, а если оставить пусто тогда будет ошибка Может что посоветуете почитать про функции, чтоб понять как с ними работать Желательно с самого простого. Спасибо. И еще как сделать функцию например у меня в коде есть одинаковые данные. код Код (C++): tft.setCursor(10, 90); tft.setTextColor(YELLOW); tft.setTextSize(3); tft.print("[B]MENU 1[/B]"); tft.setCursor(10, 90); tft.setTextColor(YELLOW); tft.setTextSize(3); tft.print("[B]MENU 2[/B]"); Сделать одну функцию и массив значений меню 1 меню 2 и тд. а в блок кода вставить к примеру для меню 1 block_menu(1); для меню 2 block_menu(2);
глобальная переменная. Лучше сделать ее локальной? Проверка идет по нажатию кнопки, есть более правильный вариант посчитать нажатия? Там по сути каждое нажатие + 1 дошли до конца обнулили.
Декларация функции содержит список формальных аргументов. Вызов функции содержит список фактических аргументов. Как правило порядок и количество аргументов должно совпадать. Если вы удаляете формальный аргумент нужно поправить и вызовы функции.