From 87056f6fe56c2682aaa07cb79825185e730a635c Mon Sep 17 00:00:00 2001 From: Kruemelbahn Date: Tue, 28 Nov 2023 15:02:51 +0100 Subject: [PATCH] Version 1.0 --- BounceSimplepcf.cpp | 91 +++++ BounceSimplepcf.h | 68 ++++ Examples/HelloWorld/HelloWorld.ino | 60 ++++ Hardware/OLED-Panel.pdf | Bin 0 -> 192351 bytes OLEDPanel.cpp | 468 +++++++++++++++++++++++++ OLEDPanel.h | 160 +++++++++ README.md | 9 + keywords.txt | 48 +++ library.properties | 9 + utility/flip.c.txt | 12 + utility/font.c | 138 ++++++++ utility/font.h | 16 + utility/i2c.c | 179 ++++++++++ utility/i2c.h | 46 +++ utility/lcd.c | 528 +++++++++++++++++++++++++++++ utility/lcd.h | 152 +++++++++ 16 files changed, 1984 insertions(+) create mode 100644 BounceSimplepcf.cpp create mode 100644 BounceSimplepcf.h create mode 100644 Examples/HelloWorld/HelloWorld.ino create mode 100644 Hardware/OLED-Panel.pdf create mode 100644 OLEDPanel.cpp create mode 100644 OLEDPanel.h create mode 100644 README.md create mode 100644 keywords.txt create mode 100644 library.properties create mode 100644 utility/flip.c.txt create mode 100644 utility/font.c create mode 100644 utility/font.h create mode 100644 utility/i2c.c create mode 100644 utility/i2c.h create mode 100644 utility/lcd.c create mode 100644 utility/lcd.h diff --git a/BounceSimplepcf.cpp b/BounceSimplepcf.cpp new file mode 100644 index 0000000..9de2046 --- /dev/null +++ b/BounceSimplepcf.cpp @@ -0,0 +1,91 @@ +// Please read BounceSimplepcf.h for information about the licence and authors + +#if defined(ARDUINO) && ARDUINO >= 100 +#include "Arduino.h" +#else +#include "WProgram.h" +#endif + +#include "BounceSimplepcf.h" + +extern "C" { + #include "utility\i2c.h" +} + +#define DEBOUNCED_STATE 0 +#define UNSTABLE_STATE 1 +#define STATE_CHANGED 3 + + +BounceSimplePcf::BounceSimplePcf() + : previous_millis(0) + , interval_millis(10) + , state(0) + , pin(0) + , pcfAddress(0) +{} + +void BounceSimplePcf::attach(uint8_t pcfAddress, int pin, uint16_t interval_millis) { + this->pin = pin; + this->pcfAddress = pcfAddress; + this->interval_millis = interval_millis; + + state = readPins(pin) ? _BV(DEBOUNCED_STATE) | _BV(UNSTABLE_STATE) : 0; + previous_millis = millis(); +} + +void BounceSimplePcf::interval(uint16_t interval_millis) +{ + this->interval_millis = interval_millis; +} + +bool BounceSimplePcf::update() +{ + // Read the state of the switch in a temporary variable. + bool currentState = readPins(pin); + state &= ~_BV(STATE_CHANGED); + + // If the reading is different from last reading, reset the debounce counter + if ( currentState != (bool)(state & _BV(UNSTABLE_STATE)) ) { + previous_millis = millis(); + state ^= _BV(UNSTABLE_STATE); + } else + if ( millis() - previous_millis >= interval_millis ) { + // We have passed the threshold time, so the input is now stable + // If it is different from last state, set the STATE_CHANGED flag + if ((bool)(state & _BV(DEBOUNCED_STATE)) != currentState) { + previous_millis = millis(); + state ^= _BV(DEBOUNCED_STATE); + state |= _BV(STATE_CHANGED); + } + } + + return state & _BV(STATE_CHANGED); +} + +bool BounceSimplePcf::read() +{ + return state & _BV(DEBOUNCED_STATE); +} + +bool BounceSimplePcf::rose() +{ + return ( state & _BV(DEBOUNCED_STATE) ) && ( state & _BV(STATE_CHANGED)); +} + +bool BounceSimplePcf::fell() +{ + return !( state & _BV(DEBOUNCED_STATE) ) && ( state & _BV(STATE_CHANGED)); +} + +bool BounceSimplePcf::readPins(uint8_t pin) +{ + register uint8_t iRetValue(0xff); + if(pcfAddress) + { + i2c_start(pcfAddress + 1); + iRetValue = i2c_readNAck(); + i2c_stop(); + } + return (((~iRetValue) >> pin) & 0x01 ? true : false); // since buttons are switch to GND, we invert the state +} diff --git a/BounceSimplepcf.h b/BounceSimplepcf.h new file mode 100644 index 0000000..054bf42 --- /dev/null +++ b/BounceSimplepcf.h @@ -0,0 +1,68 @@ +/*************************************************** + * BounceSimplePCF.h v1.0 - Debouncing for PCF8574 + * + * Copyright (c) 2018 Michael Zimmermann + * All rights reserved. + * + * Main code taken from Bounce2Mcp by Thomas O Fredericks (tof@t-o-f.info) + * Previous contributions by Eric Lowry, Jim Schimpf and Tom Harkaway + * + * LICENSE + * ------- + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + ****************************************************/ + +#ifndef _KS_BounceSimple_h +#define _KS_BounceSimple_h + +#include + +class BounceSimplePcf +{ + public: + // Create an instance of the bounce library + BounceSimplePcf(); + + // Attach to a PCF object, a pin (and also sets initial state), and set debounce interval. + void attach(uint8_t pcfAddress, int pin, uint16_t interval_millis); + + // Sets the debounce interval + void interval(uint16_t interval_millis); + + // Updates the pin + // Returns 1 if the state changed + // Returns 0 if the state did not change + bool update(); + + // Returns the updated pin state + bool read(); + + // Returns the falling pin state + bool fell(); + + // Returns the rising pin state + bool rose(); + + protected: + bool readPins(uint8_t pin); + + unsigned long previous_millis; + uint16_t interval_millis; + uint8_t state; + uint8_t pin; + uint8_t pcfAddress; +}; + +#endif diff --git a/Examples/HelloWorld/HelloWorld.ino b/Examples/HelloWorld/HelloWorld.ino new file mode 100644 index 0000000..c2470cd --- /dev/null +++ b/Examples/HelloWorld/HelloWorld.ino @@ -0,0 +1,60 @@ +/********************* + +Example code for the OLEDPanel Library + +This code displays text on the shield, and also reads the buttons on the keypad. + +**********************/ + +#define PCF8574_ADDR 0x21 << 1 + +// include the library code: +#include +OLEDPanel oled = OLEDPanel(); + +void setup() { + // Debugging output + Serial.begin(57600); + + if(oled.detect_i2c(PCF8574_ADDR) != 0) + Serial.println("OLED-Panel missing..."); + + // init pcf8574: + oled.begin(); + + // Print a message to the OLED. We track how long it takes since + oled.setCursor(0,0); + int time = millis(); + oled.print("Hello, world!"); + time = millis() - time; + Serial.print("Took "); Serial.print(time); Serial.println(" ms"); +} + +void loop() { + // set the cursor to column 0, line 1 + // (note: line 1 is the second row, since counting begins with 0): + oled.setCursor(0, 1); + // print the number of seconds since reset: + oled.print(millis()/1000); + + uint8_t buttons = oled.readButtons(); + + if (buttons) { + oled.setCursor(0,2); + if (buttons & BUTTON_UP) { + oled.print("UP "); + } + if (buttons & BUTTON_DOWN) { + oled.print("DOWN "); + } + if (buttons & BUTTON_LEFT) { + oled.print("LEFT "); + } + if (buttons & BUTTON_RIGHT) { + oled.print("RIGHT "); + } + if (buttons & BUTTON_SELECT) { + oled.print("SELECT"); + } + } +} diff --git a/Hardware/OLED-Panel.pdf b/Hardware/OLED-Panel.pdf new file mode 100644 index 0000000000000000000000000000000000000000..422146f1eb7025df78a4a48d50de7dd6454ffac7 GIT binary patch literal 192351 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�>ZB660a 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

20_ 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 literal 0 HcmV?d00001 diff --git a/OLEDPanel.cpp b/OLEDPanel.cpp new file mode 100644 index 0000000..c7e0deb --- /dev/null +++ b/OLEDPanel.cpp @@ -0,0 +1,468 @@ +/* +|| +|| @file OLEDPanel.cpp +|| @version 1.0 +|| @author Michael Zimmermann +|| @contact michael.zimmermann.sg@t-online.de +|| +|| @description +|| | encapsulates and expands the OLED-library into class 'OLEDPanel' +|| | Original Source written by M.Köhler (https://github.com/Sylaina/oled-display.git) +|| | remark: original source was modified and expanded +|| | +|| | This library includes functionality for button-states (more functionality) +|| | +|| | routines for I2C-OLED-Display 128*64, 1.3" +|| | uses: i2c-files : i2c.c, i2c.h +|| | uses: oled-files : lcd.h, lcd.c +|| | uses: font-files : font.h, font.c +|| | +|| | defines in lcd.h: +|| | displaycontroller #define SH1106 +|| | displaymode #define TEXTMODE +|| | I2C-ADDR #define LCD_I2C_ADR 0x78 +|| # +|| +|| @license +|| | Copyright (c) 2018 Michael Zimmermann +|| | All rights reserved. +|| | +|| | This program is free software: you can redistribute it and/or modify +|| | it under the terms of the GNU General Public License as published by +|| | the Free Software Foundation, either version 3 of the License, or +|| | (at your option) any later version. +|| | +|| | This program is distributed in the hope that it will be useful, +|| | but WITHOUT ANY WARRANTY; without even the implied warranty of +|| | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +|| | GNU General Public License for more details. +|| | +|| | You should have received a copy of the GNU General Public License +|| | along with this program. If not, see . +|| # +|| +*/ + +#include "OLEDPanel.h" + +#include +#include + +#if ARDUINO >= 100 +#include "Arduino.h" +#else +#include "WProgram.h" +#endif + +extern uint8_t I2C_ErrorCode; + +OLEDPanel::OLEDPanel() { + m_ui8KeyAddr = 0; + m_bCursorOn = false; + m_bBlinken1Hz = false; + m_ulpreviousMillis = 0; + m_ui8KeyAddr = 0; + cursorPos.x = 0; + cursorPos.y = 0; +} + +uint16_t OLEDPanel::detect_i2c(uint8_t ui8_keyAddr) +{ + m_ui8KeyAddr = ui8_keyAddr; + + // OLED-Display: + i2c_init(); + i2c_start(LCD_I2C_ADR << 1); + if(I2C_ErrorCode) + return I2C_ErrorCode; + + if (m_ui8KeyAddr) + { + // PCF8574 for Buttons: + i2c_init(); + i2c_start(m_ui8KeyAddr); + return I2C_ErrorCode << 8; + } + return 0; +} + +void OLEDPanel::begin(uint8_t /*cols*/, uint8_t /*rows*/) +{ + lcd_init(LCD_DISP_ON); // init lcd and turn on + + initButtons(); +} + +void OLEDPanel::initButtons() +{ + // init Buttons: + if(m_ui8KeyAddr) + { + i2c_init(); + i2c_start(m_ui8KeyAddr); + i2c_byte(0b11111111); // all inputs + i2c_stop(); + + // After setting up the button, setup the Bounce instances : + debouncer_OK.attach(m_ui8KeyAddr, 0, DEBOUNCE_TIME); + debouncer_Right.attach(m_ui8KeyAddr, 1, DEBOUNCE_TIME); + debouncer_Down.attach(m_ui8KeyAddr, 2, DEBOUNCE_TIME); + debouncer_Up.attach(m_ui8KeyAddr, 3, DEBOUNCE_TIME); + debouncer_Left.attach(m_ui8KeyAddr, 4, DEBOUNCE_TIME); + debouncer_F1.attach(m_ui8KeyAddr, 5, DEBOUNCE_TIME); + debouncer_F2.attach(m_ui8KeyAddr, 6, DEBOUNCE_TIME); + debouncer_F3.attach(m_ui8KeyAddr, 7, DEBOUNCE_TIME); + } +} + +void OLEDPanel::updateDebounce() +{ + if (m_ui8KeyAddr) + { + // Update the Bounce instances : + debouncer_OK.update(); + debouncer_Right.update(); + debouncer_Down.update(); + debouncer_Up.update(); + debouncer_Left.update(); + debouncer_F1.update(); + debouncer_F2.update(); + debouncer_F3.update(); + } +} + + +void OLEDPanel::setKeyAddr(uint8_t ui8_keyAddr, bool bInit) +{ + m_ui8KeyAddr = ui8_keyAddr; + + if(bInit) + initButtons(); +} + +void OLEDPanel::clear() +{ + lcd_clrscr(); +} + +void OLEDPanel::clearLine(uint8_t y) +{ + clearToEOL(0, y); +} + +void OLEDPanel::clearToEOL(uint8_t x, uint8_t y) +{ + clear(x, y, COUNT_OF_CHARS - x); +} + +// clear iCount of chars starting at x, y +void OLEDPanel::clear(uint8_t x, uint8_t y, uint8_t iCount) +{ + if((x + iCount) > COUNT_OF_CHARS || y > (COUNT_OF_LINES - 1)) + return; + lcd_gotoxy(x, y); + + register uint8_t iSize(6 * iCount); + uint8_t clearLine[iSize]; + memset(clearLine, 0x00, iSize); + lcd_data(clearLine, sizeof(clearLine)); + lcd_gotoxy(x/* + iCount*/, y); +} + +void OLEDPanel::setCharMode(bool bDouble, bool bInvert, bool bUnderline) +{ + uint8_t uCharMode(NORMALSIZE); + if (bDouble) + uCharMode = DOUBLESIZE; + if (bUnderline) + uCharMode |= UNDERLINE; + if (bInvert) + uCharMode |= INVERT; + lcd_charMode(uCharMode); +} + +void OLEDPanel::noCursor() +{ + m_bCursorOn = false; + clearToEOL(0, cursorPos.y + 1); +} + +void OLEDPanel::cursor(uint8_t x, uint8_t y) +{ + m_bCursorOn = true; + cursorPos.x = x; + cursorPos.y = y; + clearToEOL(0, cursorPos.y + 1); + lcd_gotoxy(cursorPos.x, cursorPos.y + 1); + lcd_putc(0xAF); // (Macron = 'Overline') + lcd_gotoxy(cursorPos.x, cursorPos.y); +} + +//needs to be called cyclic e.g. to generate 1-Hz-puls +void OLEDPanel::refresh() +{ + if (millis() - m_ulpreviousMillis > 500) + { + m_ulpreviousMillis = millis(); // keep actual timevalue + // change status: + m_bBlinken1Hz = !m_bBlinken1Hz; + } +} + +void OLEDPanel::setCursor(uint8_t x, uint8_t y) +{ + lcd_gotoxy(x, y); +} + +size_t OLEDPanel::print(const __FlashStringHelper *pText) +{ + // count chars to display + PGM_P p1(reinterpret_cast(pText)); + register uint8_t c; + register uint8_t iCount(0); + while ((c = pgm_read_byte(p1++))) + { + lcd_putc((unsigned char)(c)); + ++iCount; + } + + return iCount; +} + +size_t OLEDPanel::print(const char *pText) +{ + // count chars to display + register uint8_t iCount(0); + while (*pText) + { + lcd_putc((unsigned char)(*pText++)); + ++iCount; + } + + return iCount; +} + +size_t OLEDPanel::print(char ch) +{ + lcd_putc((unsigned char)(ch)); + return 1; +} + +size_t OLEDPanel::print(uint8_t x, uint8_t y, char ch) +{ + lcd_gotoxy(x, y); + lcd_putc((unsigned char)(ch)); + return 1; +} + +#define BUF_SIZE 33 +size_t OLEDPanel::print(uint8_t ui8Value, int iType) +{ + char buf[BUF_SIZE]; // Assumes 8-bit chars plus zero byte. + return print(intToAscii((char*)&(buf), BUF_SIZE, (unsigned long)ui8Value, iType)); +} + +size_t OLEDPanel::print(uint16_t ui16Value, int iType) +{ + char buf[BUF_SIZE]; // Assumes 8-bit chars plus zero byte. + return print(intToAscii((char*)&(buf), BUF_SIZE, (unsigned long)ui16Value, iType)); +} + +size_t OLEDPanel::print(unsigned long ulValue, int iType) +{ + char buf[BUF_SIZE]; // Assumes 8-bit chars plus zero byte. + return print(intToAscii((char*)&(buf), BUF_SIZE, ulValue, iType)); +} + +// output text centered in line y +size_t OLEDPanel::printc(uint8_t y, const __FlashStringHelper *pText) +{ + if(setStartPositionForCenterText(y, countChar(pText))) + // output text to display + return print(pText); + + return 0; +} + +// output text centered in line y +size_t OLEDPanel::printc(uint8_t y, const char *pText) +{ + if(setStartPositionForCenterText(y, countChar(pText))) + // output text to display + return print(pText); + + return 0; +} + +// output number +// x!=255 && y!=255 : use cursorposition x, y +// x==255 && y!=255 : center in line y +size_t OLEDPanel::printc(uint8_t x, uint8_t y, unsigned long ulValue, int iType) +{ + char buf[BUF_SIZE]; // Assumes 8-bit chars plus zero byte. + char *pText(intToAscii((char*)&(buf), BUF_SIZE, ulValue, iType)); + + if(y != 255) + { + if(x == 255) + { + if(!setStartPositionForCenterText(y, countChar(pText))) + return 0; + } + else + lcd_gotoxy(x, y); + } + // output text to display + return print(pText); +} + +// output text rightaligned in line y +size_t OLEDPanel::printr(uint8_t y, uint8_t iMaxChar, const __FlashStringHelper *pText) +{ + if (setStartPositionForRightText(y, iMaxChar, countChar(pText))) + // output text to display + return print(pText); + + return 0; +} + + +// bit is set for each button pressed +uint8_t OLEDPanel::readButtons() +{ + register uint8_t iRetValue(0xff); + if(m_ui8KeyAddr) + { + i2c_start(m_ui8KeyAddr + 1); + iRetValue = i2c_readNAck(); + i2c_stop(); + } + return ~iRetValue; // since buttons are switch to GND, we invert the state +} + +void OLEDPanel::printOuterFrame() +{ + // upper frameline + lcd_gotoxy(0, 0); + i2c_start(LCD_I2C_ADR << 1); + i2c_byte(0x40); // 0x00 for command, 0x40 for data + i2c_byte(0xFF); + for (uint8_t i = 1; i < (DISPLAY_WIDTH - 1); i++) + i2c_byte(0x01); + i2c_byte(0xFF); + i2c_stop(); + + // border lines + for (uint8_t i = 1; i < (COUNT_OF_LINES - 1); i++) + { + // left border + lcd_gotoxy(0, i); + i2c_start(LCD_I2C_ADR << 1); + i2c_byte(0x40); // 0x00 for command, 0x40 for data + i2c_byte(0xFF); + i2c_stop(); + + // right border + lcd_gotoxy(COUNT_OF_CHARS - 1, i); + i2c_start(LCD_I2C_ADR << 1); + i2c_byte(0x40); // 0x00 for command, 0x40 for data + for (uint8_t j = 0; j <= CHAR_WIDTH; j++) + i2c_byte(0x00); + i2c_byte(0xFF); + i2c_stop(); + } + + // lower frameline + lcd_gotoxy(0, COUNT_OF_LINES - 1); + i2c_start(LCD_I2C_ADR << 1); + i2c_byte(0x40); // 0x00 for command, 0x40 for data + i2c_byte(0xFF); + for (uint8_t i = 1; i < (DISPLAY_WIDTH - 1); i++) + i2c_byte(0x80); + i2c_byte(0xFF); + i2c_stop(); +} + +//=== static functions ======================================================== +char* OLEDPanel::intToAscii(char *buf, uint8_t len, unsigned long n, uint8_t base) +{ + char *str(&buf[len-1]); + *str = '\0'; + // prevent crash if called with base == 1 + if (base < BIN) + base = DEC; + do + { + char c(n % base); + n /= base; + *--str = c < 10 ? c + '0' : c + 'A' - 10; + --len; + } while(n && (len != 0)); + return str; +} + +//=== protected functions ===================================================== +uint8_t OLEDPanel::countChar(const char *ps) +{ + // count chars to display + register uint8_t iCount(0); + while (*ps++) + ++iCount; + + return iCount; +} + +uint8_t OLEDPanel::countChar(const __FlashStringHelper *pText) +{ + // count chars to display + PGM_P ps(reinterpret_cast(pText)); + register uint8_t iCount(0); + while (pgm_read_byte(ps++)) + ++iCount; + + return iCount; +} + +// calculate startposition for centered text +bool OLEDPanel::setStartPositionForCenterText(uint8_t y, uint8_t iCount) +{ + if (y > (COUNT_OF_LINES - 1)) + return false; // out of display + + // TODO ZIM: not shure why "lcd_gotoxy(0, y)" is neccessary + lcd_gotoxy(0, y); + + // calculate startposition for text + uint8_t x((DISPLAY_WIDTH - (iCount * CHAR_WIDTH)) / 2); + // the following 'lcd_command' is similar to 'lcd_gotoxy') +#if defined SSD1306 + uint8_t commandSequence[] = {(uint8_t)(0xb0+y), 0x21, x, 0x7f}; +#elif defined SH1106 + uint8_t commandSequence[] = {(uint8_t)(0xb0+(y & 0x0f)), 0x21, (uint8_t)(0x00+((2+x) & (0x0f))), (uint8_t)(0x10+( ((2+x) & (0xf0)) >> 4 )), 0x7f}; +#endif + lcd_command(commandSequence, sizeof(commandSequence)); + return true; +} + +bool OLEDPanel::setStartPositionForRightText(uint8_t y, uint8_t iMaxChar, uint8_t iCount) +{ + if (y > (COUNT_OF_LINES - 1)) + return false; // out of display + + // TODO ZIM: not shure why "lcd_gotoxy(0, y)" is neccessary + lcd_gotoxy(0, y); + + if (iMaxChar && (iMaxChar < iCount)) + iCount = iMaxChar; + + // calculate startposition for text + uint8_t x((DISPLAY_WIDTH - (iCount * CHAR_WIDTH))); + // the following 'lcd_command' is similar to 'lcd_gotoxy') +#if defined SSD1306 + uint8_t commandSequence[] = { (uint8_t)(0xb0 + y), 0x21, x, 0x7f }; +#elif defined SH1106 + uint8_t commandSequence[] = { (uint8_t)(0xb0 + (y & 0x0f)), 0x21, (uint8_t)(0x00 + ((2 + x) & (0x0f))), (uint8_t)(0x10 + (((2 + x) & (0xf0)) >> 4)), 0x7f }; +#endif + lcd_command(commandSequence, sizeof(commandSequence)); + return true; +} \ No newline at end of file diff --git a/OLEDPanel.h b/OLEDPanel.h new file mode 100644 index 0000000..772bf0a --- /dev/null +++ b/OLEDPanel.h @@ -0,0 +1,160 @@ +/* +|| +|| @file OLEDPanel.h +|| @version 1.0 +|| @author Michael Zimmermann +|| @contact michael.zimmermann.sg@t-online.de +|| +|| @description +|| | encapsulates and expands the OLED-library into class 'OLEDPanel' +|| | Original Source written by M.Köhler (https://github.com/Sylaina/oled-display.git) +|| | remark: original source was modified and expanded +|| | +|| | This library includes functionality for button-states (more functionality) +|| | +|| | routines for I2C-OLED-Display 128*64, 1.3" +|| | uses: i2c-files : i2c.c, i2c.h +|| | uses: oled-files : lcd.h, lcd.c +|| | uses: font-files : font.h, font.c +|| | +|| | defines in lcd.h: +|| | displaycontroller #define SH1106 +|| | displaymode #define TEXTMODE +|| | I2C-ADDR #define LCD_I2C_ADR 0x78 +|| # +|| +|| @license +|| | Copyright (c) 2018 Michael Zimmermann +|| | All rights reserved. +|| | +|| | This program is free software: you can redistribute it and/or modify +|| | it under the terms of the GNU General Public License as published by +|| | the Free Software Foundation, either version 3 of the License, or +|| | (at your option) any later version. +|| | +|| | This program is distributed in the hope that it will be useful, +|| | but WITHOUT ANY WARRANTY; without even the implied warranty of +|| | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +|| | GNU General Public License for more details. +|| | +|| | You should have received a copy of the GNU General Public License +|| | along with this program. If not, see . +|| # +|| +*/ + +#ifndef _KS_OLEDPANEL_H +#define _KS_OLEDPANEL_H + +#include +#include + +extern "C" { + #include "utility\lcd.h" +} + +#include "BounceSimplepcf.h" + +#define CHAR_HEIGHT 8 +#define CHAR_WIDTH 6 +#define COUNT_OF_CHARS (DISPLAY_WIDTH/CHAR_WIDTH) // = currently 21 +#define COUNT_OF_LINES (DISPLAY_HEIGHT/CHAR_HEIGHT) // = currrenly 8 + +#define BUTTON_SELECT 0x01 +#define BUTTON_RIGHT 0x02 // same as F4 +#define BUTTON_DOWN 0x04 +#define BUTTON_UP 0x08 +#define BUTTON_LEFT 0x10 // same as F0 +#define BUTTON_FCT_BACK (BUTTON_LEFT | BUTTON_UP | BUTTON_DOWN) +#define BUTTON_UPDOWN (BUTTON_UP | BUTTON_DOWN) +#define BUTTON_MENU (BUTTON_UP | BUTTON_DOWN | BUTTON_SELECT) + +#define DEBOUNCE_TIME 5 + +#define fontCount 105 // whithout appending specialchar... + +/* OLEDPanel is derived from class 'Print' + to become compatible in function-calls with other display-libraries + like 'Adafruit_RGBLCDShield' from adafruit.com +*/ +class OLEDPanel : public Print { + public: + OLEDPanel(); + + uint16_t detect_i2c(uint8_t ui8_keyAddr); + + void begin(uint8_t cols = 0, uint8_t rows = 0); + void setKeyAddr(uint8_t ui8_keyAddr, bool bInit = true); + + void clear(); + void clear(uint8_t x, uint8_t y, uint8_t iCount); + void clearLine(uint8_t y); + void clearToEOL(uint8_t x, uint8_t y); + + void setCharMode(bool bDouble, bool bInvert, bool bUnderline); + + void noCursor(); + void cursor(uint8_t x, uint8_t y); + void refresh(); + + void setCursor(uint8_t x, uint8_t y); + + void printOuterFrame(); + + size_t print(const __FlashStringHelper *pText); + size_t print(const char *pText); + size_t print(char ch); + size_t print(uint8_t x, uint8_t y, char ch); + size_t print(uint8_t ui8Value, int iType); + size_t print(uint16_t ui16Value, int iType); + size_t print(unsigned long ulValue, int iType); + + size_t printc(uint8_t y, const __FlashStringHelper *pText); + size_t printc(uint8_t y, const char *pText); + size_t printc(uint8_t x, uint8_t y, unsigned long ulValue, int iType); + + size_t printr(uint8_t y, uint8_t iMaxChar, const __FlashStringHelper *pText); + + uint8_t readButtons(); + + static char* intToAscii(char *buf, uint8_t len, unsigned long n, uint8_t base); + +// write is declared pure virtual in class Print and needs to be implemented: +#if ARDUINO >= 100 + virtual size_t write(uint8_t) { return 0; }; +#else + virtual void write(uint8_t) {}; +#endif + + void updateDebounce(); + + BounceSimplePcf debouncer_OK; + BounceSimplePcf debouncer_Right; + BounceSimplePcf debouncer_Down; + BounceSimplePcf debouncer_Up; + BounceSimplePcf debouncer_Left; + BounceSimplePcf debouncer_F1; + BounceSimplePcf debouncer_F2; + BounceSimplePcf debouncer_F3; + + protected: + void initButtons(); + uint8_t countChar(const char *ps); + uint8_t countChar(const __FlashStringHelper *ps); + bool setStartPositionForCenterText(uint8_t y, uint8_t iCount); + bool setStartPositionForRightText(uint8_t y, uint8_t iMaxChar, uint8_t iCount); + + uint8_t m_ui8KeyAddr; + bool m_bCursorOn; + bool m_bBlinken1Hz; + + struct { + uint8_t x; + uint8_t y; + } cursorPos; + + private: + unsigned long m_ulpreviousMillis; +}; + +#endif diff --git a/README.md b/README.md new file mode 100644 index 0000000..d9f8567 --- /dev/null +++ b/README.md @@ -0,0 +1,9 @@ +# OLEDPanel + +This is a simple library for OLED SH1106 for usage with Arduino-platform.
+ +The library encapsulates and expands the OLED-library (original source written by M.Köhler, https://github.com/Sylaina/oled-display.git) +into class 'OLEDPanel'.
+ +This library also includes functionality for button-states which gives more functionality on the new designed PCB.
+Tested on ATmega328. diff --git a/keywords.txt b/keywords.txt new file mode 100644 index 0000000..8d0c4b7 --- /dev/null +++ b/keywords.txt @@ -0,0 +1,48 @@ +####################################### +# Syntax Coloring Map For Buttons +####################################### + +####################################### +# Datatypes (KEYWORD1) +####################################### + +BounceSimplePcf KEYWORD1 +OLEDPanel KEYWORD1 + +####################################### +# Methods and Functions (KEYWORD2) +####################################### + +begin KEYWORD2 +charModeDouble KEYWORD2 +clear KEYWORD2 +clearLine KEYWORD2 +clearToEOL KEYWORD2 +cursor KEYWORD2 +detect_i2c KEYWORD2 +noCursor KEYWORD2 +print KEYWORD2 +printc KEYWORD2 +printOuterFrame KEYWORD2 +readButtons KEYWORD2 +refresh KEYWORD2 +setCursor KEYWORD2 + +update KEYWORD2 +interval KEYWORD2 +read KEYWORD2 +attach KEYWORD2 +rose KEYWORD2 +fell KEYWORD2 + +####################################### +# Constants (LITERAL1) +####################################### +BUTTON_UP LITERAL1 +BUTTON_DOWN LITERAL1 +BUTTON_LEFT LITERAL1 +BUTTON_RIGHT LITERAL1 +BUTTON_SELECT LITERAL1 +BUTTON_FCT_BACK LITERAL1 +BUTTON_UPDOWN LITERAL1 +BUTTON_MENU LITERAL1 diff --git a/library.properties b/library.properties new file mode 100644 index 0000000..34c73f2 --- /dev/null +++ b/library.properties @@ -0,0 +1,9 @@ +name=OLEDPanel +version=1.0 +author=michael +maintainer=michael +sentence=encapsulates and expands the OLED-library from M.Köhler (https://github.com/Sylaina/oled-display.git) into class 'OLEDPanel' +paragraph=adds button for more functionality +category=Display +url=http://www.kruemelsoft.privat.t-online.de +architectures=avr \ No newline at end of file diff --git a/utility/flip.c.txt b/utility/flip.c.txt new file mode 100644 index 0000000..c34491a --- /dev/null +++ b/utility/flip.c.txt @@ -0,0 +1,12 @@ +// rotate display 180° +void lcd_flip(uint8_t flip){ + uint8_t commandSequence[2]; + if (flip != YES) { + commandSequence[0] = 0xA1; // normal + commandSequence[1] = 0xC8; + } else { + commandSequence[0] = 0xA0; // gedreht + commandSequence[1] = 0xC0; + } + lcd_command(commandSequence, 2); +} diff --git a/utility/font.c b/utility/font.c new file mode 100644 index 0000000..82ff885 --- /dev/null +++ b/utility/font.c @@ -0,0 +1,138 @@ +/* + * font.c + * i2c + * + * Created by Michael Köhler on 16.09.18. + * Copyright 2018 Skie-Systems. All rights reserved. + * + */ +#include "font.h" + +const uint8_t ssd1306oled_font[][6] PROGMEM = { +{0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // sp +{0x00, 0x00, 0x00, 0x2f, 0x00, 0x00}, // ! +{0x00, 0x00, 0x07, 0x00, 0x07, 0x00}, // " +{0x00, 0x14, 0x7f, 0x14, 0x7f, 0x14}, // # +{0x00, 0x24, 0x2a, 0x7f, 0x2a, 0x12}, // $ +{0x00, 0x62, 0x64, 0x08, 0x13, 0x23}, // % +{0x00, 0x36, 0x49, 0x55, 0x22, 0x50}, // & +{0x00, 0x00, 0x05, 0x03, 0x00, 0x00}, // ' +{0x00, 0x00, 0x1c, 0x22, 0x41, 0x00}, // ( +{0x00, 0x00, 0x41, 0x22, 0x1c, 0x00}, // ) +{0x00, 0x14, 0x08, 0x3E, 0x08, 0x14}, // * +{0x00, 0x08, 0x08, 0x3E, 0x08, 0x08}, // + +{0x00, 0x00, 0x00, 0xA0, 0x60, 0x00}, // , +{0x00, 0x08, 0x08, 0x08, 0x08, 0x08}, // - +{0x00, 0x00, 0x60, 0x60, 0x00, 0x00}, // . +{0x00, 0x20, 0x10, 0x08, 0x04, 0x02}, // / +{0x00, 0x3E, 0x51, 0x49, 0x45, 0x3E}, // 0 +{0x00, 0x00, 0x42, 0x7F, 0x40, 0x00}, // 1 +{0x00, 0x42, 0x61, 0x51, 0x49, 0x46}, // 2 +{0x00, 0x21, 0x41, 0x45, 0x4B, 0x31}, // 3 +{0x00, 0x18, 0x14, 0x12, 0x7F, 0x10}, // 4 +{0x00, 0x27, 0x45, 0x45, 0x45, 0x39}, // 5 +{0x00, 0x3C, 0x4A, 0x49, 0x49, 0x30}, // 6 +{0x00, 0x01, 0x71, 0x09, 0x05, 0x03}, // 7 +{0x00, 0x36, 0x49, 0x49, 0x49, 0x36}, // 8 +{0x00, 0x06, 0x49, 0x49, 0x29, 0x1E}, // 9 +{0x00, 0x00, 0x36, 0x36, 0x00, 0x00}, // : +{0x00, 0x00, 0x56, 0x36, 0x00, 0x00}, // ; +{0x00, 0x08, 0x14, 0x22, 0x41, 0x00}, // < +{0x00, 0x14, 0x14, 0x14, 0x14, 0x14}, // = +{0x00, 0x00, 0x41, 0x22, 0x14, 0x08}, // > +{0x00, 0x02, 0x01, 0x51, 0x09, 0x06}, // ? +{0x00, 0x32, 0x49, 0x59, 0x51, 0x3E}, // @ +{0x00, 0x7C, 0x12, 0x11, 0x12, 0x7C}, // A +{0x00, 0x7F, 0x49, 0x49, 0x49, 0x36}, // B +{0x00, 0x3E, 0x41, 0x41, 0x41, 0x22}, // C +{0x00, 0x7F, 0x41, 0x41, 0x22, 0x1C}, // D +{0x00, 0x7F, 0x49, 0x49, 0x49, 0x41}, // E +{0x00, 0x7F, 0x09, 0x09, 0x09, 0x01}, // F +{0x00, 0x3E, 0x41, 0x49, 0x49, 0x7A}, // G +{0x00, 0x7F, 0x08, 0x08, 0x08, 0x7F}, // H +{0x00, 0x00, 0x41, 0x7F, 0x41, 0x00}, // I +{0x00, 0x20, 0x40, 0x41, 0x3F, 0x01}, // J +{0x00, 0x7F, 0x08, 0x14, 0x22, 0x41}, // K +{0x00, 0x7F, 0x40, 0x40, 0x40, 0x40}, // L +{0x00, 0x7F, 0x02, 0x0C, 0x02, 0x7F}, // M +{0x00, 0x7F, 0x04, 0x08, 0x10, 0x7F}, // N +{0x00, 0x3E, 0x41, 0x41, 0x41, 0x3E}, // O +{0x00, 0x7F, 0x09, 0x09, 0x09, 0x06}, // P +{0x00, 0x3E, 0x41, 0x51, 0x21, 0x5E}, // Q +{0x00, 0x7F, 0x09, 0x19, 0x29, 0x46}, // R +{0x00, 0x46, 0x49, 0x49, 0x49, 0x31}, // S +{0x00, 0x01, 0x01, 0x7F, 0x01, 0x01}, // T +{0x00, 0x3F, 0x40, 0x40, 0x40, 0x3F}, // U +{0x00, 0x1F, 0x20, 0x40, 0x20, 0x1F}, // V +{0x00, 0x3F, 0x40, 0x38, 0x40, 0x3F}, // W +{0x00, 0x63, 0x14, 0x08, 0x14, 0x63}, // X +{0x00, 0x07, 0x08, 0x70, 0x08, 0x07}, // Y +{0x00, 0x61, 0x51, 0x49, 0x45, 0x43}, // Z +{0x00, 0x00, 0x7F, 0x41, 0x41, 0x00}, // [ +{0x00, 0x55, 0x2A, 0x55, 0x2A, 0x55}, // backslash +{0x00, 0x00, 0x41, 0x41, 0x7F, 0x00}, // ] +{0x00, 0x04, 0x02, 0x01, 0x02, 0x04}, // ^ +{0x00, 0x40, 0x40, 0x40, 0x40, 0x40}, // _ +{0x00, 0x00, 0x01, 0x02, 0x04, 0x00}, // ' +{0x00, 0x20, 0x54, 0x54, 0x54, 0x78}, // a +{0x00, 0x7F, 0x48, 0x44, 0x44, 0x38}, // b +{0x00, 0x38, 0x44, 0x44, 0x44, 0x20}, // c +{0x00, 0x38, 0x44, 0x44, 0x48, 0x7F}, // d +{0x00, 0x38, 0x54, 0x54, 0x54, 0x18}, // e +{0x00, 0x08, 0x7E, 0x09, 0x01, 0x02}, // f +{0x00, 0x18, 0xA4, 0xA4, 0xA4, 0x7C}, // g +{0x00, 0x7F, 0x08, 0x04, 0x04, 0x78}, // h +{0x00, 0x00, 0x44, 0x7D, 0x40, 0x00}, // i +{0x00, 0x40, 0x80, 0x84, 0x7D, 0x00}, // j +{0x00, 0x7F, 0x10, 0x28, 0x44, 0x00}, // k +{0x00, 0x00, 0x41, 0x7F, 0x40, 0x00}, // l +{0x00, 0x7C, 0x04, 0x18, 0x04, 0x78}, // m +{0x00, 0x7C, 0x08, 0x04, 0x04, 0x78}, // n +{0x00, 0x38, 0x44, 0x44, 0x44, 0x38}, // o +{0x00, 0xFC, 0x24, 0x24, 0x24, 0x18}, // p +{0x00, 0x18, 0x24, 0x24, 0x18, 0xFC}, // q +{0x00, 0x7C, 0x08, 0x04, 0x04, 0x08}, // r +{0x00, 0x48, 0x54, 0x54, 0x54, 0x20}, // s +{0x00, 0x04, 0x3F, 0x44, 0x40, 0x20}, // t +{0x00, 0x3C, 0x40, 0x40, 0x20, 0x7C}, // u +{0x00, 0x1C, 0x20, 0x40, 0x20, 0x1C}, // v +{0x00, 0x3C, 0x40, 0x30, 0x40, 0x3C}, // w +{0x00, 0x44, 0x28, 0x10, 0x28, 0x44}, // x +{0x00, 0x1C, 0xA0, 0xA0, 0xA0, 0x7C}, // y +{0x00, 0x44, 0x64, 0x54, 0x4C, 0x44}, // z +{0x00, 0x00, 0x08, 0x77, 0x41, 0x00}, // { +{0x00, 0x00, 0x00, 0x63, 0x00, 0x00}, // ¦ +{0x00, 0x00, 0x41, 0x77, 0x08, 0x00}, // } +{0x00, 0x08, 0x04, 0x08, 0x08, 0x04}, // ~ +/* end of normal char-set */ +/* put your own signs/chars here, edit special_char too */ +/* be sure that your first special char stand here */ +{0x00, 0x3A, 0x40, 0x40, 0x20, 0x7A}, // ü, !!! Important: this must be special_char[0] !!! +{0x00, 0x3D, 0x40, 0x40, 0x40, 0x3D}, // Ãœ +{0x00, 0x21, 0x54, 0x54, 0x54, 0x79}, // ä +{0x00, 0x7D, 0x12, 0x11, 0x12, 0x7D}, // Ä +{0x00, 0x39, 0x44, 0x44, 0x44, 0x39}, // ö +{0x00, 0x3D, 0x42, 0x42, 0x42, 0x3D}, // Ö +{0x00, 0x02, 0x05, 0x02, 0x00, 0x00}, // ° +{0x00, 0x7E, 0x01, 0x49, 0x55, 0x73}, // ß +{0x00, 0x7C, 0x10, 0x10, 0x08, 0x1C}, // µ +{0x00, 0x01, 0x01, 0x01, 0x01, 0x01} // (Macron = 'Overline') +}; +const uint8_t special_char[][2] PROGMEM = { + // define position of special char in font + // {special char, position in font} + // be sure that last element of this + // array are {0xff, 0xff} and first element + // are {first special char, first element after normal char-set in font} + {0xFC/*'ü'*/, 95}, // special_char[0] + {0xDC/*'Ãœ'*/, 96}, + {0xE4/*'ä'*/, 97}, + {0xC4/*'Ä'*/, 98}, + {0xF6/*'ö'*/, 99}, + {0xD6/*'Ö'*/, 100}, + {0xB0/*'°'*/, 101}, + {0xDF/*'ß'*/, 102}, + {0xB5/*'µ'*/, 103}, + {0xAF/*(Macron)*/, 104}, + {0xff, 0xff} // end of table special_char +}; diff --git a/utility/font.h b/utility/font.h new file mode 100644 index 0000000..b9d1018 --- /dev/null +++ b/utility/font.h @@ -0,0 +1,16 @@ +/* + * font.h + * i2c + * + * Created by Michael Köhler on 13.09.18. + * Copyright 2018 Skie-Systems. All rights reserved. + * + */ +#ifndef _font_h_ +#define _font_h_ +#include + +extern const uint8_t ssd1306oled_font[][6] PROGMEM; +extern const uint8_t special_char[][2] PROGMEM; + +#endif diff --git a/utility/i2c.c b/utility/i2c.c new file mode 100644 index 0000000..607e0fa --- /dev/null +++ b/utility/i2c.c @@ -0,0 +1,179 @@ +// +// i2c.c +// i2c +// +// Created by Michael Köhler on 09.10.17. +// +// + +#include "i2c.h" + +#if defined (__AVR_ATmega328__) || defined(__AVR_ATmega328P__) || \ +defined(__AVR_ATmega168P__) || defined(__AVR_ATmega168PA__) || \ +defined(__AVR_ATmega88P__) || \ +defined(__AVR_ATmega8__) || \ +defined(__AVR_ATmega48P__) || \ +defined(__AVR_ATmega1284P__) || \ +defined (__AVR_ATmega324A__) || defined (__AVR_ATmega324P__) || defined (__AVR_ATmega324PA__) || \ +defined (__AVR_ATmega644__) || defined (__AVR_ATmega644A__) || defined (__AVR_ATmega644P__) || defined (__AVR_ATmega644PA__) || \ +defined (__AVR_ATmega1284P__) || \ +defined (__AVR_ATmega2560__) +#if PSC_I2C != 1 && PSC_I2C != 4 && PSC_I2C != 16 && PSC_I2C != 64 +#error "Wrong prescaler for TWI !" +#elif SET_TWBR < 0 || SET_TWBR > 255 +#error "TWBR out of range, change PSC_I2C or F_I2C !" +#endif + +uint8_t I2C_ErrorCode; +/********************************************** + Public Function: i2c_init + + Purpose: Initialise TWI/I2C interface + + Input Parameter: none + + Return Value: none + **********************************************/ +void i2c_init(void){ + // set clock + switch (PSC_I2C) { + case 4: + TWSR = 0x1; + break; + case 16: + TWSR = 0x2; + break; + case 64: + TWSR = 0x3; + break; + default: + TWSR = 0x00; + break; + } + TWBR = (uint8_t)SET_TWBR; + // enable + TWCR = (1 << TWEN); +} +/********************************************** + Public Function: i2c_start + + Purpose: Start TWI/I2C interface + + Input Parameter: + - uint8_t i2c_addr: Adress of reciever + + Return Value: none + **********************************************/ +void i2c_start(uint8_t i2c_addr){ + // i2c start + TWCR = (1 << TWINT)|(1 << TWSTA)|(1 << TWEN); + uint16_t timeout = F_CPU/F_I2C*2.0; + while((TWCR & (1 << TWINT)) == 0 && + timeout !=0){ + timeout--; + if(timeout == 0){ + I2C_ErrorCode |= (1 << I2C_START); + return; + } + }; + // send adress + TWDR = i2c_addr; + TWCR = (1 << TWINT)|( 1 << TWEN); + timeout = F_CPU/F_I2C*2.0; + while((TWCR & (1 << TWINT)) == 0 && + timeout !=0){ + timeout--; + if(timeout == 0){ + I2C_ErrorCode |= (1 << I2C_SENDADRESS); + return; + } + }; +} +/********************************************** + Public Function: i2c_stop + + Purpose: Stop TWI/I2C interface + + Input Parameter: none + + Return Value: none + **********************************************/ +void i2c_stop(void){ + // i2c stop + TWCR = (1 << TWINT)|(1 << TWSTO)|(1 << TWEN); +} +/********************************************** + Public Function: i2c_byte + + Purpose: Send byte at TWI/I2C interface + + Input Parameter: + - uint8_t byte: Byte to send to reciever + + Return Value: none + **********************************************/ +void i2c_byte(uint8_t byte){ + TWDR = byte; + TWCR = (1 << TWINT)|( 1 << TWEN); + uint16_t timeout = F_CPU/F_I2C*2.0; + while((TWCR & (1 << TWINT)) == 0 && + timeout !=0){ + timeout--; + if(timeout == 0){ + I2C_ErrorCode |= (1 << I2C_BYTE); + return; + } + }; +} +/********************************************** + Public Function: i2c_readAck + + Purpose: read acknowledge from TWI/I2C Interface + + Input Parameter: none + + Return Value: uint8_t + - TWDR: recieved value at TWI/I2C-Interface, 0 at timeout + - 0: Error at read + **********************************************/ +uint8_t i2c_readAck(void){ + TWCR = (1< +#include + +extern uint8_t I2C_ErrorCode; // variable for communication error at twi + // ckeck it in your code + // 0 means no error + // define bits in I2C-ErrorCode: +#define I2C_START 0 // bit 0: timeout start-condition +#define I2C_SENDADRESS 1 // bit 0: timeout device-adress +#define I2C_BYTE 2 // bit 0: timeout byte-transmission +#define I2C_READACK 3 // bit 0: timeout read acknowledge +#define I2C_READNACK 4 // bit 0: timeout read nacknowledge + +void i2c_init(void); // init hw-i2c +void i2c_start(uint8_t i2c_addr); // send i2c_start_condition +void i2c_stop(void); // send i2c_stop_condition +void i2c_byte(uint8_t byte); // send data_byte + +uint8_t i2c_readAck(void); // read byte with ACK +uint8_t i2c_readNAck(void); // read byte with NACK + +#ifdef __cplusplus +} +#endif + +#endif /* i2c_h */ diff --git a/utility/lcd.c b/utility/lcd.c new file mode 100644 index 0000000..a938bd6 --- /dev/null +++ b/utility/lcd.c @@ -0,0 +1,528 @@ +/* + * This file is part of lcd library for ssd1306/ssd1309/sh1106 oled-display. + * + * lcd library for ssd1306/ssd1309/sh1106 oled-display is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or any later version. + * + * lcd library for ssd1306/ssd1309/sh1106 oled-display is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Foobar. If not, see . + * + * Diese Datei ist Teil von lcd library for ssd1306/ssd1309/sh1106 oled-display. + * + * lcd library for ssd1306/ssd1309/sh1106 oled-display ist Freie Software: Sie können es unter den Bedingungen + * der GNU General Public License, wie von der Free Software Foundation, + * Version 3 der Lizenz oder jeder späteren + * veröffentlichten Version, weiterverbreiten und/oder modifizieren. + * + * lcd library for ssd1306/ssd1309/sh1106 oled-display wird in der Hoffnung, dass es nützlich sein wird, aber + * OHNE JEDE GEWÄHRLEISTUNG, bereitgestellt; sogar ohne die implizite + * Gewährleistung der MARKTFÄHIGKEIT oder EIGNUNG FÃœR EINEN BESTIMMTEN ZWECK. + * Siehe die GNU General Public License für weitere Details. + * + * Sie sollten eine Kopie der GNU General Public License zusammen mit diesem + * Programm erhalten haben. Wenn nicht, siehe . + * + * lcd.h + * + * Created by Michael Köhler on 22.12.16. + * Copyright 2016 Skie-Systems. All rights reserved. + * + * lib for OLED-Display with ssd1306/ssd1309/sh1106-Controller + * first dev-version only for I2C-Connection + * at ATMega328P like Arduino Uno + * + * at GRAPHICMODE lib needs static SRAM for display: + * DISPLAY-WIDTH * DISPLAY-HEIGHT + 2 bytes + * + * at TEXTMODE lib need static SRAM for display: + * 2 bytes (cursorPosition) + */ + +#include "lcd.h" +#include "font.h" +#include + +#if defined SPI +#include +#endif + +static struct { + uint8_t x; + uint8_t y; +} cursorPosition; + +static uint8_t charMode = NORMALSIZE; +#if defined GRAPHICMODE +#include +static uint8_t displayBuffer[DISPLAY_HEIGHT/8][DISPLAY_WIDTH]; +#elif defined TEXTMODE +#else +#error "No valid displaymode! Refer lcd.h" +#endif + + +const uint8_t init_sequence [] PROGMEM = { // Initialization Sequence + LCD_DISP_OFF, // Display OFF (sleep mode) + 0x20, 0b00, // Set Memory Addressing Mode + // 00=Horizontal Addressing Mode; 01=Vertical Addressing Mode; + // 10=Page Addressing Mode (RESET); 11=Invalid + 0xB0, // Set Page Start Address for Page Addressing Mode, 0-7 + 0xC8, // Set COM Output Scan Direction + 0x00, // --set low column address + 0x10, // --set high column address + 0x40, // --set start line address + 0x81, 0x3F, // Set contrast control register + 0xA1, // Set Segment Re-map. A0=address mapped; A1=address 127 mapped. + 0xA6, // Set display mode. A6=Normal; A7=Inverse + 0xA8, DISPLAY_HEIGHT-1, // Set multiplex ratio(1 to 64) + 0xA4, // Output RAM to Display + // 0xA4=Output follows RAM content; 0xA5,Output ignores RAM content + 0xD3, 0x01, // Set display offset. 00 = no offset. 01 = one line up + 0xD5, // --set display clock divide ratio/oscillator frequency + 0xF0, // --set divide ratio + 0xD9, 0x22, // Set pre-charge period + // Set com pins hardware configuration +#if DISPLAY_HEIGHT==64 + 0xDA, 0x12, +#elif DISPLAY_HEIGHT==32 + 0xDA, 0x02, +#endif + 0xDB, // --set vcomh + 0x20, // 0x20,0.77xVcc + 0x8D, 0x14, // Set DC-DC enable + + +}; +#pragma mark LCD COMMUNICATION +void lcd_command(uint8_t cmd[], uint8_t size) { +#if defined I2C + i2c_start((LCD_I2C_ADR << 1) | 0); + i2c_byte(0x00); // 0x00 for command, 0x40 for data + for (uint8_t i=0; i (DISPLAY_WIDTH) || y > (DISPLAY_HEIGHT/8-1)) return;// out of display + cursorPosition.x=x; + cursorPosition.y=y; +#if defined (SSD1306) || defined (SSD1309) + uint8_t commandSequence[] = {0xb0+y, 0x21, x, 0x7f}; +#elif defined SH1106 + uint8_t commandSequence[] = {0xb0+y, 0x21, 0x00+((2+x) & (0x0f)), 0x10+( ((2+x) & (0xf0)) >> 4 ), 0x7f}; +#endif + lcd_command(commandSequence, sizeof(commandSequence)); +} +void lcd_clrscr(void){ +#ifdef GRAPHICMODE + for (uint8_t i = 0; i < DISPLAY_HEIGHT/8; i++){ + memset(displayBuffer[i], 0x00, sizeof(displayBuffer[i])); + lcd_gotoxy(0,i); + lcd_data(displayBuffer[i], sizeof(displayBuffer[i])); + } +#elif defined TEXTMODE + uint8_t displayBuffer[DISPLAY_WIDTH]; + memset(displayBuffer, 0x00, sizeof(displayBuffer)); + for (uint8_t i = 0; i < DISPLAY_HEIGHT/8; i++){ + lcd_gotoxy(0,i); + lcd_data(displayBuffer, sizeof(displayBuffer)); + } +#endif + lcd_home(); +} +void lcd_home(void){ + lcd_gotoxy(0, 0); +} +void lcd_invert(uint8_t invert){ + i2c_start((LCD_I2C_ADR << 1) | 0); + uint8_t commandSequence[1]; + if (invert != YES) { + commandSequence[0] = 0xA6; + } else { + commandSequence[0] = 0xA7; + } + lcd_command(commandSequence, 1); +} +void lcd_sleep(uint8_t sleep){ + i2c_start((LCD_I2C_ADR << 1) | 0); + uint8_t commandSequence[1]; + if (sleep != YES) { + commandSequence[0] = 0xAF; + } else { + commandSequence[0] = 0xAE; + } + lcd_command(commandSequence, 1); +} +void lcd_set_contrast(uint8_t contrast){ + uint8_t commandSequence[2] = {0x81, contrast}; + lcd_command(commandSequence, sizeof(commandSequence)); +} +void lcd_putc(unsigned char c){ + switch (c) { + case '\b': + // backspace + lcd_gotoxy(cursorPosition.x-charMode, cursorPosition.y); + lcd_putc(' '); + lcd_gotoxy(cursorPosition.x-charMode, cursorPosition.y); + break; + case '\t': + // tab + if( (cursorPosition.x+charMode*4) < (uint8_t)(DISPLAY_WIDTH/sizeof(FONT[0])-charMode*4) ){ + lcd_gotoxy(cursorPosition.x+charMode*4, cursorPosition.y); + }else{ + lcd_gotoxy(DISPLAY_WIDTH/ sizeof(FONT[0]), cursorPosition.y); + } + break; + case '\n': + // linefeed + if(cursorPosition.y < (uint8_t)(DISPLAY_HEIGHT/8-1)){ + lcd_gotoxy(cursorPosition.x, cursorPosition.y+charMode); + } + break; + case '\r': + // carrige return + lcd_gotoxy(0, cursorPosition.y); + break; + default: + // char doesn't fit in line + if( (cursorPosition.x >= (uint8_t)(DISPLAY_WIDTH-sizeof(FONT[0]))) || (c < ' ') ) break; + // mapping char + c -= ' '; + if (c >= pgm_read_byte(&special_char[0][1]) ) { + unsigned char temp = c; + c = 0xff; + for (uint8_t i=0; pgm_read_byte(&special_char[i][1]) != 0xff; i++) { + if ( pgm_read_byte(&special_char[i][0])-' ' == temp ) { + c = pgm_read_byte(&special_char[i][1]); + break; + } + } + if ( c == 0xff ) break; + } + // print char at display +#ifdef GRAPHICMODE + if(charMode & DOUBLESIZE) { + uint16_t doubleChar[sizeof(FONT[0])]; + uint8_t dChar; + if ((cursorPosition.x+2*sizeof(FONT[0]))>DISPLAY_WIDTH) break; + + for (uint8_t i=0; i < sizeof(FONT[0]); i++) { + doubleChar[i] = 0; + dChar = lcd_charReadAndFormat(c, i); + for (uint8_t j=0; j<8; j++) { + if ((dChar & (1 << j))) { + doubleChar[i] |= (1 << (j*2)); + doubleChar[i] |= (1 << ((j*2)+1)); + } + } + } + for (uint8_t i = 0; i < sizeof(FONT[0]); i++) + { + // load bit-pattern from flash + displayBuffer[cursorPosition.y+1][cursorPosition.x+(2*i)] = doubleChar[i] >> 8; + displayBuffer[cursorPosition.y+1][cursorPosition.x+(2*i)+1] = doubleChar[i] >> 8; + displayBuffer[cursorPosition.y][cursorPosition.x+(2*i)] = doubleChar[i] & 0xff; + displayBuffer[cursorPosition.y][cursorPosition.x+(2*i)+1] = doubleChar[i] & 0xff; + } + cursorPosition.x += sizeof(FONT[0])*2; + }else{ + if ((cursorPosition.x+sizeof(FONT[0]))>DISPLAY_WIDTH) break; + + for (uint8_t i = 0; i < sizeof(FONT[0]); i++) + { + // load bit-pattern from flash + displayBuffer[cursorPosition.y][cursorPosition.x+i] = lcd_charReadAndFormat(c, i); + } + cursorPosition.x += sizeof(FONT[0]); + } +#elif defined TEXTMODE + if(charMode & DOUBLESIZE) { + uint16_t doubleChar[sizeof(FONT[0])]; + uint8_t dChar; + if ((cursorPosition.x+2*sizeof(FONT[0]))>DISPLAY_WIDTH) break; + + for (uint8_t i=0; i < sizeof(FONT[0]); i++) { + doubleChar[i] = 0; + dChar = lcd_charReadAndFormat(c, i); + for (uint8_t j=0; j<8; j++) { + if ((dChar & (1 << j))) { + doubleChar[i] |= (1 << (j*2)); + doubleChar[i] |= (1 << ((j*2)+1)); + } + } + } + i2c_start(LCD_I2C_ADR << 1); + i2c_byte(0x40); + for (uint8_t i = 0; i < sizeof(FONT[0]); i++) + { + // print font to ram, print 6 columns + i2c_byte(doubleChar[i] & 0xff); + i2c_byte(doubleChar[i] & 0xff); + } + i2c_stop(); + +#if defined (SSD1306) || defined (SSD1309) + uint8_t commandSequence[] = {0xb0+cursorPosition.y+1, + 0x21, + cursorPosition.x, + 0x7f}; +#elif defined SH1106 + uint8_t commandSequence[] = {0xb0+cursorPosition.y+1, + 0x21, + 0x00+((2+cursorPosition.x) & (0x0f)), + 0x10+( ((2+cursorPosition.x) & (0xf0)) >> 4 ), + 0x7f}; +#endif + lcd_command(commandSequence, sizeof(commandSequence)); + + i2c_start(LCD_I2C_ADR << 1); + i2c_byte(0x40); + for (uint8_t j = 0; j < sizeof(FONT[0]); j++) + { + // print font to ram, print 6 columns + i2c_byte(doubleChar[j] >> 8); + i2c_byte(doubleChar[j] >> 8); + } + i2c_stop(); + + commandSequence[0] = 0xb0+cursorPosition.y; +#if defined (SSD1306) || defined (SSD1309) + commandSequence[2] = cursorPosition.x+(2*sizeof(FONT[0])); +#elif defined SH1106 + commandSequence[2] = 0x00+((2+cursorPosition.x+(2*sizeof(FONT[0]))) & (0x0f)); + commandSequence[3] = 0x10+( ((2+cursorPosition.x+(2*sizeof(FONT[0]))) & (0xf0)) >> 4 ); +#endif + lcd_command(commandSequence, sizeof(commandSequence)); + cursorPosition.x += sizeof(FONT[0])*2; + }else{ + i2c_start(LCD_I2C_ADR << 1); + i2c_byte(0x40); + for (uint8_t i = 0; i < sizeof(FONT[0]); i++) + { + // print font to ram, print 6 columns + i2c_byte(lcd_charReadAndFormat(c, i)); + } + i2c_stop(); + cursorPosition.x += sizeof(FONT[0]); + } +#endif + break; + } + +} +void lcd_charMode(uint8_t mode){ + charMode = mode; +} +uint8_t lcd_charReadAndFormat(unsigned char c, uint8_t i) { + uint8_t ch = pgm_read_byte(&(FONT[(uint8_t)c][i])); + if(charMode & UNDERLINE) + ch |= 0x80; // Unterstrich + if(charMode & INVERT) + ch ^= 0xff; // invertiert + return ch; +} +void lcd_puts(const char* s){ + while (*s) { + lcd_putc((unsigned char)(*s++)); + } +} +void lcd_puts_p(const char* progmem_s){ + register uint8_t c; + while ((c = pgm_read_byte(progmem_s++))) { + lcd_putc((unsigned char)c); + } +} +#ifdef GRAPHICMODE +#pragma mark - +#pragma mark GRAPHIC FUNCTIONS +void lcd_drawPixel(uint8_t x, uint8_t y, uint8_t color){ + if( x > DISPLAY_WIDTH-1 || y > (DISPLAY_HEIGHT-1)) return; // out of Display + if( color == WHITE){ + displayBuffer[(y / (DISPLAY_HEIGHT/8))][x] |= (1 << (y % (DISPLAY_HEIGHT/8))); + } else { + displayBuffer[(y / (DISPLAY_HEIGHT/8))][x] &= ~(1 << (y % (DISPLAY_HEIGHT/8))); + } +} +void lcd_drawLine(uint8_t x1, uint8_t y1, uint8_t x2, uint8_t y2, uint8_t color){ + if( x1 > DISPLAY_WIDTH-1 || + x2 > DISPLAY_WIDTH-1 || + y1 > DISPLAY_HEIGHT-1 || + y2 > DISPLAY_HEIGHT-1) return; + int dx = abs(x2-x1), sx = x1 dy) { err += dy; x1 += sx; } /* e_xy+e_x > 0 */ + if (e2 < dx) { err += dx; y1 += sy; } /* e_xy+e_y < 0 */ + } +} +void lcd_drawRect(uint8_t px1, uint8_t py1, uint8_t px2, uint8_t py2, uint8_t color){ + if( px1 > DISPLAY_WIDTH-1 || + px2 > DISPLAY_WIDTH-1 || + py1 > DISPLAY_HEIGHT-1 || + py2 > DISPLAY_HEIGHT-1) return; + lcd_drawLine(px1, py1, px2, py1, color); + lcd_drawLine(px2, py1, px2, py2, color); + lcd_drawLine(px2, py2, px1, py2, color); + lcd_drawLine(px1, py2, px1, py1, color); +} +void lcd_fillRect(uint8_t px1, uint8_t py1, uint8_t px2, uint8_t py2, uint8_t color){ + if( px1 > px2){ + uint8_t temp = px1; + px1 = px2; + px2 = temp; + temp = py1; + py1 = py2; + py2 = temp; + } + for (uint8_t i=0; i<=(py2-py1); i++){ + lcd_drawLine(px1, py1+i, px2, py1+i, color); + } +} +void lcd_drawCircle(uint8_t center_x, uint8_t center_y, uint8_t radius, uint8_t color){ + if( ((center_x + radius) > DISPLAY_WIDTH-1) || + ((center_y + radius) > DISPLAY_HEIGHT-1) || + center_x < radius || + center_y < radius) return; + int16_t f = 1 - radius; + int16_t ddF_x = 1; + int16_t ddF_y = -2 * radius; + int16_t x = 0; + int16_t y = radius; + + lcd_drawPixel(center_x , center_y+radius, color); + lcd_drawPixel(center_x , center_y-radius, color); + lcd_drawPixel(center_x+radius, center_y , color); + lcd_drawPixel(center_x-radius, center_y , color); + + while (x= 0) { + y--; + ddF_y += 2; + f += ddF_y; + } + x++; + ddF_x += 2; + f += ddF_x; + + lcd_drawPixel(center_x + x, center_y + y, color); + lcd_drawPixel(center_x - x, center_y + y, color); + lcd_drawPixel(center_x + x, center_y - y, color); + lcd_drawPixel(center_x - x, center_y - y, color); + lcd_drawPixel(center_x + y, center_y + x, color); + lcd_drawPixel(center_x - y, center_y + x, color); + lcd_drawPixel(center_x + y, center_y - x, color); + lcd_drawPixel(center_x - y, center_y - x, color); + } +} +void lcd_fillCircle(uint8_t center_x, uint8_t center_y, uint8_t radius, uint8_t color) { + for(uint8_t i=0; i<= radius;i++){ + lcd_drawCircle(center_x, center_y, i, color); + } +} +void lcd_drawBitmap(uint8_t x, uint8_t y, const uint8_t *picture, uint8_t width, uint8_t height, uint8_t color){ + uint8_t i,j, byteWidth = (width+7)/8; + for (j = 0; j < height; j++) { + for(i=0; i < width;i++){ + if(pgm_read_byte(picture + j * byteWidth + i / 8) & (128 >> (i & 7))){ + lcd_drawPixel(x+i, y+j, color); + } else { + lcd_drawPixel(x+i, y+j, !color); + } + } + } +} +void lcd_display() { +#if defined (SSD1306) || defined (SSD1309) + lcd_gotoxy(0,0); + lcd_data(&displayBuffer[0][0], DISPLAY_WIDTH*DISPLAY_HEIGHT/8); +#elif defined SH1106 + for (uint8_t i = 0; i < DISPLAY_HEIGHT/8; i++){ + lcd_gotoxy(0,i); + lcd_data(displayBuffer[i], sizeof(displayBuffer[i])); + } +#endif +} +void lcd_clear_buffer() { + for (uint8_t i = 0; i < DISPLAY_HEIGHT/8; i++){ + memset(displayBuffer[i], 0x00, sizeof(displayBuffer[i])); + } +} +uint8_t lcd_check_buffer(uint8_t x, uint8_t y) { + if( x > DISPLAY_WIDTH-1 || y > (DISPLAY_HEIGHT-1)) return 0; // out of Display + return displayBuffer[(y / (DISPLAY_HEIGHT/8))][x] & (1 << (y % (DISPLAY_HEIGHT/8))); +} +void lcd_display_block(uint8_t x, uint8_t line, uint8_t width) { + if (line > (DISPLAY_HEIGHT/8-1) || x > DISPLAY_WIDTH - 1){return;} + if (x + width > DISPLAY_WIDTH) { // no -1 here, x alone is width 1 + width = DISPLAY_WIDTH - x; + } + lcd_goto_xpix_y(x,line); + lcd_data(&displayBuffer[line][x], width); +} +#endif diff --git a/utility/lcd.h b/utility/lcd.h new file mode 100644 index 0000000..b3fb564 --- /dev/null +++ b/utility/lcd.h @@ -0,0 +1,152 @@ +/* + * This file is part of lcd library for ssd1306/ssd1309/sh1106 oled-display. + * + * lcd library for ssd1306/ssd1309/sh1106 oled-display is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or any later version. + * + * lcd library for ssd1306/ssd1309/sh1106 oled-display is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Foobar. If not, see . + * + * Diese Datei ist Teil von lcd library for ssd1306/ssd1309/sh1106 oled-display. + * + * lcd library for ssd1306/ssd1309/sh1106 oled-display ist Freie Software: Sie können es unter den Bedingungen + * der GNU General Public License, wie von der Free Software Foundation, + * Version 3 der Lizenz oder jeder späteren + * veröffentlichten Version, weiterverbreiten und/oder modifizieren. + * + * lcd library for ssd1306/ssd1309/sh1106 oled-display wird in der Hoffnung, dass es nützlich sein wird, aber + * OHNE JEDE GEWÄHRLEISTUNG, bereitgestellt; sogar ohne die implizite + * Gewährleistung der MARKTFÄHIGKEIT oder EIGNUNG FÃœR EINEN BESTIMMTEN ZWECK. + * Siehe die GNU General Public License für weitere Details. + * + * Sie sollten eine Kopie der GNU General Public License zusammen mit diesem + * Programm erhalten haben. Wenn nicht, siehe . + * + * lcd.h + * + * Created by Michael Köhler on 22.12.16. + * Copyright 2016 Skie-Systems. All rights reserved. + * + * lib for OLED-Display with ssd1306/ssd1309/sh1106-Controller + * first dev-version only for I2C-Connection + * at ATMega328P like Arduino Uno + * + * at GRAPHICMODE lib needs SRAM for display + * DISPLAY-WIDTH * DISPLAY-HEIGHT + 2 bytes + */ + +#ifndef LCD_H +#define LCD_H + +#ifdef __cplusplus +extern "C" { +#endif + +#if (__GNUC__ * 100 + __GNUC_MINOR__) < 303 +#error "This library requires AVR-GCC 3.3 or later, update to newer AVR-GCC compiler !" +#endif + +#include +#include + + /* TODO: define bus */ +#define I2C // I2C or SPI +/* TODO: define displaycontroller */ +#define SH1106 // or SSD1306, check datasheet of your display +/* TODO: define displaymode */ +#define TEXTMODE // TEXTMODE for only text to display, + // GRAPHICMODE for text and graphic +/* TODO: define font */ +#define FONT ssd1306oled_font// set font here, refer font-name at font.h/font.c + +/* TODO: define I2C-adress for display */ + +// using 7-bit-adress for lcd-library +// if you use your own library for twi check I2C-adress-handle +#define LCD_I2C_ADR (0x78 >> 1) // 7 bit slave-adress without r/w-bit + // r/w-bit are set/unset by library + // e.g. 8 bit slave-adress: + // 0x78 = adress 0x3C with cleared r/w-bit (write-mode) + + +#ifdef I2C +#include "i2c.h" // library for I2C-communication + // if you want to use other lib for I2C + // edit i2c_xxx commands in this library + // i2c_start(), i2c_byte(), i2c_stop() + +#elif defined SPI + // if you want to use your other lib/function for SPI replace SPI-commands +#define LCD_PORT PORTB +#define LCD_DDR DDRB +#define RES_PIN PB0 +#define DC_PIN PB1 +#define CS_PIN PB2 + +#endif + +#ifndef YES + #define YES 1 +#endif + +#define NORMALSIZE 1 +#define DOUBLESIZE 2 +#define UNDERLINE 4 +#define INVERT 8 + +#define LCD_DISP_OFF 0xAE +#define LCD_DISP_ON 0xAF + +#define WHITE 0x01 +#define BLACK 0x00 + +#define DISPLAY_WIDTH 128 +#define DISPLAY_HEIGHT 64 + + + +void lcd_command(uint8_t cmd[], uint8_t size); // transmit command to display +void lcd_data(uint8_t data[], uint16_t size); // transmit data to display +void lcd_init(uint8_t dispAttr); +void lcd_home(void); // set cursor to 0,0 +void lcd_invert(uint8_t invert); // invert display +void lcd_sleep(uint8_t sleep); // display goto sleep (power off) +void lcd_set_contrast(uint8_t contrast); // set contrast for display +void lcd_puts(const char* s); // print string, \n-terminated, from ram on screen (TEXTMODE) + // or buffer (GRAPHICMODE) +void lcd_puts_p(const char* progmem_s); // print string from flash on screen (TEXTMODE) + // or buffer (GRAPHICMODE) + +void lcd_clrscr(void); // clear screen (and buffer at GRFAICMODE) +void lcd_gotoxy(uint8_t x, uint8_t y); // set curser at pos x, y. x means character, +// y means line (page, refer lcd manual) +void lcd_goto_xpix_y(uint8_t x, uint8_t y); // set curser at pos x, y. x means pixel, +// y means line (page, refer lcd manual) +void lcd_putc(unsigned char c); // print character on screen at TEXTMODE + // at GRAPHICMODE print character to buffer +void lcd_charMode(uint8_t mode); // set size of chars +uint8_t lcd_charReadAndFormat(unsigned char c, uint8_t i); +#if defined GRAPHICMODE +void lcd_drawPixel(uint8_t x, uint8_t y, uint8_t color); +void lcd_drawLine(uint8_t x1, uint8_t y1, uint8_t x2, uint8_t y2, uint8_t color); +void lcd_drawRect(uint8_t px1, uint8_t py1, uint8_t px2, uint8_t py2, uint8_t color); +void lcd_fillRect(uint8_t px1, uint8_t py1, uint8_t px2, uint8_t py2, uint8_t color); +void lcd_drawCircle(uint8_t center_x, uint8_t center_y, uint8_t radius, uint8_t color); +void lcd_fillCircle(uint8_t center_x, uint8_t center_y, uint8_t radius, uint8_t color); +void lcd_drawBitmap(uint8_t x, uint8_t y, const uint8_t picture[], uint8_t width, uint8_t height, uint8_t color); +void lcd_display(void); // copy buffer to display RAM +void lcd_clear_buffer(void); // clear display buffer +uint8_t lcd_check_buffer(uint8_t x, uint8_t y); // read a pixel value from the display buffer +void lcd_display_block(uint8_t x, uint8_t line, uint8_t width); // display (part of) a display line +#endif + +#ifdef __cplusplus +} +#endif +#endif /* LCD_H */