![]() |
LCD Library 1.3.0
LCD Library - LCD control class hierarchy library. Drop in replacement for the LiquidCrystal Library.
|
00001 // --------------------------------------------------------------------------- 00002 // Created by GHPS on 5/06/2012. 00003 // Copyright 2012 - Under creative commons license 3.0: 00004 // Attribution-ShareAlike CC BY-SA 00005 // 00006 // This software is furnished "as is", without technical support, and with no 00007 // warranty, express or implied, as to its usefulness for any purpose. 00008 // 00009 // Thread Safe: No 00010 // Extendable: Yes 00011 // 00012 // @file LiquidCrystal_I2C_ByVac.c 00013 // This file implements a basic liquid crystal library that comes as standard 00014 // in the Arduino SDK but using the extension board BV4218/BV4208 from ByVac. 00015 // 00016 // @brief 00017 // This is a basic implementation of the LiquidCrystal library of the 00018 // Arduino SDK. The original library has been reworked in such a way that 00019 // this class implements the all methods to command an LCD based 00020 // on the Hitachi HD44780 and compatible chipsets using I2C extension 00021 // backpack BV4218 from ByVac. 00022 // 00023 // The functionality provided by this class and its base class is identical 00024 // to the original functionality of the Arduino LiquidCrystal library. 00025 // 00026 // @author GHPS - ghps@users.sourceforge.net 00027 // --------------------------------------------------------------------------- 00028 #if (ARDUINO < 100) 00029 #include <WProgram.h> 00030 #else 00031 #include <Arduino.h> 00032 #endif 00033 #include <inttypes.h> 00034 #include "LiquidCrystal_I2C_ByVac.h" 00035 00036 // CONSTRUCTORS 00037 // --------------------------------------------------------------------------- 00038 LiquidCrystal_I2C_ByVac::LiquidCrystal_I2C_ByVac( uint8_t lcd_Addr ) 00039 { 00040 _Addr = lcd_Addr; 00041 _polarity == NEGATIVE; 00042 } 00043 00044 // PUBLIC METHODS 00045 // --------------------------------------------------------------------------- 00046 00047 // 00048 // begin 00049 void LiquidCrystal_I2C_ByVac::begin(uint8_t cols, uint8_t lines, uint8_t dotsize) 00050 { 00051 Wire.begin(); 00052 LCD::begin ( cols, lines, dotsize ); 00053 } 00054 00055 // User commands - users can expand this section 00056 //---------------------------------------------------------------------------- 00057 // Turn the integrated backlight off/on 00058 00059 // setBacklight 00060 void LiquidCrystal_I2C_ByVac::setBacklight( uint8_t value ) 00061 { 00062 Wire.beginTransmission(_Addr); 00063 Wire.write(0x03); // ByVac command code 0x03 for backlight 00064 if (value==0) Wire.write(1); else Wire.write((byte)0); // 1 for off since polarity is NEGATIVE 00065 Wire.endTransmission(); 00066 } 00067 00068 // Turn the contrast off/on 00069 00070 // setContrast 00071 void LiquidCrystal_I2C_ByVac::setContrast( uint8_t value ) 00072 { 00073 Wire.beginTransmission(_Addr); 00074 Wire.write(0x05); // ByVac command code 0x05 for contrast 00075 if (value==0) Wire.write((byte)0); else Wire.write(1); 00076 Wire.endTransmission(); 00077 } 00078 00079 // PRIVATE METHODS 00080 // --------------------------------------------------------------------------- 00081 00082 // 00083 // init 00084 int LiquidCrystal_I2C_ByVac::init() 00085 { 00086 int status = 0; 00087 00088 // ByVac backpack initialized by onboard firmware 00089 // ------------------------------------------------------------------------ 00090 status=1; 00091 return ( status ); 00092 } 00093 00094 // low level data pushing commands 00095 //---------------------------------------------------------------------------- 00096 00097 // 00098 // send - write either command or data 00099 void LiquidCrystal_I2C_ByVac::send(uint8_t value, uint8_t mode) 00100 { 00101 Wire.beginTransmission(_Addr); 00102 Wire.write(mode+1); // map COMMAND (0) -> ByVac command code 0x01/ DATA (1) -> ByVac command code 0x02 00103 Wire.write(value); 00104 Wire.endTransmission(); 00105 }