你好,我是愛吃魚香ROS的小魚。本節(jié)我們就嘗試直接使用I2C協(xié)議來點(diǎn)亮OLED,因?yàn)橹饕獪y(cè)試I2C協(xié)議,所以對(duì)于復(fù)雜的顯示處理部分小魚就略過了,畢竟有方便的開源庫使用,我們也不用那么糾結(jié),如果實(shí)在想使用I2C直接驅(qū)動(dòng)OLED,可以去看小魚在雷達(dá)驅(qū)動(dòng)板上手?jǐn)]的代碼。
本教程所使用硬件平臺(tái)為MicroROS學(xué)習(xí)板V1.0.0,可點(diǎn)擊閱讀原文購買及查看詳情

一、新建工程
還是老樣子,不過這次不需要添加任何依賴。

二、I2CAPI介紹
這里我們需要了解幾個(gè)Wire常用的API。
1.Wire.begin 初始化可以設(shè)置引腳,如Wire.begin(18, 19);
2.Wire.beginTransmission,開始傳輸,傳入目標(biāo)地址,如OLED-0x3C Wire.beginTransmission(0x3c);
3.Wire.write 開始寫數(shù)據(jù), 直接傳入要寫的數(shù)據(jù)即可
4.Wire.endTransmission 結(jié)束傳輸,寫入完成后調(diào)用
三、編寫代碼
#include < Arduino.h >
#include "Wire.h"
uint8_t cmd_ssd1315[] = {0xae, 0x00, 0x10, 0x40, 0x81, 0xcf, 0xa1, 0xc8, 0xa6, 0xa8,
0x3f, 0xd3, 0x00, 0xd5, 0x80, 0xd9, 0xf1, 0xda, 0x12, 0xdb,
0x40, 0x20, 0x00, 0x8d, 0x14, 0xa4, 0xa6, 0xaf};
void setup()
{
Wire.begin(18, 19);
Wire.beginTransmission(0x3c);
for (int i = 0; i < 28; i++)
{
Wire.write(cmd_ssd1315[i]);
}
Wire.endTransmission();
}
void loop()
{
// put your main code here, to run repeatedly:
}
這里的代碼,我們將cmd_ssd1315中的數(shù)據(jù)依次通過I2C寫入地址為0x3C的設(shè)備中,這些數(shù)據(jù)分別代表著初始化OLED所需要的參數(shù),如亮度、方向等信息,具體請(qǐng)參考SSD1315的手冊(cè),或自行百度。
四、測(cè)試
將代碼下載到開發(fā)板,查看OLED,可以看到OLED此時(shí)成功亮起,有很多斑點(diǎn),屬于正?,F(xiàn)象。

五、總結(jié)
本節(jié)我們主要嘗試通過I2C發(fā)送一段指令給OLED,并將其成功點(diǎn)亮。至此我們嵌入式開發(fā)基礎(chǔ)篇的內(nèi)容就全部完成了,下一章開始我們將正式進(jìn)入MicroROS的開發(fā)中來,到時(shí)會(huì)有我們熟悉的WIFI、藍(lán)牙等模塊的使用。
-
OLED
+關(guān)注
關(guān)注
121文章
6357瀏覽量
233605 -
代碼
+關(guān)注
關(guān)注
30文章
4967瀏覽量
73935 -
學(xué)習(xí)板
+關(guān)注
關(guān)注
0文章
47瀏覽量
12618 -
I2C協(xié)議
+關(guān)注
關(guān)注
0文章
29瀏覽量
9216 -
ROS
+關(guān)注
關(guān)注
1文章
293瀏覽量
18717
發(fā)布評(píng)論請(qǐng)先 登錄
深入剖析I2C協(xié)議
I2C總線協(xié)議及其應(yīng)用
I2C最新協(xié)議標(biāo)準(zhǔn)
I2C通信協(xié)議應(yīng)該如何學(xué)習(xí)
I2C系列的合集,可以系統(tǒng)學(xué)習(xí)I2C協(xié)議
STM32學(xué)習(xí)之I2C協(xié)議(讀寫EEPROM)
硬件I2C與模擬I2C
一文看懂I2C協(xié)議
I2C通信協(xié)議:了解I2C Primer、 PMBus和SMBus
I2C串行總線協(xié)議是什么?I2C總線有哪些優(yōu)點(diǎn)?
I2C協(xié)議的基礎(chǔ)知識(shí)
使用I2C協(xié)議點(diǎn)亮OLED
評(píng)論