2018-10-01 12:00:47 +02:00
# OLED for AVR mikrocontrollers
2017-12-25 14:48:08 +01:00
Library for oled-displays with SSD1306 or SH1106 display-controller connected with I2C at an AVR Atmel Atmega like Atmega328P.
2017-12-25 14:52:39 +01:00
2017-12-31 13:48:12 +01:00
This library allows you to display text or/and graphic at oled-display.
2018-09-17 09:41:14 +02:00
The library need 1591 bytes flash-memory and 2 bytes sram in textmode, in graphicmode library need 2823 bytes flash-memory and 1026 bytes static sram so you can use oled-displays e.g with Atmega48PA (only with textmode).
2017-12-25 14:52:39 +01:00
Library is only tested with 128x64 Pixel display, lower resolution not tested but should work too.
2017-12-31 13:48:12 +01:00
2017-12-31 13:52:24 +01:00
If you want to use your own I2C library you have to fit i2c-function at lcd-library.
2017-12-31 13:48:12 +01:00
Settings for I2C-bus have to set at i2c.h
Settings for display have to set at lcd.h
2018-02-18 06:02:27 +01:00
If you want to use characters like e.g. ä set your compiler input-charset to utf-8 and your compiler exec-charset to iso-8859-15 (look at makefile line 115).
2018-09-28 07:29:27 +02:00
Testcondition: Display: SSD1306 OLED, Compiler Optimizelevel: -Os, µC: Atmega328p @ 8 MHz internal RC
2018-09-18 21:05:00 +02:00
Memory:
Modul | Flash | Stat. RAM
------------+--------------+------------
I2C-Core | 120 Byte | 0
FONT | 644 Byte | 0
2018-12-03 11:45:30 +01:00
Oled (TXT) | 1303 Byte | 2 Byte
Oled (GFX) | 2293 Byte | 1026 Byte
2018-09-18 21:05:00 +02:00
2018-11-05 16:39:30 +01:00
Speed (print 20 charaters to display):
2018-09-18 21:05:00 +02:00
2018-09-28 07:29:27 +02:00
2018-09-18 21:05:00 +02:00
Mode | Time | I2C-Speed
------------+------------+------------
2018-09-28 07:55:43 +02:00
Oled (TXT) | 4.411 ms | 400 kHz
Oled (TXT) | 15.384 ms | 100 kHz
2018-09-28 07:52:47 +02:00
Oled (GFX) | 26.603 ms | 400 kHz
Oled (GFX) | 96.294 ms | 100 kHz
2018-09-18 21:05:00 +02:00
2018-02-18 06:02:27 +01:00
example:
2017-12-31 13:48:12 +01:00
//****main.c****//
#include "lcd.h"
int main(void){
lcd_init(LCD_DISP_ON); // init lcd and turn on
lcd_puts("Hello World"); // put string from RAM to display (TEXTMODE) or buffer (GRAPHICMODE)
lcd_gotoxy(0,2); // set cursor to first column at line 3
lcd_puts_p(PSTR("String from flash")); // puts string form flash to display (TEXTMODE) or buffer (GRAPHICMODE)
#if defined GRAPHICMODE
lcd_drawCircle(64,32,7,WHITE); // draw circle to buffer
lcd_display(); // send buffer to display
#endif
for(;;){
//main loop
}
return 0;
}