[기타] [타이젠] 아두이노의 16x2 LCD Display라이브러리 LiquidCrystal_I2C의 타이젠 포팅
- Download
- LiquidCrystal_I2C.zip(5.5 KB) 2019-09-1511
- Link
- http://tizenschool.org/tutorial/153/contents/160
타이젠 (Tizen)에 아두이노에서 사용하던 16x2 LCD Display를 사용할수 있도록 LiquidCrystal_I2C를 라이브러리를 수정하여 동작 확인 하였습니다.
Constructor에서 I2C의 주소로 객체 Open, Destructors에서는 Close코드 추가
LiquidCrystal_I2C::LiquidCrystal_I2C(unsigned char lcd_addr, unsigned char lcd_cols, unsigned char lcd_rows, unsigned char charsize) { _addr = lcd_addr; _cols = lcd_cols; _rows = lcd_rows; _charsize = charsize; _backlightval = LCD_BACKLIGHT; // // Open I2C Address // int ret = peripheral_i2c_open(1, _addr, &m_i2c_h); if (ret != PERIPHERAL_ERROR_NONE) { m_i2c_h = NULL; } } LiquidCrystal_I2C::~LiquidCrystal_I2C() { if( m_i2c_h ) { peripheral_i2c_close(m_i2c_h); } } |
expanderWrite에 함수에서 기존 함수 대신 periperal_i2c_write대체
void LiquidCrystal_I2C::expanderWrite(unsigned char _data) { uint8_t data_write[2]; data_write[0] = _data | _backlightval; // // Write I2C // int ret = peripheral_i2c_write(m_i2c_h, data_write, 1); if (ret < 0) { return; } } |
기존 아두이노에서 사용하던 16*2 LCD Display 코드 재 활용
LiquidCrystal_I2C lcd(0x27, 16, 2); void service_app_control(app_control_h app_control, void *data) { dlog_print(DLOG_INFO, LOG_TAG, "%s : %s (%s=>%d)", "service_app_control", rindex(__FILE__,N'/') + 1, __func__, __LINE__); MotionIn.both(motion_interrupted_cb ); //---------------------------------------------------------------------------------- // initialize the LCD //---------------------------------------------------------------------------------- lcd.begin(); lcd.backlight(); lcd.clear(); lcd.setCursor(0, 0); lcd.print("Hell Maker"); sleep(2); lcd.setCursor(0, 1); lcd.print(" PET CPR ver 0.1"); sleep(2); } |