Вывод значения 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" ? - писать это за вас никто не будет
Дык я напишу, Вы только растокуйте чайнику. Это создавать структуру или другим массивом?
Дык я напишу, Вы только растокуйте чайнику. Это создавать структуру или другим массивом?
вы на этом форуме шестой год (дольше меня :) - и все "чайник"? Может пора уже бросить ардуину и заняться чем-то, что у вас получается лучше? или такого просто нет?
Это я к тому, что не вижу ни малейшего смысла вам что-то растолковывать. Вы ничему не учитесь.. Все ваши темы на форуме - это длинное и нудное выпрашивание готовых решений
Дык я напишу, Вы только растокуйте чайнику. Это создавать структуру или другим массивом?
вы на этом форуме четвертый год - и все "чайник"? Может пора уже бросить ардуину и заняться чем-то. что у вас получается лучше? или такого просто нет?
Это я к тому, что не вижу ни малейшего смысла вам что-то растолковывать. Вы ничему не учитесь.. Все ваши темы на форуме - это длинное и нудное выпрашивание готовых решений
Так где учится то, как не здесь? Я прошу помочь мне.
Так где учится то, как не здесь? Я прошу помочь мне.
книжки читать не пробовал? форум не заменяет учебника и пересказывать тебе курс С/С++ никто не станет.
Так где учится то, как не здесь? Я прошу помочь мне.
книжки читать не пробовал? форум не заменяет учебника и пересказывать тебе курс С/С++ никто не станет.
Если помочь нет желания - пройди мимо, работы, да и зароботка, слава богу, хватает, а вот на книги, к сожелению времени не вседа, потому и спрашиваю у тех кто их читает много. Всего доброго, уже разобрался.
Всего доброго, уже разобрался.
ну видишь как - значит помогло, селедка-то действует... заходи еще