BAND切替器 & アンテナ切替器をLCD表示化

アナログポートで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");
}
}