2017-11

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Arduinoで16x4の液晶を使う

ArduinoのLiquidCrystalライブラリ、機能が良くなってきてますが16x4の液晶を使おうとすると、setCursorでズレることが判明。
この原因は簡単で、ライブラリが想定しているDDRAMのオフセット値が横20文字が前提になっているため。

簡単に修正してしまうのであれば、LiquidCrystal.cpp の setCursorを以下のように変更してしまう。


void LiquidCrystal::setCursor(uint8_t col, uint8_t row)
{
// int row_offsets[] = { 0x00, 0x40, 0x14, 0x54 };
int row_offsets[] = { 0x00, 0x40, 0x10, 0x50 }; //ここ!

if ( row > _numlines ) {
row = _numlines-1; // we count rows starting w/0
}

command(LCD_SETDDRAMADDR | (col + row_offsets[row]));
}


ただし、この方法で改造してしまうと20文字を使うとズレてしまうので汎用性という意味ではよろしくないので、ひと工夫。
まずLiquidCrystal.hのコンストラクタを修正。以下を追加する。



uint8_t _displayfunction;
uint8_t _displaycontrol;
uint8_t _displaymode;

uint8_t _initialized;

uint8_t _numlines,_currline;
uint8_t _lcd_cols; //追加する
};

#endif


次にLiquidCrystal.cppのbeginに以下のように追加。


// finally, set # lines, font size, etc.
command(LCD_FUNCTIONSET | _displayfunction);

// save cols
_lcd_cols = cols;       //文字数を保存しておく

// turn the display on with no cursor or blinking default
_displaycontrol = LCD_DISPLAYON | LCD_CURSOROFF | LCD_BLINKOFF;
display();


さらにsetCursorを以下のように修正。


void LiquidCrystal::setCursor(uint8_t col, uint8_t row)
{

int row_offsets[] = { 0x00, 0x40, 0x14, 0x54 }; //デフォルトのオフセット

if (_lcd_cols == 16) {
    //16文字用オフセットを設定
row_offsets[0] = 0x00;
row_offsets[1] = 0x40;
row_offsets[2] = 0x10;
row_offsets[3] = 0x50;
}

if ( row > _numlines ) {
row = _numlines-1; // we count rows starting w/0
}

command(LCD_SETDDRAMADDR | (col + row_offsets[row]));
}



これでbegin(16,4)などで、文字数を16にセットした場合のオフセットが正しくなります。
スポンサーサイト

ArduinoのMIDIライブラリ

悩み。
ArduinoのMIDIライブラリ、取りこぼしが酷いんですね。
特にElectribeとあわせて使うとノート情報だけでも結構な量があるらしくて。
ノート情報見て動く機材作ると、かなり酷いことになります。
こまったなぁ・・・ライブラリ使わずに自力でハンドルしたほうがいいのかもしれん。
あるいはPICかなんかでフィルタを作ってしまおうか。

しばしお休み

7月はちょっとイベント等が多々あり、更新がままならないと思います。

スケール変更機能付きのAudinoのスケッチを置いておきますね。参考にしてください。
auduin_scale_chg.txt

訂正

回路図に誤りがありました。正しい回路図に差し替えてあります。
誤りの箇所は74HC154のA0~A3のピンが間違っていました。

進捗

シーケンサはフェーズ2の実装に入ってます。

ん?何がフェーズ2かって?
マトモなケースの収容中です。

«  | ホーム |  »

プロフィール

yamadanohito

Author:yamadanohito
『やまだの人』
ニコニコ動画に「やまだ音楽」シリーズなどを上げています。
Electribeプレイヤーの端っこの方にいます。もともとはESX-1使い。音声処理用に「サンプラーあれば便利じゃ?」と購入。

気が付いたらなぜかEMX-1も家にあったんだぜ!ぐはっ。

最新記事

最新コメント

最新トラックバック

月別アーカイブ

カテゴリ

未分類 (15)
ニコニコ動画 (8)
Arduino (27)
回路図 (3)
スケッチ (2)
Live (6)
ガイガーカウンター (11)

検索フォーム

RSSリンクの表示

リンク

このブログをリンクに追加する

ブロとも申請フォーム

この人とブロともになる

QRコード

QRコード

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。