CAT VFO_AD9833 テストプログラム 2018.10.30 JA7GVQ 適用  「CATを利用したVFOの実験」 実験1 総合試験 ボード  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)AD9833出力:連続出力  2)AD9833周波数設定:IFオフセット(455kHz)有り  3)ソフト処理メモ   (1)周波数読み込み     "FA"発行し、応答データであることを確認後、データから"FA;"を     除去した文字列(周波数値8桁)を取り出す。   (2)DDS周波数設定     上記(1)の文字列(周波数値8桁)を整数変換し、IFオフセット加算。 //******* CAT VFO Test 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"); }