Доброго всем добрым. Суть вопроса. Есть 7 сегментник, на который должна выводиться инфа в виде значения величины и названия этой величины, типа 120*С. Для управления 7сегментником используется библиотека ардуино SevSeg. Все это запихивается в Атмегу16. И собственно с выводом char на дисплей проблем нет. Проблема появляется когда я пытаюсь преобразовать строку в массив char, который должен передаться библиотеке для вывода на дисплей. В loop'e вот такой кусок кода не желает работать (
Код:
static byte val =100; //char pointer[6] = "PAUSE"; myString = "ESUAP"; // Cycle to the next string every one second if (millis() > (timer + 1000)) { val ++; myString = String(val+myString); const char* pointer = myString.c_str(); Serial.println(pointer); sevseg.setChars(pointer); timer = millis(); } sevseg.refreshDisplay(); // Must run repeatedly
преобразования из строки в символы не происходит, что видно (вернее не видно) и на дисплее и в выводе в консоль разумеется. Если строки со стрингами комменчу, а char раскомменчу -- вывод идет. Буду очень благодарен за конструктивные мысли. Второй день бьюсь как рыба об асфальт.
Компания MEAN WELL пополнила ассортимент своей широкой линейки светодиодных драйверов новым семейством XLC для внутреннего освещения. Главное отличие – поддержка широкого спектра проводных и беспроводных технологий диммирования. Новинки представлены в MEANWELL.market моделями с мощностями 25 Вт, 40 Вт и 60 Вт. В линейке есть модели, работающие как в режиме стабилизации тока (СС), так и в режиме стабилизации напряжения (CV) значением 12, 24 и 48 В.
mont-oriol, да, в симуляторе работает. И про переполнение стека я уже подумал ( тогда вопрос по другому стоит, как к значению переменной прицепить строку символов и вывести это на дисплей. Пока не справился (((
Если я правильно понял задачу из темы (ру->бг), то у меня либ. SevSeg работает и на симулятор, и на реальном устройстве. С классом String проблем нет - с внутренними функциями Arduino. Добавил знак C, использовал символа '^'. При "oC" по 7 seg LCD било "OC". Теперь "oC".
mont-oriol, на строку strcpy(position, myString); ругается: Compilation error: invalid conversion from 'u8* {aka unsigned char*}' to 'char*' [-fpermissive] а в вокви все компилируется и собирается.
Добавлено after 1 minute 6 seconds: veso74, вот а у меня похоже на железе не желает работать со строками. Но такого быть не может. как я понимаю, вся проблема в использовании MightyCore + Atmega16a
Ну и сложностей то для 7-сегментника... Может достаточно сделать *.h файлик с объявлениями(или соответственно вставку в *.h файле класса индикатора), да использовать его "кодовую таблицу" в конкретном случае? К примеру: Спойлер
Код:
#define s_A 1 // значение номера сегмента A #define s_B 7 // значение номера сегмента B #define s_C 5 // значение номера сегмента C #define s_D 4 // значение номера сегмента D #define s_E 2 // значение номера сегмента E #define s_F 0 // значение номера сегмента F #define s_G 3 // значение номера сегмента G #define s_H 6 // значение номера сегмента H
/* "кодовая страница кракозябр 7-сегментных" раскладка сегментов по символам определяется стандартной разметкой A-H по условию, что активный уровень(сегмент астивен/светится) принят за 1 */
В общем я так и не понял, с чем столкнулся. Но через sprintf все заработало и все выводится. Тема закрыта. veso74, да, спасибо, я знаю, как выводы в MightyCore прописываются, когда-то прошел и по этим граблям ) BOB51, хм, да, может так и лучше и проще было бы. Надо будет как-то попробовать. Благодарю!
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 19
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения