レビューメディア「ジグソー」

Arduino Uno Rev3用UIとして

Galileoでも使えるかもしれないという思いもあり


用を兼ねて購入してみました。

先に届いたので、とりあえずGalileoに挿してみたところ、
やっぱり動きませんでした。
Galileo
Galileo

Arduino Uno Rev3ではちゃんと動きました。
Uno
Uno

ソースに1行
lcd.init(1,8,255,9,4,5,6,7,0,0,0,0);
を追加したら表示するようになりました。
表示のリフレッシュが我慢の範囲を超えた遅さです。
眺める分にはいいですが、入力のレスポンスとしては使えない状況です。
チューニングが必要です。
Galileoソース修正版
Galileoソース修正版

サンプルコード
ソースの変更箇所

GalileoでこのLCDを使うと遅いとのもっぱらの評判です。
小さな改善をしてみました。
こちらが改善前の表示です。


改善を施すと、こうなります。


改善個所は、arduino-1.5.3\libraries\LiquidCrystal\src にある。2つのファイルをいじります。

・LiquidCrystal.h の変更
86行目の private: の中に2行追加します。
_s は slow の意味で付けました。
従来の関数の名前を変えたものに当たります。
最初に送るコマンドの時はピンの初期化が必要なので、コマンドを送るときに使います。
文字列を送るときにどこかで呼ばれる send と write4bits を高速化するのが狙いです。
-----
void send_s(uint8_t, uint8_t);
void write4bits_s(uint8_t);
-----

・LiquidCrystal.cpp の変更
write4bits をコピーして write4bits_s を用意します。
従来の関数から呼ばれるはずの write4bits は高速化のために pinMode を無効にします。
write4bits_s はコマンドを送るときに使うために pinMode を残します。
-----
void LiquidCrystal::write4bits(uint8_t value) {
for (int i = 0; i < 4; i++) {
// pinMode(_data_pins[i], OUTPUT);
digitalWrite(_data_pins[i], (value >> i) & 0x01);
}

pulseEnable();
}

void LiquidCrystal::write4bits_s(uint8_t value) {
for (int i = 0; i < 4; i++) {
pinMode(_data_pins[i], OUTPUT);
digitalWrite(_data_pins[i], (value >> i) & 0x01);
}

pulseEnable();
}
-----

send をコピーてします。write4bits を write4bits_s にしておきます。
write4bits を write4bits_s に変更します。
-----
void LiquidCrystal::send_s(uint8_t value, uint8_t mode) {
digitalWrite(_rs_pin, mode);

// if there is a RW pin indicated, set it low to Write
if (_rw_pin != 255) {
digitalWrite(_rw_pin, LOW);
}

if (_displayfunction & LCD_8BITMODE) {
write8bits(value);
} else {
// write4bits(value>>4);
// write4bits(value);
write4bits_s(value>>4);
write4bits_s(value);
}
}
-----
  • 購入金額

    1,450円

  • 購入日

    2014年02月27日

  • 購入場所

11人がこのレビューをCOOLしました!

コメント (5)

  • つきさん

    2014/02/28

    キー付きなのでお得感はあります。
    でっぱりが長いのでボードによっては当たるかも
    半田付けはもうちょっと丁寧な方がいいかもしれません。

    動作確認はここで拾ったサンプルコードを使いました。
    http://www.dfrobot.com/wiki/index.php?title=Arduino_LCD_K...
    Galileoでは、表示遅延以前の問題で、
    1行目が■で埋められ、2行目は文字なしでした。
    新しいGalileoでも試してみたいですが、まだ勇気がありません。
  • しばさん

    2014/03/01

    これ私も買いましたがGalileoでは動作しないんですよねぇ…
    Uno R3では動作するのに…このままではorz
  • つきさん

    2014/03/01

    時間があれば解析して、
    ピギーバックのままソフトの変更で対応できるのか、
    配線を付け変えればできるのか、
    チャレンジするのですが、、、、
    しばさん 頑張ってみてください。(^^;;

    私のレビュー課題では、
    こちらを使うことにしてしまっているので、、、

他2件のコメントを表示

ZIGSOWにログインするとコメントやこのアイテムを持っているユーザー全員に質問できます。

YouTube の動画を挿入

YouTube の URL または動画の ID を入力してください

動画の ID が取得できません。ID もしくは URL を正しく入力してください。

ニコニコ動画の動画を挿入

ニコニコ動画の URL または動画の ID を入力してください

動画の ID が取得できません。ID もしくは URL を正しく入力してください。

ZIGSOWリンク挿入

検索対象とキーワードを入力してください

    外部リンクを挿入

    リンク先の URL とタイトルを入力してください

    URL を正しく入力してください。

    画像を挿入(最大サイズ20MB)

    画像を選択してください

    ファイルサイズが20MBを超えています

    別の画像を追加

    ZIGSOW にログイン

    ZIGSOW会員登録(無料)はこちらから