在esp32控制器的3D打印機(jī)主板上配置marlin固件的OLED
先給出結(jié)論:在marlin固件中開啟I2C OLED只能使用GPIO22->SCL GPIO21->SDA
因?yàn)閙arlin固件關(guān)于OLED的驅(qū)動(dòng)都來(lái)自U8glib-HAL這個(gè)庫(kù)。這個(gè)庫(kù)是arduino的庫(kù)。
而arduino的底層配置文件將GPIO22和GPIO21設(shè)置為了I2C接口
想著給es32的3D打印機(jī)主板的marlin中配置OLED。一開始的OLED的scl引腳連接的是IO17 sda引腳連接的是IO16,本想著在固件中去改io口.先是按照marlin官網(wǎng)Home | Marlin Firmware -> configure ->Configuration.h->LCD Controller->I2C Graphical LCDs->使能OLED_PANEL_TINYBOY2當(dāng)前的定義。使能之后就可以使用oled 編碼器,蜂鳴器。
DIY Tiny OLED I2C full graphics controller 詳情見這篇帖子。這篇帖子的第7頁(yè)給出了具體的修改方法。不過(guò)給出的是BTT SKR V1.4這個(gè)板子。不過(guò)問(wèn)題不大。照著改就是了。
具體配置情況如下:
1、Configuration.h 文件中使能定義 OLED_PANEL_TINYBOY2
--- Marlin/Configuration.h
// Tiny OLED 128x64 OLED, see [reprap.org]
#define OLED_PANEL_TINYBOY2
2、Marlin/src/inc/Conditionals_LCD.h配置如下代碼(這個(gè)好像不用搞就行)
#define IS_U8GLIB_SSD1306
#define IS_ULTIPANEL
+ #elif ENABLED(OLED_PANEL_TINYOLED)
+
+ #ifndef U8GLIB_SSD1306 // define U8GLIB_SSD1306 in Configuration.h if not using SH1106 version
+ #define U8GLIB_SH1106 // SSD1306 and SH1106 are similar, but have slightly different horizontal shift
+ #endif
+ #define ULTIPANEL
+ #define NEWPANEL
+ #define ULTRA_LCD
+ #define DOGLCD
+ #define REVERSE_ENCODER_DIRECTION
+ #define REVERSE_MENU_DIRECTION
3、在對(duì)應(yīng)的pins文件夾中配置相關(guān)的板子的文件中的引腳,我選擇的ESP32板子為 BOARD_ESPRESSIF_ESP32這板子對(duì)應(yīng)的引腳為:Marlin\src\pins\esp32\pins_ESP32.h然后配置相應(yīng)的引腳:
+ #define BTN_EN1 16 //這個(gè)引腳定義自己的
+ #define BTN_EN2 17
+ #define BTN_ENC 18
+ #define BEEPER_PIN 19
如果不使用蜂鳴器的話可以將BEEPER_PIN注釋掉或者引腳改為-1。
但是,配置中有編碼器的引腳,有蜂鳴器的引腳就是沒(méi)有scl和sda的引腳,那我的OLED屏幕怎么辦。這讓我百思不得其解,于是就開始了漫長(zhǎng)的百度之旅。
直到我看到了(開源)ESP32 3D打印機(jī)主板的OLED顯示屏,只能用4線OLED顯示屏,專為我開源的主板設(shè)計(jì)的,其它主板不支持_嗶哩嗶哩_bilibili這個(gè)視頻。簡(jiǎn)直如獲至寶,趕緊下下來(lái)查閱一番。大體配置和上面相似,并且也沒(méi)有配置scl和sda引腳,這不禁讓人懷疑,兩個(gè)板子都沒(méi)有配置i2c的引腳,并且在祈-FPV開源的板子中這不禁讓人懷疑是不是引腳的問(wèn)題。
于是就開始查esp32nodemcu arduino的引腳圖我發(fā)現(xiàn)僅有io22和io21標(biāo)注了i2c標(biāo)識(shí)。
我又搜索esp32 i2c arduino 于是我又發(fā)現(xiàn)了這篇文章:esp32 在arduino1.8下的I2C引腳文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-409194.html
于是破案了。Arduino底層調(diào)用了io21和io22作為i2c引腳然后esp32的u8g2 oled圖形庫(kù)又sda和scl作為驅(qū)動(dòng)oled。所以在marlin的引腳定義中沒(méi)有定義關(guān)于I2C的引腳。因此得出結(jié)論,在marlin固件中esp32想要使用I2C OLED屏幕必須使用IO21和IO22引腳。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-409194.html
到了這里,關(guān)于【在esp32的3D打印機(jī)主板上配置marlin固件OLED】的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!