Помогите настроить вертикальную прокрутку на SSD1306
Я пытаюсь настроить вертикальную прокрутку текста. У меня есть большой кусок текста (пример в коде ниже), который нужно настроить для вертикальной прокрутки. Я хочу, чтобы отображать полный текст на экране. В настоящее время он прокручивает полный кусок текста. любая помощь или руководство приветствуется
#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128 // Ширина OLED-дисплея в пикселях
#define SCREEN_HEIGHT 64 // Высота OLED-дисплея в пикселях
// Объявление для дисплея SSD1306, подключенного к I2C (контакты SDA, SCL)
// Пины для I2C определяются Wire-библиотекой.
// На Arduino UNO: A4(SDA), A5(SCL)
// На Arduino MEGA 2560: 20(SDA), 21(SCL)
// На Arduino LEONARDO: 2(SDA), 3(SCL), ...
#define OLED_RESET 4 // Номер вывода сброса (или -1, если используется общий вывод сброса Arduino)
#define SCREEN_ADDRESS 0x3D ///< См. спецификацию для адреса; 0x3D для 128x64, 0x3C для 128x32
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
void setup() {
Serial.begin(9600);
display.begin(SSD1306_SWITCHCAPVCC, SCREEN_ADDRESS);
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(WHITE);
display.setCursor(0, 0);
display.println("Sometimes we dont want to scroll entire display. ");
display.startscrollright(0x00, 0x0F);
display.display();
delay(1000);
}
void loop(){
}
Ссылка на проект находится здесь: https://wokwi.com/arduino/projects/302023407584674313
Обновление 3
Мой вопрос:
Моя цель — отобразить текст в окне. текст не должен выходить за пределы окна. Если текста слишком много, его следует прокручивать вертикально.
Еще раз всем спасибо.
@Ram Kumar, 👍2
Обсуждение1 ответ
Эта линия добилась этого для меня. Я украл его отсюда: Форум Adafruit
display.startscrolldiagright(0x0F, 0x0F);
Он задает диагональную прокрутку, но начальная и конечная позиции кратны ширине экрана, так что в сумме прокрутка выполняется вертикально вверх.
В качестве альтернативы вы редактируете буфер отображения; удалив содержимое из текущей позиции, удалив первую строку пикселей, добавив новую последнюю строку пикселей, записав все это обратно в буфер отображения, а затем вызвав display.display()
.. р>
Это не совсем экономит время вашего микроконтроллера, но тоже работает. Я попросил ChatGpt написать код для второго решения, и оно мне помогло. Я не буду публиковать код здесь, так как это противоречит правилам.
- Прокрутите одну строку текста, пока другая строка остается статической на OLED-дисплее SSD1306.
- Не могу отключить внутренний интерфейс I2C подтягиваний на ESP32
- Неустранимая ошибка Adafruit_SSD1306.cpp: pgmspace.h: нет такого файла или каталога с использованием SSD1306 на Arduino Nano RP2040
- «Ошибка выделения SSD1306» при #include SD.h
- Arduino, проблема с прерыванием и SSD1306 OLED
- Сообщение об ошибке при попытке настроить библиотеку U8g2
- Поиск адреса OLED с использованием связи I2C и Arduino
- OLED-экран гаснет при задержке () — библиотека U8G2 + Arduino Nano
Я не уверен на 100%, о чем вы спрашиваете; в вашем тексте упоминается вертикальная прокрутка, ваш код выполняет горизонтальную прокрутку 16 строк, и ваш текст предположительно намного шире экрана. Можете ли вы отредактировать вопрос, чтобы быть более ясным?, @Dave Newton
Итак, вы не хотите прокручивать, вы хотите обернуть текст?, @Dave Newton
Итак... вы отказались от вопроса о прокрутке и вместо этого хотите просто отобразить текст на экране как можно большего размера?, @timemage
@DaveNewton timemage Весь текст должен умещаться на экране. Он не должен становиться большим. Он должен иметь возможность прокрутки, когда тест превышает то, что может отобразить устройство., @Ram Kumar
Весь текст не помещается на экране — вы говорите, что если текст больше экрана, он должен автоматически прокручиваться?, @Dave Newton
Уважаемый @DaveNewton, да. точно, @Ram Kumar
А какая актуальная проблема? Вы также можете обновить свой вопрос, чтобы отразить информацию из этих комментариев, потому что вопрос касается вертикальной прокрутки., @Dave Newton
хорошо. Я скоро обновлю вопрос, @Ram Kumar