CAT VFOプログラム 2018.10.30 JA7GVQ 適用  「CAT VFO」 ボード  Arduino UNO IDE  V.1.8.3 ライブラリ 1)LCD・・・未使用 LiquidCrystal_I2C-master.zip   https://github.com/openenergymonitor/LiquidCrystal_I2C 2)AD9833 AD9833-Library-Arduino-master.zip   https://github.com/Billwilliams1952/AD9833-Library-Arduino その他  1)LCD表示:無し(関連行コメント化)  2)AD9833出力:連続出力  3)AD9833周波数設定:IFオフセット(455kHz)有り  4)ソフト処理メモ   (1)周波数読み込み     "FA"発行し、応答データであることを確認後、データから"FA;"を     除去した文字列(周波数値8桁)を取り出す。   (2)DDS周波数設定     上記(1)の文字列(周波数値8桁)を整数変換し、IFオフセット加算。 //******* CAT VFO Program ******** // // JA7GVQ // // V.1.0 2018.10.23 // // //"FT-2000D" - "CAT VFO" - "QT-71J" // #include //#include //#include #include //=== SoftwareSerial === SoftwareSerial CAT(2, 3); // RX(IN)=2, TX(OUT)=3 /* //=== LCD === // // SCL = A5 // SDA = A4 // VCC = 5V // GND = GND // LiquidCrystal_I2C lcd(0x27,16,2); */ //=== AD9833 === // // VCC = 5V // DGND = GND // SDATA = 11 (MOSI/SPI) // SCLK = 13 (CLK/SPI) // FSYNC = 10 // AGND = GND // OUT = OUT // #define FNC_PIN 10 // unsigned long freq=7013000; // AD9833 gen(FNC_PIN); // //===SEND/REC SW=== #define SRsw 4 // //===CAT === // // "FA;" 周波数要求 // "TX0;" PTT OFFコマンド // "TX1;" PTT ONコマンド // String str=" "; //周波数応答文字列 //===FLG=== int RFLG=0; //RECフラグ int SFLG=0; //SENDフラグ // // //----------------------------------------------------------------- void setup() { //===Serial CAT.begin(38400); //ソフトシリアル 伝送速度設定 to/from FT2K /* //===LCD設定=== lcd.backlight(); lcd.init(); lcd.clear(); lcd.setCursor(0,1); lcd.print(" JA7GVQ"); */ //===AD9833設定=== gen.Begin(); // gen.EnableOutput(false); //出力OFF gen.ApplySignal(SINE_WAVE,REG0,7010000+454500); //サイン波、位相0 、周波数freq gen.EnableOutput(true); // SEND ON (DDS出力 ON) //SEND/REC SW pinMode(SRsw,INPUT_PULLUP); // SRsw(4番ピン)を入力モードに設定する。 } // // //------------------------------------------------------------------- void loop() { //===SRsw=== int val = digitalRead(SRsw); // SRsw=1:RX mode SRsw=0:TX mode //RX mode=================================================== if (val){ //SRsw=1 RX mode //===CAT=== if (RFLG==0){ CAT.print("TX0;"); //PTT OFF(RX mode時1回のみ) delay(10); RFLG=1; } //データ送信 CAT.print("FA;"); //周波数要求 delay(2); //データ受信 if (CAT.available()){ //受信有 str=CAT.readStringUntil(';'); //";"までの文字列読み出し if (str.substring(0,2)=="FA"){ //周波数データか str=str.substring(2); //"FA"削除。戻り値ex"07003000"(文字列) /* //===LCD=== lcd.setCursor(3,0); lcd.print(str); //周波数表示 delay(1); lcd.setCursor(0,0); lcd.print("RX "); //"RX"表示 delay(2); // */ // //===AD9833=== unsigned long freq=str.toInt(); //文字列を整数に変換 gen.ApplySignal(SINE_WAVE,REG0,freq+454500); //サイン波、位相0 、周波数freq // } //データ受信 end } //RX mode end SFLG=0; //TX mode=================================================== }else{ //TX mode //TX処理(1回のみ) if (SFLG==0){ SFLG=1; //===CAT=== CAT.print("TX1;"); //PTT ON To FT2K delay(2); /* //===LCD=== lcd.setCursor(0,0); lcd.print("TX "); //"TX"表示 delay(2); // */ } //TX処理 end RFLG=0; } //TX mode end /* lcd.setCursor(0,1); lcd.print(" JA7GVQ"); */ }