アナログポートでLCD表示できるようになったので以前に作ったBAND切り替え機能付きアンテナ切り替え器の動作モニタ表示器を作成してみた。
すでにアナログポートは2つ、デジタルポートは12使用していていたが、それでもLCDが接続できる。
LCDの裏にシリアルインターフェースモジュールを取り付け。
実験ではピンヘッダーで試したが実際ははんだ付けでコンパクト化。
PCとUSB接続している時と外した時とではRIGからのアナログデータに差があることが判明したのでスケッチ書き込み時はUSB接続するがDEBUG時はUSBを外し、LCDに表示させたパラメータを基準に、しきい値を見直して調整。
おまけに電源ON時の各リレーの動作確認モニタも追加した。
あとでケースに組み込むが、それまではショートに気をつけて運用する。
#include <Wire.h> #include <LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd(0x27, 16, 2); void setup() { lcd.init(); lcd.backlight(); for (int i=2; i <= 13; i++){ pinMode(3, OUTPUT); } // Self Test lcd.setCursor(0,0); lcd.print(" SELF TEST "); for (int i=2; i <= 13; i++){ digitalWrite(i, HIGH); lcd.setCursor(0 + i,1); lcd.print("\xff"); delay(200); digitalWrite(i, LOW); } lcd.setCursor(0,0); lcd.print(" "); lcd.setCursor(0,1); lcd.print(" "); } float band ; // A0ポ-トからBAND電圧入力 int relay; // A1ポートからRIG選択電圧入力 IC-7000 同軸リレーの+端子 int rig; void all_off(){ for (int i=2; i <= 13; i++){ digitalWrite(i, LOW); } } void loop() { band = analogRead(0) ; // A0ポートに入力されたBAND電圧 relay= analogRead(1) ; // A1ポートに入力されたRIG選択電圧入力 if (relay <= 50 ){ rig = 1 ; //IC-736 lcd.setCursor(0,1); lcd.print(" IC-736"); } else { rig = 2 ; //IC-7000 lcd.setCursor(0,1); lcd.print("IC-7000"); } lcd.setCursor(0,0); lcd.print("BAND="); lcd.print(band,0); lcd.print(" "); delay(100); //1.9MHz if (rig ==1 && band >= 851 || rig == 2 && band >= 901 ) { all_off(); digitalWrite(2 , HIGH); // 1.9MHz RL digitalWrite(10, HIGH); // ANT RL DP lcd.setCursor(11,0); lcd.print(" DP "); lcd.setCursor(9,1); lcd.print("1.9MHz"); // 3.5MHz } else if (rig ==1 && band >= 731 && band <= 850 || rig == 2 && band >= 761 && band <= 900) { all_off(); digitalWrite(3 , HIGH); // 3.5MHz RL digitalWrite(10, HIGH); // ANT RL DP lcd.setCursor(11,0); lcd.print(" DP "); lcd.setCursor(9,1); lcd.print("3.5MHz"); // 7MHz } else if (rig ==1 && band >= 571 && band <= 730 || rig == 2 && band >= 621 && band <= 760) { all_off(); digitalWrite(4 , HIGH); // 7MHz RL digitalWrite(10, HIGH); // ANT RL DP lcd.setCursor(11,0); lcd.print(" DP "); lcd.setCursor(9,1); lcd.print(" 7MHz"); // 14MHz } else if (rig ==1 && band >= 441 && band <= 570 || rig == 2 && band >= 511 && band <= 620) { all_off(); digitalWrite(6 , HIGH); // 14MHz RL digitalWrite(10, HIGH); // ANT RL DP lcd.setCursor(11,0); lcd.print(" DP "); lcd.setCursor(9,1); lcd.print(" 14MHz"); // 21MHz } else if (rig ==1 && band >= 311 && band <= 440 || rig == 2 && band >= 371 && band <= 510) { all_off(); digitalWrite(7 , HIGH); // 18,21MHz RL digitalWrite(11, HIGH); // ANT RL 218H lcd.setCursor(11,0); lcd.print("218H"); lcd.setCursor(9,1); lcd.print(" 21MHz"); // 28MHz } else if (rig ==1 && band >= 221 && band <= 310 || rig == 2 && band >= 281 && band <= 370) { all_off(); digitalWrite(8 , HIGH); // 24,28MHz RL digitalWrite(11, HIGH); // ANT RL 218H lcd.setCursor(11,0); lcd.print("218H"); lcd.setCursor(9,1); lcd.print(" 28MHz"); // 50MHz } else if (rig ==1 && band >= 100 && band <= 220 || rig == 2 && band >= 100 && band <= 280) { all_off(); digitalWrite(9 , HIGH); // 50MHz RL digitalWrite(12, HIGH); // ANT RL CL6A lcd.setCursor(11,0); lcd.print("CL6A"); lcd.setCursor(9,1); lcd.print(" 50MHz"); // 10MHz } else { all_off(); lcd.setCursor(11,0); lcd.print("DUMY"); lcd.setCursor(9,1); lcd.print(" 10MHz"); } }