ATtiny+74HC595でLCDを使う(ShiftLCD)


ATTinyでのSPI通信を調べていたら、ATtiny+74HC595(シフトレジスター)+ShiftLCDライブラリで
1602のLCDを使えることが分かりましたので紹介します。

こ ちらでライブラリが紹介されていますが、このページからダウンロードできるライブラリは少し古いので
最近のIDEではコンパイルエラーになります。

こちらからFIX版がダウンロードできます。
https://github.com/Chris--A/ShiftLCD_Fixed
上記から ShiftLCD_Fixed のライブラリをダウンロードし、展開したらフォルダーごとライブラリーフォルダーに移動します。
これでexamplesフォルダーにあるスケッチが修正なしで動くようになります。
バックライトON/OFFのサンプルも正しく動きます。

【ATtiny84@1MHz】
以下の結線でexamplesフォルダーにあるスケッチが動きます。
FemtoCowのAddOnを使ってコンパイルしています。



【ATtiny85@1MHz】
以下の結線でexamplesフォルダーにあるスケッチが動きます。



【ATtiny861@1Mhz】
以下の結線でexamplesフォルダーにあるスケッチが動きます。



【ATtiny4313@1MHz】
以下の結線でexamplesフォルダーにあるスケッチが動きます。



以下のスケッチを使用してモデルごとのパフォーマンスを測定してみました。

/*
 * 1602 LCD Sample with ShiftLCD
 * https://github.com/Chris--A/ShiftLCD_Fixed
 *
 * 74HC595-----1602LCD-----ATtiny
 *              GND   ---- GND
 *              VCC   ---- 5V
 *              VE    ---- Variable resistor
 * QH     ----- RS
 *              R/W   ----- GND
 * QG     ----- EN
 * QD     ----- D4
 * QC     ----- D5
 * QB     ----- D6
 * QA     ----- D7
 * QF     ----- LED+
 *              LED-  ----- GND
 * SER                ----- D2
 * RCLK               ----- D3
 * SRCLK              ----- D4
 *
 */

// include the library code:
#include <ShiftLCD.h>

// initialize the library with the numbers of the interface pins
// SerialDataIn, ShiftClock, LatchClock
ShiftLCD lcd(2, 4, 3);

void setup() {
  // set up the LCD's number of rows and columns:
  lcd.begin(16, 2);
}

void loop() {
  static int number=0;
  char buf[21];

  if (number < 100) {
    lcd.setCursor(0, 0);
  // Print a message to the LCD.
    sprintf(buf,"Hello, World %03d!",number++);
    lcd.print(buf);

  // set the cursor to column 0, line 1
  // (note: line 1 is the second row, since counting begins with 0):
    lcd.setCursor(0, 1);
  // print the number of seconds since reset:
    lcd.print(millis());
  }
}

モデル 処理時間(ミリ秒) 供給開始
ATtiny84 47233 2005/12
ATtiny85 44408 2005/02
ATtiny861 41756 2006/10
ATtiny4313 37877 2003/09


一番リリースが早い4313が一番早いのは意外でした。

なお、同様のライブラリに LiquidCrystal_SR3Wライブラリがあります。
LiquidCrystal_SR3W に付いては、こちらで紹介されてい ますが、ATtinyでは動きませんでした。

続く...