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