Помогите настроить вертикальную прокрутку на SSD1306

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

Мой вопрос:

Моя цель — отобразить текст в окне. текст не должен выходить за пределы окна. Если текста слишком много, его следует прокручивать вертикально.

Еще раз всем спасибо.

, 👍2

Обсуждение

Я не уверен на 100%, о чем вы спрашиваете; в вашем тексте упоминается вертикальная прокрутка, ваш код выполняет горизонтальную прокрутку 16 строк, и ваш текст предположительно намного шире экрана. Можете ли вы отредактировать вопрос, чтобы быть более ясным?, @Dave Newton

Итак, вы не хотите прокручивать, вы хотите обернуть текст?, @Dave Newton

Итак... вы отказались от вопроса о прокрутке и вместо этого хотите просто отобразить текст на экране как можно большего размера?, @timemage

@DaveNewton timemage Весь текст должен умещаться на экране. Он не должен становиться большим. Он должен иметь возможность прокрутки, когда тест превышает то, что может отобразить устройство., @Ram Kumar

Весь текст не помещается на экране — вы говорите, что если текст больше экрана, он должен автоматически прокручиваться?, @Dave Newton

Уважаемый @DaveNewton, да. точно, @Ram Kumar

А какая актуальная проблема? Вы также можете обновить свой вопрос, чтобы отразить информацию из этих комментариев, потому что вопрос касается вертикальной прокрутки., @Dave Newton

хорошо. Я скоро обновлю вопрос, @Ram Kumar


1 ответ


1

Эта линия добилась этого для меня. Я украл его отсюда: Форум Adafruit

display.startscrolldiagright(0x0F, 0x0F);

Он задает диагональную прокрутку, но начальная и конечная позиции кратны ширине экрана, так что в сумме прокрутка выполняется вертикально вверх.

В качестве альтернативы вы редактируете буфер отображения; удалив содержимое из текущей позиции, удалив первую строку пикселей, добавив новую последнюю строку пикселей, записав все это обратно в буфер отображения, а затем вызвав display.display().. р>

Это не совсем экономит время вашего микроконтроллера, но тоже работает. Я попросил ChatGpt написать код для второго решения, и оно мне помогло. Я не буду публиковать код здесь, так как это противоречит правилам.

,