first commit

This commit is contained in:
Jérôme Delacotte
2025-03-06 11:15:32 +01:00
commit 7b30d6e298
5276 changed files with 2108927 additions and 0 deletions

192
libraries/LCD03/LCD03.h Executable file
View File

@@ -0,0 +1,192 @@
/*
LCD03.h - Arduino library for I2C LCD03 display from Robot Electronics
see http://www.robot-electronics.co.uk/htm/Lcd03tech.htm
Copyright (c) 2013 Ben Arblaster. All right reserved.
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library 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
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
#ifndef LCD03_h
#define LCD03_h
#include <inttypes.h>
#include <Wire.h>
#include "Print.h"
// default i2c address
#define I2C_ADDR 0xC6
// registers
#define REG_COMMAND 0x00
#define REG_KEYPADLOW 0x01
#define REG_KEYPADHIGH 0x02
#define REG_VERSION 0x03
// commands
#define LCD_NOOP 0x00
#define LCD_CURSORHOME 0x01
#define LCD_CURSORPOS 0x02
#define LCD_CURSORPOSXY 0x03
#define LCD_CURSOROFF 0x04
#define LCD_CURSORON 0x05
#define LCD_CURSORBLINK 0x06
#define LCD_BACKSPACE 0x08
#define LCD_TAB 0x09
#define LCD_CURSORDOWN 0x0A
#define LCD_CURSORUP 0x0B
#define LCD_CLEARDISPLAY 0x0C
#define LCD_LINEFEED 0x0D
#define LCD_CLEARCOLUMN 0x11
#define LCD_TABSET 0x12
#define LCD_BACKLIGHTON 0x13
#define LCD_BACKLIGHTOFF 0x14
#define LCD_CUSTOMCHAR 0x1B
// custom chars
#define LCD_CUSTOMCHAR_BASE 0x80
#define LCD_CUSTOMCHAR_MASK 0b11100000
// keypad values
#define KEYPAD_1 0x01
#define KEYPAD_2 0x02
#define KEYPAD_3 0x04
#define KEYPAD_4 0x08
#define KEYPAD_5 0x10
#define KEYPAD_6 0x20
#define KEYPAD_7 0x40
#define KEYPAD_8 0x80
#define KEYPAD_9 0x100
#define KEYPAD_STAR 0x200
#define KEYPAD_0 0x400
#define KEYPAD_HASH 0x800
class LCD03 : public Print {
public:
// Constructors
#ifdef ARDUINO_ARCH_esp8266
LCD03(char i2c_address=I2C_ADDR, uint8_t sda_pin=SDA, uint8_t scl_pin=SCL);
#else
LCD03(char i2c_address=I2C_ADDR);
#endif
// LiquidCrystal compatible functions
void begin(uint8_t cols, uint8_t rows);
void clear();
void home();
void setCursor(uint8_t);
void setCursor(uint8_t, uint8_t);
size_t write(uint8_t);
size_t write(const uint8_t *buffer, size_t size);
void cursor();
void noCursor();
void blink();
void noBlink();
void display();
void noDisplay();
void createChar(uint8_t, uint8_t[]);
// Unimplemented LiquidCrystal functions
//void scrollDisplayLeft();
//void scrollDisplayRight();
//void autoscroll();
//void noAutoscroll();
//void leftToRight();
//void rightToLeft();
// LCD03 extras
void newLine();
void cursorDown();
void cursorUp();
void clearColumn();
void backspace();
void tab();
void tabSet(uint8_t);
void backlight();
void noBacklight();
uint8_t bufferFreeBytes();
uint16_t readKeypad();
private:
char _i2c_address;
void send(uint8_t);
};
inline void LCD03::clear() {
send(LCD_CLEARDISPLAY);
}
inline void LCD03::backlight() {
send(LCD_BACKLIGHTON);
}
inline void LCD03::noBacklight() {
send(LCD_BACKLIGHTOFF);
}
// provided for compatibility with LiquidCrystal - only backlight is switched
inline void LCD03::display() {
send(LCD_BACKLIGHTON);
}
// provided for compatibility with LiquidCrystal - only backlight is switched
inline void LCD03::noDisplay() {
send(LCD_BACKLIGHTOFF);
}
inline void LCD03::home() {
send(LCD_CURSORHOME);
}
inline void LCD03::noBlink() {
send(LCD_CURSORON);
}
inline void LCD03::blink() {
send(LCD_CURSORBLINK);
}
inline void LCD03::noCursor() {
send(LCD_CURSOROFF);
}
inline void LCD03::cursor() {
send(LCD_CURSORON);
}
inline void LCD03::newLine() {
send(LCD_LINEFEED);
}
inline void LCD03::cursorDown() {
send(LCD_CURSORDOWN);
}
inline void LCD03::cursorUp() {
send(LCD_CURSORUP);
}
inline void LCD03::clearColumn() {
send(LCD_CLEARCOLUMN);
}
inline void LCD03::backspace() {
send(LCD_BACKSPACE);
}
inline void LCD03::tab() {
send(LCD_TAB);
}
#endif