{"id":133,"date":"2025-02-14T10:38:07","date_gmt":"2025-02-14T07:38:07","guid":{"rendered":"https:\/\/ta9ea.com\/?p=133"},"modified":"2025-02-14T10:38:07","modified_gmt":"2025-02-14T07:38:07","slug":"icom-ic-705-icin-sat-box-uydu-modu","status":"publish","type":"post","link":"https:\/\/ta9ea.com\/?p=133","title":{"rendered":"ICOM IC-705 i\u00e7in &#8220;SAT BOX&#8221; Uydu Modu"},"content":{"rendered":"<div class=\"zpColumnItem\">\n<div id=\"a567\" class=\"articlearea zpwText\" data-article-id=\"567\" data-zpleid=\"567\">\n<p><span>ICOM IC-705&#8217;ten pop\u00fcler QRP al\u0131c\u0131-vericisini uydu uyumlu hale getirebilmek i\u00e7in ba\u015fka bir devre tasarlad\u0131m ve buna kar\u015f\u0131l\u0131k gelen yaz\u0131l\u0131m\u0131 geli\u015ftirdim.<\/span><\/p>\n<\/div>\n<\/div>\n<div class=\"zpColumnItem\">\n<div id=\"a568\" class=\"articlearea zpwText\" data-article-id=\"568\" data-zpleid=\"568\">\n<p><span>Art\u0131k CI-V&#8217;yi Bluetooth \u00fczerinden &#8220;QO-100 uydu i\u015fletimi&#8221; i\u00e7in kullanmak m\u00fcmk\u00fcn. \u00d6nceki versiyonlarda oldu\u011fu gibi, TX VFO, ayar d\u00fc\u011fmesini \u00e7evirerek otomatik olarak RX VFO&#8217;yu takip ediyor. B\u00f6ylece iki VFO senkronize edilmi\u015f olur.<\/span><\/p>\n<\/div>\n<\/div>\n<div class=\"zpColumnItem\">\n<div id=\"a569\" class=\"articlearea zpwText\" data-article-id=\"569\" data-zpleid=\"569\">\n<p><span>\u0130lgili RX ve TX osilat\u00f6r frekanslar\u0131n\u0131 girerek, hangi yukar\u0131 veya a\u015fa\u011f\u0131 d\u00f6n\u00fc\u015ft\u00fcr\u00fcc\u00fcy\u00fc kullanmak istedi\u011finizi \u00f6zg\u00fcrce se\u00e7ebilirsiniz. \u00d6rne\u011fin 10m, 6m, 2m, 70cm, 23cm bantlar\u0131ndaki d\u00f6n\u00fc\u015ft\u00fcr\u00fcc\u00fcleri kullanabilirsiniz.\u00a0<\/span><\/p>\n<p><span>RX ve TX i\u00e7in sadece 2 farkl\u0131 band\u0131 kullanman\u0131z yeterli.<\/span><\/p>\n<\/div>\n<\/div>\n<div class=\"zpColumnItem\">\n<div id=\"a570\" class=\"articlearea zpwText\" data-article-id=\"570\" data-zpleid=\"570\">\n<p>\u0130\u015fte 2m band\u0131ndan yukar\u0131 d\u00f6n\u00fc\u015ft\u00fcr\u00fcc\u00fc (osilat\u00f6r 2256MHz) ve 70cm band\u0131na a\u015fa\u011f\u0131 d\u00f6n\u00fc\u015ft\u00fcr\u00fcc\u00fc (osilat\u00f6r 10054MHz) i\u00e7in ICOM IC-705&#8217;li bir \u00f6rnek.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-134 size-large\" src=\"https:\/\/ta9ea.com\/wp-content\/uploads\/2025\/02\/ic-705-1024x602.jpg\" alt=\"\" width=\"640\" height=\"376\" \/><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-135 size-large\" src=\"https:\/\/ta9ea.com\/wp-content\/uploads\/2025\/02\/bt-sat-box-1024x735.jpg\" alt=\"\" width=\"640\" height=\"459\" \/><\/p>\n<div class=\"zpColumnItem\">\n<div id=\"a575\" class=\"articlearea zpwText\" data-article-id=\"575\" data-zpleid=\"575\">\n<p>SAT kutusu Bluetooth arac\u0131l\u0131\u011f\u0131yla vericiye ba\u011flan\u0131r. SAT kutusuna 12V g\u00fc\u00e7 verildi\u011finde Arduino, dahili Bluetooth mod\u00fcl\u00fc arac\u0131l\u0131\u011f\u0131yla al\u0131c\u0131-vericiye CI-V komutlar\u0131 g\u00f6nderir. Bu otomatik olarak uygun bantlara ayarlan\u0131r, USB \u00e7al\u0131\u015fma modu ayarlan\u0131r, split modu etkinle\u015ftirilir, RF g\u00fcc\u00fc \u00f6nceden ayarlanm\u0131\u015f bir de\u011fere ayarlan\u0131r. Frekans orta QO-100 i\u015faretine ayarlanm\u0131\u015ft\u0131r. Frekanslar Arduino taraf\u0131ndan CI-V aray\u00fcz\u00fc \u00fczerinden okunur. D\u00f6n\u00fc\u015ft\u00fcr\u00fclen downlink ve uplink frekans\u0131 g\u00f6r\u00fcnt\u00fclenir.<\/p>\n<p>RX-VFO \u00fczerindeki al\u0131m frekans\u0131 de\u011fi\u015ftirildi\u011finde, Arduino CI-V \u00fczerinden frekans\u0131 al\u0131r, d\u00f6n\u00fc\u015ft\u00fcr\u00fcr ve hesaplanan downlink frekans\u0131n\u0131 ekranda g\u00f6r\u00fcnt\u00fcler. Buradan iletim frekans\u0131 hesaplan\u0131r ve TX-VFO&#8217;ya yaz\u0131l\u0131r. Ortaya \u00e7\u0131kan uplink frekans\u0131 ekranda g\u00f6sterilir.<\/p>\n<\/div>\n<\/div>\n<div class=\"zpColumnItem\">\n<div id=\"a576\" class=\"articlearea zpwText\" data-article-id=\"576\" data-zpleid=\"576\">\n<p>&nbsp;<\/p>\n<p><strong><u>Frekans g\u00f6sterimi:<\/u><\/strong><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-136 size-large\" src=\"https:\/\/ta9ea.com\/wp-content\/uploads\/2025\/02\/frequenzanzeige-1024x370.jpg\" alt=\"\" width=\"640\" height=\"231\" \/><\/p>\n<div class=\"zpColumnItem\">\n<div id=\"a577\" class=\"articlearea zpwText\" data-article-id=\"577\" data-zpleid=\"577\">\n<p>Frekans g\u00f6steriminde, hesaplanan a\u015fa\u011f\u0131 ba\u011flant\u0131 frekans\u0131 \u00fcst sat\u0131rda, hesaplanan yukar\u0131 ba\u011flant\u0131 frekans\u0131 ise alt sat\u0131rda g\u00f6sterilir. RX veya TX tan\u0131m\u0131 \u00f6n\u00fcndeki sembol, mevcut iletim veya al\u0131m durumunu g\u00f6sterir. Ekran\u0131n sa\u011f alt k\u00f6\u015fesindeki titre\u015fen sembol aktif bir CI-V ba\u011flant\u0131s\u0131n\u0131 g\u00f6sterir.<\/p>\n<\/div>\n<\/div>\n<div class=\"zpColumnItem\">\n<div id=\"a596\" class=\"articlearea zpwText\" data-article-id=\"596\" data-zpleid=\"596\">\n<p><strong><u>Kurulum men\u00fcs\u00fc:<\/u><\/strong><\/p>\n<p>Cihaz\u0131n\u0131z\u0131 a\u00e7arken men\u00fc tu\u015funa bas\u0131l\u0131 tutarak kurulum men\u00fcs\u00fcne girebilirsiniz.<\/p>\n<p><strong>\u00d6nemli !<\/strong><\/p>\n<p>Transceiver ayarlar\u0131nda CI-V BAUDRATE 9600 olarak ayarlanmal\u0131 ve CI-V TRANSCEIVE kapal\u0131 olarak ayarlanmal\u0131d\u0131r.<\/p>\n<\/div>\n<\/div>\n<div class=\"zpColumnItem\">\n<div id=\"a578\" class=\"articlearea zpwText\" data-article-id=\"578\" data-zpleid=\"578\">\n<p><strong><u>CI-V ayg\u0131t adresinin ayarlanmas\u0131:<\/u><\/strong><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-137 size-large\" src=\"https:\/\/ta9ea.com\/wp-content\/uploads\/2025\/02\/civ_adr-1024x368.jpg\" alt=\"\" width=\"640\" height=\"230\" \/><\/p>\n<div class=\"zpColumnItem\">\n<div id=\"a579\" class=\"articlearea zpwText\" data-article-id=\"579\" data-zpleid=\"579\">\n<p>\u00d6ncelikle do\u011fru CI-V adresinin ayarlanmas\u0131 gerekir.<\/p>\n<p>Cihaz adresi yukar\u0131 veya a\u015fa\u011f\u0131 tu\u015funa bas\u0131larak ayarlanabilir. SAT kutusunda ayarlanan adres, al\u0131c\u0131-vericideki adresle ayn\u0131 olmal\u0131d\u0131r, aksi takdirde SAT kutusu ile IC-705 aras\u0131nda hi\u00e7bir ileti\u015fim kurulamaz.<\/p>\n<p>(fabrika varsay\u0131lan adresi\u00a0<strong>A4<\/strong>\u00a0)<\/p>\n<p>Men\u00fc tu\u015funa tekrar bas\u0131larak \u00e7\u0131k\u0131\u015f g\u00fcc\u00fc ayarlanabilir.<\/p>\n<\/div>\n<\/div>\n<div class=\"zpColumnItem\">\n<div id=\"a597\" class=\"articlearea zpwText\" data-article-id=\"597\" data-zpleid=\"597\">\n<p><strong><u>\u00c7\u0131k\u0131\u015f g\u00fcc\u00fcn\u00fcn ayarlanmas\u0131:<\/u><\/strong><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-138 size-large\" src=\"https:\/\/ta9ea.com\/wp-content\/uploads\/2025\/02\/tx-power-1024x357.jpg\" alt=\"\" width=\"640\" height=\"223\" \/><\/p>\n<p>\u00c7\u0131k\u0131\u015f g\u00fcc\u00fc yukar\u0131 veya a\u015fa\u011f\u0131 tu\u015funa bas\u0131larak ayarlanabilir.<\/p>\n<p>Bu ayarlanan g\u00fc\u00e7, her Bluetooth e\u015fle\u015ftirmesi s\u0131ras\u0131nda al\u0131c\u0131-vericiye g\u00f6nderilir.<\/p>\n<p>Tekrar men\u00fc tu\u015funa basarak adres ve g\u00fc\u00e7 ayarlar\u0131n\u0131n yap\u0131ld\u0131\u011f\u0131 haf\u0131za alan\u0131na girilir.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-139 size-large\" src=\"https:\/\/ta9ea.com\/wp-content\/uploads\/2025\/02\/store4-1024x372.jpg\" alt=\"\" width=\"640\" height=\"233\" \/><\/p>\n<div class=\"zpColumnItem\">\n<div id=\"a598\" class=\"articlearea zpwText\" data-article-id=\"598\" data-zpleid=\"598\">\n<p>Daha \u00f6nce ayarlanan cihaz adresi ve g\u00fc\u00e7 yukar\u0131 tu\u015funa bas\u0131larak EEPROM&#8217;a kaydedilebilir (g\u00fc\u00e7 kayna\u011f\u0131 kesildikten sonra bile bu kal\u0131r) veya a\u015fa\u011f\u0131 veya men\u00fc tu\u015funa bas\u0131larak kaydetmeden frekans g\u00f6stergesine ge\u00e7ilebilir.<\/p>\n<\/div>\n<\/div>\n<div class=\"zpColumnItem\">\n<div id=\"a580\" class=\"articlearea zpwText\" data-article-id=\"580\" data-zpleid=\"580\">\n<p><strong><u>Men\u00fc kontrol\u00fc:<\/u><\/strong><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-140 size-large\" src=\"https:\/\/ta9ea.com\/wp-content\/uploads\/2025\/02\/tx-osz-1024x371.jpg\" alt=\"\" width=\"640\" height=\"232\" \/><\/p>\n<p>Men\u00fc tu\u015funa basarak TX osilat\u00f6r frekans\u0131n\u0131n ayar aral\u0131\u011f\u0131na girilir.<\/p>\n<p>Osilat\u00f6r frekans\u0131, yukar\u0131 veya a\u015fa\u011f\u0131 d\u00fc\u011fmesine bas\u0131larak se\u00e7ilen art\u0131\u015flarla (10 Hz &#8211; 100 MHz) ayarlanabilir.<\/p>\n<p>Bu, SAT-BOX&#8217;ta g\u00f6r\u00fcnt\u00fclenen TX frekans\u0131n\u0131 kalibre eder.<\/p>\n<p><strong>Tehlike:<\/strong><\/p>\n<p>De\u011fi\u015fiklik yapt\u0131ktan sonra mutlaka en sonda kaydetmeniz gerekmektedir \u00e7\u00fcnk\u00fc ana ekranda sadece kaydedilen osilat\u00f6r frekans\u0131 g\u00f6sterilmektedir.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-141 size-large\" src=\"https:\/\/ta9ea.com\/wp-content\/uploads\/2025\/02\/rx-osz-01-1024x368.jpg\" alt=\"\" width=\"640\" height=\"230\" \/><\/p>\n<p>Men\u00fc tu\u015funa tekrar basarak RX osilat\u00f6r frekans\u0131n\u0131n ayar aral\u0131\u011f\u0131na girilir.<\/p>\n<p>Osilat\u00f6r frekans\u0131, yukar\u0131 veya a\u015fa\u011f\u0131 d\u00fc\u011fmesine bas\u0131larak se\u00e7ilen art\u0131\u015flarla (10 Hz &#8211; 100 MHz) ayarlanabilir.<\/p>\n<p>Bu, SAT-BOX&#8217;ta g\u00f6r\u00fcnt\u00fclenen RX frekans\u0131n\u0131 kalibre eder.<\/p>\n<p><strong>Tehlike:<\/strong><\/p>\n<p>De\u011fi\u015fiklik yapt\u0131ktan sonra mutlaka en sonda kaydetmeniz gerekmektedir \u00e7\u00fcnk\u00fc ana ekranda sadece kaydedilen osilat\u00f6r frekans\u0131 g\u00f6sterilmektedir.<\/p>\n<p>2m, 70cm, 23cm ama ayn\u0131 zamanda 6m veya 10m&#8217;de d\u00f6n\u00fc\u015ft\u00fcr\u00fcc\u00fcleri kullanmak i\u00e7in herhangi bir osilat\u00f6r frekans\u0131 girilebilir.<\/p>\n<p>(bkz. Excel dosyas\u0131 \u201cFrekans hesaplamas\u0131\u201d)<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-142 size-large\" src=\"https:\/\/ta9ea.com\/wp-content\/uploads\/2025\/02\/split-1024x368.jpg\" alt=\"\" width=\"640\" height=\"230\" \/><\/p>\n<p>Men\u00fc d\u00fc\u011fmesine tekrar basarak b\u00f6l\u00fcnm\u00fc\u015f ofsetin ayar alan\u0131na girersiniz<\/p>\n<p>B\u00f6l\u00fcnm\u00fc\u015f modda yay\u0131n yapan istasyonlar\u0131n da kullan\u0131labilmesini sa\u011flamak i\u00e7in, b\u00f6l\u00fcnm\u00fc\u015f ofset ayarlama men\u00fcs\u00fc mevcuttur. Burada sadece TX frekans\u0131 de\u011fi\u015ftiriliyor.<\/p>\n<p><u>\u00d6rnek:<\/u>\u00a0\u00a0Al\u0131nan istasyon &#8220;5 yukar\u0131&#8221; g\u00f6steriyorsa, Split Offset ayar\u0131 5000 Hz olarak girilebilir. TX sinyali daha sonra 5 KHz daha y\u00fcksek olarak iletilir.<\/p>\n<p>Veya al\u0131nan istasyon &#8220;10 down&#8221; g\u00f6steriyorsa, Split Offset ayar\u0131 -10000 Hz olarak girilebilir. TX sinyali daha sonra 10 KHz daha d\u00fc\u015f\u00fck iletilir.<\/p>\n<p><strong>Bir duyuru:<\/strong><\/p>\n<p>Yeniden ba\u015flatma veya s\u0131f\u0131rlama sonras\u0131nda, b\u00f6lme ofseti tekrar 0&#8217;a ayarlan\u0131r.<\/p>\n<p><strong>Not:<\/strong>\u00a0B\u00f6l\u00fcnm\u00fc\u015f ofset EEPROM&#8217;da saklanmaz!<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-143 size-large\" src=\"https:\/\/ta9ea.com\/wp-content\/uploads\/2025\/02\/step-1024x365.jpg\" alt=\"\" width=\"640\" height=\"228\" \/><\/p>\n<p>Tekrar men\u00fc tu\u015funa basarak ad\u0131m boyutu ayar alan\u0131na girilir.<\/p>\n<p>Varsay\u0131lan ad\u0131m boyutu 100Hz&#8217;dir.<\/p>\n<p>10 Hz ile 100 MHz aral\u0131\u011f\u0131nda yukar\u0131 tu\u015funa bas\u0131larak ad\u0131m b\u00fcy\u00fckl\u00fc\u011f\u00fc 10 kat\u0131na kadar art\u0131r\u0131labilir veya a\u015fa\u011f\u0131 tu\u015funa bas\u0131larak ad\u0131m b\u00fcy\u00fckl\u00fc\u011f\u00fc 10 kat\u0131na kadar azalt\u0131labilir.<\/p>\n<p>Burada ayarlanan ad\u0131m boyutu t\u00fcm men\u00fcler i\u00e7in ge\u00e7erlidir.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-144 size-large\" src=\"https:\/\/ta9ea.com\/wp-content\/uploads\/2025\/02\/store-1024x371.jpg\" alt=\"\" width=\"640\" height=\"232\" \/><\/p>\n<div class=\"zpRow standard \" data-row-id=\"147\">\n<div class=\"zpColumn odd zpColumnWidth1 c12 first last\" data-column-id=\"178\">\n<div class=\"zpColumnItem\">\n<div id=\"a589\" class=\"articlearea zpwText\" data-article-id=\"589\" data-zpleid=\"589\">\n<p>Tekrar men\u00fc tu\u015funa basarak osilat\u00f6r frekanslar\u0131n\u0131n haf\u0131za alan\u0131na girilir.<\/p>\n<p>Daha \u00f6nce ayarlanm\u0131\u015f olan RX ve TX osilat\u00f6r frekanslar\u0131 yukar\u0131 tu\u015funa bas\u0131larak EEPROM&#8217;a kaydedilebilir (g\u00fc\u00e7 kayna\u011f\u0131 kesildikten sonra bile bunlar kal\u0131r) veya men\u00fc veya a\u015fa\u011f\u0131 tu\u015funa bas\u0131larak kaydetmeden frekans g\u00f6stergesine d\u00f6n\u00fclebilir.<\/p>\n<p><strong>Not:<\/strong>\u00a0B\u00f6l\u00fcnm\u00fc\u015f ofset EEPROM&#8217;da saklanmaz!<\/p>\n<p>Depolanan RX ve TX osilat\u00f6r frekanslar\u0131, yeniden ba\u015flatma veya s\u0131f\u0131rlama sonras\u0131nda bile EEPROM&#8217;dan okunur ve frekans g\u00f6stergesine dahil edilir. Frekans g\u00f6stergesi art\u0131k kalibre edildi.<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"zpRow standard \" data-row-id=\"148\">\n<div class=\"zpColumn odd zpColumnWidth1 c12 first last\" data-column-id=\"179\">\n<div class=\"zpColumnItem\">\n<div id=\"a590\" class=\"articlearea zpwText\" data-article-id=\"590\" data-zpleid=\"590\">\n<p>Frekans g\u00f6stergesinde yukar\u0131 ve a\u015fa\u011f\u0131 tu\u015flar\u0131na ayn\u0131 anda uzun s\u00fcre bas\u0131ld\u0131\u011f\u0131nda s\u0131f\u0131rlama tetiklenir. SAT-BOX kontrol cihaz\u0131 yeniden ba\u015flat\u0131l\u0131r ve ba\u015flatma dizisi g\u00f6r\u00fcnt\u00fclendikten sonra frekans orta i\u015farete geri ayarlan\u0131r. Al\u0131c\u0131-verici \u00fczerinde \u00f6nceden ayarlanm\u0131\u015f g\u00fc\u00e7 ayar\u0131 yap\u0131l\u0131r. Ayarlanm\u0131\u015f olabilecek herhangi bir b\u00f6l\u00fcnme ofseti de 0&#8217;a s\u0131f\u0131rlanacak ve ad\u0131m boyutu 100 Hz&#8217;e s\u0131f\u0131rlanacakt\u0131r.<\/p>\n<\/div>\n<\/div>\n<div class=\"zpColumnItem\">\n<div id=\"a591\" class=\"articlearea zpwText\" data-article-id=\"591\" data-zpleid=\"591\">\n<p>Ayr\u0131ca men\u00fc gezintisi i\u00e7in ilgili kullan\u0131m talimatlar\u0131na da bak\u0131n (\u00a0yaz\u0131l\u0131m indirme\u00a0zip dosyas\u0131nda yer almaktad\u0131r )<\/p>\n<p>Talep \u00fczerine bo\u015f panolar da eklenebilir.<\/p>\n<p>Yeniden yap\u0131lanmada ba\u015far\u0131lar dilerim.<\/p>\n<p>Elektronik veya mikrodenetleyici programlama ile daha az u\u011fra\u015fmak isteyen YL&#8217;ler veya OM&#8217;ler i\u00e7in:<\/p>\n<p>Talep \u00fczerine, montaj\u0131 tamamlanm\u0131\u015f, programlanm\u0131\u015f mod\u00fcller de mevcuttur.<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<pre class=\"lang:arduino decode:true \">\/* Erstellt: 2024-10-26\n * Version V1.1\n * Autor:  Roland Kaiser, OE2ROL\n * Geschrieben f\u00fcr Arduino Nano ATmega 328P(Old Bootloader)\n * Der Autor \u00fcbernimmt keine Haftung etwaiger Folgesch\u00e4den an Transceivern oder dgl.\n    \n * Diese Software ist f\u00fcr den eigenen privaten Gebrauch frei verf\u00fcgbar, jedoch nicht f\u00fcr kommerzielle Zwecke ohne Genehmigung des Autors.\n * Ver\u00e4nderungen und Verbesserungen der Software bitte wieder an den Autor Roland Kaiser OE2ROL (roland.kaiser@sbg.at) senden.\n * Die Software wurde am ICOM IC-705 getestet.\n \n * Funktionsweise:\n \n   o  Der Transceiver wird bei einer Bluetoothverbindung automatisch in den entsptechenden \"SAT Mode\" gebracht (beide VFO\u00b4s in die vorgegebene QRG, Betriebsart USB, Splitmode)\n   o  Der RX VFO wird gelesen, davon wird ein vorgegebener Versatz subtrahiert und verz\u00f6gert automatisch in den TX VFO geschrieben.\n   o  Dies passiert vollautomatisch nur durch ver\u00e4ndern des RX VFO\u00b4s.\n   o  Die f\u00fcr QO-100 umgerechnete RX und TX Frequenz wird auf einem LCD Display angezeigt. \n   o  Men\u00fcsteuerung in 5 Ebenen:\n       o Setzen der RX-Oszillatorfrequenz mit einstellbarer Schrittweite zum Anpassen der Oszillatorfrequenz des Upconverters\n       o Setzen der TX-Oszillatorfrequenz mit einstellbarer Schrittweite zum Anpassen der Oszillatorfrequenz des Downconverters\n       o Setzen eines Split-Offsets mit eingestellbarer Schrittweite f\u00fcr Stationen die im Split-Betrieb arbeiten (hier wird nur die Sendefrequenz ver\u00e4ndert)\n       o Setzen der Schrittweite f\u00fcr alle Einstellungen\n       o Speichern der RX\/TX Oszillatorfrequenzen im internen EEPROM.\n   o  Nach dem Speichern der Oszillatorfrequenzen wird nach einem Neustart der SAT BOX die Frequenz auf die mittlere QO-100 Bake gestellt.\n   o  Die RX und TX Oszillatorfrequenzen bleiben auch ohne Stromversorgung gespeichert, der Split Offset wird wieder auf 0 gesetzt.\n   o  Ein Softwarereset kann durch gleichzeitiges bet\u00e4tigen der Up- und Down-Taste ausgel\u00f6st werden. (nur in der Frequenzanzeige)\n   o  Setup Men\u00fcsteuerung in 3 Ebenen:\n       o  Die CI-V Adresse kann im Setupmen\u00fc gesetzt werden (halten der Men\u00fctaste beim Start) z.B. \"A4\" bei ICOM IC-705 und kann im EEPROM gespeichert werden.\n       o  Die Ausgangsleistung kann im Setupmen\u00fc gesetzt werden (halten der Men\u00fctaste beim Start) z.B. \"50%\" und kann im EEPROM gespeichert werden.\n       o Speichern der CI-V Adresse und der Ausgangsleistung in % im internen EEPROM.\n   o  Statusanzeige RX-TX im Display mittels Symbol vor der RX bzw. TX Beschriftung.\n   o  Statusanzeige einer aktiven CI-V Verbindung zum Transceiver im Display mittels blinkenden Symbol rechts unten.\n \n   \u00c4nderungs\u00fcbersicht:\n   V1.0 initiale Version\n   V1.1 Leistungseinstellung im Setup Men\u00fc hinzugef\u00fcgt\n      \n   Anschlussbelegung der Ports:\n   \n   CAT port GND -&gt; Arduino GND\n   CAT port TX,RX  -&gt; Arduino pin 11,12\n   \n   Tastenport up      -&gt; Arduino Pin A3\n   Tastenport down    -&gt; Arduino Pin A4\n   Tastenport Men\u00fc    -&gt; Arduino Pin A5\n   Die Tasten werden gegen Masse angeschlossen.\n\n   BTconnPin          -&gt; Arduino Pin A0\n   \n   Display:     Arduino:\n   4(RS)    -&gt;  7\n   6(E)     -&gt;  10\n   11(D4)   -&gt;  5\n   12(D5)   -&gt;  4\n   13(D6)   -&gt;  6\n   14(D7)   -&gt;  2\n *\/\n\n#include &lt;LiquidCrystal.h&gt;\n#include &lt;SoftwareSerial.h&gt;\n#include &lt;EEPROM.h&gt;\n\nuint32_t freq;                        \/\/ Frequenz\nuint32_t RXfreq;                      \/\/ umgerechnete Empfangsfrequenz\nuint32_t TXfreq;                      \/\/ umgerechnete Sendefrequenz\nuint32_t TXosz;                       \/\/ TX Oszillatorfrequenz\nuint32_t RXosz;                       \/\/ RX Oszillatorfrequenz\nuint32_t shift;                       \/\/ RX-TX Frequenzversatz\nbyte civadr = 0;                      \/\/ CI-V Adresse\nuint32_t VFOAfreq = 0;                \/\/ RX Frequenz am Transceiver\nuint32_t VFOBfreq = 0;                \/\/ TX Frequenz am Transceiver\nconst uint32_t decMulti[]    = {1000000000, 100000000, 10000000, 1000000, 100000, 10000, 1000, 100, 10, 1}; \/\/ Multiplikatorarray f\u00fcr Frequenzberechnung\nbyte lcdNumCols = 20;                 \/\/ LCD Anzahl der Stellen\nuint32_t freqmem;                     \/\/ Frequenzzwischenspeicher\nlong RIT = 0;                         \/\/ RIT\nlong Splitoffset =0;                  \/\/ Split Offset\nunsigned long previousMillis1 = 0;    \/\/ Timer1 auf 0 setzen\nunsigned long previousMillis2 = 0;    \/\/ Timer2 auf 0 setzen\nconst long interval = 3500;           \/\/ Verz\u00f6gerungszeit [ms] nachziehen des VFOB\nconst int BTconnPin = A0;             \/\/ Pin f\u00fcr BT Verbindungserkennung\nconst int menuPin = A5;               \/\/ Pin f\u00fcr Menue Taste\nconst int downpin = A4;               \/\/ Pin f\u00fcr Up Taste\nconst int uppin = A3;                 \/\/ Pin f\u00fcr Down Taste\nint menuPushCounter = 0;              \/\/ Men\u00fctastenz\u00e4hler\nint menuState = 0;                    \/\/ Men\u00fcstatus\nint BTstate;                          \/\/ BT Status\nint lastmenuState = 0;                \/\/ letzter Men\u00fc Status\nboolean menubool = false;             \/\/ Men\u00fc initial deaktivieren\nint up;                               \/\/ up Taste\nint down;                             \/\/ Taste down\nint menucounter = 0;                  \/\/ Men\u00fc Z\u00e4hler\nint initflag = 0;                     \/\/ Initflag             \nuint32_t sw = 10;                     \/\/ Schrittweite zum Einstellen der Oszillatorfrequenzen im Men\u00fc Hz\/10\nbyte Z_E;                             \/\/ BCD Code   10   Hz,   1 Hz\nbyte K_H;                             \/\/ BCD Code   1   KHz, 100 Hz\nbyte HK_ZK;                           \/\/ BCD Code   100 KHz,  10 KHz\nbyte ZM_M;                            \/\/ BCD Code   10  MHz,   1 MHz\nbyte G_HM;                            \/\/ BCD Code   1   GHz, 100 MHz\nint txPower;                          \/\/ TX Power in %\n\nLiquidCrystal lcd(7, 10, 5, 4, 6, 2); \/\/ LCD Anschlussbelegung\nSoftwareSerial CAT(11, 12);           \/\/ RX, TX Pin CAT Schnittstelle\n\n\/\/ ******************************************SETUP*************************************************************\nvoid setup(){  \nCAT.begin(9600);                      \/\/ CAT Schnittstelle initialisieren\nSerial.begin(9600);                   \/\/ Serial Monitor Init\nlcd.begin(2, lcdNumCols);             \/\/ LCD init\nlcd.clear();                          \/\/ LCD l\u00f6schen\ndelay(100);                           \/\/ Verz\u00f6gerung\npinMode(menuPin, INPUT);              \/\/ Init f\u00fcr die Tasten Pins\ndigitalWrite(menuPin, HIGH);          \/\/ Init f\u00fcr die Tasten Pins\npinMode(downpin, INPUT);              \/\/ Init f\u00fcr die Tasten Pins\ndigitalWrite(downpin, HIGH);          \/\/ Init f\u00fcr die Tasten Pins\npinMode(uppin, INPUT);                \/\/ Init f\u00fcr die Tasten Pins\ndigitalWrite(uppin, HIGH);            \/\/ Init f\u00fcr die Tasten Pins\npinMode(BTconnPin, INPUT);            \/\/ Init f\u00fcr BT Pin\n\nmenuState = digitalRead(menuPin);     \/\/ Auslesen der Men\u00fctaste beim Start\nif (menuState == LOW){setupmenu();}   \/\/ wenn w\u00e4hrend dem Start die Men\u00fc Taste bet\u00e4tigt wird startet das Setupmen\u00fc\ncivadr = EEPROM.get(20, civadr);      \/\/ CI-V Adresse aus dem eeprom lesen \n\n\/\/ *****************************************Transceiver Settings setzen***************************************\nselect_VFOB();                        \/\/ VFOB ausw\u00e4hlen\ndelay(20);                            \/\/ Verz\u00f6gerung 20ms  \nselect_Mode_USB();                    \/\/ Umschalten auf Mode USB\ndelay(20);                            \/\/ Verz\u00f6gerung 20ms  \nRXosz = EEPROM.get(10, RXosz);        \/\/ RX Oszillatorfrequenz [Hz\/10] aus dem EEPROM lesen\nselect_VFOA();                        \/\/ VFOA ausw\u00e4hlen\ndelay(20);                            \/\/ Verz\u00f6gerung 20ms  \nselect_Mode_USB();                    \/\/ Umschalten auf Mode USB\ndelay(20);                            \/\/ Verz\u00f6gerung 20ms  \nselect_Split();                       \/\/ Umschalten auf Split Mode                                    \ndelay(20);                            \/\/ Verz\u00f6gerung 20ms\ntxPower = EEPROM.get(30, txPower);    \/\/ TX Power aus dem EEPROM lesen\ndelay(20);                            \/\/ Verz\u00f6gerung 20ms\nset_TXPower(txPower);                 \/\/ TX Power setzen\ndelay(20);                            \/\/ Verz\u00f6gerung 20ms                  \nfreq = (1048975000-RXosz)*10;         \/\/ auf die mittlere QO-100 Bakenfrequenz stellen\nwrite_freq();                         \/\/ Frequenz in den Transceiver schreiben\n\n\/\/ **************************************Initmeldung***********************************************************\nlcd.clear();                          \/\/ LCD l\u00f6schen\nlcd.setCursor(0, 0);                  \/\/ 1. Zeichen, 1. Zeile\nlcd.print(\"** QO-100 SAT BOX **\");    \/\/ schreiben\nlcd.setCursor(0, 1);                  \/\/ 1. Zeichen, 2. Zeile\nlcd.print(\"  **** OE2ROL ****  \");    \/\/ schreiben\nlcd.setCursor(18, 3);                 \/\/ 1. Zeichen, 4. Zeile\nlcd.print(\"ICOM IC-705 V1.1\");        \/\/ schreiben\ndelay(2000);                          \/\/ Verz\u00f6gerung\nlcd.clear();                          \/\/ LCD l\u00f6schen\n\n  EEPROM.get(0, TXosz);\n  if(TXosz == -1){\n    \/\/ Wird nur bei der  1. Initialisierung eines neuen Arduinos verwendet\n    TXosz=2256000000;                               \/\/ TX Oszillatorfrequenz [Hz]    (z.B. 2256MHz)\n    RXosz=1005400000;                               \/\/ RX Oszillatorfrequenz [Hz\/10] (z.B. 10,054GHz)\n    civadr=0xA4;                                    \/\/ CI-V Adresse [HEX] (z.B. A4 Standardadresse ICOM IC-705)\n    txPower=1;                                      \/\/ TX Power 1% \n    EEPROM.put(0, TXosz);                           \/\/ Wert TXosz ins EEPROM schreiben (Adresse 0) \n    delay(200);                                     \/\/ Verz\u00f6gerung\n    EEPROM.put(10, RXosz);                          \/\/ Wert RXosz ins EEPROM schreiben (Adresse 10)\n    delay(200);                                     \/\/ Verz\u00f6gerung\n    EEPROM.put(20, civadr);                         \/\/ Wert ins eeprom schreiben (Adresse 20)\n    delay(200);                                     \/\/ Verz\u00f6gerung\n    EEPROM.put(30, txPower);                        \/\/ Wert ins eeprom schreiben (Adresse 30)\n    delay(200);                                     \/\/ Verz\u00f6gerung\n  }\n  \n}\n\n\/\/ *************************************Statusanzeige der CI-V Kommunikation***********************************************************\nvoid puls(){\n  unsigned long currentMillis = millis();                    \/\/ Wert f\u00fcr aktuellen Timer setzen \n    if (currentMillis - previousMillis1 &gt;= 250)              \/\/ wenn Differenz des aktuellen Timers zu Startwert des Timers &gt; 250ms ist, dann:\n      {\n        lcd.setCursor(37, 3);                                \/\/ Cursor setzen\n        lcd.print(\"*\");                                      \/\/ Zeichen ausgeben \n          if (currentMillis - previousMillis1 &gt;= 500){       \/\/ wenn Differenz des aktuellen Timers zu Startwert des Timers &gt; 500ms ist, dann:\n            lcd.setCursor(37, 3);                            \/\/ Cursor setzen\n            lcd.print(\" \");                                  \/\/ Zeichen ausgeben\n            previousMillis1 = currentMillis;                 \/\/ Timerstartwert auf Wert des aktuellen Timers setzen\n          }\n      }\n}\n\n\/\/ ********************************************Aufbau einer Bluetoothverbindung**********************************************************\nvoid Bluetoothstate(){\n  BTstate = digitalRead(BTconnPin);     \/\/ Auslesen des BT Pins\n    if (BTstate == LOW){                \/\/ wenn BT nicht verbunden ist\n       asm volatile (\"  jmp 0\");        \/\/ Software Reset\n    }\n    else{\n      if (initflag == 0){               \/\/ wenn BT verbunden ist\n        setup();                        \/\/ erneute Ausf\u00fchrung von Setup\n        initflag = 1;                   \/\/ Flag auf 1  setzen, damit Setup nach der ersten BT Verbindung nur einmal ausgef\u00fchrt wird\n      }\n    }\n}   \n\n\/\/ ********************************************LCD Beschriftung setzen******************************************************************\nvoid LCDBeschriftung() {\n  lcd.setCursor(1, 0);                  \/\/ 2. Zeichen, 1. Zeile\n  lcd.print(\"RX\");                      \/\/ schreiben\n  lcd.setCursor(17, 0);                 \/\/ 18. Zeichen, 1. Zeile\n  lcd.print(\"MHz\");                     \/\/ schreiben\n  lcd.setCursor(1, 1);                  \/\/ 2. Zeichen, 2. Zeile\n  lcd.print(\"TX\");                      \/\/ schreiben\n  lcd.setCursor(17, 1);                 \/\/ 18. Zeichen, 2. Zeile\n  lcd.print(\"MHz\");                     \/\/ schreiben\n  }\n\n\/\/*************************************************************RX_TX Beschriftung*******************************************************\nvoid RXTXBeschriftung() {\n\n  if (VFOAfreq != VFOBfreq) {           \/\/ wenn VFOAfreq ungleich VFOBfreq ist (RX) dann\n    lcd.setCursor(0, 0);                \/\/ 1. Zeichen, 1. Zeile\n    lcd.print(\"*\");                     \/\/ schreiben\n  }\n  else{                                 \/\/ sonst\n    lcd.setCursor(0, 0);                \/\/ 1. Zeichen, 1. Zeile\n    lcd.print(\" \");                     \/\/ schreiben\n  }\n  if (VFOAfreq == VFOBfreq) {           \/\/ wenn VFOAfreq gleich VFOBfreq ist (TX) dann\n    lcd.setCursor(0, 1);                \/\/ 1. Zeichen, 2. Zeile\n    lcd.print(\"*\");                     \/\/ schreiben\n  }\n  else{                                 \/\/ sonst\n    lcd.setCursor(0, 1);                \/\/ 1. Zeichen, 2. Zeile\n    lcd.print(\" \");                     \/\/ schreiben\n  }\n}\n\n\/\/***************************************************************TX Power setzen*********************************************************\n\/\/ \"00\" =&gt; 0x00\n\/\/ \"99\" =&gt; 0x99\nbyte str2Hex(String value)\n{\n  int z = value.substring(0,1).toInt();\n  return( z*6 + value.toInt() );\n}\n\n\/\/ 0 - 100 set_TXPower\nvoid set_TXPower(int txPower) {  \/\/(int percentage=77)\n\n  \/\/ \"00000\" - \"0000255\"\n  String value = \"0000\" + String(int( ( 255.0\/100.0 ) * txPower ));             \/\/ Prozentwert in Hexwert umrechnen\n  \n  \/\/ \"0001\" =&gt; \"0001\"\n  \/\/ \"0000255\" =&gt; \"0255\"\n  value = value.substring(value.length()-4,value.length());                     \/\/ in 4 stelligen Hexwert umwandeln\n\n  \/\/ \"02\" =&gt; 0x02                                                               \/\/ in 4 stelligen Hexwert in 2x 2 stelligen Hexwert umwandeln\n  int byte0 = str2Hex( value.substring(0,2) );                                  \/\/ 1. 2 Stellen\n  \/\/ \"55\" =&gt; 0x55\n  int byte1 = str2Hex( value.substring(2,4) );                                  \/\/ 2. 2 Stellen\n  \/\/ 0x00  0x00 =&gt;   0\n  \/\/ 0x02  0x55 =&gt; 255\n  uint8_t power[] = {0xFE, 0xFE, civadr, 0x00, 0x14, 0x0A, byte0, byte1, 0xFD}; \/\/ CAT Kommando zum setzen der TX Power (7.Byte 0x00 0x00 = Minimum bis 8.Byte 0x02 0x55 = Maximum)\n                                                                                \/\/ Formel 255\/100x(Leistung in %) und auf Ganze runden (z.B.30% = 255\/100*30 = 76,5 ~ 77 = 0x00, 0x77)\n  for (uint8_t i = 0; i &lt; sizeof(power); i++) {                                 \/\/ Z\u00e4hlschleife 0 - Gr\u00f6sse des Schreibarrays\n    CAT.write(power[i]);                                                        \/\/ CAT Kommando senden\n    }\n  delay(20);                                                                    \/\/ Verz\u00f6gerung 20 ms  \n}\n\n\/\/ *********************************************Sende- und Empangsfrequenzen berechnen***************************************************\nvoid calculateFrequency()  {\nTXosz = EEPROM.get(0, TXosz);               \/\/ TX Oszillatorfrequenz [Hz] aus dem eeprom lesen (Adresse 0)\nRXosz = EEPROM.get(10, RXosz);              \/\/ RX Oszillatorfrequenz [Hz\/10] aus dem eeprom lesen (Adresse 10)\nshift=808950000;                            \/\/ QO-100 RX-TX Versatz [Hz\/10] = TX 10489,750MHz RX 2400,250MHz = RX-TX shift 8089,500MHz\nTXfreq=VFOBfreq+TXosz;                      \/\/ Berechnung der SAT Sendefrequenz [Hz](Sendefrequenz + TX Oszillatorfrequenz)\nRXfreq=(VFOAfreq\/10)+RXosz;                 \/\/ Berechnung der SAT Empfangsfrequenz [Hz\/10](Empfangsfrequenz + RX Oszillatorfrequenz)\n}\n\n\/\/ *************************************************Mode USB am Transceiver ausw\u00e4hlen****************************************************\nvoid select_Mode_USB() {\nuint8_t VFOA[] = {0xFE, 0xFE, civadr, 0x00, 0x06, 0x01, 0xFD};          \/\/ CAT Kommando zum Umschalten auf USB\nfor (uint8_t i = 0; i &lt; sizeof(VFOA); i++) {                            \/\/ Z\u00e4hlschleife 0 - Gr\u00f6sse des Schreibarrays\n  CAT.write(VFOA[i]);                                                   \/\/ CAT Kommando senden\n  }\ndelay(20);                                                              \/\/ Verz\u00f6gerung 20 ms     \n}\n\n\/\/ *************************************************Split Mode am Transceiver ausw\u00e4hlen**************************************************\nvoid select_Split() {\nuint8_t VFOA[] = {0xFE, 0xFE, civadr, 0x00, 0x0F, 0x01, 0xFD};          \/\/ CAT Kommando zum Umschalten auf Split\nfor (uint8_t i = 0; i &lt; sizeof(VFOA); i++) {                            \/\/ Z\u00e4hlschleife 0 - Gr\u00f6sse des Schreibarrays\n  CAT.write(VFOA[i]);                                                   \/\/ CAT Kommando senden\n  }\ndelay(20);                                                              \/\/ Verz\u00f6gerung 20 ms\n}\n\n\/\/ *************************************************VFOA am Transceiver ausw\u00e4hlen********************************************************\nvoid select_VFOA() {\nuint8_t VFOA[] = {0xFE, 0xFE, civadr, 0x00, 0x07, 0x00, 0xFD};          \/\/ CAT Kommando zum Umschalten auf VFOA\nfor (uint8_t i = 0; i &lt; sizeof(VFOA); i++) {                            \/\/ Z\u00e4hlschleife 0 - Gr\u00f6sse des Schreibarrays\n  CAT.write(VFOA[i]);                                                   \/\/ CAT Kommando senden\n  }\ndelay(20);                                                              \/\/ Verz\u00f6gerung 20 ms\n}\n\n\/\/ ***********************************************VFOB am Transceiver ausw\u00e4hlen**********************************************************\nvoid select_VFOB() {\nuint8_t VFOB[] = {0xFE, 0xFE, civadr, 0x00, 0x07, 0x01, 0xFD};          \/\/ CAT Kommando zum Umschalten auf VFOB\nfor (uint8_t i = 0; i &lt; sizeof(VFOB); i++) {                            \/\/ Z\u00e4hlschleife 0 - Gr\u00f6sse des Schreibarray\n  CAT.write(VFOB[i]);                                                   \/\/ CAT Kommando senden\n  }\ndelay(20);                                                              \/\/ Verz\u00f6gerung 20 ms\n}\n\n\/\/ ***********************************************TX Frequenz in VFOB schreiben**********************************************************\nvoid write_TXfreq() {\nselect_VFOB();                                                          \/\/ VFOB Frequenz ausw\u00e4hlen\ndelay(20);                                                              \/\/ Verz\u00f6gerung 20 ms\nfreq = VFOBfreq;                                                        \/\/ Frequenz in VFOB Variable schreiben\nwrite_freq();                                                           \/\/ Funktion aufrufen zum Schreiben der Frequenz in den Transceiver  \n}\n\n\/\/ *************************************************Frequenz in Transceiver schreiben****************************************************\nvoid write_freq() {\n                                                        \nZ_E =   decToBcd(freq%100);                                                                 \/\/ 10 Hz,   1 Hz\nK_H =   decToBcd(freq\/100%100);                                                             \/\/ 1 KHz,   100 Hz\nHK_ZK = decToBcd(freq\/10000%100);                                                           \/\/ 100 KHz, 10 KHz\nZM_M =  decToBcd(freq\/1000000%100);                                                         \/\/ 10 MHz,  1 MHz\nG_HM =  decToBcd(freq\/100000000%100);                                                       \/\/ 1 GHz,   100 MHz\n\nuint8_t writefreq[] = {0xFE, 0xFE, civadr, 0x00, 0x05, Z_E, K_H, HK_ZK, ZM_M, G_HM, 0xFD};  \/\/ CAT Kommando zum schreiben der Frequenz z.B. FE FE civadr 00 05 &lt;00 80 20 44 01&gt; FD = 0144208000 Hz\nfor (uint8_t i = 0; i &lt; sizeof(writefreq); i++) {                                           \/\/ Z\u00e4hlschleife 0 - Gr\u00f6sse des Schreibarray\n  CAT.write(writefreq[i]);                                                                  \/\/ CAT Kommando senden\n  }\ndelay(20);                                                                                  \/\/ Verz\u00f6gerung 20 ms\n}\n\n\/\/ ******************************************dezimal in BCD Code umwandeln*****************************************************************\nbyte decToBcd(byte val)                                                 \n{\n  return( (val\/10*16) + (val%10) );                                     \/\/ 2 stellige Dezimalzahl in BCD Code umwandeln\n}\n\n\/\/ ************************************VFOB nachziehen, nur wenn RX Frequenz am Transceiver ge\u00e4ndert wird**********************************\nvoid VFOB_nachziehen1() {                                               \/\/ nur wenn VFOAfreq &gt; VFOBfreq ist\nint dly = 5;                                                            \/\/ Verz\u00f6gerung f\u00fcr x millisekunden zwischen den Kommandos\nVFOBfreq=(VFOAfreq\/10+RXosz-shift)*10-TXosz-RIT+Splitoffset;            \/\/ VFO Freq. zum Senden berechnen [Hz\/10](Empfangsfrequenz+RX Oszillatorfrequenz-shift-TX Oszillatorfrequenz) um -RIT und +Splitoffset korrigieren\nunsigned long currentMillis = millis();                                 \/\/ Wert f\u00fcr aktuellen Timer setzen \nif (currentMillis - previousMillis2 &gt;= interval)                        \/\/ wenn Differenz des aktuellen Timers zu Startwert des Timers &gt; Verz\u00f6gerungszeit ist, dann:\n  {\n   previousMillis2 = currentMillis;                                     \/\/ Timerstartwert auf Wert des aktuellen Timers setzen  \n    if (TXfreq &gt; 2399000000) {                                          \/\/ Zur Unterdr\u00fcckung einer falschen Frequenz\u00fcbergabe\n        if (freqmem!=VFOBfreq)                                          \/\/ Nur wenn der Zwischenspeicher nicht der VFOA-Frequenz entspricht, dann:\n          {\n           write_TXfreq();                                              \/\/ TX Frequenz in den VFOB schreiben\n           delay(dly);                                                  \/\/ Verz\u00f6gerung\n           freqmem=VFOBfreq;                                            \/\/ TX Frequenz in den Zwischenspeicher schreiben\n           delay(dly);                                                  \/\/ Verz\u00f6gerung\n          } \n      }\n  }\n}\n\n\/\/ *************************************Berechnete TX Frequenz ins Display schreiben*******************************************************\nvoid print_TXfreq1() {                 \/\/ nur wenn VFOAfreq &gt; VFOBfreq ist\n  if (TXfreq &gt; 2399000000)  {          \/\/ Zur Unterdr\u00fcckung einer falschen Frequenzanzeige bei manueller Wahl des VFOB\n    lcd.setCursor(5, 1);\n    lcd.print(TXfreq\/1000000000%10);   \/\/ Tx 1G Stelle ausgeben\n    lcd.setCursor(6, 1);\n    lcd.print(TXfreq\/100000000%10);    \/\/ Tx 100M  Stelle ausgeben\n    lcd.setCursor(7, 1);\n    lcd.print(TXfreq\/10000000%10);     \/\/ Tx 10M Stelle ausgeben\n    lcd.setCursor(8, 1);\n    lcd.print(TXfreq\/1000000%10);      \/\/ Tx 1M Stelle ausgeben\n    lcd.setCursor(9, 1);\n    lcd.print(\",\");                    \/\/ , ausgeben\n    lcd.setCursor(10, 1);\n    lcd.print(TXfreq\/100000%10);       \/\/ Tx 100k Stelle ausgeben\n    lcd.setCursor(11, 1);\n    lcd.print(TXfreq\/10000%10);        \/\/ Tx 10k Stelle ausgeben\n    lcd.setCursor(12, 1);\n    lcd.print(TXfreq\/1000%10);         \/\/ Tx 1k Stelle ausgeben\n    lcd.setCursor(13, 1);\n    lcd.print(TXfreq\/100%10);          \/\/ Tx 100Hz Stelle ausgeben\n    lcd.setCursor(14, 1);\n    lcd.print(TXfreq\/10%10);           \/\/ Tx 10Hz Stelle ausgeben\n    lcd.setCursor(15, 1);\n    lcd.print(TXfreq%10);              \/\/ Tx 1Hz Stelle ausgeben\n  }\n}\n\n\/\/ *************************************Berechnete RX Frequenz ins Display schreiben******************************************************\nvoid print_RXfreq1() {                 \/\/ nur wenn VFOAfreq &gt; VFOBfreq ist\n  if (RXfreq &gt; 1048800000)  {          \/\/ Zur Unterdr\u00fcckung einer falschen Frequenzanzeige beim Senden\n    lcd.setCursor(2, 2);\n    lcd.print(RXfreq\/1000000000%10);   \/\/ Rx 10G Stelle ausgeben\n    lcd.setCursor(3, 2);\n    lcd.print(RXfreq\/100000000%10);    \/\/ Rx 1G Stelle ausgeben\n    lcd.setCursor(4, 2);\n    lcd.print(RXfreq\/10000000%10);     \/\/ Rx 100M Stelle ausgeben\n    lcd.setCursor(5, 2);\n    lcd.print(RXfreq\/1000000%10);      \/\/ Rx 10M Stelle ausgeben\n    lcd.setCursor(6, 2);\n    lcd.print(RXfreq\/100000%10);       \/\/ Rx 1M Stelle ausgeben\n    lcd.setCursor(7, 2);\n    lcd.print(\",\");                    \/\/ , ausgeben\n    lcd.setCursor(8, 2);\n    lcd.print(RXfreq\/10000%10);        \/\/ Rx 100k Stelle ausgeben\n    lcd.setCursor(9, 2);\n    lcd.print(RXfreq\/1000%10);         \/\/ Rx 10k Stelle ausgeben\n    lcd.setCursor(10, 2);\n    lcd.print(RXfreq\/100%10);          \/\/ Rx 1k Stelle ausgeben\n    lcd.setCursor(11, 2);\n    lcd.print(RXfreq\/10%10);           \/\/ Rx 100Hz Stelle ausgeben\n    lcd.setCursor(12, 2);\n    lcd.print(RXfreq%10);              \/\/ Rx 10Hz Stelle ausgeben\n    lcd.setCursor(13, 2);\n    lcd.print(RXfreq%1);               \/\/ Rx 1Hz Stelle ausgeben \n  }\n}\n\n\/\/ ************************************VFOB nachziehen, nur wenn RX Frequenz am Transceiver ge\u00e4ndert wird**********************************\nvoid VFOB_nachziehen2() {                                               \/\/ nur wenn VFOAfreq &lt; VFOBfreq ist\nint dly = 5;                                                            \/\/ Verz\u00f6gerung f\u00fcr x millisekunden zwischen den Kommandos\nVFOBfreq=(VFOAfreq\/10+RXosz-shift)*10-TXosz-RIT+Splitoffset;            \/\/ VFO Freq. zum Senden berechnen [Hz\/10](Empfangsfrequenz+RX Oszillatorfrequenz-shift-TX Oszillatorfrequenz) um -RIT und +Splitoffset korrigieren\nunsigned long currentMillis = millis();                                 \/\/ Wert f\u00fcr aktuellen Timer setzen \nif (currentMillis - previousMillis2 &gt;= interval)                        \/\/ wenn Differenz des aktuellen Timers zu Startwert des Timers &gt; Verz\u00f6gerungszeit ist, dann:\n  {\n   previousMillis2 = currentMillis;                                     \/\/ Timerstartwert auf Wert des aktuellen Timers setzen  \n    if (TXfreq &lt; 2401000000) {                                          \/\/ Zur Unterdr\u00fcckung einer falschen Frequenz\u00fcbergabe\n        if (freqmem!=VFOBfreq)                                          \/\/ Nur wenn der Zwischenspeicher nicht der VFOA-Frequenz entspricht, dann:\n          {\n           write_TXfreq();                                              \/\/ TX Frequenz in den VFOB schreiben\n           delay(dly);                                                  \/\/ Verz\u00f6gerung\n           freqmem=VFOBfreq;                                            \/\/ TX Frequenz in den Zwischenspeicher schreiben\n           delay(dly);                                                  \/\/ Verz\u00f6gerung\n          } \n      }\n  }\n}\n\n\/\/ *************************************Berechnete TX Frequenz ins Display schreiben*******************************************************\nvoid print_TXfreq2() {                 \/\/ nur wenn VFOAfreq &lt; VFOBfreq ist\n  if (TXfreq &lt; 2401000000)  {          \/\/ Zur Unterdr\u00fcckung einer falschen Frequenzanzeige bei manueller Wahl des VFOB\n    lcd.setCursor(5, 1);\n    lcd.print(TXfreq\/1000000000%10);   \/\/ Tx 1G Stelle ausgeben\n    lcd.setCursor(6, 1);\n    lcd.print(TXfreq\/100000000%10);    \/\/ Tx 100M  Stelle ausgeben\n    lcd.setCursor(7, 1);\n    lcd.print(TXfreq\/10000000%10);     \/\/ Tx 10M Stelle ausgeben\n    lcd.setCursor(8, 1);\n    lcd.print(TXfreq\/1000000%10);      \/\/ Tx 1M Stelle ausgeben\n    lcd.setCursor(9, 1);\n    lcd.print(\",\");                    \/\/ , ausgeben\n    lcd.setCursor(10, 1);\n    lcd.print(TXfreq\/100000%10);       \/\/ Tx 100k Stelle ausgeben\n    lcd.setCursor(11, 1);\n    lcd.print(TXfreq\/10000%10);        \/\/ Tx 10k Stelle ausgeben\n    lcd.setCursor(12, 1);\n    lcd.print(TXfreq\/1000%10);         \/\/ Tx 1k Stelle ausgeben\n    lcd.setCursor(13, 1);\n    lcd.print(TXfreq\/100%10);          \/\/ Tx 100Hz Stelle ausgeben\n    lcd.setCursor(14, 1);\n    lcd.print(TXfreq\/10%10);           \/\/ Tx 10Hz Stelle ausgeben\n    lcd.setCursor(15, 1);\n    lcd.print(TXfreq%10);              \/\/ Tx 1Hz Stelle ausgeben\n  }\n}\n\n\/\/ *************************************Berechnete RX Frequenz ins Display schreiben******************************************************\nvoid print_RXfreq2() {                 \/\/ nur wenn VFOAfreq &lt; VFOBfreq ist\n  if (RXfreq &lt; 1049100000)  {          \/\/ Zur Unterdr\u00fcckung einer falschen Frequenzanzeige beim Senden\n    lcd.setCursor(2, 2);\n    lcd.print(RXfreq\/1000000000%10);   \/\/ Rx 10G Stelle ausgeben\n    lcd.setCursor(3, 2);\n    lcd.print(RXfreq\/100000000%10);    \/\/ Rx 1G Stelle ausgeben\n    lcd.setCursor(4, 2);\n    lcd.print(RXfreq\/10000000%10);     \/\/ Rx 100M Stelle ausgeben\n    lcd.setCursor(5, 2);\n    lcd.print(RXfreq\/1000000%10);      \/\/ Rx 10M Stelle ausgeben\n    lcd.setCursor(6, 2);\n    lcd.print(RXfreq\/100000%10);       \/\/ Rx 1M Stelle ausgeben\n    lcd.setCursor(7, 2);\n    lcd.print(\",\");                    \/\/ , ausgeben\n    lcd.setCursor(8, 2);\n    lcd.print(RXfreq\/10000%10);        \/\/ Rx 100k Stelle ausgeben\n    lcd.setCursor(9, 2);\n    lcd.print(RXfreq\/1000%10);         \/\/ Rx 10k Stelle ausgeben\n    lcd.setCursor(10, 2);\n    lcd.print(RXfreq\/100%10);          \/\/ Rx 1k Stelle ausgeben\n    lcd.setCursor(11, 2);\n    lcd.print(RXfreq\/10%10);           \/\/ Rx 100Hz Stelle ausgeben\n    lcd.setCursor(12, 2);\n    lcd.print(RXfreq%10);              \/\/ Rx 10Hz Stelle ausgeben\n    lcd.setCursor(13, 2);\n    lcd.print(RXfreq%1);               \/\/ Rx 1Hz Stelle ausgeben \n  }\n}\n\n\/\/ ********************************************RX Frequenz aus dem Transceiver lesen (VFOA)***************************************************\nvoid read_RXfreq() {                                                      \/\/ Frequenz vom Transceiver auslesen und in Variable (freq) schreiben\nselect_VFOA();                                                            \/\/ VFOA Frequenz ausw\u00e4hlen\ndelay(100);                                                               \/\/ Verz\u00f6gerung 100 ms\nuint8_t freq_buffer[12];                                                  \/\/ Array zum Einlesen der Main Frequenz\nuint8_t req[] = {0xFE, 0xFE, civadr, 0x00, 0x03, 0xFD};                   \/\/ CAT Kommando zum auslesen der Frequenz  \nfor (uint8_t i = 0; i &lt; sizeof(req); i++) {                               \/\/ Gr\u00f6sse des Schreibarrays \n  CAT.write(req[i]);                                                      \/\/ CAT Kommando schreiben\n  }\ndelay(100);                                                               \/\/ Verz\u00f6gerung 100 ms\n  while (!CAT.available());                                               \/\/ auf Serial Port warten\n    while (CAT.available() &gt; 0) {                                         \/\/ wenn Serial Port verf\u00fcgbar\n      puls();                                                             \/\/ Statusanzeige der CI-V Kommunikation ausgeben\n      for (int j = 0; j &lt; 12; j++) {                                      \/\/ Z\u00e4hlschleife 0-12\n        delay(10);                                                        \/\/ Verz\u00f6gerung 10 ms\n        freq_buffer[j] = CAT.read();                                      \/\/ Zeichen vom Serial Port schrittweise in das Array schreiben\n            if (freq_buffer[j] == 0xFD){                                  \/\/ wenn 0xFD im Buffer steht\n              break;                                                      \/\/ aus der Schleife aussteigen\n              j = 0;                                                      \/\/ Arrayindexz\u00e4hler auf 0 setzen\n            } \n        VFOAfreq = 0;                                                     \/\/ Variable f\u00fcr RX Frequenz auf 0 setzen\n      }\n                                                                          \/\/ FE FE 00 A2 03 &lt;00 80 70 35 04&gt; FD = 0435708000 Hz\n      for (uint8_t k = 0; k &lt; 5; k++) {                                   \/\/ Z\u00e4hlschleife 0-5\n          VFOAfreq += (freq_buffer[9 - k] &gt;&gt; 4) * decMulti[k * 2];        \/\/ Frequenz aus dem Buffer lesen und in Dezimal konvertieren\n          VFOAfreq += (freq_buffer[9 - k] &amp; 0x0F) * decMulti[k * 2 + 1];  \/\/ Frequenz aus dem Buffer lesen und in Dezimal konvertieren\n      }  \n    }\n} \n\n\/\/ ********************************************************Softwarereset****************************************************************************\nvoid software_reset(){\nup = digitalRead(uppin);                                \/\/ up Taste abfragen\ndown = digitalRead(downpin);                            \/\/ down Taste abfragen\n            if (up == LOW &amp;&amp; down == LOW){              \/\/ wenn up und down Taste gleichzeitig bet\u00e4tigt\n              asm volatile (\"  jmp 0\");                 \/\/ Software Reset\n            }\n}\n\n\/\/ *******************************************************Men\u00fcsteuerung****************************************************************************\nvoid menuset(){\nmenuState = digitalRead(menuPin);                       \/\/ Auslesen der Men\u00fctaste\n  if (menuState != lastmenuState)                       \/\/ wenn sich der Men\u00fc Status ge\u00e4ndert hat\n  {\n    if (menuState == LOW)                               \/\/ wenn Men\u00fc Status LOW (Men\u00fctaste gedr\u00fcckt)\n    {\n      delay(200);                                       \/\/ Verz\u00f6gerung\n      menuPushCounter = 5;                              \/\/ maximal 4 Men\u00fcs verf\u00fcgbar Men\u00fctastenz\u00e4hler auf 5 setzen\n      menubool = true;                                  \/\/ men\u00fc aktivieren\n    }\n    if (menuState == HIGH)                              \/\/ wenn Men\u00fc Status HIGH\n    {\n      menubool = false;                                 \/\/ men\u00fc deaktivieren\n    }\n  }\n\n  if (menubool == true &amp;&amp; menuPushCounter == 5)         \/\/ wenn Men\u00fc aktiviert und Men\u00fctastenz\u00e4hler 5\n  {\n    menucounter = 0;                                    \/\/ Men\u00fcz\u00e4hler auf 0 setzen \n    menu();                                             \/\/ Men\u00fc starten\n  }\nlastmenuState = menuState;                              \/\/ Men\u00fcstatus setzen\n}\n\n\/\/ *******************************************Men\u00fcsteuerung zum Setzen und Speichern der Offsets***************************************************\nint menu()\n{\n  lcd.clear();                                    \/\/ LCD l\u00f6schen\n  delay(100);                                     \/\/ Verz\u00f6gerung\n  while (menucounter &lt; 5)                         \/\/ while Menu enspricht der max Anzahl der Men\u00fcs\n  {\n    menuState = digitalRead(menuPin);             \/\/ Men\u00fc Taste abfragen\n    up = digitalRead(uppin);                      \/\/ up Taste abfragen\n    down = digitalRead(downpin);                  \/\/ down Taste abfragen\n\n    if (menuState != lastmenuState)               \/\/ wenn sich der Men\u00fc Status ge\u00e4ndert hat\n    {\n      lcd.clear();                                \/\/ LCD l\u00f6schen\n      if (menuState == LOW)                       \/\/ wenn Men\u00fc Status LOW\n      {\n        delay(200);                               \/\/ Verz\u00f6gerung\n        menucounter++;                            \/\/ Men\u00fcz\u00e4hler um 1 erh\u00f6hen\n      }\n    }\nlastmenuState = menuState;                        \/\/ letzten Men\u00fcstatus auf Men\u00fc Status setzen\n\n    switch (menucounter) {                        \/\/ Men\u00fcauswahl\n      case 0:                                     \/\/ Men\u00fc 1\n        lcd.setCursor(0, 0);                      \/\/ 1. Zeichen, 1. Zeile\n        lcd.print(\"TX Oscillator [Hz]\");          \/\/ schreiben\n        lcd.setCursor(0, 1);                      \/\/ 1. Zeichen, 2. Zeile\n        lcd.print(TXosz);                         \/\/ schreiben\n            if (up == LOW)                        \/\/ wenn up Taste bet\u00e4tigt\n            {\n              delay(200);                         \/\/ Verz\u00f6gerung\n              TXosz=TXosz+(sw*10);                \/\/ Wert um Schrittweite *10 erh\u00f6hen\n              lcd.clear();                        \/\/ LCD l\u00f6schen\n            }\n            if (down == LOW)                      \/\/ wenn down Taste bet\u00e4tigt\n            {\n              delay(200);                         \/\/ Verz\u00f6gerung\n              TXosz=TXosz-(sw*10);                \/\/ Wert um Schrittweite *10 vermindern\n              lcd.clear();                        \/\/ LCD l\u00f6schen\n            }\n        break;                                    \/\/ aussteigen, dieses Men\u00fc beginnt dann von vorne\n\n      case 1:                                     \/\/ Men\u00fc 2\n        lcd.setCursor(0, 0);                      \/\/ 1. Zeichen, 1. Zeile\n        lcd.print(\"RX Oscillator[Hz\/10]\");        \/\/ schreiben\n        lcd.setCursor(0, 1);                      \/\/ 1. Zeichen, 2. Zeile\n        lcd.print(RXosz);                         \/\/ schreiben\n            if (up == LOW)                        \/\/ wenn up Taste bet\u00e4tigt\n            {\n              delay(200);                         \/\/ Verz\u00f6gerung\n              RXosz=RXosz+sw;                     \/\/ Wert um Schrittweite erh\u00f6hen\n              lcd.clear();                        \/\/ LCD l\u00f6schen\n            }\n            if (down == LOW)                      \/\/ wenn down Taste bet\u00e4tigt\n            {\n              delay(200);                         \/\/ Verz\u00f6gerung\n              RXosz=RXosz-sw;                     \/\/ Wert um Schrittweite vermindern\n              lcd.clear();                        \/\/ LCD l\u00f6schen\n            }\n        break;                                    \/\/ aussteigen, dieses Men\u00fc beginnt dann von vorne\n\n      case 2:                                     \/\/ Men\u00fc 3\n        lcd.setCursor(0, 0);                      \/\/ 1. Zeichen, 1. Zeile\n        lcd.print(\"Split Offset [Hz]\");           \/\/ schreiben\n        lcd.setCursor(0, 1);                      \/\/ 1. Zeichen, 2. Zeile\n        lcd.print(Splitoffset);                   \/\/ schreiben\n            if (up == LOW)                        \/\/ wenn up Taste bet\u00e4tigt\n            {\n              delay(200);                         \/\/ Verz\u00f6gerung\n              Splitoffset=Splitoffset+(sw*10);    \/\/ Wert um Schrittweite*10 erh\u00f6hen\n              lcd.clear();                        \/\/ LCD l\u00f6schen\n            }\n            if (down == LOW)                      \/\/ wenn down Taste bet\u00e4tigt\n            {\n              delay(200);                         \/\/ Verz\u00f6gerung\n              Splitoffset=Splitoffset-(sw*10);    \/\/ Wert um Schrittweite*10 vermindern\n              lcd.clear();                        \/\/ LCD l\u00f6schen\n            }\n        break;                                    \/\/ aussteigen, dieses Men\u00fc beginnt dann von vorne\n        \n      case 3:                                     \/\/ Men\u00fc 4\n        lcd.setCursor(0, 0);                      \/\/ 1. Zeichen, 1. Zeile\n        lcd.print(\"Step size\");                   \/\/ schreiben\n            if (up == LOW)                        \/\/ wenn up Taste bet\u00e4tigt\n            {\n              delay(200);                         \/\/ Verz\u00f6gerung\n              sw=sw*10;                           \/\/ Wert mit 10 multiplizieren\n              lcd.clear();                        \/\/ LCD l\u00f6schen\n            }\n            if (down == LOW)                      \/\/ wenn down Taste bet\u00e4tigt\n            {\n              delay(200);                         \/\/ Verz\u00f6gerung\n              sw=sw\/10;                           \/\/ Wert durch 10 dividieren\n              lcd.clear();                        \/\/ LCD l\u00f6schen\n            }\n            if (sw*10 &gt; 100000000) {sw=1;}        \/\/ max Begrenzung auf 100M\n            if (sw &lt; 1) {sw=1;}                   \/\/ min Begrenzung auf 1\n            if (sw*10 &lt; 1000){                    \/\/ Beschriftung und Umrechnung in Hz\n              lcd.setCursor(0, 1);                \/\/ 1. Zeichen, 2. Zeile\n              lcd.print(sw*10);                   \/\/ schreiben   \n              lcd.setCursor(5, 1);                \/\/ 5. Zeichen, 2. Zeile\n              lcd.print(\"Hz\");                    \/\/ schreiben\n            }\n            if (sw*10 &gt; 999 &amp;&amp; sw*10 &lt; 1000000){  \/\/ Beschriftung und Umrechnung in KHz\n              lcd.setCursor(0, 1);                \/\/ 1. Zeichen, 2. Zeile\n              lcd.print(sw*10\/1000);              \/\/ schreiben\n              lcd.setCursor(5, 1);                \/\/ 5. Zeichen, 2. Zeile\n              lcd.print(\"KHz\");                   \/\/ schreiben\n            }\n            if (sw*10 &gt; 999999 &amp;&amp; sw*10 &lt; 1000000000){ \/\/ Beschriftung und Umrechnung in MHz\n              lcd.setCursor(0, 1);                \/\/ 1. Zeichen, 2. Zeile\n              lcd.print(sw*10\/1000000);           \/\/ schreiben\n              lcd.setCursor(5, 1);                \/\/ 5. Zeichen, 2. Zeile\n              lcd.print(\"MHz\");                   \/\/ schreiben\n            }\n        break;                                    \/\/ aussteigen, dieses Men\u00fc beginnt dann von vorne\n        \n      case 4:                                     \/\/ Men\u00fc 5, hier werden die Werte gespeichert und der arduino beginnt loop neu auszuf\u00fchren\n        lcd.setCursor(0, 0);                      \/\/ 1. Zeichen, 1. Zeile\n        lcd.print(\"store Offsets?\");              \/\/ schreiben\n        lcd.setCursor(0, 1);                      \/\/ 1. Zeichen, 2. Zeile\n        lcd.print(\"down or menu= No\");            \/\/ schreiben\n        lcd.setCursor(18, 2);                     \/\/ 1. Zeichen, 3. Zeile\n        lcd.print(\"up= Yes\");                     \/\/ schreiben\n            if (up == LOW)                        \/\/ wenn up Taste bet\u00e4tigt\n            {\n              delay(200);                         \/\/ Verz\u00f6gerung\n              EEPROM.put(0, TXosz);               \/\/ Wert ins eeprom schreiben (Adresse 0)\n              delay(200);                         \/\/ Verz\u00f6gerung\n              EEPROM.put(10, RXosz);              \/\/ Wert ins eeprom schreiben (Adresse 10)\n              delay(200);                         \/\/ Verz\u00f6gerung\n              lcd.setCursor(0, 1);                \/\/ 1. Zeichen, 1. Zeile\n              delay(200);                         \/\/ Verz\u00f6gerung\n              lcd.clear();                        \/\/ LCD l\u00f6schen\n              lcd.print(\"Offsets stored\");        \/\/ schreiben\n              delay(2000);                        \/\/ Verz\u00f6gerung\n              lcd.clear();                        \/\/ LCD l\u00f6schen\n              delay(200);                         \/\/ Verz\u00f6gerung\n              menucounter = 5;                    \/\/ Men\u00fc Z\u00e4hler auf 5 setzen\n              menuPushCounter = 0;                \/\/ Men\u00fctastenz\u00e4hler auf 0 setzen\n              break;                              \/\/ aussteigen, zur\u00fcck zu loop\n            }\n            if (down == LOW)                      \/\/ wenn down Taste bet\u00e4tigt\n            {\n              lcd.clear();                        \/\/ LCD l\u00f6schen\n              delay(200);                         \/\/ Verz\u00f6gerung\n              menucounter = 5;                    \/\/ Men\u00fc Z\u00e4hler auf 5 setzen\n              menuPushCounter = 0;                \/\/ Men\u00fctastenz\u00e4hler auf 0 setzen\n              break;                              \/\/ aussteigen, zur\u00fcck zu loop\n            }\n    }\n  }\n}\n\n\n\/\/ ********************** Men\u00fcsteuerung im Setup zum Setzen und Speichern der CI-V Adresse und TX Power *********************************\nint setupmenu()\n{\n  civadr = EEPROM.get(20, civadr);                \/\/ CI-V Adresse aus dem eeprom lesen\n  txPower = EEPROM.get(30, txPower);              \/\/ TX Power in % aus dem eeprom lesen\n  lcd.clear();                                    \/\/ LCD l\u00f6schen\n  delay(100);                                     \/\/ Verz\u00f6gerung\n  while (menucounter &lt; 3)                         \/\/ while Menu enspricht der max Anzahl der Men\u00fcs\n  {\n    menuState = digitalRead(menuPin);             \/\/ Men\u00fc Taste abfragen\n    up = digitalRead(uppin);                      \/\/ up Taste abfragen\n    down = digitalRead(downpin);                  \/\/ down Taste abfragen\n\n    if (menuState != lastmenuState)               \/\/ wenn sich der Men\u00fc Status ge\u00e4ndert hat\n    {\n      lcd.clear();                                \/\/ LCD l\u00f6schen\n      if (menuState == LOW)                       \/\/ wenn Men\u00fc Status LOW\n      {\n        delay(200);                               \/\/ Verz\u00f6gerung\n        menucounter++;                            \/\/ Men\u00fcz\u00e4hler um 1 erh\u00f6hen\n      }\n    }\nlastmenuState = menuState;                        \/\/ letzten Men\u00fcstatus auf Men\u00fc Status setzen\n\n    switch (menucounter) {                        \/\/ Men\u00fcauswahl\n      case 0:                                     \/\/ Men\u00fc 1\n        lcd.setCursor(0, 0);                      \/\/ 1. Zeichen, 1. Zeile\n        lcd.print(\"CI-V Address [HEX]\");          \/\/ schreiben\n        lcd.setCursor(0, 1);                      \/\/ 1. Zeichen, 2. Zeile\n        lcd.print(civadr, HEX);                   \/\/ schreiben\n            if (up == LOW)                        \/\/ wenn up Taste bet\u00e4tigt\n            {\n              delay(200);                         \/\/ Verz\u00f6gerung\n              civadr=civadr+1;                    \/\/ Wert um 1 erh\u00f6hen\n              lcd.clear();                        \/\/ LCD l\u00f6schen\n            }\n            if (down == LOW)                      \/\/ wenn down Taste bet\u00e4tigt\n            {\n              delay(200);                         \/\/ Verz\u00f6gerung\n              civadr=civadr-1;                    \/\/ Wert um 1 vermindern\n              lcd.clear();                        \/\/ LCD l\u00f6schen\n            }\n            if (civadr &gt; 255) {civadr=1;}         \/\/ max Begrenzung auf 255\n            if (civadr &lt; 0) {civadr=255;}         \/\/ min Begrenzung auf 0\n            \n        break;                                    \/\/ aussteigen, dieses Men\u00fc beginnt dann von vorne\n\n      case 1:                                     \/\/ Men\u00fc 2\n        lcd.setCursor(0, 0);                      \/\/ 1. Zeichen, 1. Zeile\n        lcd.print(\"TX Power [0-100 %]\");          \/\/ schreiben\n        lcd.setCursor(0, 1);                      \/\/ 1. Zeichen, 2. Zeile\n        lcd.print(txPower);                       \/\/ schreiben\n            if (up == LOW)                        \/\/ wenn up Taste bet\u00e4tigt\n            {\n              delay(200);                         \/\/ Verz\u00f6gerung\n              txPower=txPower+1;                  \/\/ Wert um 1 erh\u00f6hen\n              lcd.clear();                        \/\/ LCD l\u00f6schen\n            }\n            if (down == LOW)                      \/\/ wenn down Taste bet\u00e4tigt\n            {\n              delay(200);                         \/\/ Verz\u00f6gerung\n              txPower=txPower-1;                  \/\/ Wert um 1 vermindern\n              lcd.clear();                        \/\/ LCD l\u00f6schen\n            }\n            if (txPower &gt; 100) {txPower=1;}       \/\/ max Begrenzung auf 100\n            if (txPower &lt; 0) {txPower=100;}       \/\/ min Begrenzung auf 0\n            \n        break;                                    \/\/ aussteigen, dieses Men\u00fc beginnt dann von vorne\n\n      case 2:                                     \/\/ Men\u00fc 3, hier werden die Werte gespeichert und der arduino beginnt loop neu auszuf\u00fchren\n        lcd.setCursor(0, 0);                      \/\/ 1. Zeichen, 1. Zeile\n        lcd.print(\"store Offsets?\");              \/\/ schreiben\n        lcd.setCursor(0, 1);                      \/\/ 1. Zeichen, 2. Zeile\n        lcd.print(\"down or menu= No\");            \/\/ schreiben\n        lcd.setCursor(18, 2);                     \/\/ 1. Zeichen, 3. Zeile\n        lcd.print(\"up= Yes\");                     \/\/ schreiben\n            if (up == LOW)                        \/\/ wenn up Taste bet\u00e4tigt\n            {\n              delay(200);                         \/\/ Verz\u00f6gerung\n              EEPROM.put(20, civadr);             \/\/ Wert ins eeprom schreiben (Adresse 20)\n              delay(200);                         \/\/ Verz\u00f6gerung\n              EEPROM.put(30, txPower);            \/\/ Wert ins eeprom schreiben (Adresse 20)\n              delay(200);                         \/\/ Verz\u00f6gerung\n              lcd.setCursor(0, 1);                \/\/ 1. Zeichen, 1. Zeile\n              delay(200);                         \/\/ Verz\u00f6gerung\n              lcd.clear();                        \/\/ LCD l\u00f6schen\n              lcd.print(\"Offsets stored\");        \/\/ schreiben\n              delay(2000);                        \/\/ Verz\u00f6gerung\n              lcd.clear();                        \/\/ LCD l\u00f6schen\n              delay(200);                         \/\/ Verz\u00f6gerung\n              menucounter = 3;                    \/\/ Men\u00fc Z\u00e4hler auf 2 setzen\n              menuPushCounter = 0;                \/\/ Men\u00fctastenz\u00e4hler auf 0 setzen\n              break;                              \/\/ aussteigen, zur\u00fcck zu loop\n            }\n            if (down == LOW)                      \/\/ wenn down Taste bet\u00e4tigt\n            {\n              lcd.clear();                        \/\/ LCD l\u00f6schen\n              delay(200);                         \/\/ Verz\u00f6gerung\n              menucounter = 3;                    \/\/ Men\u00fc Z\u00e4hler auf 3 setzen\n              menuPushCounter = 0;                \/\/ Men\u00fctastenz\u00e4hler auf 0 setzen\n              break;                              \/\/ aussteigen, zur\u00fcck zu loop\n            }\n    }\n  }\n}\n\n\n\/\/******************************************************************loop*************************************************************\nvoid loop(){\nBluetoothstate();                                       \/\/ Bluetoothstatus abfragen\nmenuset();                                              \/\/ Men\u00fc ausf\u00fchren\nLCDBeschriftung();                                      \/\/ LCD Beschriftung ausf\u00fchren\nRXTXBeschriftung();                                     \/\/ RX TX Statusbeschriftung ausf\u00fchren\ncalculateFrequency();                                   \/\/ Frequenzberechnung ausf\u00fchren\nread_RXfreq();                                          \/\/ RX Frequenz lesen ausf\u00fchren\nif (VFOAfreq &gt; VFOBfreq){                               \/\/ nur wenn VFOAfreq &gt; VFOBfreq ist\n  print_RXfreq1();                                      \/\/ RX Frequenz am Display schreiben\n  print_TXfreq1();                                      \/\/ TX Frequenz am Display schreiben\n  VFOB_nachziehen1();                                   \/\/ VFOB nachziehen ausf\u00fchren\n}\nif (VFOAfreq &lt; VFOBfreq){                               \/\/ nur wenn VFOAfreq &lt; VFOBfreq ist\n  print_RXfreq2();                                      \/\/ RX Frequenz am Display schreiben\n  print_TXfreq2();                                      \/\/ TX Frequenz am Display schreiben\n  VFOB_nachziehen2();                                   \/\/ VFOB nachziehen ausf\u00fchren\n}\nsoftware_reset();                                       \/\/ Software Reset ausf\u00fchren\ndelay(10);                                              \/\/ Verz\u00f6gerung\n\n\n\/*\nSerial.print(\"VFOAfreq  \");                             \/\/ nur f\u00fcr Testzwecke\nSerial.println(VFOAfreq);                               \/\/ nur f\u00fcr Testzwecke\nSerial.print(\"VFOBfreq  \");                             \/\/ nur f\u00fcr Testzwecke\nSerial.println(VFOBfreq);                               \/\/ nur f\u00fcr Testzwecke\nSerial.print(\"freqmem   \");                             \/\/ nur f\u00fcr Testzwecke\nSerial.println(freqmem);                                \/\/ nur f\u00fcr Testzwecke\nSerial.print(\"freq      \");                             \/\/ nur f\u00fcr Testzwecke\nSerial.println(freq);                                   \/\/ nur f\u00fcr Testzwecke\nSerial.println(\"-------------------\");                  \/\/ nur f\u00fcr Testzwecke\n*\/\n}\n<\/pre>\n<table width=\"649\">\n<tbody>\n<tr>\n<td width=\"123\">VFOA<\/td>\n<td width=\"173\">VFOB<\/td>\n<td width=\"92\"><\/td>\n<td width=\"68\"><\/td>\n<td width=\"92\"><\/td>\n<td width=\"101\"><\/td>\n<\/tr>\n<tr>\n<td>SAT RX<\/td>\n<td>SAT TX<\/td>\n<td>Shift<\/td>\n<td><\/td>\n<td><\/td>\n<td>uint32<\/td>\n<\/tr>\n<tr>\n<td>10.489.750.000<\/td>\n<td>2.400.250.000<\/td>\n<td>8.089.500.000<\/td>\n<td><\/td>\n<td>max.<\/td>\n<td>4.294.967.295<\/td>\n<\/tr>\n<tr>\n<td>OSZ<\/td>\n<td>OSZ<\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>10.054.000.000<\/td>\n<td>2.256.000.000<\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>ZF<\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>435.750.000<\/td>\n<td>144.250.000<\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>Berechnete TX ZF<\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>144.250.000<\/td>\n<td>RXZF+RXOsz-Shift-TXOsz<\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>VFOA<\/td>\n<td>VFOB<\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>SAT RX<\/td>\n<td>SAT TX<\/td>\n<td>Shift<\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>10.489.750.000<\/td>\n<td>2.400.250.000<\/td>\n<td>8.089.500.000<\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>OSZ<\/td>\n<td>OSZ<\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>10.345.000.000<\/td>\n<td>1.965.000.000<\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>ZF<\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>144.750.000<\/td>\n<td>435.250.000<\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>Berechnete TX ZF<\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>435.250.000<\/td>\n<td>RXZF+RXOsz-Shift-TXOsz<\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>VFOA<\/td>\n<td>VFOB<\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>SAT RX<\/td>\n<td>SAT TX<\/td>\n<td>Shift<\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>10.489.750.000<\/td>\n<td>2.400.250.000<\/td>\n<td>8.089.500.000<\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>OSZ<\/td>\n<td>OSZ<\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>10.461.000.000<\/td>\n<td>2.349.000.000<\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>ZF<\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>28.750.000<\/td>\n<td>51.250.000<\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>Berechnete TX ZF<\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>51.250.000<\/td>\n<td>RXZF+RXOsz-Shift-TXOsz<\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>VFOA<\/td>\n<td>VFOB<\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>SAT RX<\/td>\n<td>SAT TX<\/td>\n<td>Shift<\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>10.489.750.000<\/td>\n<td>2.400.250.000<\/td>\n<td>8.089.500.000<\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>OSZ<\/td>\n<td>OSZ<\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>10.438.000.000<\/td>\n<td>2.372.000.000<\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>ZF<\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>51.750.000<\/td>\n<td>28.250.000<\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>Berechnete TX ZF<\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>28.250.000<\/td>\n<td>RXZF+RXOsz-Shift-TXOsz<\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>ICOM IC-705&#8217;ten pop\u00fcler QRP al\u0131c\u0131-vericisini uydu uyumlu hale getirebilmek i\u00e7in ba\u015fka bir devre tasarlad\u0131m ve buna kar\u015f\u0131l\u0131k gelen yaz\u0131l\u0131m\u0131 geli\u015ftirdim. Art\u0131k CI-V&#8217;yi Bluetooth \u00fczerinden &#8220;QO-100 [&#8230;]<\/p>\n","protected":false},"author":1,"featured_media":135,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2,3,4],"tags":[],"class_list":["post-133","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ardu","category-hamrad","category-qo100"],"_links":{"self":[{"href":"https:\/\/ta9ea.com\/index.php?rest_route=\/wp\/v2\/posts\/133","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ta9ea.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ta9ea.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ta9ea.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/ta9ea.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=133"}],"version-history":[{"count":0,"href":"https:\/\/ta9ea.com\/index.php?rest_route=\/wp\/v2\/posts\/133\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/ta9ea.com\/index.php?rest_route=\/"}],"wp:attachment":[{"href":"https:\/\/ta9ea.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=133"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ta9ea.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=133"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ta9ea.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=133"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}