你好,我是愛吃魚香ROS的小魚。本節我們就嘗試直接使用I2C協議來點亮OLED,因為主要測試I2C協議,所以對于復雜的顯示處理部分小魚就略過了,畢竟有方便的開源庫使用,我們也不用那么糾結,如果實在想使用I2C直接驅動OLED,可以去看小魚在雷達驅動板上手擼的代碼。
本教程所使用硬件平臺為MicroROS學習板V1.0.0,可點擊閱讀原文購買及查看詳情
一、新建工程
還是老樣子,不過這次不需要添加任何依賴。
二、I2CAPI介紹
這里我們需要了解幾個Wire常用的API。
1.Wire.begin 初始化可以設置引腳,如Wire.begin(18, 19);
2.Wire.beginTransmission,開始傳輸,傳入目標地址,如OLED-0x3C Wire.beginTransmission(0x3c);
3.Wire.write 開始寫數據, 直接傳入要寫的數據即可
4.Wire.endTransmission 結束傳輸,寫入完成后調用
三、編寫代碼
#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
中的數據依次通過I2C寫入地址為0x3C的設備中,這些數據分別代表著初始化OLED所需要的參數,如亮度、方向等信息,具體請參考SSD1315的手冊,或自行百度。
四、測試
將代碼下載到開發板,查看OLED,可以看到OLED此時成功亮起,有很多斑點,屬于正常現象。
五、總結
本節我們主要嘗試通過I2C發送一段指令給OLED,并將其成功點亮。至此我們嵌入式開發基礎篇的內容就全部完成了,下一章開始我們將正式進入MicroROS的開發中來,到時會有我們熟悉的WIFI、藍牙等模塊的使用。
-
OLED
+關注
關注
119文章
6278瀏覽量
227625 -
代碼
+關注
關注
30文章
4894瀏覽量
70452 -
學習板
+關注
關注
0文章
46瀏覽量
12356 -
I2C協議
+關注
關注
0文章
26瀏覽量
8774 -
ROS
+關注
關注
1文章
286瀏覽量
17641
發布評論請先 登錄
I2C總線協議及其應用

I2C通信協議應該如何學習

I2C系列的合集,可以系統學習I2C協議
STM32學習之I2C協議(讀寫EEPROM)

嵌入式內核及驅動開發-09IIC子系統框架使用(I2C協議和時序,I2C驅動框架,I2C從設備驅動開發,MPU6050硬件連接

硬件I2C與模擬I2C

一文看懂I2C協議

I2C通信協議:了解I2C Primer、 PMBus和SMBus

評論