странное поведение с одним дисплеем 7seg
Я хочу отображать предложение посимвольно на одном семисегментном дисплее. Что происходит, так это то, что если мое предложение длиннее 48 символов, центральный сегмент не загорается.
Это работает правильно, если я уберу букву из своей строки.
У меня есть Elegoo Uno R3, и я работаю в Windows с последней версией (2.0.3) Arduino IDE.
Есть ли способ решить эту проблему?
Вот мой код:
# include "SevSeg.h"
SevSeg sevseg;
char *str = "Per colpa di qualcuno non si fa credito a nessuno";
int len = 50;
void setup(){
byte numDigits = 1;
byte digitPins[] = {};
byte segmentPins[] = {6, 5, 2, 3, 4, 7, 8, 9};
bool resistorsOnSegments = true;
byte hardwareConfig = COMMON_CATHODE;
sevseg.begin(hardwareConfig, numDigits, digitPins, segmentPins, resistorsOnSegments);
sevseg.setBrightness(90);
}
void loop(){
int i = 0;
while (i < len)
{
sevseg.setChars(&(str[i]));
delay(1000);
sevseg.refreshDisplay();
++i;
}
}
Заранее спасибо,
Потрясающе
@Fab_x, 👍-1
Обсуждение1 ответ
Похоже, setChars ожидает строку, а не один символ.
Поэтому я бы сделал что-то вроде:
while (int i = 0; i < len; i++)
{
char buf [2];
buf [0] = str[i];
buf [1] = 0; // null terminator
sevseg.setChars(buf);
sevseg.refreshDisplay();
delay(1000);
}
См.: https://github.com/DeanIsMe/SevSeg/blob/master/SevSeg.cpp
но указатель на char такой же, как указатель на c-ctring. а функция setChar использует только символы numDigits из входной строки. и numDigits в этом случае равен 1, @Juraj
@NickGammon Спасибо за вашу помощь, но это не решило проблему, или, по крайней мере, оба подхода печатают одно и то же, как если бы проблема возникла из-за места в памяти, где хранится строка., @Fab_x
@juraj что такое numDigits? Я нашел его в функции setChars() в библиотеке, но не могу понять, откуда он взялся, @Fab_x
это количество семисегментных модулей. количество цифр., @Juraj
@Juraj, спасибо, теперь я понял., @Fab_x
Это учебник, которому я следовал: https://www.circuitbasics.com/arduino-7-segment-display-tutorial Мои провода подключены так же, @Fab_x
- Как отображать переменные на 0,96-дюймовом OLED-дисплее с библиотекой u8glib?
- Пользовательская функция сна для Nextion
- Как заставить текст мигать на экране ssd1306 i2c
- TFT-дисплей ST7789 показывает правильное изображение только при нажатой кнопке сброса Arduino - Почему?
- Adafruit 128x64 OLED не включается
- Нужна помощь с программой для кнопки смены отображения на OLED-дисплее
- Чтение оперативной памяти с OLED-контроллера SH1106 через I2C
- OLED 'SH1106_WHITE' was not declared in this scope
Почему digitPins — это пустой массив? У вас есть numDigits как 1, а не ноль., @Nick Gammon
В учебнике говорится, что его следует оставить пустым для отображения одной цифры. Это учебник: Circuitbasics.com/arduino-7-segment-display-tutorial Я буду следовать официальному руководству по Arduino, чтобы узнать, не возникает ли проблема из-за того, как я подключил провода к контактам: https://arduino-france.site/7-segments/, @Fab_x
ХОРОШО. *Это работает правильно, если я уберу букву из своей строки.* - что произойдет, если вы вставите много пробелов в строку? Может что-то перегревается?, @Nick Gammon
Я не пытался честно, я пытался с английским предложением вроде «Мы такие вещи, Из которых сделаны мечты, И наша маленькая жизнь Круглая сном». и все работало нормально. Я начал заново. Большое спасибо за вашу поддержку, @Fab_x