2018年6月19日 星期二

arduino_nano+0.96OLED顯示

完成品如右側顯示,左側是arduino uno,整體而言加了擴充版還是比原來uno小,未來覺得可以推廣nano+擴充版就好。
這次主要想讓整個儀器比較小一點,所以使用arduino_nano這個比較小的板子,配上擴充版,其實整體而言好像比uno更便宜而且好用,唯一要擔心的可能是容量問題(如果是ATMEGA328P的flash應該都是32kb所以一樣大沒問題),還有他要多安裝一個軟體,Arduino UNO 相容版(CH341) Windows 驅動程式(點此下載)

  • nano的說明可以參考這篇文章
    小狐狸事務所-Arduino Nano 開機測試

    接下來0.96吋的oled顯示,我一樣丟"arduino 0.96 led"進去餵狗,找到這些文章
    Arduino通過I2C(SSD1306)驅動0.96寸12864OLED
    阿玉maker研究區-09-OLED顯示器

    然後本來想顯示中文,可是目前失敗中,未來可參考這些文章持續改進
    Arduino Uno 驱动OLED进阶 显示中英文字
    Step By Step系列 - 番外篇 OLED圖片取檔方法, 使用LCD Assistant
    運用SSD1306 OLED模組顯示圖像
    使用 LCD Assistant轉換字體
    发一个 绘图 Adafruit GFX图形库(這個感覺很厲害,所以備份了文章內容,以後應該用的到)


    總之最後就可以顯示我要的訊息了 



    以下是我修改的有關0.96吋oled的顯示部分

    需要準備的東西
    1.安裝一個軟體,Arduino UNO 相容版(CH341) Windows 驅動程式(點此下載)

    2.安裝新的Library程式庫
    Adafruit_SSD1306
    Adafruit-GFX-Library

    3.把下面的程式碼倒進去就可以了
    --------------以下是程式碼部分--------------
    #include <SPI.h>
    #include <Wire.h>
    #include <Adafruit_GFX.h>
    #include <Adafruit_SSD1306.h>

    //OLED設定
    #define OLED_RESET 4
    Adafruit_SSD1306 display(OLED_RESET);

    //螢幕設定,定義顯示高度跟寬度
    #define LOGO16_GLCD_HEIGHT 16
    #define LOGO16_GLCD_WIDTH  16

    #if (SSD1306_LCDHEIGHT != 32)
    #error("Height incorrect, please fix Adafruit_SSD1306.h!");
    #endif

    void setup() {
      Serial.begin(9600);

      // by default, we'll generate the high voltage from the 3.3v line internally! (neat!)
      display.begin(SSD1306_SWITCHCAPVCC, 0x3C);  // initialize with the I2C addr 0x3D (for the 128x64)
      // init done

      display.clearDisplay();
    }

    void loop() {
        //英文字符显示
      display.setTextSize(1);             //设置字体大小
      display.setTextColor(WHITE);        //设置字体颜色白色
      display.setCursor(0,0);             //设置字体的起始位置
      display.println("test");   //输出字符并换行
     
      display.setTextSize(2);             //设置字体大小
      display.print("Hello_world");          //输出文字
      display.setTextColor(BLACK, WHITE); //设置字体黑色,字体背景白色
      display.setCursor(72,8);
      display.print("test");          //输出文字
      display.display(); 
      display.clearDisplay();
    }


    -------------------以下是露天網購材料與價錢,非廣告,僅供參考-------------
    XTWduino nano V3.0 ATMEGA328P 改進板  90元
    http://goods.ruten.com.tw/item/show?21519333276248

    Arduino NANO UNO 多用 擴展板 48元
    http://goods.ruten.com.tw/item/show?21550342023467

    0.96寸 黃藍雙色 I2C IIC通信 12864 OLED液晶屏模塊 130元 (別家有120元的)
    http://goods.ruten.com.tw/item/show?21715781107651
  • 2 則留言:

    1. 大大您好~
      本人是新手,
      請問Adafruit_SSD1306 display語法是甚麼意思呢?
      感謝你解說。

      回覆刪除
      回覆
      1. 那兩行是載入0.96吋oled並且重設螢幕的語法吧(我猜)
        因為很多時候我只是拷貝別人的案子,再進行整併而已,其實對每一行語法也不是很能夠全盤了解

        刪除