ROTOR: PANTALLA LCD

Por defecto viene configurada como un display LCD 20×4 con cuatro lineas de control.

Para eliminar cableado, de 8 hilos a solo 4, utilizare un display con un interface I2C. En el anterior montaje, un Keyer, utilice uno compatible con SainsMart. Utilizo el mismo para evitar problemas.

Según la documentación, todos los cambios del display hay que hacerlos en la pestaña rotator.features.h. Esta información no es correcta, donde se debe cambiar es en la pestaña

rotator_k3ngdisplay.h.

Para ello comentamos la linea:

#define FEATURE_4_BIT_LCD_DISPLAY

y decentamos la linea:

#define FEATURE_SAINTMART_I2C_LCD

Compilo y aparecen en la pestaña rotator_k3ngdisplay.cpp los siguientes errores:

rotator_k3ngdisplay.cpp:71: error: no matching function for call to 'LiquidCrystal_I2C::LiquidCrystal_I2C(int, int, int, int, int, int, int, int, int, int)'

LiquidCrystal_I2C lcd(I2C_ADDR,En_pin,Rw_pin,Rs_pin,D4_pin,D5_pin,D6_pin,D7_pin, BACKLIGHT_PIN, POSITIVE); 

^

rotator_k3ngdisplay.cpp:71:105: note: candidates are:

In file included from rotator_k3ngdisplay.cpp:31:0:

/Users/Papa/Documents/Arduino/libraries/LiquidCrystal_I2C/LiquidCrystal_I2C.h:71:2: note: LiquidCrystal_I2C::LiquidCrystal_I2C(uint8_t, uint8_t, uint8_t, uint8_t)

LiquidCrystal_I2C(uint8_t lcd_addr, uint8_t lcd_cols, uint8_t lcd_rows, uint8_t charsize = LCD_5x8DOTS);

^

/Users/Papa/Documents/Arduino/libraries/LiquidCrystal_I2C/LiquidCrystal_I2C.h:71:2: note: candidate expects 4 arguments, 10 provided

/Users/Papa/Documents/Arduino/libraries/LiquidCrystal_I2C/LiquidCrystal_I2C.h:60:7: note: LiquidCrystal_I2C::LiquidCrystal_I2C(const LiquidCrystal_I2C&)

class LiquidCrystal_I2C : public Print {

^

/Users/Papa/Documents/Arduino/libraries/LiquidCrystal_I2C/LiquidCrystal_I2C.h:60:7: note: candidate expects 1 argument, 10 provided

rotator_k3ngdisplay.cpp: In member function 'void K3NGdisplay::initialize()':

rotator_k3ngdisplay.cpp:117: error: no matching function for call to 'LiquidCrystal_I2C::begin(int&, uint8_t&)'

lcd.begin(display_columns, display_rows); // if you are getting an error on this line and do not have

^

rotator_k3ngdisplay.cpp:117:43: note: candidate is:

In file included from rotator_k3ngdisplay.cpp:31:0:

/Users/Papa/Documents/Arduino/libraries/LiquidCrystal_I2C/LiquidCrystal_I2C.h:76:7: note: void LiquidCrystal_I2C::begin()

void begin();

^

/Users/Papa/Documents/Arduino/libraries/LiquidCrystal_I2C/LiquidCrystal_I2C.h:76:7: note: candidate expects 0 arguments, 2 provided

no matching function for call to 'LiquidCrystal_I2C::LiquidCrystal_I2C(int, int, int, int, int, int, int, int, int, int)'

Compruebo las linea de código, y cambio la linea

LiquidCrystal_I2C lcd (I2C_ADDR, En_pin, Rw_pin, Rs_pin, D4_pin, D5_pin, D6_pin, D7_pin, BACKLIGHT_PIN, POSITIVE);

Por

 LiquidCrystal_I2C lcd (I2C_ADDR, 16.2);

Vuelvo a compilar y siguen apareciendo los siguientes errores:

rotator_k3ngdisplay.cpp: In member function 'void K3NGdisplay::initialize()':

rotator_k3ngdisplay.cpp:117: error: no matching function for call to 'LiquidCrystal_I2C::begin(int&, uint8_t&)'

lcd.begin(display_columns, display_rows); // if you are getting an error on this line and do not have

^

rotator_k3ngdisplay.cpp:117:43: note: candidate is:

In file included from rotator_k3ngdisplay.cpp:31:0:

/Users/Papa/Documents/Arduino/libraries/LiquidCrystal_I2C/LiquidCrystal_I2C.h:76:7: note: void LiquidCrystal_I2C::begin()

void begin();

^

/Users/Papa/Documents/Arduino/libraries/LiquidCrystal_I2C/LiquidCrystal_I2C.h:76:7: note: candidate expects 0 arguments, 2 provided

no matching function for call to 'LiquidCrystal_I2C::begin(int&, uint8_t&)'

Para eliminar este error, cambio las siguiente linea de código

Lcd.begin (display_columns, display_rows); 

por

#ifdef FEATURE_4_BIT_LCD_DISPLAY)

Lcd.begin (display_columns, display_rows); // if you are getting an error on this line and do not have

// any of the LCD display features enabled, remove

// k3ngdisplay.h and k3ngdisplay.cpp from your ino directory

#endif

Se compila sin ningún error, lo pruebo y funciona correctamente.

Para no tener que cambiar los datos de la linea:

LiquidCrystal_I2C lcd (I2C_ADDR, 16.2);

La cambio por 

LiquidCrystal_I2C lcd (I2C_ADDR, LCD_COLUMNS, LCD_ROWS);

y en la pestaña rotator_k3ngdisplay.h, incluyo las siguientes lineas

#define LCD_COLUMNS 16

#define LCD_ROWS 2

De esta forma, todos los cambios que se tengan que hacer, lo haremos en rotator_k3ngdisplay.h