0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學(xué)習在線(xiàn)課程
  • 觀(guān)看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區
會(huì )員中心
創(chuàng )作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內不再提示

【晶心科技ADP-Corvette-T1開(kāi)發(fā)板試用體驗】使用GyverOLED庫,驅動(dòng)基于I2C的SSD1306顯示屏

開(kāi)發(fā)板試用精選 ? 來(lái)源:開(kāi)發(fā)板試用 ? 作者:電子發(fā)燒友論壇 ? 2022-11-11 11:29 ? 次閱讀

本文來(lái)源電子發(fā)燒友社區,作者:HonestQiao, 帖子地址:https://bbs.elecfans.com/jishu_2289238_1_1.html

OLED演示(開(kāi)發(fā)板體驗視頻詳見(jiàn)作者原帖子內容)

ADP-Corvette-T1開(kāi)發(fā)板兼容Arduino開(kāi)發(fā)環(huán)境,完成基礎的測試后,就想著(zhù)點(diǎn)個(gè)屏幕玩玩。

通過(guò)官方的資料了解到,官方有一個(gè)擴展板:
image.png

這個(gè)上面,使用的是LCD1602A顯示屏。
去網(wǎng)上查看了一下資料,發(fā)現這是一款老掉牙的使用牛屎封裝的LCD顯示屏:
image.png

另外,詳細了解了一下官方的資料,看到硬件上也提供了I2C接口,查看官方資料,可以了解接口的詳情:
image.png

我手頭也有SSD1306 OLED,支持I2C和SPI的都有,這次剛好拿I2C版本的進(jìn)行實(shí)測。
未命名13.png

按照官方的資料和SSD1306 OLED的資料,按照如下方式連線(xiàn):
iShot_2022-06-25_09.30.47.png

實(shí)物連線(xiàn)如下:
image.png

然后,打開(kāi)Arduino,找OLED的庫,進(jìn)行編程。
測試了好幾個(gè)之前用過(guò)的OLED庫,都無(wú)法支持這塊開(kāi)發(fā)板。
最終,找到了:GyverOLED,順利使用。
在A(yíng)rduino,搜索安裝即可:
iShot_2022-06-25_08.44.00.png

我把演示的代碼,做了中文版本的注釋?zhuān)敿毴缦拢?/p>

#include h>

// 顯示屏類(lèi)型:
// SSD1306_128x32
// SSD1306_128x64

// 緩沖區:
// OLED_NO_BUFFER (無(wú)緩沖區)
// OLED_BUFFER (有緩沖區) - 默認

// 接口類(lèi)型:
// OLED_I2C - 默認
// OLED_SPI (需指定 CS, DC, RST/RES)

// 初始化:
//GyverOLED oled;,>
//GyverOLED oled;,>
GyverOLED oled;
//GyverOLED oled;,>
//GyverOLED oled;,>

// 對于 I2C 地址,可以發(fā)送: GyverOLED oled(0x3C);

// bitmap數據使用 https://github.com/AlexGyver/imageProcessor 創(chuàng  )建
const uint8_t bitmap_32x32[] PROGMEM = {
  0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0xE0, 0xF0, 0x70, 0x70, 0x30, 0x30, 0x30, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xE0, 0xF0, 0xF0, 0x70, 0x30, 0x30, 0x20, 0x00, 0x00,
  0x00, 0x30, 0x78, 0xFC, 0x7F, 0x3F, 0x0F, 0x0F, 0x1F, 0x3C, 0x78, 0xF0, 0xE0, 0xC0, 0x80, 0x80, 0x80, 0x40, 0xE0, 0xF0, 0xF8, 0xFC, 0xFF, 0x7F, 0x33, 0x13, 0x1E, 0x1C, 0x1C, 0x0E, 0x07, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xF0, 0xF9, 0xF7, 0xEF, 0x5F, 0x3F, 0x7F, 0xFE, 0xFD, 0xFB, 0xF1, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x1E, 0x33, 0x33, 0x1F, 0x0F, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x0F, 0x1F, 0x3F, 0x1F, 0x0E, 0x04, 0x00, 0x00, 0x00, 0x00,
};

void setup() {
  // 串口初始化 
  Serial.begin(9600);
  randomSeed(analogRead(A0));

  // 顯示屏初始化
  oled.init();

  // --------------------------
  // I2C速度設置
  //Wire.setClock(800000L);

  // 清除緩沖區
  oled.clear();

  // 更新顯示:適用于OLED_BUFFER
  oled.update();

  // 圓點(diǎn)顯示
  oled.home();            // 原點(diǎn)坐標:0,0
  oled.print("Hello!");   // 累充串口輸出那樣,可以輸出任何內容:數字,字符串,浮點(diǎn)數等
  oled.update();
  delay(2000);

  // 指定位置顯示
  oled.setCursor(5, 1);   // 指定坐標:x,y
  oled.setScale(2);
  oled.print("Hello!");
  oled.update();
  delay(2000);

  // 指定位置顯示
  oled.setCursorXY(15, 30); // 指定坐標:x,y
  oled.setScale(3);
  oled.invertText(true);    // 翻轉文本
  oled.print("Hello!");
  oled.update();
  delay(2000);

  // --------------------------
  oled.clear();
  oled.home();
  oled.setScale(1);
  oled.invertText(false);
  oled.autoPrintln(true);   // 自動(dòng)換行
  oled.print(F("Happy Rain on a Spring Night. (Du Fu) Good rain knows its time right; It will fall when comes spring. With wind it steals in night; Mute, it moistens each thing."));
  oled.update();
  delay(2000);

  // --------------------------
  oled.home();
  oled.textMode(BUF_ADD);
  // BUF_ADD - 覆蓋文本
  // BUF_SUBTRACT - 刪除文本
  // BUF_REPLACE - 替換文本
  oled.home();
  oled.setScale(3);
  oled.print("OK!");
  oled.update();
  delay(2000);

  // --------------------------
  // СЕРВИС
  //oled.setContrast(10);   // 設置對比度 0..255
  //oled.setPower(true);    // true/false - 開(kāi)/關(guān) 顯示
  //oled.flipH(true);       // true/false - 水平翻轉
  //oled.flipV(true);       // true/false - 垂直翻轉
  //oled.isEnd();           // 如果顯示結束,則返回 true - 用于逐字母輸出

  // --------------------------
  oled.clear();
  oled.dot(0, 0);     // 畫(huà)點(diǎn) x,y
  oled.dot(0, 1, 1);  // 第3個(gè)參數表示是否顯示:0-不顯示,1-顯示(默認)
  oled.line(5, 5, 10, 10);        // 劃線(xiàn) x0,y0 - x1,y1
  //oled.line(5, 5, 10, 10, 0);   // 第5個(gè)參數:0-擦除,1-繪制(默認)
  oled.fastLineH(0, 5, 10);       // 畫(huà)水平線(xiàn) (y, x1, x2)
  //oled.fastLineH(0, 5, 10, 0);  //  第4個(gè)參數:0-擦除,1-繪制(默認)
  oled.fastLineV(0, 5, 10);       // 畫(huà)垂直線(xiàn) (x, y1, y2)
  oled.rect(20, 20, 30, 25);      // 畫(huà)矩形 (x0,y0,x1,y1)
  oled.rect(5, 35, 35, 60, OLED_STROKE);      // 畫(huà)矩形操作 (x0,y0,x1,y1)
  // 形狀參數:
  // OLED_CLEAR - 清除
  // OLED_FILL - 填充
  // OLED_STROKE - 畫(huà)框
  oled.roundRect(50, 5, 80, 25, OLED_STROKE);  // 畫(huà)圓角矩形
  oled.circle(60, 45, 15, OLED_STROKE);        // 以 (x,y) 為圓心,以с為半徑畫(huà)圓
  oled.circle(60, 45, 5, OLED_FILL);           // 第4個(gè)參數:填充

  // 位圖
  oled.drawBitmap(90, 16, bitmap_32x32, 32, 32, BITMAP_NORMAL, BUF_ADD);
  //oled.drawBitmap(90, 16, bitmap_32x32, 32, 32);  // 默認. BITMAP_NORMAL 和 BUF_ADD
  // x, y, name, width, height, BITMAP_NORMAL(0)/BITMAP_INVERT(1), BUF_ADD/BUF_SUBTRACT/BUF_REPLACE
  
  oled.update();

  delay(3000);
}

void loop() {
  // 隨機位置顯示位圖
  int x = random(0,128-32);
  int y = random(0,64-32);
  
  oled.clear();
  // 位圖
  oled.drawBitmap(x, y, bitmap_32x32, 32, 32, BITMAP_NORMAL, BUF_ADD);
  //oled.drawBitmap(90, 16, bitmap_32x32, 32, 32);  // 默認. BITMAP_NORMAL 和 BUF_ADD
  // x, y, name, width, height, BITMAP_NORMAL(0)/BITMAP_INVERT(1), BUF_ADD/BUF_SUBTRACT/BUF_REPLACE
  
  oled.update();

  delay(1000);
}
,>

上述代碼中的注釋?zhuān)浅T敿?,所以我也就不用再單獨解釋了?/p>

實(shí)際跑起來(lái),效果非常的不錯,而且使用硬件I2C,刷新速度也有保障。


聲明:本文內容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權轉載。文章觀(guān)點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習之用,如有內容侵權或者其他違規問(wèn)題,請聯(lián)系本站處理。 舉報投訴
  • 晶心科技
    +關(guān)注

    關(guān)注

    0

    文章

    94

    瀏覽量

    18088
  • 開(kāi)發(fā)板試用

    關(guān)注

    3

    文章

    299

    瀏覽量

    1957
收藏 人收藏

    評論

    相關(guān)推薦

    128 x 64點(diǎn)陣式OLED/PLED段/帶控制器的通用驅動(dòng)SSD1306數據手冊

    電子發(fā)燒友網(wǎng)站提供《128 x 64點(diǎn)陣式OLED/PLED段/帶控制器的通用驅動(dòng)SSD1306數據手冊.pdf》資料免費下載
    發(fā)表于 03-19 11:01 ?0次下載

    【核桃派1B 開(kāi)發(fā)板試用體驗】+OLED顯示功能測試

    OLED是一種常見(jiàn)的顯示屏,在此類(lèi)顯示屏中按接口來(lái)劃分,又分為I2C接口型和SPI接口型。 這里測試的OLED
    發(fā)表于 01-22 22:57

    ADPD188BI開(kāi)發(fā)板I2C通信失敗是什么原因造成的?

    開(kāi)發(fā)板上還有一片I2C的eeprom(M24C16,地址0xA0),用同樣的代碼驅動(dòng)對eeprom芯片進(jìn)行操作則正常,請問(wèn)針對188BI操作存在什么問(wèn)題?謝謝!
    發(fā)表于 12-28 06:05

    【先楫HPM5361EVK開(kāi)發(fā)板試用體驗】RT-Thread I2C使用

    開(kāi)發(fā)環(huán)境: IDE:RT-Thread Studio 2.2.7 開(kāi)發(fā)板:HPM5300EVK HPM5300EVK有4路硬件I2C,當然也可使用軟件I2C,對于應用而言,軟件和硬件都
    發(fā)表于 12-25 23:57

    【涂鴉T2-U開(kāi)發(fā)板試用體驗】+智能農業(yè)系統實(shí)現代碼

    from machine import Pin, I2C from ssd1306 import SSD1306_I2C from bmp280 import BMP280 from
    發(fā)表于 12-15 17:47

    樹(shù)莓派Pico上使用SSD1306 OLED屏幕

    SSD1306 OLED 屏幕模塊配備 0.9 英寸迷你單色屏,128×32 分辨率,白光像素點(diǎn)。擁有極高的對比度,顯示清晰極易辨識。OLED 僅使用樹(shù)莓派的 I2C 和電源引腳,無(wú)需獨立供電,即插即用。
    的頭像 發(fā)表于 11-21 14:17 ?1116次閱讀
    樹(shù)莓派Pico上使用<b class='flag-5'>SSD1306</b> OLED屏幕

    ssd1306 OLED花屏怎么解決?

    ssd1306用spi連接arduino,幾率花屏,但是在樹(shù)莓派上用就沒(méi)問(wèn)題,請問(wèn)各位大佬有什么好的建議嗎
    發(fā)表于 10-19 08:26

    SSD1306數據表

    128*64 OLED的驅動(dòng)芯片SSD1306的數據手冊0.96oled一般用ssd1306驅動(dòng),ssd1306的指令豐富,但是在平常
    發(fā)表于 09-27 07:59

    【Start_DSC28034PNT湖人開(kāi)發(fā)板免費體驗】 DSC28034PNT-克隆ssd1306手動(dòng)模擬i2c

    DSC28034PNT-克隆ssd1306手動(dòng)模擬i2c ssd1306 sclk sda 對接 gpio18 gpio16 驅動(dòng)器:SSD1306
    發(fā)表于 08-01 22:29

    【Milk-V Duo 開(kāi)發(fā)板免費體驗】Linux下i2c驅動(dòng)OLED ssd1306

    Linux下i2c驅動(dòng)OLED ssd1306 參數 ssd1306 128*32 0x3c i2c
    發(fā)表于 07-29 13:44

    【FireBeetle 2 ESP32-S3開(kāi)發(fā)板體驗】實(shí)時(shí)顯示 更進(jìn)一步 又快又準

    。我選擇以vscode為主,插件platformio,需要安裝python3. Purple Pi開(kāi)發(fā)板通過(guò)J12排針提供了豐富的GPIO接口,包括UART、SPI、I2C、GPIO等(還包括DC5V
    發(fā)表于 07-29 13:27

    【FireBeetle 2 ESP32-S3開(kāi)發(fā)板體驗】時(shí)間顯示 基于ssd1306 I2C 調用開(kāi)源 事半功倍

    時(shí)間顯示 基于ssd1306 I2C 調用開(kāi)源 事半功倍 簡(jiǎn)介 FireBeetle 2 ESP32-S3可以使用Arduino IDE、
    發(fā)表于 07-29 10:04

    RA4M2開(kāi)發(fā)(2)----基于IIC驅動(dòng)OLED

    在e2studio中創(chuàng )建新的工程并導入必要的文件,包括I2C驅動(dòng)代碼和SSD1306 OLED顯示驅動(dòng)代碼。
    的頭像 發(fā)表于 07-27 10:04 ?1313次閱讀
    RA4M2<b class='flag-5'>開(kāi)發(fā)</b>(2)----基于IIC<b class='flag-5'>驅動(dòng)</b>OLED

    【Milk-V Duo 開(kāi)發(fā)板免費體驗】Linux下i2c驅動(dòng)OLED ssd1306

    * @LastEditTime: 2023-07-18 18:19:47 --> # Linux下i2c驅動(dòng)OLED ssd1306 ## 參數 - ssd1306 -
    發(fā)表于 07-18 18:50

    如何驅動(dòng)I2C接口的OLED?

    前面我們介紹了驅動(dòng)SPI接口LCD5110顯示屏的方法,這次介紹一下如何驅動(dòng)I2C接口的OLED,該OLED
    發(fā)表于 06-27 06:37
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看