//Code to test LCD_1602 class#include "LCD_1602.h"LCD_1602 LCD(0x27);void setup() { LCD.begin( ); LCD.message(0,"DCC Zniffer"); //display message in row 0 LCD.message(123); //append number delay(2000); LCD.setCursor(4,0); // cursor at Z LCD.message("S"); //becomes "DCC S... delay(2000); LCD.message("Top line","Bottom line"); delay(2000); for (int i = 0; i < 101; i++) { LCD.message(1,i); delay(400); } }void loop() { } ---------------------------------------//LCD_1602.cpp implementation file#include "LCD_1602.h"LCD_1602::LCD_1602( ) : LiquidCrystal_I2C (0x27,16,2){ }; //constructorLCD_1602::LCD_1602( int addr) : LiquidCrystal_I2C (addr,16,2){ }; //constructorvoid LCD_1602:: begin( ){init(); backlight(); //required }void LCD_1602::clear_row(int row){ LiquidCrystal_I2C::setCursor(0,row); for (int ii= 0; ii<16; ii++) print(' '); LiquidCrystal_I2C::setCursor(0,row);}void LCD_1602::message(int row, char *mess){ clear_row(row); print(mess);} void LCD_1602::message(char *mess){ print(mess);} void LCD_1602::message(int res){ print(res);} void LCD_1602::message(int row, int res){ clear_row(row); print(res);}void LCD_1602::message(char *mess1, char *mess2){ message(0,mess1); message(1,mess2);} void LCD_1602::setCursor(int col, int row){ LiquidCrystal_I2C::setCursor(col,row);}-------------------------------------//LCD_1602.h header file#ifndef LCD_1602__H#define LCD_1602_H#include "Arduino.h"#include <LiquidCrystal_I2C.h>class LCD_1602 : LiquidCrystal_I2C {public: LCD_1602 (); LCD_1602 (int addr); //select address option void begin( ); void message(char *mess); void message(int res); void message(int row, char *mess); void message(int row, int res); void message(char *mess1, char *mess2); void clear_row(int row); void setCursor(int col, int row); };#endif=========================