ヒーターをつなぐ(その3)
液晶ディスプレイ(2行✕16文字)を設置します。
【材料】
・1602LCDディスプレイI2C接続モジュール(秋月)
・ブレッドボードとブレッドボード用ジャンパ線(オス・オス)数本(前回既出)
【つなぎ方】
・LCDモジュールから4本の線が出ています。以下、LCD側の表示とArduino側の接続先を示します。
・GND → GND
・VCC → 5V
・SDA → A4
・SCL → A5
なお、Arduino側のGNDと5Vは他のデバイスでも使うので、ジャンパ線でブレッドボードに取り出し、そこから配線することをお勧めします。
また、I2C接続デバイスにはI2Cアドレスが必要ですが、この液晶ディスプレイはデフォルトアドレス”0x27”を用いることにします。
【ライブラリのインストール】
・この液晶ディスプレイを使うには、ライブラリのインストールが必要です。
・Arduino IDE画面最上段メニュー「ツール」→「ライブラリを管理」を選ぶと、左カラムにライブラリマネージャーが現れます。そのタイトルの直ぐ下に検索欄があるので「LiquidCrystal I2C」と入力します。ヒットした同一名記事の「インストール」をクリックすると、出力画面に「インストールに成功しました。」という言葉が一瞬表示されます。
【スケッチ】
Arduino IDEのスケッチ画面に以下のスケッチを書きます。
ヒーターをつなぐ(その2)のスケッチにコメント付きの行を追加しています。
// 最初の宣言です
#include <LiquidCrystal_I2C.h> // LCD(ディスプレイ)用のライブラリを読み込む
LiquidCrystal_I2C lcd(0x27,16,2); // LCDのアドレス、文字数、行数を指定します
int LED = 3;
int SSR = 6;
int Value = 10; // 値を10とします(必ず255以下の整数にしてください)
float Duty = 0.0; // Dutyという実数変数を設定します
void setup(void) {
Serial.begin(9600); //シリアル通信初期化
lcd.init(); // LCDの初期化
lcd.backlight(); // LCDのバックライトです
pinMode(LED,OUTPUT); // LEDをつないだ端子のモードは「出力」です
pinMode(SSR,OUTPUT); // SSRをつないだ端子のモードは「出力」です
lcd.setCursor(0,0); // LCDのカーソル位置を左上に
lcd.print("Danger! HeaterON"); // 警告表示
}
void loop(){
analogWrite(LED, Value);
analogWrite(SSR,Value);
lcd.setCursor(0,1); // LCDのカーソル位置を左下に
lcd.print("Duty = "); // PWM のデューティー比のことです
lcd.setCursor(12,1); // カーソル位置指定
Duty = (float)Value * 0.392 + 0.5; // Valueを実数に直しDuty比を計算します
lcd.print((int)Duty); // Duty比を整数表示します
lcd.setCursor(15,1); // カーソル位置指定
lcd.print('%'); // %はシングルコーテーションで囲まないとエラーになります
}
【実行】
・スケッチ画面の上段にある「→」アイコンをクリックすると、スケッチのコンパイル(機械語翻訳)が行われ、Arduinoにダウンロードされます。Arduinoは直ちにそれを実行します。
・1602ディスプレイに「Danger! Heater ON」と、「Duty ratio = 4%」という表示が出ましたでしょうか?
・ここで言う「Duty ratio(デューティー比)」とは、高速でオン/オフを繰り返して通電量を制御する方法であるPWM(Pulse Width Modulation)において、一定時間内の「オンの数 / (オン+オフの数)✕ 100 (%)(オンの状態の割合)です。
・今回のヒーターは、なぜかデューティー比を上げても、温度の上がり方があまり変わりません。考え中です。