mirror of
				https://github.com/KevinMidboe/Arduino.git
				synced 2025-10-29 17:40:11 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			106 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			106 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| // ---------------------------------------------------------------------------
 | |
| // Created by GHPS on 5/06/2012.
 | |
| // Copyright 2012 - Under creative commons license 3.0:
 | |
| //        Attribution-ShareAlike CC BY-SA
 | |
| //
 | |
| // This software is furnished "as is", without technical support, and with no 
 | |
| // warranty, express or implied, as to its usefulness for any purpose.
 | |
| //
 | |
| // Thread Safe: No
 | |
| // Extendable: Yes
 | |
| //
 | |
| // @file LiquidCrystal_I2C_ByVac.c
 | |
| // This file implements a basic liquid crystal library that comes as standard
 | |
| // in the Arduino SDK but using the extension board BV4218/BV4208 from ByVac.
 | |
| // 
 | |
| // @brief 
 | |
| // This is a basic implementation of the LiquidCrystal library of the
 | |
| // Arduino SDK. The original library has been reworked in such a way that 
 | |
| // this class implements the all methods to command an LCD based
 | |
| // on the Hitachi HD44780 and compatible chipsets using I2C extension
 | |
| // backpack BV4218 from ByVac.
 | |
| //
 | |
| // The functionality provided by this class and its base class is identical
 | |
| // to the original functionality of the Arduino LiquidCrystal library.
 | |
| //
 | |
| // @author GHPS - ghps@users.sourceforge.net
 | |
| // ---------------------------------------------------------------------------
 | |
| #if (ARDUINO <  100)
 | |
| #include <WProgram.h>
 | |
| #else
 | |
| #include <Arduino.h>
 | |
| #endif
 | |
| #include <inttypes.h>
 | |
| #include "LiquidCrystal_I2C_ByVac.h"
 | |
| 
 | |
| // CONSTRUCTORS
 | |
| // ---------------------------------------------------------------------------
 | |
| LiquidCrystal_I2C_ByVac::LiquidCrystal_I2C_ByVac( uint8_t lcd_Addr )
 | |
| {
 | |
|    _Addr = lcd_Addr;
 | |
|    _polarity == NEGATIVE;
 | |
| }
 | |
| 
 | |
| // PUBLIC METHODS
 | |
| // ---------------------------------------------------------------------------
 | |
| 
 | |
| //
 | |
| // begin
 | |
| void LiquidCrystal_I2C_ByVac::begin(uint8_t cols, uint8_t lines, uint8_t dotsize) 
 | |
| {
 | |
|    Wire.begin();
 | |
|    LCD::begin ( cols, lines, dotsize );   
 | |
| }
 | |
| 
 | |
| // User commands - users can expand this section
 | |
| //----------------------------------------------------------------------------
 | |
| // Turn the integrated backlight off/on
 | |
| 
 | |
| // setBacklight
 | |
| void LiquidCrystal_I2C_ByVac::setBacklight( uint8_t value ) 
 | |
| {
 | |
|   Wire.beginTransmission(_Addr);
 | |
|   Wire.write(0x03); 					//  ByVac command code 0x03 for backlight
 | |
|   if (value==0) Wire.write(1); else Wire.write((byte)0); 	// 1 for off since polarity is NEGATIVE
 | |
|   Wire.endTransmission();
 | |
| }
 | |
| 
 | |
| // Turn the contrast off/on
 | |
| 
 | |
| // setContrast
 | |
| void LiquidCrystal_I2C_ByVac::setContrast( uint8_t value ) 
 | |
| {
 | |
|   Wire.beginTransmission(_Addr);
 | |
|   Wire.write(0x05); 					//  ByVac command code 0x05 for contrast
 | |
|   if (value==0) Wire.write((byte)0); else Wire.write(1); 
 | |
|   Wire.endTransmission();
 | |
| }
 | |
| 
 | |
| // PRIVATE METHODS
 | |
| // ---------------------------------------------------------------------------
 | |
| 
 | |
| //
 | |
| // init
 | |
| int LiquidCrystal_I2C_ByVac::init()
 | |
| {
 | |
|    int status = 0;
 | |
|    
 | |
|    // ByVac backpack initialized by onboard firmware
 | |
|    // ------------------------------------------------------------------------
 | |
|    status=1;
 | |
|    return ( status );
 | |
| }
 | |
| 
 | |
| // low level data pushing commands
 | |
| //----------------------------------------------------------------------------
 | |
| 
 | |
| //
 | |
| // send - write either command or data
 | |
| void LiquidCrystal_I2C_ByVac::send(uint8_t value, uint8_t mode) 
 | |
| {
 | |
|   Wire.beginTransmission(_Addr);
 | |
|   Wire.write(mode+1); // map COMMAND (0) -> ByVac command code 0x01/ DATA  (1) ->  ByVac command code 0x02
 | |
|   Wire.write(value);
 | |
|   Wire.endTransmission();
 | |
| }
 |