电子说
如果你一直在关注单色OLED显示屏,且需要更大尺寸的,那么这款2.7寸的OLED显示模块会让你满意。它对角线尺寸为2.7寸,由于OLED显示屏的高对比度,显示内容非常清晰可读。该显示屏由128x64个白色OLED像素组成,每个像素由控制芯片控制开关。因为显示屏自身发光,无需背光源,这不仅降低了运行所需的功率,还带来了高对比度,显示效果十分清晰。
文件下载:2674.pdf
驱动芯片SSD1325支持8位和SPI两种通信方式,个人更推荐SPI方式,只需4到5根线即可。OLED需要3.3V电源供电,通信也采用3.3V逻辑电平。我们还提供了一个面包板友好型的电平转换器,可将3V或5V转换为3V,方便与像Arduino这样的5V逻辑设备配合使用。显示屏的功耗会因点亮像素的多少而有所不同,平均从3.3V电源获取约50 - 150mA的电流。OLED驱动内置了一个简单的开关电容电荷泵,可将3.3V转换为高电压来驱动OLED。
每个订单包含一个组装好的OLED模块,带有漂亮的边框和4个安装孔。由于显示屏采用3V逻辑和电源,我们还配备了HC4050电平转换器和一个220uF的电容,因为我们发现Arduino为这个大显示屏供电时,3.3V电源可能需要更多的电容。显示屏未附带引脚头,但会提供一根引脚头供你自行焊接。另外,显示屏可能默认处于8位模式,你可以通过简单的焊接操作将其从8位模式切换到SPI模式。
这些模块的引脚标记不太清晰,最左边的引脚为1号,依次向右递增,最右边的为20号。
这些模块可以在SPI或8位模式下使用。不过,切换模式的唯一方法是对模块背面的跳线进行拆焊和焊接操作。
模块默认可能是这种设置,此时R20和R18电阻就位,而R21和R19缺失。
这可能是你想要的模式。你需要用烙铁加热电阻,移除R18和R20电阻,甚至可能需要熔化一些焊锡。然后移除电阻,并焊接上R19和R21(可以使用任何0 - 10K的0805电阻或一段导线)。
我们将以Arduino UNO兼容板为例进行演示。如果你使用的是3V逻辑设备,可以跳过电平转换器,直接将微控制器连接到显示屏。你也可以使用其他类型的电平转换器。任何具有4或5个引脚的微控制器都可以使用,但建议先使用UNO进行测试,再尝试其他处理器。别忘了将显示屏设置为SPI模式,具体操作可参考组装步骤。
由于该显示屏支持SPI,我们可以使用硬件或“软件”SPI。为了使所有Arduino的连接方式一致,我们先从“软件”SPI开始。以下是应使用的引脚连接:
后续如果想使用硬件SPI,或者更改引脚,都可以进行相应调整。
还需要为HC4050电平转换器供电,将引脚1连接到3V(红色线),引脚8连接到地(黑色线)。
我们随订单提供了一个220uF的电容,因为发现通过Arduino的3.3V稳压器供电时,3V线路的电压波动较大,建议安装该电容。将电容的负极引脚连接到地,正极引脚连接到3V。
要开始读取传感器数据,需要从Arduino库管理器中下载Adafruit_SSD1325和Adafruit_GFX库。打开Arduino库管理器,搜索并安装这两个库。如果使用的是较旧版本(1.8.10之前)的Arduino IDE,还需要手动定位并安装Adafruit_BusIO库(较新版本会自动处理)。我们也有关于Arduino库安装的详细教程,可参考:http://learn.adafruit.com/adafruit-all-about-arduino-libraries-install-use 。
重启Arduino软件后,会看到一个名为Adafruit_SSD1325的新示例文件夹,其中有一个名为ssd1325test的示例。将该草图上传到Arduino,显示屏应该会立即更新显示内容。如果没有显示任何内容,请确保连接正确,可参考前面的连接图,同时检查是否已将模块转换为“SPI”模式。
显示屏正常工作后,可以更改引脚。如果使用硬件SPI,时钟和MOSI引脚是固定的,无法更改;但可以切换到软件SPI,虽然速度稍慢,但可以选择任何引脚。找到以下代码行进行修改:
// If using software SPI, define CLK and MOSI
#define OLED_CLK 13
#define OLED_MOSI 11
// These are neede for both hardware & software SPI
#define OLED_CS 10
#define OLED_RESET 9
#define OLED_DC 8
将其修改为你想要的引脚即可。
如果需要更高的速度,可以“升级”到硬件SPI。硬件SPI速度更快,绘图速度可能快2倍,但需要使用硬件SPI引脚。
要启用硬件SPI,找到以下代码行:
// this is software SPI, slower but any pins
Adafruit_SSD1325 display(OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, OLED_CS);
// this is for hardware SPI, fast! but fixed oubs
//Adafruit_SSD1325 display(OLED_DC, OLED_RESET, OLED_CS);
注释掉第一行,取消注释第二行。
Arduino的Adafruit_GFX库为我们所有的TFT、LCD和OLED显示屏提供了通用的语法和一组图形函数。这使得Arduino草图可以轻松在不同类型的显示屏之间进行适配,并且任何新功能、性能改进和错误修复都将立即应用到我们所有的显示屏上。该库可以让你绘制点、线、矩形、圆角矩形、三角形、文本等。详细教程可参考:http://learn.adafruit.com/adafruit-gfx-graphicslibrary 。由于这是一个“缓冲”显示屏,每当需要更新OLED时,别忘了调用“display()”对象函数,这样可以一次性绘制整个显示屏,提高显示效率。
借助Adafruit_Blinka(我们的CircuitPython - for - Python兼容性库),你可以将该传感器与任何CircuitPython微控制器板或具有GPIO和Python的计算机配合使用。
要在Adafruit CircuitPython板上使用SSD1325 OLED,需要在板上安装Adafruit CircuitPython DisplayIO SSD1325模块。首先确保你的板运行的是Adafruit CircuitPython 5.0或更高版本。然后,需要安装使用硬件所需的库,可仔细按照步骤从Adafruit的CircuitPython库捆绑包中查找并安装这些库。我们的CircuitPython入门指南有关于如何安装库捆绑包的详细页面。如果你愿意,也可以在板上手动单独安装库,例如adafruit_displayio_ssd1325 。在继续之前,确保板的lib文件夹或根文件系统中复制了adafruit_displayio_ssd1325.mpy文件。接下来,连接到板的串行REPL,进入CircuitPython的“>>>”提示符。
对于代码示例,还需要一个额外的库。我们使用了Adafruit CircuitPython Display Text库,以避免代码过于复杂。按照与驱动库相同的方式,将adafruit_display_text文件夹复制到CircuitPython设备的lib文件夹中进行安装。
如果显示屏通过I2C连接到板上,首先需要初始化I2C总线。导入必要的模块:
import board
然后使用默认的SCL和SDA引脚创建I2C实例(如果使用Feather或类似的Adafruit板,引脚会有标记):
i2c = board.I2C()
初始化I2C接口后,创建I2CDisplay总线实例:
import adafruit_ssd1325
import displayio
display_bus = displayio.I2CDisplay(i2c, device_address=0x3c)
最后,传入显示总线并创建SSD1325 I2C驱动实例:
display = adafruit_ssd1325.SSD1325(display_bus, width=128, height=64)
此时应该能看到REPL的图像。注意,SSD1325类初始化器的最后两个参数是显示屏的宽度和高度(以像素为单位),要确保使用正确的值。
如果将OLED的引脚4连接到 +3V而不是地,I2C地址将变为0x3d :
display_bus = displayio.I2CDisplay(i2c, device_address=0x3d)
display = adafruit_ssd1325.SSD1325(display_bus, width=128, height=64)
如果显示屏通过SPI连接到板上,首先需要初始化SPI总线。如果使用微控制器板,运行以下命令:
import board
import displayio
import adafruit_ssd1325
displayio.release_displays()
tft_cs = board.D5
spi = board.SPI()
tft_dc = board.D6
tft_reset = board.D9
display_bus = displayio.FourWire(spi, command=tft_dc, chip_select=tft_cs, reset=tft_reset, baudrate=1000000)
display = adafruit_ssd1325.SSD1325(display_bus, width=128, height=64)
FourWire初始化器的参数是连接到显示屏的DC、CS和复位引脚。由于使用了关键字参数,它们可以处于任何位置。同样,要确保使用与板连接的正确引脚名称。
# SPDX-FileCopyrightText: 2021 ladyada for Adafruit Industries
# SPDX-License-Identifier: MIT
"""
This test will initialize the display using displayio and draw a solid white
background, a smaller black rectangle, and some white text.
"""
import board
import displayio
import terminalio
from adafruit_display_text import label
import adafruit_ssd1325
displayio.release_displays()
oled_cs = board.D5 # Use for SPI
spi = board.SPI()
oled_dc = board.D6
display_bus = displayio.FourWire(spi, command=oled_dc, chip_select=oled_cs, baudrate=1000000, reset=board.D9)
# i2c = board.I2C() # uses board.SCL and board.SDA # Use for I2C
# i2c = board.STEMMA_I2C() # For using the built-in STEMMA QT connector on a microcontroller
# display_bus = displayio.I2CDisplay(i2c, device_address=0x3c)
WIDTH = 128
HEIGHT = 64
BORDER = 8
FONTSCALE = 1
display = adafruit_ssd1325.SSD1325(display_bus, width=WIDTH, height=HEIGHT)
# Make the display context
splash = displayio.Group()
display.show(splash)
color_bitmap = displayio.Bitmap(display.width, display.height, 1)
color_palette = displayio.Palette(1)
color_palette[0] = 0xFFFFFF # White
bg_sprite = displayio.TileGrid(color_bitmap, pixel_shader=color_palette, x=0, y=0)
splash.append(bg_sprite)
# Draw a smaller inner rectangle
inner_bitmap = displayio.Bitmap(display.width - BORDER * 2, display.height - BORDER * 2, 1)
inner_palette = displayio.Palette(1)
inner_palette[0] = 0x000000 # Black
inner_sprite = displayio.TileGrid(inner_bitmap, pixel_shader=inner_palette, x=BORDER, y=BORDER)
splash.append(inner_sprite)
# Draw a label
text = "Hello World!"
text_area = label.Label(terminalio.FONT, text=text, color=0x888888)
text_width = text_area.bounding_box[2] * FONTSCALE
text_group = displayio.Group(scale=FONTSCALE, x=display.width // 2 - text_width // 2, y=display.height // 2)
text_group.append(text_area) # Subgroup for text scaling
splash.append(text_group)
while True:
pass
全部0条评论
快来发表一下你的评论吧 !