【在esp32的3D打印机主板上配置marlin固件OLED】

在esp32控制器的3D打印机主板上配置marlin固件的OLED

先给出结论:在marlin固件中开启I2C OLED只能使用GPIO22->SCL GPIO21->SDA
因为marlin固件关于OLED的驱动都来自U8glib-HAL这个库。这个库是arduino的库。
而arduino的底层配置文件将GPIO22和GPIO21设置为了I2C接口

想着给es32的3D打印机主板的marlin中配置OLED。一开始的OLED的scl引脚连接的是IO17 sda引脚连接的是IO16,本想着在固件中去改io口.先是按照marlin官网Home | Marlin Firmware -> configure ->Configuration.h->LCD Controller->I2C Graphical LCDs->使能OLED_PANEL_TINYBOY2当前的定义。使能之后就可以使用oled 编码器,蜂鸣器。

DIY Tiny OLED I2C full graphics controller 详情见这篇帖子。这篇帖子的第7页给出了具体的修改方法。不过给出的是BTT SKR V1.4这个板子。不过问题不大。照着改就是了。
具体配置情况如下:
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配置如下代码(这个好像不用搞就行)

#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、在对应的pins文件夹中配置相关的板子的文件中的引脚,我选择的ESP32板子为 BOARD_ESPRESSIF_ESP32这板子对应的引脚为:Marlin\src\pins\esp32\pins_ESP32.h然后配置相应的引脚:

+    #define BTN_EN1                        16 //这个引脚定义自己的
+    #define BTN_EN2                        17
+    #define BTN_ENC                        18  
+    #define BEEPER_PIN                     19

如果不使用蜂鸣器的话可以将BEEPER_PIN注释掉或者引脚改为-1。

但是,配置中有编码器的引脚,有蜂鸣器的引脚就是没有scl和sda的引脚,那我的OLED屏幕怎么办。这让我百思不得其解,于是就开始了漫长的百度之旅。

直到我看到了(开源)ESP32 3D打印机主板的OLED显示屏,只能用4线OLED显示屏,专为我开源的主板设计的,其它主板不支持_哔哩哔哩_bilibili这个视频。简直如获至宝,赶紧下下来查阅一番。大体配置和上面相似,并且也没有配置scl和sda引脚,这不禁让人怀疑,两个板子都没有配置i2c的引脚,并且在祈-FPV开源的板子中这不禁让人怀疑是不是引脚的问题。
于是就开始查esp32nodemcu arduino的引脚图我发现仅有io22和io21标注了i2c标识。

我又搜索esp32 i2c arduino 于是我又发现了这篇文章:esp32 在arduino1.8下的I2C引脚

于是破案了。Arduino底层调用了io21和io22作为i2c引脚然后esp32的u8g2 oled图形库又sda和scl作为驱动oled。所以在marlin的引脚定义中没有定义关于I2C的引脚。因此得出结论,在marlin固件中esp32想要使用I2C OLED屏幕必须使用IO21和IO22引脚。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值