完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
尝试将 esp8266 nodemcu 与 dcs bios 一起使用,我测试了 OLED,当我使用此代码时,它可以通过 U8g2 模板的图形测试正常工作,它可以在 mega 2560 上正常工作,但是当切换到 esp8266 时,它会给我一些奇怪的 OLED 人工制品
代码:#include #include #include #include //#define DCSBIOS_IRQ_SERIAL // MEGA 2560 #define DCSBIOS_DEFAULT_SERIAL // ESP8266node mcu #include "DcsBios.h" int count; //U8G2_SH1122_256X64_F_4W_HW_SPI u8g2(U8G2_R2, /* cs=*/ 10, /* dc=*/ 5, /* reset=*/ 4); // Mega 2560 scl pin52, sda pin U8G2_SH1122_256X64_F_4W_SW_SPI u8g2(U8G2_R2, /* clock=*/ 14, /* data=*/ 13, /* cs=*/ 15, /* dc=*/ 5, /* reset=*/ 4); // ESP 8266 String comDisplay[3]; void setup() { count = 0; u8g2.begin(); Wire.begin(); u8g2.clearDisplay(); u8g2.clearBuffer(); u8g2.sendBuffer(); u8g2.setFont(Hornet_UFC); u8g2.setBusClock(850000); DcsBios::setup(); } void updateComDisplay(int changed,char* newValue) { comDisplay[changed] = cleanUpCom(newValue); u8g2.clearBuffer(); // clear the internal memory u8g2.setCursor(0, 45); u8g2.print(comDisplay[0]); u8g2.setCursor(57, 45); u8g2.print(comDisplay[1]); u8g2.setCursor(75, 45); u8g2.print(comDisplay[2]); u8g2.sendBuffer(); } char* cleanUpCom(char* newValue) { switch (newValue[0]) { case '`': newValue[0]='1'; break; case '~': newValue[0]='2'; break; } return newValue; } void onUfcScratchpadNumberDisplayChange(char* newValue) { updateComDisplay(2, newValue); } DcsBios::StringBuffer<8> ufcScratchpadNumberDisplayBuffer(0x7446, onUfcScratchpadNumberDisplayChange);/// main void onUfcScratchpadstring2DisplayChange(char* newValue) { updateComDisplay(1, newValue); } DcsBios::StringBuffer<2> ufcScratchpadString2DisplayBuffer(0x7450, onUfcScratchpadString2DisplayChange);///mid void onUfcScratchpadString1DisplayChange(char* newValue) { updateComDisplay(0, newValue); } DcsBios::StringBuffer<2> ufcScratchpadString1DisplayBuffer(0x744e, onUfcScratchpadString1DisplayChange);///left //// updateComDisplay(2, newValue); void loop() { DcsBios::loop(); } ESP8266 glitch Mega correct display im quite noob with arduino 所以也许有人可以查明问题谢谢 |
|
相关推荐
1个回答
|
|
在将 esp8266 nodemcu 与 dcs bios 一起使用时,您需要确保您的引脚定义和串口设置正确,并且您的 DcsBios 库已正确安装。
在 OLEd 的情况下,您需要确保您的 OLED 屏幕兼容 ESP8266 nodemcu,并且您的代码可以通过正确的引脚访问它。如果您收到奇怪的 OLED 人工制品代码,那么您需要检查您的 OLED 屏幕是否被正确连接并且代码是否正确访问它。 下面是一个示例代码,用于在 ESP8266 nodemcu 上将 OLED 屏幕与 dcs bios 一起使用: #include #include #include #include "DcsBios.h" #define OLED_RESET 0 Adafruit_SSD1306 display(OLED_RESET); void setup() { Serial.begin(115200); display.begin(SSD1306_SWITCHCAPVCC, 0x3C); dcsbios_setup(); // 初始化 DcsBios 库 } void loop() { dcsbios_loop(); // 处理 DcsBios 消息 display.clearDisplay(); // 清空 OLED 屏幕 display.setCursor(0,0); // 设置光标 display.print("Hello DcsBios!"); // 打印消息 display.display(); // 刷新 OLED 屏幕 } 在此示例中,我们使用 Adafruit_SSD1306 库与 OLED 屏幕进行交互,并在 OLED 屏幕上打印消息。我们还使用了 DcsBios 库来处理 DcsBios 消息,以便与外部硬件进行通信。请注意,我们使用了 dcsbios_setup() 和 dcsbios_loop() 函数,以确保正确处理 DcsBios 消息。 请根据您的硬件和库版本适当修改此代码,并确保正确设置您的引脚和串口设置。如果您遇到任何问题,请检查您的硬件连接和代码,并查看您使用的库的文档以获取更多帮助。 |
|
|
|
只有小组成员才能发言,加入小组>>
961 浏览 1 评论
552浏览 6评论
461浏览 5评论
有没有办法在不使用混杂模式的情况下实现Wifi驱动程序接收缓冲区访问中断呢?
446浏览 5评论
447浏览 4评论
417浏览 4评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-26 13:01 , Processed in 0.576695 second(s), Total 76, Slave 59 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号