这个小型图形库支持点、线和字符的绘制命令,并可运行于ATtiny85处理器上的I2C 128×64 OLED显示器上。
相较于传统的显示缓冲区,该图形库采用一种巧妙的方法避免了缓存区,以支持内存资源受限的处理器。同时,该图形库还可兼容基于SH1106驱动芯片的I2C OLED显示器。
我用 Banggood [3] 提供的 Geekcreit 1.3 英寸 I2C OLED 显示器测试了这个库:
由于 I2C 只需要两条 I/O 线,因此图形显示可在 ATtiny85 上留出三行空闲线路供您自己的应用程序使用:
请注意,此库仅适用于具有四个引脚的 I2C 显示器。它不适用于SPI显示器或基于SSD1306或SSD1309驱动程序芯片的显示器,因为这些都不支持读回显示器内存。
显示器分为 8 个 8 像素高带(称为页面),一个字节对应于 8 个像素的垂直列,位的排序如下图所示:
这是一个基于ST7735和ST7789驱动芯片的小型彩色TFT显示器系列的图形库。
![87457&wxfrom=5&wx_lazy=1&wx_co=1)
此库允许您使用可选比例因子绘制点、绘制线条、绘制填充矩形和打印文本。项目中包括了一个演示直方图绘图程序,该程序可以调整自身以适应支持的每个显示器。
与大多数其他TFT显示库不同,该库不需要内存缓冲区,允许它在任何处理器上运行,直到ATtiny85。
这些显示器是SPI的,需要四个引脚来驱动显示器,在ATtiny85上留出一个引脚以连接到另一个器件,例如温度传感器。如果需要更多引脚,请选择更大的芯片,例如ATtiny84;
测试源码:
const int Now = 1547; // To set the time; eg 15:47
unsigned long StartMins = (unsigned long)((Now/100)*60 + (Now%100));
void loop () {
unsigned int SampleNo = StartMins/15;
// Plot temperature graph
int x1 = 16, y1 = 11;
int yscale = 2; // Points per degree
MoveTo(26, 56); PlotText(PSTR("Temperature ~C"));
// Horizontal axis
MoveTo(x1, y1); DrawTo(x1+96, y1);
for (int i=0; iif (tens != 0) {
PlotChar(tens+'0', mark-6, y1-12);
PlotChar(i%10+'0', mark, y1-12);
} else PlotChar(i%10+'0', mark-3, y1-12);
}
// Vertical axis
MoveTo(x1, y1); DrawTo(x1, y1+50);
for (int i=5; iif (tens != 0) PlotChar(tens+'0', x1-15, mark-3);
PlotChar(i%10+'0', x1-9, mark-3);
}
for (;;) {
// Now start plotting the temperature every 15 mins
while ((unsigned long) ((StartMins + millis()/60000)/15)%96 == SampleNo);
// Time to take a new reading
SampleNo = (SampleNo+1)%96;
int Temperature = (analogRead(A2)*25)/233; // In half degrees
PlotPoint(SampleNo+x1, Temperature-10+y1);
}
}
项目源码都可以在以下两个链接中找到,这里就不过多介绍了,感兴趣的可以直接看看。
Tiny Graphics Library:
http://www.technoblogy.com/show?23OS
Tiny TFT Graphics Library:
http://www.technoblogy.com/show?L6I
以上就是良许教程网为各位朋友分享的Linu系统相关内容。想要了解更多Linux相关知识记得关注公众号“良许Linux”,或扫描下方二维码进行关注,更多干货等着你 !