在OLED显示屏上滚动长文本

时间:2016-11-12 14:52:50

标签: arduino

如何在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);

2 个答案:

答案 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空间的新数据在活动区域​​之外,所以我认为你可以遵循这个:放一列,滚动一列(或多列)并等待延迟方法完成的操作,放下一列......

祝你好运!