Как прокручивать текст на OLED-дисплее, используя только библиотеку SSD1306Wire?
Мне 13 лет, и я делаю проект с esp01 и OLED-экраном, чтобы отображать идеи проекта на OLED-дисплее с помощью ChatGPT API. Ответ отображается на OLED-дисплее, но я бы хотел, чтобы он прокручивался снизу вверх и так далее до следующего запроса, чтобы я мог видеть весь ответ. Я отметил, что единственная библиотека, которая работала для меня для esp01, — это библиотека SSD1306Wire. .Мой код:
#include <ESP8266HTTPClient.h>
#include <ESP8266WiFi.h>
#include <WiFiClientSecure.h>
#include <Wire.h>
#include <SSD1306Wire.h>
#include <ArduinoJson.h>
const char* ssid = "WIFI_NAME";
const char* password = "WIFI_PASSWORD";
const char* apiEndpoint = "https://api.openai.com/v1/engines/text-davinci-002/completions";
const char* apiToken = "OPENAI_TOKEN";
SSD1306Wire display(0x3c, 2, 0);
void setup() {
Serial.begin(115200);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Connecting to WiFi...");
}
Serial.println("Connected to WiFi");
display.init();
display.flipScreenVertically();
display.setFont(ArialMT_Plain_10);
}
void loop() {
WiFiClientSecure client;
client.setInsecure();
HTTPClient http;
http.begin(client, apiEndpoint);
http.addHeader("Content-Type", "application/json");
http.addHeader("Authorization", "Bearer " + String(apiToken));
String payload = "{\"prompt\": \"TEXT_TO_QUERY\",\"temperature\":0.8,\"max_tokens\":40}";
int httpResponseCode = http.POST(payload);
String response = "";
if (httpResponseCode == 200) {
response = http.getString();
int startIndex = response.indexOf("text\":") + 7;
int endIndex = response.indexOf("\",\"index\"");
response = response.substring(startIndex, endIndex);
response.replace("\\n", "\n");
Serial.println(response);
} else {
Serial.print("Error: ");
Serial.println(httpResponseCode);
}
http.end();
display.clear();
display.drawStringMaxWidth(0, 0, 128, response);
display.display();
delay(18000000);
}
Кто-нибудь может мне помочь?
@Loic Daigle, 👍0
Обсуждение1 ответ
Лучший ответ:
▲ 0
- Код SSD1306Wire, историю его разработки и обсуждения можно найти здесь на github.com.
- Шаблон поиска Google "прокрутка сайт: github.com/ThingPulse/esp8266-oled-ssd1306" можно использовать для поиска все совпадения с "прокрутить" на этих веб-страницах. Кажется, есть интерес к вертикальной прокрутке со стороны других, но пока нет поддержки. Также, кажется, есть некоторая поддержка или успех горизонтальной прокрутки, поскольку обсуждалось в этом выпуске github.com для этого проекта.
- Также в этой ветке есть ссылка на другой проект DSS1306 github.com. в котором явно указано, что он поддерживает горизонтальную прокрутку.
,
@st2000
Смотрите также:
- OLED 'SH1106_WHITE' was not declared in this scope
- HD44780 отображает неправильно черный на синем вместо белого на синем
- Прозрачный OLED-дисплей 240*320 с ардуино
- Датчик углекислого газа MG 811
- Как ssd1306 справляется с разными размерами экрана?
- Как настроить матричный светодиодный дисплей 8 * 8 с помощью этого кода?
- Эффективный рабочий процесс/инструменты для преобразования цветных изображений в шестнадцатеричные массивы
- Как отображать текст на OLED?
Вы смотрели на примеры скетчей?, @jsotola
5-часовая пауза должна быть 30 минут, моя ошибка. В библиотеке, похоже, нет примеров скетчей., @Loic Daigle
затем выполните поиск в Интернете для
SSD1306Wire.h
, @jsotolaНо моя проблема в том, что библиотека не поддерживает функцию прокрутки, @Loic Daigle
Вам нужна плавная прокрутка или переход по символу или строке текста? Предполагая первое, вы запрашиваете горизонтальную или вертикальную прокрутку. Я думаю, что горизонтальная прокрутка поддерживается, но не документирована. Я не уверен в вертикальной прокрутке., @st2000
Я хотел бы, чтобы текст плавно прокручивался снизу вверх, @Loic Daigle
Библиотека, которую вы используете, размещена на github.com и, по-видимому, не поддерживает вертикальную прокрутку, так как обсуждение вертикальной прокрутки в проблемах, похоже, закончилось. Он может поддерживать горизонтальную прокрутку, но это обсуждение также указывает на ответвление проекта на другой странице github.com. Если вы хотите узнать больше, я предлагаю пойти туда и прочитать эти обсуждения. Возможно участие в них., @st2000
Спасибо . Должен ли я закрыть дискуссию или что-то в этом роде?, @Loic Daigle
Вы или человек, отвечающий на ваш вопрос (@st2000), должны преобразовать комментарии в фактический ответ. Затем его можно пометить как принятое, чтобы помочь другим с тем же запросом., @Nick Gammon