如何在128x64 OLED显示屏上滚动长文本
我正在使用Adafruit_SSD1306驱动器
此代码仅显示"此"因为文字太大而无法放在显示屏上,但是当我只滚动文字时#34;这个"滚动不是文本的其余部分
display.setTextSize(5);
display.setTextColor(WHITE);
display.setCursor(0,16);
display.clearDisplay();
display.print("This is a long long text");
display.display();
delay(1);
display.startscrollleft(0x00, 0x0F);
答案 0 :(得分:1)
在 ssd1306 显示器上滚动并环绕长文本行:
这段代码来自 YT,它做得很好。我的以下版本适用于 ssd1306 128x64 显示器。临时文本字符串仅用于演示目的。 它显示 5 行,第一行是固定的。所有剩余的滚动。下一行是文字大小“2”。其他尺寸为“1”。
/* https://www.youtube.com/watch?v=sTYPuDMPva8
Set the appropriate screen size in the Adafruit_SSD1306.h by uncommenting
one of the two following lines.
//#define SSD1306_128_64 ///< DEPRECTAED: old way to specify 128x64 screen
//#define SSD1306_128_32 ///< DEPRECATED: old way to specify 128x32 screen
*/
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
Adafruit_SSD1306 display(4);
char message[]="297M LstWyPt, 345M StPt, rec#89";
int x, minX;
void setup(){
Serial.begin(9600);
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
display.setTextSize(2);
display.setTextColor(WHITE);
display.setTextWrap(false);
x = display.width();
minX = -12 * strlen(message); // 12 = 6 pixels/character * text size 2
}
void loop(){
display.clearDisplay();
display.setCursor(0,0);
display.setTextSize(1);
display.print("Sat:13 03:56:32 67%");// GPS # Satellites, Time, % Batt chg
display.setTextSize(2);
display.setCursor(x,10);
display.print(message);
display.setCursor(x,28);
display.setTextSize(1);
display.print("Press #1 New StPt, 2 RecWayPt, Cur 32.567, -102.456");
display.setCursor(x,38);
display.setTextSize(1);
display.print("Press #1 New StPt, 2 RecWayPt, Cur 32.567, -102.456");
display.setCursor(x,48);
display.setTextSize(1);
display.print("Press #1 New StPt, 2 RecWayPt, Cur 32.567, -102.456");
display.display();
x=x-8; // scroll speed, make more positive to slow down the scroll
if(x < minX) x= display.width();
}
答案 1 :(得分:0)
由于我已经处理了我的64x48 oled显示器好几天了,ssd1306配备了一个128x64的RAM,并支持循环滚动,因为你正在使用的面板,没有备用RAM来缓冲RAM空间的新数据在活动区域之外,所以我认为你可以遵循这个:放一列,滚动一列(或多列)并等待延迟方法完成的操作,放下一列......
祝你好运!