Arduino SSD1306显示屏-奇怪的行为
我有两个SSD1306(126x64)显示器,其运行方式非常奇怪: 下面是我运行的草图的简短视频:Arduino SSD1306显示屏-奇怪的行为,arduino,hardware,atmega,Arduino,Hardware,Atmega,我有两个SSD1306(126x64)显示器,其运行方式非常奇怪: 下面是我运行的草图的简短视频: 草图本身是(adafruit SSD1306+GFX)。所有显示器均位于I2C端口0x3c上 左边的那个来自不同的制作人,效果很好。我不知道我的设备是否有缺陷,或者它们是否需要稍微不同的处理。当写入显示器时,整个图像似乎被绘制到顶部的6-8像素区域中 如果有人有这方面的经验,我将不胜感激。我也不确定这是否是发布此消息的正确位置,所以请告诉我是否有更合适的SE站点。为了让运行在同一总线上的I2C设
草图本身是(adafruit SSD1306+GFX)。所有显示器均位于I2C端口0x3c上 左边的那个来自不同的制作人,效果很好。我不知道我的设备是否有缺陷,或者它们是否需要稍微不同的处理。当写入显示器时,整个图像似乎被绘制到顶部的6-8像素区域中
如果有人有这方面的经验,我将不胜感激。我也不确定这是否是发布此消息的正确位置,所以请告诉我是否有更合适的SE站点。为了让运行在同一总线上的I2C设备工作,每个设备都需要有自己的I2C地址,不幸的是,SSD1306只有两个I2C地址可供选择,0x3c或0x3d 对于在同一I2C上运行的两个以上SSD1306,您需要一个Arduino板,该板可以提供多个I2C接口,或者添加一些硬件解决方案,如 同时,如果要同时运行两个显示,则需要修改代码以创建具有不同地址的两个显示实例 更改行:
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println(F("SSD1306 allocation failed"));
for(;;); // Don't proceed, loop forever
}
致:
更改行:
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println(F("SSD1306 allocation failed"));
for(;;); // Don't proceed, loop forever
}
到
对于所有后续调用display
方法,您需要将其更改为display1
,并为display2
添加另一个类似的行,例如:
display.display();
将需要更改为:
dispaly1.display();
display2.display();
您用于3个显示器的3个I2C地址是什么?草图的链接仅适用于一个LCD显示器,那么3个显示器的实际草图是什么?它们都在上面的0x3C上并行(这是相同的草图)。他们各自的行为都一样。谢谢你的提示;但他们仍然以这种方式单独行动。正常的仍然工作,失败的仍然失败。你用I2C扫描仪扫描过这些屏幕以确保有地址吗?是的,它们都在0x3C上