ATtiny 44AでI2Cを使わずにLCD(1602)を使う

昨日は LCD (1602) の使い方の勉強のため、Arduino uno で使ってみました。
今日はほぼ同内容ですが ATtiny 44A を使用、開発環境は Arduino IDE です。

まずは Arduino uno と ATtiny 44A を ISP 接続。このあたりの詳しい事は検索すると他の方がわかりやすく書かれた記事が有るので配線(例)だけ。
昨日、3.3V で LCD を使ったら文字化けしたので赤い線は5V にしています。

ATtiny44A と LCD も接続。詳しくは昨日の記事をご参照ください。
昨日同様、V0-GND 間の抵抗は1.8kΩにしました。

プログラムは昨日のコピペ。で、動くと思ったのですが。。。

PAxピンはそのまま書けば問題なく動いてくれました。
ところがPBピンはなぜかうまくいきません。

ATtiny 44A のデータシートを見るとピン2 が PB0, ピン3 が PB1 になっていますが
PB0, PB1 で指定しても数字の 2, 3 で指定しても動いてくれません。

数字をいろいろ変えて 10 で PB0, 9 で PB1 を指定できましたが
これって一体、なんの数字でしょうか???

#include <LiquidCrystal.h>

#define PIN_RS 10  // PB0, PIN2
#define PIN_E  9   // PB1, PIN3

#define PIN_D4 PA0
#define PIN_D5 PA1
#define PIN_D6 PA2
#define PIN_D7 PA3

LiquidCrystal lcd(PIN_RS, PIN_E, PIN_D4, PIN_D5, PIN_D6, PIN_D7);

void setup() {
  lcd.begin(16, 2);
  lcd.print("LCD test Line 1");
}
 
void loop() {

  char *str = "LCD test LINE 2   ";
  for (int x = 16; x > 0; --x){
    lcd.setCursor(x, 1);
    lcd.print(str);
    delay(200);
  }

  for (int p = 0; p < 14; ++p){
    lcd.setCursor(0, 1);
    lcd.print(str + p);
    delay(200);
  }
}

コメント

タイトルとURLをコピーしました