ATtiny+PCF8574T(Backpack)でLCDを使う


1602のLCDと一緒に使うic2モジュール(Backpackモジュールと呼ばれています)を入手したので紹介します。
このようなモジュールで PCF8574T と可変抵抗が実装されています。



回路図がこちらに 公開されていました。
i2cアドレスは0x27、PCF8574TとLCDの結線パターンは以下のパターンとなります。
i2cアドレスは裏面のA0/A1/A2のパターンをショートすることで変更可能です。

PCF8574T P0 P1 P2 P3 P4 P5 P6 P7
LCD RS RW EN BL(K) D4 D5 D6 D7

1602のLCDの裏面に取り付けると、以下の回路となり、右端の4ピン(GND/VCC/SDA/SCL)が接続用のピンとなります。
8050はピン配置が国産の物とは違っていてE-B-C配列になっています。
バックライトはPCF8574TのP3で制御することができます。




こ ちらから 「ATtiny85-LCD-library-master.zip」をダウンロードし、
展開したらLiquidCrystal_ATtinyフォルダーだけをライブラリーフォルダーに移動します。
スケッチは以下の通りです。

/*
 * 1602 LCD Sample with ATtiny85-LCD-library-master.zip
 * https://github.com/platisd/ATtiny85-LCD-library
 *
 * BackPack-----ATTiny85
 * SDA     -----PB0
 * SCL     -----PB2
 *
 * BackPack-----ATTiny84
 * SDA     -----PA6
 * SCL     -----PA4
 *
 * BackPack-----ATTiny861
 * SDA     -----PB0
 * SCL     -----PB2
 *
 * BackPack-----ATTiny4313
 * SDA     -----PB5
 * SCL     -----PB7
 */

#include <TinyWireM.h>
#include <LiquidCrystal_attiny.h>

#define i2cAddress 0x27

LiquidCrystal_I2C lcd(i2cAddress,16,2); // set the LCD address to 0x27 for a 16 chars and 2 line display

void setup()
{
    lcd.init(); // initialize the lcd
}

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());
  }
}

ATtinyのSDA/SCLと結線すれば動きます。