Вывод значения int вместе с масивом списка char
- Войдите на сайт для отправки комментариев
Вс, 24/04/2022 - 15:29
Добрый день. Прошу сильно не пинать, новичок я.
Подскажите как правильно выводить и менять значения int-ов на против срок списков "setting1", "setting2", "setting3", "setting4". И возможно ли это вообще?
Планируется оформить меню, при заходе которого отображать не только строки массива списка, но и значения каждой функции. А когда делаешь выбор, то мигающий курсор переходит на значения переменной, и соответственно её меняешь. Короче говоря - меню без-захода в под меню.
#include <Adafruit_GFX.h> #include <Adafruit_SSD1306.h> #define SCREEN_WIDTH 128 #define SCREEN_HEIGHT 64 Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire); const char string_1[] PROGMEM = "setting1"; const char string_2[] PROGMEM = "setting2"; const char string_3[] PROGMEM = "setting3"; const char string_4[] PROGMEM = "setting4"; const char * menu_table[] = {string_1, string_2, string_3, string_4}; const int buttonPin = 4; int buttonState = 0; long val; long val_old = 0; volatile int enc; byte menuPos = 1; void Menu() { while (1) { buttonState = !digitalRead(buttonPin); val = enc; //***************************** Выбор позиции в меню *********************** if (val > val_old) { menuPos = menuPos + 1; val_old = val; } if (menuPos > 4) { menuPos = 1; } if (val < val_old) { menuPos = menuPos - 1; val_old = val; } if (menuPos < 1) { menuPos = 4; } printMenu(menuPos); if (buttonState == HIGH) { switch (menuPos) { case 1: setting1(); break; case 2: setting2(); break; case 3: setting3(); break; case 4: setting4(); return; } } } } void printMenu (byte invertLine) { byte i; display.clearDisplay(); display.setTextSize(1); for (i = 0; i < 4; i++ ) { display.setCursor(4, i * 10); if (i == (invertLine - 1))display.print(">"); else display.print(" "); display.print((const __FlashStringHelper *) menu_table[i] ); } display.display(); } ISR(PCINT2_vect) { static char EncPrev = 0; static char EncPrevPrev = 0; char EncCur = 0; if (!(PIND & (1 << PD5))) { EncCur = 1; } if (!(PIND & (1 << PD6))) { EncCur |= 2; } if (EncCur != EncPrev) { if (EncPrev == 3 && EncCur != EncPrevPrev ) { if (EncCur == 2) enc++; else enc--; } EncPrevPrev = EncPrev; EncPrev = EncCur; } } void setup() { if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { for (;;); } display.setTextColor(SSD1306_WHITE); pinMode(buttonPin, INPUT_PULLUP); pinMode(5, INPUT_PULLUP); pinMode(6, INPUT_PULLUP); PCIFR = PCIFR; PCICR = 1 << PCIE2; PCMSK2 = 1 << PCINT21 | 1 << PCINT22; } void loop() { Menu(); } void setting1() { while (1) { buttonState = !digitalRead(buttonPin); display.clearDisplay(); display.setTextSize(1); display.setCursor(20, 5); display.print(F("SETTING")); display.setCursor(100, 5); display.println(enc); display.display(); if (buttonState == HIGH) return; } } void setting2() { } void setting3() { } void setting4() { }
и где в этом коде хотя бы попытка выводить какие-то значения напротив меток "setting" ? - писать это за вас никто не будет
и где в этом коде хотя бы попытка выводить какие-то значения напротив меток "setting" ? - писать это за вас никто не будет
Дык я напишу, Вы только растокуйте чайнику. Это создавать структуру или другим массивом?
Дык я напишу, Вы только растокуйте чайнику. Это создавать структуру или другим массивом?
вы на этом форуме шестой год (дольше меня :) - и все "чайник"? Может пора уже бросить ардуину и заняться чем-то, что у вас получается лучше? или такого просто нет?
Это я к тому, что не вижу ни малейшего смысла вам что-то растолковывать. Вы ничему не учитесь.. Все ваши темы на форуме - это длинное и нудное выпрашивание готовых решений
Дык я напишу, Вы только растокуйте чайнику. Это создавать структуру или другим массивом?
вы на этом форуме четвертый год - и все "чайник"? Может пора уже бросить ардуину и заняться чем-то. что у вас получается лучше? или такого просто нет?
Это я к тому, что не вижу ни малейшего смысла вам что-то растолковывать. Вы ничему не учитесь.. Все ваши темы на форуме - это длинное и нудное выпрашивание готовых решений
Так где учится то, как не здесь? Я прошу помочь мне.
Так где учится то, как не здесь? Я прошу помочь мне.
книжки читать не пробовал? форум не заменяет учебника и пересказывать тебе курс С/С++ никто не станет.
Так где учится то, как не здесь? Я прошу помочь мне.
книжки читать не пробовал? форум не заменяет учебника и пересказывать тебе курс С/С++ никто не станет.
Если помочь нет желания - пройди мимо, работы, да и зароботка, слава богу, хватает, а вот на книги, к сожелению времени не вседа, потому и спрашиваю у тех кто их читает много. Всего доброго, уже разобрался.
Всего доброго, уже разобрался.
ну видишь как - значит помогло, селедка-то действует... заходи еще