目次
前
次
LCD用ラッパー関数
Arduinoには、LCDを扱うライブラリが用意されています。
使う場合は、インクルード指定してから
ピンアサインを書いておきます。
#include <LiquidCrystal.h>
/* LCD rs e D4 D5 D6 D7 */
LiquidCrystal lcd( 2, 3, 4, 5, 6, 7);
カーソルの位置を決め、文字列を与えれば表示されます。
lcd.begin( 16, 2 );
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Measure");
lcd.setCursor(0, 1);
lcd.print("Hello, world!");
行と表示文字列をパラメータとして与えれば
指定行に文字列が表示されるよう、ラッパー
関数を定義してみると、以下。
/* 2line 16column */
void put_lcd_line(byte lx,char *ptr)
{
/* judge */
if ( lx > 1 ) return ;
/* select line */
lcd.setCursor(0,lx);
/* put strings */
lcd.print( ptr );
}
/* 4line 20column */
void put_lcd_line(byte lx,char *ptr)
{
/* judge */
if ( lx > 3 ) return ;
/* select line */
lcd.setCursor(0,lx);
/* put strings */
lcd.print( ptr );
}
ラッパー関数を定義すると、初期化関数の内部は
次のようにまとめられます。
void init_lcd()
{
/* 20 columns x 4 lines */
lcd.begin( 20, 4 );
lcd.clear();
put_lcd_open();
}
void put_lcd_open()
{
put_lcd_line(0,"I'm ArduinoMega2560 ");
put_lcd_line(1," Hello , World ! ");
put_lcd_line(2," Otaru ");
put_lcd_line(3," Hokkaido ");
}
ラッパー関数を使ってみると、余計なことを
考えなくて済むので、コード開発効率が向上
します。
LCD表示用にバッファを使うときには、次の
関数を使い、文字列を指定領域に挿入できる
ようにしておきます。
void cpy_array(char *sptr,char *dptr)
{
while ( *sptr != 0 ) {
/* copy */
*dptr = *sptr ;
/* source pointer increment */
sptr++ ;
/* source pointer increment */
dptr++ ;
}
}
転送元と転送先に、配列のアドレスを利用するので
メモリ中に確保した配列であれば、文字を扱う配列
でも使えるようにしました。
put_lcd_openは、次のように書換えられます。
void put_lcd_open()
{
/* clear */
clr_lcd();
/* 0 line */
cpy_array("I'm ArduinoMega2560",line0);
put_lcd_line(0,line0);
/* 1 line */
cpy_array("Hello , World !",line1+2);
put_lcd_line(1,line1);
/* 2 line */
cpy_array("Otaru",line2+4);
put_lcd_line(2,line2);
/* 3 line */
cpy_array("Hokkaido",line3+6);
put_lcd_line(3,line3);
}
関数put_lcd_lineは、文字列出力だけに専念できます。
目次
前
次