ボード 動作確認
主にArduinoボードについて書きます。組立後に操作確認のためによく似たプログラムを書いています。Arduinoではボードが変わってもポート番号の変更だけで使えるものが多くあるのではないかと思ってメモすることにしました。
1 シリアル通信とキャラクタLCDの確認 arduino 2019.11.16
1 シリアル通信とキャラクタLCDの確認 arduino 2019.11.16
以前に作ったAtmega8のボードが出てきました。シリアルとLCDコネクタがあります。シリアル通信ができるかどうか、LCDが正常に動作するかどうか、を見るためにスケッチを書いてみました。
mega8は水晶8MHz、ヒューズ L=BF H=D9 のものです。
/****************************************************
Serial,LCD test1
******************************************************/
#include <LiquidCrystal.h>
LiquidCrystal lcd(A4, A5, A0, A1, A2, A3); //rs, en, d4, d5, d6, d7
//LiquidCrystal lcd(8,9,4,5,6,7); //rs, en, d4, d5, d6, d7
char s[19];
char ss[15] = "hello, world!2";
void setup() {
lcd.begin(16, 2); // set up the LCD's number of columns and rows:
Serial.begin(9600);
}
void loop() {
int i;
char v;
lcd.clear();
while (1) {
lcd.setCursor(0, 0);
lcd.print(ss); // "hello, world!2" null文字は表示されない
lcd.setCursor(0, 1);
lcd.print(millis() / 1000); // 秒数
if (Serial.available() > 0) { // シリアル入力があれば
i = 0;
while (1) {
if (Serial.available() > 0) {
s[i] = Serial.read();
i++;
}
if (s[i - 1] == 0x0d) {
s[i - 1] = 0x00; // 文字列の最後にnullを
break;
}
}
lcd.setCursor(5, 1);
lcd.print(" ");
lcd.setCursor(5, 1);
i = 0; // 以下、null文字が表示されるのを
while (s[i] != 0) { // 防ぐため
lcd.print(s[i]);
i++;
} // ここまで
}
Serial.println(s); // シリアルの通信確認
delay(1000);
}
}
LCDのポートは個々で違いますから再設定が必要です。
LCDは配列で受けた文字列の最後をnull文字とするとおかしなパターンがでます。面倒ですが1文字づつ表示しています。
Atmega328のUNOタイプのものでも同じ動作ができました(LCDポートは変えましたが)。
筆者メモ\arduino_sckechbook\mega8\Serial__LCD__test1
1 めんにゅー 1 ほ そ く
工事中