Доброго всем добрым. Суть вопроса. Есть 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 раскомменчу -- вывод идет. Буду очень благодарен за конструктивные мысли. Второй день бьюсь как рыба об асфальт.
Использование модульных источников питания открытого типа широко распространено в современных устройствах. Присущие им компактность, гибкость в интеграции и высокая эффективность делают их отличным решением для систем промышленной автоматизации, телекоммуникационного оборудования, медицинской техники, устройств «умного дома» и прочих приложений. Рассмотрим подробнее характеристики и особенности трех самых популярных вариантов AC/DC-преобразователей MW открытого типа, подходящих для применения в промышленных устройствах - серий EPS, EPP и RPS представленных на Meanwell.market.
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, хм, да, может так и лучше и проще было бы. Надо будет как-то попробовать. Благодарю!
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 9
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения