arduino环境下使用Adafruit_SSD1306驱动oled时显示内容错误


刚刚在驱动ssd1306的0.96的oled屏幕时出现了,程序预料之外的内容(Adafruit的logo)如下:

 

 

 分析问题应该是缓存没有清除(以前的程序有显示Adafruit的Logo的代码),但当时有在显示后调用清除缓存函数,导致一直不知道问题出在哪里,问题代码如下:

void setup() {
  Serial.begin(115200);
  //WiFi.disconnect();                       //断开可能存在的连接
  /*int WiFiClass::begin(char* ssid, const char *passphrase)
   * ssid: wifi名称
   * passphrase:wifi密码
   *定义于WiFi.cpp
  */
  //WiFi.begin(ssid,passphrase);
  for(int i=0 ;i<4;i++)
  {
    MySSD1306ShowString(31,0,"WiFi connecting.");
    delay(500);
    MySSD1306ShowString(31,0,"WiFi connecting..");
    delay(500);
    MySSD1306ShowString(31,0,"WiFi connecting...");  
    delay(500);
    display.clearDisplay();
  }
}

最后经过不断调试代码发现问题出在 display.clearDisplay()函数的位置,display.clearDisplay()清除缓存应在每次显示之前被执行。修改代码如下将display.clearDisplay()放在了MySSD1306ShowString()函数中。

void MySSD1306ShowString(int x,int y,const char* str){
   if(!display.begin(SSD1306_SWITCHCAPVCC, SCREEN_ADRESS)) {
    Serial.println(F("SSD1306 allocation failed"));
    for(;;); // Don't proceed, loop forever
  }
  display.clearDisplay();
  display.setTextSize(1);
  display.setTextColor(WHITE);
  display.setCursor(0,0);   //显示起点
  if((x>127)||(y>55))  //字体大小选择为1时 宽度为6  高度为8
  {
    display.println("enter Pixel err!");
    display.display();   //显示
  }
  display.println(str);
  display.display();   //显示
}

const char* ssid = "TP-LINK_FF9B";         //WiFi名称
const char* passphrase = "asd31415926";    //WiFi密码

void setup() {
  Serial.begin(115200);
  //WiFi.disconnect();                       //断开可能存在的连接
  /*int WiFiClass::begin(char* ssid, const char *passphrase)
   * ssid: wifi名称
   * passphrase:wifi密码
   *定义于WiFi.cpp
  */
  //WiFi.begin(ssid,passphrase);
  for(int i=0 ;i<4;i++)
  {
    MySSD1306ShowString(31,0,"WiFi connecting.");
    delay(500);
    MySSD1306ShowString(31,0,"WiFi connecting..");
    delay(500);
    MySSD1306ShowString(31,0,"WiFi connecting...");  
    delay(500);
  }
}

  问题解决。

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM