91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

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

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

3天內(nèi)不再提示

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

開(kāi)發(fā)板試用精選 ? 來(lái)源:開(kāi)發(fā)板試用 ? 作者:電子發(fā)燒友論壇 ? 2022-11-11 11:29 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

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

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

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

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

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

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

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

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

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

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

我把演示的代碼,做了中文版本的注釋,詳細(xì)如下:

#include h>

// 顯示屏類型:
// SSD1306_128x32
// SSD1306_128x64

// 緩沖區(qū):
// OLED_NO_BUFFER (無(wú)緩沖區(qū))
// OLED_BUFFER (有緩沖區(qū)) - 默認(rèn)

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

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

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

// bitmap數(shù)據(jù)使用 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速度設(shè)置
  //Wire.setClock(800000L);

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

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

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

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

  // 指定位置顯示
  oled.setCursorXY(15, 30); // 指定坐標(biāo):x,y
  oled.setScale(3);
  oled.invertText(true);    // 翻轉(zhuǎn)文本
  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);   // 設(shè)置對(duì)比度 0..255
  //oled.setPower(true);    // true/false - 開(kāi)/關(guān) 顯示
  //oled.flipH(true);       // true/false - 水平翻轉(zhuǎn)
  //oled.flipV(true);       // true/false - 垂直翻轉(zhuǎn)
  //oled.isEnd();           // 如果顯示結(jié)束,則返回 true - 用于逐字母輸出

  // --------------------------
  oled.clear();
  oled.dot(0, 0);     // 畫(huà)點(diǎn) x,y
  oled.dot(0, 1, 1);  // 第3個(gè)參數(shù)表示是否顯示:0-不顯示,1-顯示(默認(rèn))
  oled.line(5, 5, 10, 10);        // 劃線 x0,y0 - x1,y1
  //oled.line(5, 5, 10, 10, 0);   // 第5個(gè)參數(shù):0-擦除,1-繪制(默認(rèn))
  oled.fastLineH(0, 5, 10);       // 畫(huà)水平線 (y, x1, x2)
  //oled.fastLineH(0, 5, 10, 0);  //  第4個(gè)參數(shù):0-擦除,1-繪制(默認(rèn))
  oled.fastLineV(0, 5, 10);       // 畫(huà)垂直線 (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)
  // 形狀參數(shù):
  // 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è)參數(shù):填充

  // 位圖
  oled.drawBitmap(90, 16, bitmap_32x32, 32, 32, BITMAP_NORMAL, BUF_ADD);
  //oled.drawBitmap(90, 16, bitmap_32x32, 32, 32);  // 默認(rèn). 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() {
  // 隨機(jī)位置顯示位圖
  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);  // 默認(rèn). 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);
}
,>

上述代碼中的注釋,非常詳細(xì),所以我也就不用再單獨(dú)解釋了。

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


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

    關(guān)注

    0

    文章

    122

    瀏覽量

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

    關(guān)注

    3

    文章

    303

    瀏覽量

    2746
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    【瑞薩FPB-RA6E2試用】【瑞薩RA × Zephyr開(kāi)發(fā)板評(píng)測(cè)】FPB-RAE62 SPI驅(qū)動(dòng) SSD1306顯示花屏問(wèn)題解決

    SSD1306,而是sh1106,如下圖,經(jīng)過(guò)確認(rèn)后,確實(shí)是SH1106顯示屏, 驅(qū)動(dòng)起始地址有差異,SSD1306 是00,而項(xiàng)目中這個(gè)是02 嘗試修改差異,但是還是
    發(fā)表于 01-16 20:10

    【瑞薩RA6E2地奇星開(kāi)發(fā)板試用】DHT11 測(cè)量溫濕度

    傳感器:DHT11 溫濕度傳感器 顯示屏I2C 接口 OLED12864(128×64 分辨率,SSD1306 驅(qū)動(dòng))? 輔助工具:杜邦線、5V 電源(或
    發(fā)表于 12-19 18:50

    【瑞薩RA6E2地奇星開(kāi)發(fā)板試用】OLED 屏幕驅(qū)動(dòng),串口打印

    Configuration 設(shè)置 I2C 接口,原理圖如下: 開(kāi)發(fā)板I2C 接口是 P100、P101,對(duì)應(yīng) SCI I2C 0 引腳配置: 外設(shè)配置:
    發(fā)表于 12-19 18:27

    【RA-Eco-RA6M4開(kāi)發(fā)板評(píng)測(cè)】I2C使用

    就是配置相應(yīng)的驅(qū)動(dòng)。首先配置I2C。 接下來(lái)就是配置OLED驅(qū)動(dòng)。筆者這里使用的SSD1306的軟件包。 以上參數(shù)默認(rèn)即可,筆者這里還使用了SS
    發(fā)表于 11-09 21:58

    【RA4E2開(kāi)發(fā)板評(píng)測(cè)】開(kāi)箱、Hello World(串口+OLED)

    Configuration 設(shè)置 I2C 接口,原理圖如下: 開(kāi)發(fā)板I2C 接口是 P100、P101,對(duì)應(yīng) SCI I2C 0 引腳配置: 外設(shè)配置:
    發(fā)表于 10-13 21:33

    【RA-Eco-RA6M4開(kāi)發(fā)板評(píng)測(cè)】點(diǎn)亮OLED顯示屏

    【點(diǎn)亮OLED顯示屏】 瑞薩 RA6M2 支持硬件 I2C,開(kāi)發(fā)板上有 OLED 顯示屏接口,如下:
    發(fā)表于 08-31 10:25

    【Milk-V Duo S 開(kāi)發(fā)板免費(fèi)體驗(yàn)】DuoS 驅(qū)動(dòng)舵機(jī)

      本篇使用 DuoS 的 PWM 輸出,來(lái)驅(qū)動(dòng)舵機(jī)轉(zhuǎn)動(dòng) 硬件準(zhǔn)備 1、DuoS 開(kāi)發(fā)板 2、舵機(jī) 3、OLED12864 顯示屏
    發(fā)表于 08-23 06:55

    【Milk-V Duo S 開(kāi)發(fā)板免費(fèi)體驗(yàn)】DuoS 超聲波測(cè)距 OLED 顯示

    ,并將測(cè)距結(jié)果顯示到 OLED 顯示屏上 硬件準(zhǔn)備 1、DuoS 開(kāi)發(fā)板 2、HC-SR04 超聲波測(cè)距模塊 3、OLED12864
    發(fā)表于 08-22 03:55

    【微五科技CF5010RBT60開(kāi)發(fā)板試用體驗(yàn)】硬件IIC點(diǎn)亮OLED小屏幕

    適配: 在標(biāo)準(zhǔn)的 SSD1306 OLED 驅(qū)動(dòng)庫(kù) (ssd1306.c/.h) 中,替換掉原有的 IIC (i2c.c/.h) 發(fā)送/接收
    發(fā)表于 08-08 11:01

    【嘉楠堪智K230開(kāi)發(fā)板試用體驗(yàn)】第一彈:遲到的OLED屏幕驅(qū)動(dòng),巨坑解決

    ) self.write_cmd(self.pages - 1) self.write_data(self.buffer) class SSD1306_I2C(SSD1306): def
    發(fā)表于 07-28 01:08

    【RA-Eco-RA6M4開(kāi)發(fā)板評(píng)測(cè)】2、I2C外設(shè)驅(qū)動(dòng)OLED屏幕和移植u8g2

    Delay的回調(diào)函數(shù)實(shí)現(xiàn); 與通訊接口(比如I2C、SPI)相關(guān)的數(shù)據(jù)傳輸回調(diào)函數(shù)。 這兩個(gè)函數(shù)的實(shí)現(xiàn)在u8g2 Wiki手冊(cè)中可以找到相關(guān)的代碼實(shí)現(xiàn)模板。 移植u8g2 在RASC中設(shè)置開(kāi)
    發(fā)表于 07-23 13:51

    ssd1306單片 CMOS OLED/PLED 驅(qū)動(dòng)芯片中文手冊(cè)

    電子發(fā)燒友網(wǎng)站提供《ssd1306單片 CMOS OLED/PLED 驅(qū)動(dòng)芯片中文手冊(cè).pdf》資料免費(fèi)下載
    發(fā)表于 07-10 16:13 ?36次下載

    【BPI-CanMV-K230D-Zero開(kāi)發(fā)板體驗(yàn)】+片溫檢測(cè)及顯示

    由于該開(kāi)發(fā)板沒(méi)配相應(yīng)的顯示器件,為進(jìn)行顯示需自行配置顯示器件。 為了與其小巧的身材相匹配,就選取了一款I2C接口的0.91寸單色OLED
    發(fā)表于 06-29 08:40

    【RA-Eco-RA4M2開(kāi)發(fā)板評(píng)測(cè)】利用第二個(gè)I2C接口驅(qū)動(dòng)OLED

    外設(shè)配置 在RT-Thread的scons工具上進(jìn)行,先打開(kāi)SCI配置好SCI2I2C模式。 同時(shí)加上SSD1306 OLED的驅(qū)動(dòng)組件包,并配置好。OLED
    發(fā)表于 05-25 10:09

    【RA-Eco-RA4M2開(kāi)發(fā)板評(píng)測(cè)】DHT11測(cè)溫濕度OLED顯示

    【點(diǎn)亮OLED顯示屏】 瑞薩 RA4M2 支持硬件 I2C,開(kāi)發(fā)板上有 I2C OLED 接口
    發(fā)表于 05-11 13:53