mirror of
https://github.com/Matiasus/SSD1306.git
synced 2024-10-03 18:18:46 -04:00
Switch to version v2.0.0
This commit is contained in:
commit
ce135fab47
24
README.md
24
README.md
@ -15,17 +15,22 @@ C library is aimed for driving [0.96" OLED display with SSD1306 driver](#demonst
|
||||
- **END_PAGE_ADDR** set to 3 (ssd1306.h)
|
||||
|
||||
### Versions
|
||||
- 1.0 - basic functions. The first publication.
|
||||
- 1.0.0 - basic functions. The first publication.
|
||||
- [2.0.0](https://github.com/Matiasus/SSD1306/tree/v2.0.0) - more changes:
|
||||
- rebuild to 'cacheMemLcd' array approach. It means that every request is stored in 'cacheMemLcd' array (RAM) and by the [SSD1306_UpdateScreen (uint8_t)](#ssd1306_updatescreen) function is printed on the display.
|
||||
- added new function -> [SSD1306_DrawLine (uint8_t, uint8_t, uint8_t, uint8_t)](#ssd1306_drawline). Possible depicted any line (horizontal, vertical, with slope).
|
||||
- possible to use for more than 1 display (not tested).
|
||||
- **!!!** ~1kB RAM memory consumption.
|
||||
- [3.0.0](https://github.com/Matiasus/SSD1306/tree/v3.0.0) - simplified alphanumeric version
|
||||
- displaying alphanumeric characters
|
||||
- for **one display** applicable
|
||||
- **only few RAM bytes** consumption
|
||||
- **!!!** no graphic functions like drawLine
|
||||
|
||||
## Dependencies
|
||||
- [font.h](https://github.com/Matiasus/SSD1306/blob/v2.0.0/lib/font.h)
|
||||
- [twi.c](https://github.com/Matiasus/SSD1306/blob/v2.0.0/lib/twi.c)
|
||||
- [twi.h](https://github.com/Matiasus/SSD1306/blob/v2.0.0/lib/twi.h)
|
||||
- [font.h](https://github.com/Matiasus/SSD1306/blob/master/lib/font.h)
|
||||
- [twi.c](https://github.com/Matiasus/SSD1306/blob/master/lib/twi.c)
|
||||
- [twi.h](https://github.com/Matiasus/SSD1306/blob/master/lib/twi.h)
|
||||
|
||||
Font.c can be modified according to application requirements with form defined in font.c. Maximal permissible horizontal dimension is 8 bits.
|
||||
|
||||
@ -38,7 +43,7 @@ Prior defined for MCU Atmega328p / Atmega8 / Atmega16. Need to be carefull with
|
||||
| SDA | PC1 | PC4 |
|
||||
|
||||
### Tested
|
||||
Library was tested and proved on **_0.96″ OLED Display with SSD1306 driver_** and **_Atmega328p_**.
|
||||
Library was tested and proved with **_0.96″ 128x64 and 128x32 OLED Display (SSD1306 driver)_** and **_Atmega328p_**.
|
||||
|
||||
## Init OLED Sequence
|
||||
Init sequence OLED display was defined according to page 64 (next to last page) of [Datasheet SSD1306](https://cdn-shop.adafruit.com/datasheets/SSD1306.pdf).
|
||||
@ -130,12 +135,19 @@ Init sequence OLED display was defined according to page 64 (next to last page)
|
||||
- [SSD1306_UpdateScreen (uint8_t)](#ssd1306_updatescreen) - Update content on display
|
||||
- [SSD1306_DrawLine (uint8_t, uint8_t, uint8_t, uint8_t)](#ssd1306_drawline) - Draw line
|
||||
|
||||
## Demonstration
|
||||
## Demonstration version v1.0.0
|
||||
<img src="img/ssd1306_v100.jpg" />
|
||||
|
||||
## Demonstration version v2.0.0
|
||||
<img src="img/ssd1306_v200.png" />
|
||||
|
||||
## Demonstration version v3.0.0
|
||||
<img src="img/ssd1306_v300.jpg" />
|
||||
|
||||
## Acknowledgement
|
||||
- [Adafruit SSD1306 Library](https://github.com/adafruit/Adafruit_SSD1306)
|
||||
|
||||
## Links
|
||||
- [Datasheet SSD1306](https://cdn-shop.adafruit.com/datasheets/SSD1306.pdf)
|
||||
- [Atmega328](https://ww1.microchip.com/downloads/en/DeviceDoc/ATmega48A-PA-88A-PA-168A-PA-328-P-DS-DS40002061B.pdf)
|
||||
|
||||
|
Before Width: | Height: | Size: 276 KiB After Width: | Height: | Size: 276 KiB |
BIN
img/ssd1306_v300.jpg
Normal file
BIN
img/ssd1306_v300.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 349 KiB |
24
lib/font.h
24
lib/font.h
@ -1,23 +1,31 @@
|
||||
/**
|
||||
* ---------------------------------------------------------------+
|
||||
* @desc FONTs
|
||||
* ---------------------------------------------------------------+
|
||||
/**
|
||||
* -------------------------------------------------------------------------------------+
|
||||
* @desc LCD FONT 5x8
|
||||
* -------------------------------------------------------------------------------------+
|
||||
* @source
|
||||
* Copyright (C) 2020 Marian Hrinko.
|
||||
* Written by Marian Hrinko (mato.hrinko@gmail.com)
|
||||
*
|
||||
* @author Marian Hrinko
|
||||
* @datum 07.10.2020
|
||||
* @date 08.12.2020
|
||||
* @update 08.12.2022
|
||||
* @file font.h
|
||||
* @tested AVR Atmega16, Atmega8, Atmega328
|
||||
* @version 1.0
|
||||
* @tested AVR Atmega328p
|
||||
*
|
||||
* @depend
|
||||
* ---------------------------------------------------------------+
|
||||
* -------------------------------------------------------------------------------------+
|
||||
* @descr LCD pixel fonts
|
||||
* -------------------------------------------------------------------------------------+
|
||||
* @usage Display characters
|
||||
*/
|
||||
#include <avr/pgmspace.h>
|
||||
|
||||
#ifndef __FONT_H__
|
||||
#define __FONT_H__
|
||||
|
||||
// includes
|
||||
#include <avr/pgmspace.h>
|
||||
|
||||
// Characters definition
|
||||
// -----------------------------------
|
||||
// number of columns for chars
|
||||
|
135
lib/font5x8.h
Normal file
135
lib/font5x8.h
Normal file
@ -0,0 +1,135 @@
|
||||
/**
|
||||
* -------------------------------------------------------------------------------------+
|
||||
* @desc LCD FONT 5x8
|
||||
* -------------------------------------------------------------------------------------+
|
||||
* @source https://github.com/basti79/LCD-fonts/blob/master/5x8_vertikal_LSB_1.h
|
||||
* Copyright (C) 2020 Marian Hrinko.
|
||||
* Written by Marian Hrinko (mato.hrinko@gmail.com)
|
||||
*
|
||||
* @author Marian Hrinko
|
||||
* @date 08.12.2020
|
||||
* @update 08.12.2022
|
||||
* @file font5x8.h
|
||||
* @version 1.0
|
||||
* @tested AVR Atmega328p
|
||||
*
|
||||
* @depend
|
||||
* -------------------------------------------------------------------------------------+
|
||||
* @descr LCD pixel fonts
|
||||
* -------------------------------------------------------------------------------------+
|
||||
* @usage Display characters
|
||||
*/
|
||||
|
||||
#ifndef __FONT5x8_H__
|
||||
#define __FONT5x8_H__
|
||||
|
||||
// includes
|
||||
#include <avr/pgmspace.h>
|
||||
|
||||
// Characters definition
|
||||
// -----------------------------------
|
||||
// number of columns for chars
|
||||
#define CHARS_COLS_LENGTH 5
|
||||
|
||||
// @author basti79
|
||||
// @source https://github.com/basti79/LCD-fonts/blob/master/5x8_vertikal_LSB_1.h
|
||||
static const uint8_t FONTS[][CHARS_COLS_LENGTH] PROGMEM = {
|
||||
{0x00,0x00,0x00,0x00,0x00}, // 0x20
|
||||
{0x00,0x00,0x2F,0x00,0x00}, // 0x21
|
||||
{0x00,0x03,0x00,0x03,0x00}, // 0x22
|
||||
{0x34,0x1C,0x36,0x1C,0x16}, // 0x23
|
||||
{0x00,0x26,0x7F,0x32,0x00}, // 0x24
|
||||
{0x32,0x0D,0x1E,0x2C,0x13}, // 0x25
|
||||
{0x18,0x26,0x2D,0x12,0x28}, // 0x26
|
||||
{0x00,0x00,0x03,0x00,0x00}, // 0x27
|
||||
{0x00,0x1C,0x22,0x41,0x41}, // 0x28
|
||||
{0x41,0x41,0x22,0x1C,0x00}, // 0x29
|
||||
{0x00,0x0A,0x05,0x0A,0x00}, // 0x2A
|
||||
{0x00,0x10,0x38,0x10,0x00}, // 0x2B
|
||||
{0x00,0x80,0x60,0x00,0x00}, // 0x2C
|
||||
{0x00,0x08,0x08,0x08,0x00}, // 0x2D
|
||||
{0x00,0x00,0x20,0x00,0x00}, // 0x2E
|
||||
{0x00,0x60,0x18,0x06,0x01}, // 0x2F
|
||||
{0x00,0x1E,0x21,0x21,0x1E}, // 0x30
|
||||
{0x00,0x22,0x3F,0x20,0x00}, // 0x31
|
||||
{0x00,0x31,0x29,0x26,0x00}, // 0x32
|
||||
{0x00,0x25,0x25,0x1A,0x00}, // 0x33
|
||||
{0x00,0x0C,0x0A,0x3F,0x08}, // 0x34
|
||||
{0x00,0x27,0x25,0x19,0x00}, // 0x35
|
||||
{0x00,0x1E,0x25,0x25,0x18}, // 0x36
|
||||
{0x00,0x01,0x39,0x05,0x03}, // 0x37
|
||||
{0x00,0x1A,0x25,0x25,0x1A}, // 0x38
|
||||
{0x00,0x06,0x29,0x29,0x1E}, // 0x39
|
||||
{0x00,0x00,0x24,0x00,0x00}, // 0x3A
|
||||
{0x00,0x80,0x64,0x00,0x00}, // 0x3B
|
||||
{0x00,0x08,0x08,0x14,0x22}, // 0x3C
|
||||
{0x00,0x14,0x14,0x14,0x14}, // 0x3D
|
||||
{0x00,0x22,0x14,0x08,0x08}, // 0x3E
|
||||
{0x00,0x01,0x29,0x05,0x02}, // 0x3F
|
||||
{0x3C,0x42,0x59,0x55,0x5E}, // 0x40
|
||||
{0x30,0x1C,0x12,0x1C,0x30}, // 0x41
|
||||
{0x00,0x3E,0x2A,0x36,0x00}, // 0x42
|
||||
{0x00,0x1C,0x22,0x22,0x22}, // 0x43
|
||||
{0x00,0x3E,0x22,0x22,0x1C}, // 0x44
|
||||
{0x00,0x3E,0x2A,0x2A,0x00}, // 0x45
|
||||
{0x00,0x3E,0x0A,0x0A,0x00}, // 0x46
|
||||
{0x00,0x1C,0x22,0x2A,0x3A}, // 0x47
|
||||
{0x00,0x3E,0x08,0x08,0x3E}, // 0x48
|
||||
{0x00,0x22,0x3E,0x22,0x00}, // 0x49
|
||||
{0x00,0x22,0x22,0x1E,0x00}, // 0x4A
|
||||
{0x00,0x3E,0x08,0x14,0x22}, // 0x4B
|
||||
{0x00,0x3E,0x20,0x20,0x20}, // 0x4C
|
||||
{0x3E,0x04,0x18,0x04,0x3E}, // 0x4D
|
||||
{0x00,0x3E,0x04,0x08,0x3E}, // 0x4E
|
||||
{0x1C,0x22,0x22,0x22,0x1C}, // 0x4F
|
||||
{0x00,0x3E,0x0A,0x0A,0x04}, // 0x50
|
||||
{0x1C,0x22,0x22,0x62,0x9C}, // 0x51
|
||||
{0x00,0x3E,0x0A,0x14,0x20}, // 0x52
|
||||
{0x00,0x24,0x2A,0x12,0x00}, // 0x53
|
||||
{0x02,0x02,0x3E,0x02,0x02}, // 0x54
|
||||
{0x00,0x1E,0x20,0x20,0x1E}, // 0x55
|
||||
{0x00,0x0E,0x30,0x30,0x0E}, // 0x56
|
||||
{0x0E,0x30,0x0C,0x30,0x0E}, // 0x57
|
||||
{0x22,0x14,0x08,0x14,0x22}, // 0x58
|
||||
{0x02,0x04,0x38,0x04,0x02}, // 0x59
|
||||
{0x00,0x32,0x2A,0x2A,0x26}, // 0x5A
|
||||
{0x00,0x00,0x7F,0x41,0x00}, // 0x5B
|
||||
{0x01,0x06,0x18,0x60,0x00}, // 0x5C
|
||||
{0x00,0x41,0x7F,0x00,0x00}, // 0x5D
|
||||
{0x18,0x06,0x01,0x06,0x18}, // 0x5E
|
||||
{0x40,0x40,0x40,0x40,0x40}, // 0x5F
|
||||
{0x00,0x01,0x02,0x00,0x00}, // 0x60
|
||||
{0x00,0x34,0x34,0x38,0x20}, // 0x61
|
||||
{0x00,0x3F,0x24,0x24,0x18}, // 0x62
|
||||
{0x00,0x18,0x24,0x24,0x00}, // 0x63
|
||||
{0x18,0x24,0x24,0x3F,0x00}, // 0x64
|
||||
{0x00,0x18,0x2C,0x28,0x00}, // 0x65
|
||||
{0x00,0x04,0x3E,0x05,0x05}, // 0x66
|
||||
{0x00,0x58,0x54,0x54,0x3C}, // 0x67
|
||||
{0x00,0x3F,0x08,0x04,0x38}, // 0x68
|
||||
{0x00,0x04,0x3D,0x00,0x00}, // 0x69
|
||||
{0x00,0x44,0x44,0x3D,0x00}, // 0x6A
|
||||
{0x00,0x3F,0x08,0x14,0x20}, // 0x6B
|
||||
{0x00,0x01,0x3F,0x00,0x00}, // 0x6C
|
||||
{0x3C,0x08,0x3C,0x08,0x3C}, // 0x6D
|
||||
{0x00,0x3C,0x08,0x04,0x38}, // 0x6E
|
||||
{0x00,0x18,0x24,0x24,0x18}, // 0x6F
|
||||
{0x00,0x7C,0x24,0x24,0x18}, // 0x70
|
||||
{0x18,0x24,0x24,0x7C,0x00}, // 0x71
|
||||
{0x00,0x3C,0x08,0x04,0x00}, // 0x72
|
||||
{0x00,0x28,0x2C,0x14,0x00}, // 0x73
|
||||
{0x00,0x04,0x1E,0x24,0x04}, // 0x74
|
||||
{0x00,0x1C,0x20,0x10,0x3C}, // 0x75
|
||||
{0x00,0x0C,0x30,0x30,0x0C}, // 0x76
|
||||
{0x0C,0x30,0x1C,0x30,0x0C}, // 0x77
|
||||
{0x00,0x24,0x18,0x18,0x24}, // 0x78
|
||||
{0x40,0x4C,0x70,0x30,0x0C}, // 0x79
|
||||
{0x00,0x34,0x2C,0x2C,0x00}, // 0x7A
|
||||
{0x00,0x08,0x36,0x41,0x00}, // 0x7B
|
||||
{0x00,0x00,0x7F,0x00,0x00}, // 0x7C
|
||||
{0x00,0x41,0x36,0x08,0x00}, // 0x7D
|
||||
{0x10,0x08,0x08,0x10,0x08}, // 0x7E
|
||||
{0x00,0x3C,0x22,0x3C,0x00}, // 0x7F
|
||||
};
|
||||
|
||||
#endif
|
135
lib/font6x8.h
Normal file
135
lib/font6x8.h
Normal file
@ -0,0 +1,135 @@
|
||||
/**
|
||||
* -------------------------------------------------------------------------------------+
|
||||
* @desc LCD FONT 6x8
|
||||
* -------------------------------------------------------------------------------------+
|
||||
* @source https://github.com/basti79/LCD-fonts/blob/master/6x8_vertikal_LSB_1.h
|
||||
* Copyright (C) 2020 Marian Hrinko.
|
||||
* Written by Marian Hrinko (mato.hrinko@gmail.com)
|
||||
*
|
||||
* @author Marian Hrinko
|
||||
* @date 08.12.2020
|
||||
* @update 08.12.2022
|
||||
* @file font6x8.h
|
||||
* @version 1.0
|
||||
* @tested AVR Atmega328p
|
||||
*
|
||||
* @depend
|
||||
* -------------------------------------------------------------------------------------+
|
||||
* @descr LCD pixel fonts
|
||||
* -------------------------------------------------------------------------------------+
|
||||
* @usage Display characters
|
||||
*/
|
||||
|
||||
#ifndef __FONT6x8_H__
|
||||
#define __FONT6x8_H__
|
||||
|
||||
// includes
|
||||
#include <avr/pgmspace.h>
|
||||
|
||||
// Characters definition
|
||||
// -----------------------------------
|
||||
// number of columns for chars
|
||||
#define CHARS_COLS_LENGTH 6
|
||||
|
||||
// @author basti79
|
||||
// @source https://github.com/basti79/LCD-fonts/blob/master/6x8_vertikal_LSB_1.h
|
||||
static const uint8_t FONTS[][CHARS_COLS_LENGTH] PROGMEM = {
|
||||
{0x00,0x00,0x00,0x00,0x00,0x00}, // 0x20
|
||||
{0x00,0x00,0x06,0x5F,0x06,0x00}, // 0x21
|
||||
{0x00,0x07,0x03,0x00,0x07,0x03}, // 0x22
|
||||
{0x00,0x24,0x7E,0x24,0x7E,0x24}, // 0x23
|
||||
{0x00,0x24,0x2B,0x6A,0x12,0x00}, // 0x24
|
||||
{0x00,0x63,0x13,0x08,0x64,0x63}, // 0x25
|
||||
{0x00,0x36,0x49,0x56,0x20,0x50}, // 0x26
|
||||
{0x00,0x00,0x07,0x03,0x00,0x00}, // 0x27
|
||||
{0x00,0x00,0x3E,0x41,0x00,0x00}, // 0x28
|
||||
{0x00,0x00,0x41,0x3E,0x00,0x00}, // 0x29
|
||||
{0x00,0x08,0x3E,0x1C,0x3E,0x08}, // 0x2A
|
||||
{0x00,0x08,0x08,0x3E,0x08,0x08}, // 0x2B
|
||||
{0x00,0x00,0xE0,0x60,0x00,0x00}, // 0x2C
|
||||
{0x00,0x08,0x08,0x08,0x08,0x08}, // 0x2D
|
||||
{0x00,0x00,0x60,0x60,0x00,0x00}, // 0x2E
|
||||
{0x00,0x20,0x10,0x08,0x04,0x02}, // 0x2F
|
||||
{0x00,0x3E,0x51,0x49,0x45,0x3E}, // 0x30
|
||||
{0x00,0x00,0x42,0x7F,0x40,0x00}, // 0x31
|
||||
{0x00,0x62,0x51,0x49,0x49,0x46}, // 0x32
|
||||
{0x00,0x22,0x49,0x49,0x49,0x36}, // 0x33
|
||||
{0x00,0x18,0x14,0x12,0x7F,0x10}, // 0x34
|
||||
{0x00,0x2F,0x49,0x49,0x49,0x31}, // 0x35
|
||||
{0x00,0x3C,0x4A,0x49,0x49,0x30}, // 0x36
|
||||
{0x00,0x01,0x71,0x09,0x05,0x03}, // 0x37
|
||||
{0x00,0x36,0x49,0x49,0x49,0x36}, // 0x38
|
||||
{0x00,0x06,0x49,0x49,0x29,0x1E}, // 0x39
|
||||
{0x00,0x00,0x6C,0x6C,0x00,0x00}, // 0x3A
|
||||
{0x00,0x00,0xEC,0x6C,0x00,0x00}, // 0x3B
|
||||
{0x00,0x08,0x14,0x22,0x41,0x00}, // 0x3C
|
||||
{0x00,0x24,0x24,0x24,0x24,0x24}, // 0x3D
|
||||
{0x00,0x00,0x41,0x22,0x14,0x08}, // 0x3E
|
||||
{0x00,0x02,0x01,0x59,0x09,0x06}, // 0x3F
|
||||
{0x00,0x3E,0x41,0x5D,0x55,0x1E}, // 0x40
|
||||
{0x00,0x7E,0x11,0x11,0x11,0x7E}, // 0x41
|
||||
{0x00,0x7F,0x49,0x49,0x49,0x36}, // 0x42
|
||||
{0x00,0x3E,0x41,0x41,0x41,0x22}, // 0x43
|
||||
{0x00,0x7F,0x41,0x41,0x41,0x3E}, // 0x44
|
||||
{0x00,0x7F,0x49,0x49,0x49,0x41}, // 0x45
|
||||
{0x00,0x7F,0x09,0x09,0x09,0x01}, // 0x46
|
||||
{0x00,0x3E,0x41,0x49,0x49,0x7A}, // 0x47
|
||||
{0x00,0x7F,0x08,0x08,0x08,0x7F}, // 0x48
|
||||
{0x00,0x00,0x41,0x7F,0x41,0x00}, // 0x49
|
||||
{0x00,0x30,0x40,0x40,0x40,0x3F}, // 0x4A
|
||||
{0x00,0x7F,0x08,0x14,0x22,0x41}, // 0x4B
|
||||
{0x00,0x7F,0x40,0x40,0x40,0x40}, // 0x4C
|
||||
{0x00,0x7F,0x02,0x04,0x02,0x7F}, // 0x4D
|
||||
{0x00,0x7F,0x02,0x04,0x08,0x7F}, // 0x4E
|
||||
{0x00,0x3E,0x41,0x41,0x41,0x3E}, // 0x4F
|
||||
{0x00,0x7F,0x09,0x09,0x09,0x06}, // 0x50
|
||||
{0x00,0x3E,0x41,0x51,0x21,0x5E}, // 0x51
|
||||
{0x00,0x7F,0x09,0x09,0x19,0x66}, // 0x52
|
||||
{0x00,0x26,0x49,0x49,0x49,0x32}, // 0x53
|
||||
{0x00,0x01,0x01,0x7F,0x01,0x01}, // 0x54
|
||||
{0x00,0x3F,0x40,0x40,0x40,0x3F}, // 0x55
|
||||
{0x00,0x1F,0x20,0x40,0x20,0x1F}, // 0x56
|
||||
{0x00,0x3F,0x40,0x3C,0x40,0x3F}, // 0x57
|
||||
{0x00,0x63,0x14,0x08,0x14,0x63}, // 0x58
|
||||
{0x00,0x07,0x08,0x70,0x08,0x07}, // 0x59
|
||||
{0x00,0x71,0x49,0x45,0x43,0x00}, // 0x5A
|
||||
{0x00,0x00,0x7F,0x41,0x41,0x00}, // 0x5B
|
||||
{0x00,0x02,0x04,0x08,0x10,0x20}, // 0x5C
|
||||
{0x00,0x00,0x41,0x41,0x7F,0x00}, // 0x5D
|
||||
{0x00,0x04,0x02,0x01,0x02,0x04}, // 0x5E
|
||||
{0x80,0x80,0x80,0x80,0x80,0x80}, // 0x5F
|
||||
{0x00,0x00,0x03,0x07,0x00,0x00}, // 0x60
|
||||
{0x00,0x20,0x54,0x54,0x54,0x78}, // 0x61
|
||||
{0x00,0x7F,0x44,0x44,0x44,0x38}, // 0x62
|
||||
{0x00,0x38,0x44,0x44,0x44,0x28}, // 0x63
|
||||
{0x00,0x38,0x44,0x44,0x44,0x7F}, // 0x64
|
||||
{0x00,0x38,0x54,0x54,0x54,0x08}, // 0x65
|
||||
{0x00,0x08,0x7E,0x09,0x09,0x00}, // 0x66
|
||||
{0x00,0x18,0xA4,0xA4,0xA4,0x7C}, // 0x67
|
||||
{0x00,0x7F,0x04,0x04,0x78,0x00}, // 0x68
|
||||
{0x00,0x00,0x00,0x7D,0x40,0x00}, // 0x69
|
||||
{0x00,0x40,0x80,0x84,0x7D,0x00}, // 0x6A
|
||||
{0x00,0x7F,0x10,0x28,0x44,0x00}, // 0x6B
|
||||
{0x00,0x00,0x00,0x7F,0x40,0x00}, // 0x6C
|
||||
{0x00,0x7C,0x04,0x18,0x04,0x78}, // 0x6D
|
||||
{0x00,0x7C,0x04,0x04,0x78,0x00}, // 0x6E
|
||||
{0x00,0x38,0x44,0x44,0x44,0x38}, // 0x6F
|
||||
{0x00,0xFC,0x44,0x44,0x44,0x38}, // 0x70
|
||||
{0x00,0x38,0x44,0x44,0x44,0xFC}, // 0x71
|
||||
{0x00,0x44,0x78,0x44,0x04,0x08}, // 0x72
|
||||
{0x00,0x08,0x54,0x54,0x54,0x20}, // 0x73
|
||||
{0x00,0x04,0x3E,0x44,0x24,0x00}, // 0x74
|
||||
{0x00,0x3C,0x40,0x20,0x7C,0x00}, // 0x75
|
||||
{0x00,0x1C,0x20,0x40,0x20,0x1C}, // 0x76
|
||||
{0x00,0x3C,0x60,0x30,0x60,0x3C}, // 0x77
|
||||
{0x00,0x6C,0x10,0x10,0x6C,0x00}, // 0x78
|
||||
{0x00,0x9C,0xA0,0x60,0x3C,0x00}, // 0x79
|
||||
{0x00,0x64,0x54,0x54,0x4C,0x00}, // 0x7A
|
||||
{0x00,0x08,0x3E,0x41,0x41,0x00}, // 0x7B
|
||||
{0x00,0x00,0x00,0x77,0x00,0x00}, // 0x7C
|
||||
{0x00,0x00,0x41,0x41,0x3E,0x08}, // 0x7D
|
||||
{0x00,0x02,0x01,0x02,0x01,0x00}, // 0x7E
|
||||
{0x00,0x3C,0x26,0x23,0x26,0x3C}, // 0x7F
|
||||
};
|
||||
|
||||
#endif
|
135
lib/font8x8.h
Normal file
135
lib/font8x8.h
Normal file
@ -0,0 +1,135 @@
|
||||
/**
|
||||
* -------------------------------------------------------------------------------------+
|
||||
* @desc LCD FONT 6x8
|
||||
* -------------------------------------------------------------------------------------+
|
||||
* @source https://github.com/basti79/LCD-fonts/blob/master/8x8_vertikal_LSB_1.h
|
||||
* Copyright (C) 2020 Marian Hrinko.
|
||||
* Written by Marian Hrinko (mato.hrinko@gmail.com)
|
||||
*
|
||||
* @author Marian Hrinko
|
||||
* @date 08.12.2020
|
||||
* @update 08.12.2022
|
||||
* @file font6x8.h
|
||||
* @version 1.0
|
||||
* @tested AVR Atmega328p
|
||||
*
|
||||
* @depend
|
||||
* -------------------------------------------------------------------------------------+
|
||||
* @descr LCD pixel fonts
|
||||
* -------------------------------------------------------------------------------------+
|
||||
* @usage Display characters
|
||||
*/
|
||||
|
||||
#ifndef __FONT8x8_H__
|
||||
#define __FONT8x8_H__
|
||||
|
||||
// includes
|
||||
#include <avr/pgmspace.h>
|
||||
|
||||
// Characters definition
|
||||
// -----------------------------------
|
||||
// number of columns for chars
|
||||
#define CHARS_COLS_LENGTH 8
|
||||
|
||||
// @author basti79
|
||||
// @source https://github.com/basti79/LCD-fonts/blob/master/8x8_vertikal_LSB_1.h
|
||||
static const uint8_t FONTS[][CHARS_COLS_LENGTH] PROGMEM = {
|
||||
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x20
|
||||
{0x00,0x06,0x5F,0x5F,0x06,0x00,0x00,0x00}, // 0x21
|
||||
{0x00,0x07,0x07,0x00,0x07,0x07,0x00,0x00}, // 0x22
|
||||
{0x14,0x7F,0x7F,0x14,0x7F,0x7F,0x14,0x00}, // 0x23
|
||||
{0x24,0x2E,0x6B,0x6B,0x3A,0x12,0x00,0x00}, // 0x24
|
||||
{0x46,0x66,0x30,0x18,0x0C,0x66,0x62,0x00}, // 0x25
|
||||
{0x30,0x7A,0x4F,0x5D,0x37,0x7A,0x48,0x00}, // 0x26
|
||||
{0x04,0x07,0x03,0x00,0x00,0x00,0x00,0x00}, // 0x27
|
||||
{0x00,0x1C,0x3E,0x63,0x41,0x00,0x00,0x00}, // 0x28
|
||||
{0x00,0x41,0x63,0x3E,0x1C,0x00,0x00,0x00}, // 0x29
|
||||
{0x08,0x2A,0x3E,0x1C,0x1C,0x3E,0x2A,0x08}, // 0x2A
|
||||
{0x08,0x08,0x3E,0x3E,0x08,0x08,0x00,0x00}, // 0x2B
|
||||
{0x00,0xA0,0xE0,0x60,0x00,0x00,0x00,0x00}, // 0x2C
|
||||
{0x08,0x08,0x08,0x08,0x08,0x08,0x00,0x00}, // 0x2D
|
||||
{0x00,0x00,0x60,0x60,0x00,0x00,0x00,0x00}, // 0x2E
|
||||
{0x60,0x30,0x18,0x0C,0x06,0x03,0x01,0x00}, // 0x2F
|
||||
{0x3E,0x7F,0x59,0x4D,0x7F,0x3E,0x00,0x00}, // 0x30
|
||||
{0x42,0x42,0x7F,0x7F,0x40,0x40,0x00,0x00}, // 0x31
|
||||
{0x62,0x73,0x59,0x49,0x6F,0x66,0x00,0x00}, // 0x32
|
||||
{0x22,0x63,0x49,0x49,0x7F,0x36,0x00,0x00}, // 0x33
|
||||
{0x18,0x1C,0x16,0x13,0x7F,0x7F,0x10,0x00}, // 0x34
|
||||
{0x27,0x67,0x45,0x45,0x7D,0x39,0x00,0x00}, // 0x35
|
||||
{0x3C,0x7E,0x4B,0x49,0x79,0x30,0x00,0x00}, // 0x36
|
||||
{0x03,0x63,0x71,0x19,0x0F,0x07,0x00,0x00}, // 0x37
|
||||
{0x36,0x7F,0x49,0x49,0x7F,0x36,0x00,0x00}, // 0x38
|
||||
{0x06,0x4F,0x49,0x69,0x3F,0x1E,0x00,0x00}, // 0x39
|
||||
{0x00,0x00,0x6C,0x6C,0x00,0x00,0x00,0x00}, // 0x3A
|
||||
{0x00,0xA0,0xEC,0x6C,0x00,0x00,0x00,0x00}, // 0x3B
|
||||
{0x08,0x1C,0x36,0x63,0x41,0x00,0x00,0x00}, // 0x3C
|
||||
{0x14,0x14,0x14,0x14,0x14,0x14,0x00,0x00}, // 0x3D
|
||||
{0x00,0x41,0x63,0x36,0x1C,0x08,0x00,0x00}, // 0x3E
|
||||
{0x02,0x03,0x51,0x59,0x0F,0x06,0x00,0x00}, // 0x3F
|
||||
{0x3E,0x7F,0x41,0x5D,0x5D,0x1F,0x1E,0x00}, // 0x40
|
||||
{0x7C,0x7E,0x13,0x13,0x7E,0x7C,0x00,0x00}, // 0x41
|
||||
{0x41,0x7F,0x7F,0x49,0x49,0x7F,0x36,0x00}, // 0x42
|
||||
{0x1C,0x3E,0x63,0x41,0x41,0x63,0x22,0x00}, // 0x43
|
||||
{0x41,0x7F,0x7F,0x41,0x63,0x7F,0x1C,0x00}, // 0x44
|
||||
{0x41,0x7F,0x7F,0x49,0x5D,0x41,0x63,0x00}, // 0x45
|
||||
{0x41,0x7F,0x7F,0x49,0x1D,0x01,0x03,0x00}, // 0x46
|
||||
{0x1C,0x3E,0x63,0x41,0x51,0x73,0x72,0x00}, // 0x47
|
||||
{0x7F,0x7F,0x08,0x08,0x7F,0x7F,0x00,0x00}, // 0x48
|
||||
{0x00,0x41,0x7F,0x7F,0x41,0x00,0x00,0x00}, // 0x49
|
||||
{0x30,0x70,0x40,0x41,0x7F,0x3F,0x01,0x00}, // 0x4A
|
||||
{0x41,0x7F,0x7F,0x08,0x1C,0x77,0x63,0x00}, // 0x4B
|
||||
{0x41,0x7F,0x7F,0x41,0x40,0x60,0x70,0x00}, // 0x4C
|
||||
{0x7F,0x7F,0x06,0x0C,0x06,0x7F,0x7F,0x00}, // 0x4D
|
||||
{0x7F,0x7F,0x06,0x0C,0x18,0x7F,0x7F,0x00}, // 0x4E
|
||||
{0x1C,0x3E,0x63,0x41,0x63,0x3E,0x1C,0x00}, // 0x4F
|
||||
{0x41,0x7F,0x7F,0x49,0x09,0x0F,0x06,0x00}, // 0x50
|
||||
{0x1E,0x3F,0x21,0x71,0x7F,0x5E,0x00,0x00}, // 0x51
|
||||
{0x41,0x7F,0x7F,0x19,0x39,0x6F,0x46,0x00}, // 0x52
|
||||
{0x26,0x67,0x4D,0x59,0x7B,0x32,0x00,0x00}, // 0x53
|
||||
{0x03,0x41,0x7F,0x7F,0x41,0x03,0x00,0x00}, // 0x54
|
||||
{0x7F,0x7F,0x40,0x40,0x7F,0x7F,0x00,0x00}, // 0x55
|
||||
{0x1F,0x3F,0x60,0x60,0x3F,0x1F,0x00,0x00}, // 0x56
|
||||
{0x7F,0x7F,0x30,0x18,0x30,0x7F,0x7F,0x00}, // 0x57
|
||||
{0x63,0x77,0x1C,0x08,0x1C,0x77,0x63,0x00}, // 0x58
|
||||
{0x07,0x4F,0x78,0x78,0x4F,0x07,0x00,0x00}, // 0x59
|
||||
{0x67,0x73,0x59,0x4D,0x47,0x63,0x71,0x00}, // 0x5A
|
||||
{0x00,0x7F,0x7F,0x41,0x41,0x00,0x00,0x00}, // 0x5B
|
||||
{0x01,0x03,0x06,0x0C,0x18,0x30,0x60,0x00}, // 0x5C
|
||||
{0x00,0x41,0x41,0x7F,0x7F,0x00,0x00,0x00}, // 0x5D
|
||||
{0x08,0x0C,0x06,0x03,0x06,0x0C,0x08,0x00}, // 0x5E
|
||||
{0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80}, // 0x5F
|
||||
{0x00,0x00,0x03,0x07,0x04,0x00,0x00,0x00}, // 0x60
|
||||
{0x20,0x74,0x54,0x54,0x3C,0x78,0x40,0x00}, // 0x61
|
||||
{0x41,0x3F,0x7F,0x44,0x44,0x7C,0x38,0x00}, // 0x62
|
||||
{0x38,0x7C,0x44,0x44,0x6C,0x28,0x00,0x00}, // 0x63
|
||||
{0x30,0x78,0x48,0x49,0x3F,0x7F,0x40,0x00}, // 0x64
|
||||
{0x38,0x7C,0x54,0x54,0x5C,0x18,0x00,0x00}, // 0x65
|
||||
{0x48,0x7E,0x7F,0x49,0x03,0x02,0x00,0x00}, // 0x66
|
||||
{0x98,0xBC,0xA4,0xA4,0xF8,0x7C,0x04,0x00}, // 0x67
|
||||
{0x41,0x7F,0x7F,0x08,0x04,0x7C,0x78,0x00}, // 0x68
|
||||
{0x00,0x44,0x7D,0x7D,0x40,0x00,0x00,0x00}, // 0x69
|
||||
{0x40,0xC4,0x84,0xFD,0x7D,0x00,0x00,0x00}, // 0x6A
|
||||
{0x41,0x7F,0x7F,0x10,0x38,0x6C,0x44,0x00}, // 0x6B
|
||||
{0x00,0x41,0x7F,0x7F,0x40,0x00,0x00,0x00}, // 0x6C
|
||||
{0x7C,0x7C,0x0C,0x18,0x0C,0x7C,0x78,0x00}, // 0x6D
|
||||
{0x7C,0x7C,0x04,0x04,0x7C,0x78,0x00,0x00}, // 0x6E
|
||||
{0x38,0x7C,0x44,0x44,0x7C,0x38,0x00,0x00}, // 0x6F
|
||||
{0x84,0xFC,0xF8,0xA4,0x24,0x3C,0x18,0x00}, // 0x70
|
||||
{0x18,0x3C,0x24,0xA4,0xF8,0xFC,0x84,0x00}, // 0x71
|
||||
{0x44,0x7C,0x78,0x44,0x1C,0x18,0x00,0x00}, // 0x72
|
||||
{0x48,0x5C,0x54,0x54,0x74,0x24,0x00,0x00}, // 0x73
|
||||
{0x00,0x04,0x3E,0x7F,0x44,0x24,0x00,0x00}, // 0x74
|
||||
{0x3C,0x7C,0x40,0x40,0x3C,0x7C,0x40,0x00}, // 0x75
|
||||
{0x1C,0x3C,0x60,0x60,0x3C,0x1C,0x00,0x00}, // 0x76
|
||||
{0x3C,0x7C,0x60,0x30,0x60,0x7C,0x3C,0x00}, // 0x77
|
||||
{0x44,0x6C,0x38,0x10,0x38,0x6C,0x44,0x00}, // 0x78
|
||||
{0x9C,0xBC,0xA0,0xA0,0xFC,0x7C,0x00,0x00}, // 0x79
|
||||
{0x4C,0x64,0x74,0x5C,0x4C,0x64,0x00,0x00}, // 0x7A
|
||||
{0x08,0x08,0x3E,0x77,0x41,0x41,0x00,0x00}, // 0x7B
|
||||
{0x00,0x00,0x00,0x77,0x77,0x00,0x00,0x00}, // 0x7C
|
||||
{0x41,0x41,0x77,0x3E,0x08,0x08,0x00,0x00}, // 0x7D
|
||||
{0x02,0x03,0x01,0x03,0x02,0x03,0x01,0x00}, // 0x7E
|
||||
{0x78,0x7C,0x46,0x43,0x46,0x7C,0x78,0x00}, // 0x7F
|
||||
};
|
||||
|
||||
#endif
|
@ -16,7 +16,7 @@
|
||||
* --------------------------------------------------------------------------------------+
|
||||
* @descr Version 1.0.0 -> applicable for 1 display
|
||||
* Version 2.0.0 -> rebuild to 'cacheMemLcd' array
|
||||
* Version 3.0.0 -> simplified alphanumeric version
|
||||
* Version 3.0.0 -> simplified alphanumeric version for 1 display
|
||||
* --------------------------------------------------------------------------------------+
|
||||
* @usage Basic Setup for OLED Display
|
||||
*/
|
||||
@ -429,7 +429,7 @@ void SSD1306_SetPosition (uint8_t x, uint8_t y)
|
||||
*
|
||||
* @return uint8_t
|
||||
*/
|
||||
uint8_t SSD1306_UpdTxtPosition (void)
|
||||
uint8_t SSD1306_UpdatePosition (void)
|
||||
{
|
||||
// y / 8
|
||||
uint8_t y = _counter >> 7;
|
||||
@ -469,7 +469,7 @@ uint8_t SSD1306_DrawChar (char character)
|
||||
|
||||
// update text position
|
||||
// this ensure that character will not be divided at the end of row, the whole character will be depicted on the new row
|
||||
if (SSD1306_UpdTxtPosition () == SSD1306_ERROR) {
|
||||
if (SSD1306_UpdatePosition () == SSD1306_ERROR) {
|
||||
// error
|
||||
return SSD1306_ERROR;
|
||||
}
|
||||
|
@ -16,7 +16,7 @@
|
||||
* -------------------------------------------------------------------------------------+
|
||||
* @descr Version 1.0.0 -> applicable for 1 display
|
||||
* Version 2.0.0 -> rebuild to 'cacheMemLcd' array
|
||||
* Version 3.0.0 -> simplified alphanumeric version
|
||||
* Version 3.0.0 -> simplified alphanumeric version for 1 display
|
||||
* -------------------------------------------------------------------------------------+
|
||||
* @usage Basic Setup for OLED Display
|
||||
*/
|
||||
@ -36,7 +36,7 @@
|
||||
|
||||
// Address definition
|
||||
// ------------------------------------------------------------------------------------
|
||||
#define SSD1306_ADDRESS 0x3C
|
||||
#define SSD1306_ADDR 0x3C
|
||||
|
||||
// Command definition
|
||||
// ------------------------------------------------------------------------------------
|
||||
@ -165,7 +165,7 @@
|
||||
*
|
||||
* @return uint8_t
|
||||
*/
|
||||
uint8_t SSD1306_UpdTxtPosition (void);
|
||||
uint8_t SSD1306_UpdatePosition (void);
|
||||
|
||||
/**
|
||||
* @desc SSD1306 Set position
|
||||
|
12
main.c
12
main.c
@ -1,7 +1,7 @@
|
||||
/**
|
||||
* ---------------------------------------------------------------+
|
||||
* --------------------------------------------------------------------------------------+
|
||||
* @desc OLED SSD1306 example
|
||||
* ---------------------------------------------------------------+
|
||||
* --------------------------------------------------------------------------------------+
|
||||
* Copyright (C) 2020 Marian Hrinko.
|
||||
* Written by Marian Hrinko (mato.hrinko@gmail.com)
|
||||
*
|
||||
@ -13,11 +13,11 @@
|
||||
* @tested AVR Atmega328p
|
||||
*
|
||||
* @depend lib/ssd1306.h
|
||||
* ---------------------------------------------------------------+
|
||||
* --------------------------------------------------------------------------------------+
|
||||
* @descr Version 1.0.0 -> applicable for 1 display
|
||||
* Version 2.0.0 -> rebuild to 'cacheMemLcd' array
|
||||
* Version 3.0.0 -> simplified alphanumeric version
|
||||
* ---------------------------------------------------------------+
|
||||
* Version 3.0.0 -> simplified alphanumeric version for 1 display
|
||||
* --------------------------------------------------------------------------------------+
|
||||
*/
|
||||
|
||||
// include libraries
|
||||
@ -32,7 +32,7 @@
|
||||
*/
|
||||
int main(void)
|
||||
{
|
||||
uint8_t addr = SSD1306_ADDRESS;
|
||||
uint8_t addr = SSD1306_ADDR;
|
||||
|
||||
// init ssd1306
|
||||
SSD1306_Init (addr);
|
||||
|
Loading…
Reference in New Issue
Block a user