無線ブログ集
メイン | 簡易ヘッドライン |
MODEL 1200FXローテーターその7 (2022/4/29 3:22:55)
エモトのローテーター1200FXをハムアプリケーションのLogger32のローテーターコントロールで動かす為のUDP通信上でのシミュレーションコマンド制御が上手く行きましたので、スマフォ側での操作専用の制御コマンドを追加しました。追加と言っても、既にESP32DevKitCにあるプリセット値を+1カウントアップするSW、または−1カウントダウンするSWと同じ動作をスマフォのボタンで行う追加です。スマフォ側はボタンのラベル設定とコマンド値設定および、CR自動追加設定は他のどのコマンドボタンとも同じ設定方法です。また、プリセット値用以外にローテーターのプリセット後動作完了後のリセットSWと同じボタンも設定しました。またプリセット角度0°のボタンも追加しています。
スマフォ設定はボタンのラベル設定とコマンド設定(アスキー文字)だけです。
Z:プリセット動作完了後のCW、 CCWスマフォボタン操作イネーブルとするリセット
D:プリセット値−1(DOWN)
U:プリセット値+1(UP)
UDP通信で送信される追加コマンドがESP32で組んだデコードスケッチでデコードされるので、後は分岐ルーチンへの対応するスケッチを追加コーディングしてゆくだけです。
switch構文に追加した上記のコマンド(Z, D, U)のスケッチです。
switch(i[0]){
case 'Z'://preset is finish then enable CW CCW button
RotSTOP();
if((((delta == 0)or(delta ==1)or(delta == -1)))and((Readkakudo >= -5)and(Readkakudo <= 180))){
kakudo = 360;
s = 48 ;
}
if((((delta == 0)or(delta ==1)or(delta == -1)))and((Readkakudo > 180)and(Readkakudo <= 365))){
kakudo = 0;
s = 0 ;
}
kakudo=kakudo;
if((Readkakudo == 360)or(Readkakudo == 359)or(Readkakudo == 361)){
if((delta == 0 )or(delta == 1)or(delta == -1)){
kakudo = 0;
s = 0;
}
}
break;
case 'U'://preset +1 When push UDP Apprication PRESET-UP button
udpupdn = 1;
kakudo = kakudo+udpupdn;
udpupdn = 0;
if(kakudo > 360){
kakudo = 1;
}
kakudo = kakudo;
break;
case 'D'://preset -1 When push UDP Apprication PRESET-DOWN button
udpupdn = -1;
kakudo = kakudo+udpupdn;
udpupdn = 0;
if(kakudo < 0){
kakudo = 359;
}
kakudo = kakudo;
break;
case 'Z'://preset is finish then enable CW CCW button
RotSTOP();
if((((delta == 0)or(delta ==1)or(delta == -1)))and((Readkakudo >= -5)and(Readkakudo <= 180))){
kakudo = 360;
s = 48 ;
}
if((((delta == 0)or(delta ==1)or(delta == -1)))and((Readkakudo > 180)and(Readkakudo <= 365))){
kakudo = 0;
s = 0 ;
}
kakudo=kakudo;
if((Readkakudo == 360)or(Readkakudo == 359)or(Readkakudo == 361)){
if((delta == 0 )or(delta == 1)or(delta == -1)){
kakudo = 0;
s = 0;
}
}
break;
case 'U'://preset +1 When push UDP Apprication PRESET-UP button
udpupdn = 1;
kakudo = kakudo+udpupdn;
udpupdn = 0;
if(kakudo > 360){
kakudo = 1;
}
kakudo = kakudo;
break;
case 'D'://preset -1 When push UDP Apprication PRESET-DOWN button
udpupdn = -1;
kakudo = kakudo+udpupdn;
udpupdn = 0;
if(kakudo < 0){
kakudo = 359;
}
kakudo = kakudo;
break;
以下省略〜
ESP32DevKitC側には15°ずつアップまたはダウンするSWがありますが、スマフォには追加しないことにしました。先ずスマフォの操作ボタンが多くなると煩雑になってしまう事と、15°ずつのアップダウン操作は出来ませんが、既にボタンに設定してある0°、90°、180°、270°、360°のプリセットボタンが45°ずつですので停止ボタンとの組み合わせて十分プリセットが出来るからです。これらのプリセット角度ボタンの近い角度ボタンを押してローテーターの回転し始めで停止ボタンを押すと回転が止まります。この状態でプラスマイナスのスマフォボタン操作で1°ずつアップまたはダウンにて目的とするプリセット角度に設定が十分可能だからです。設定し終わったらPRESET-GOボタンを押すだけです。ESP32DevKitCのPRESET-GOと同じでプリセット動作開始操作となります。
他、スマフォの0°、90°、180°、270°、360°のプリセットボタンはどれもホームポジションに設定出来るボタンとして考えても良いかと思います。また、ESP32DevKitC側にはホームポジションとして90°だけSW設定していましたが、スマフォのアプリボタンに任意の角度をコマンド設定すれば自分専用のホームボジション角度設定が簡単に出来ます。ESP32DevKitCのスケッチ追加などは不要です。M***の***の角度設定コマンドをボタンに設定するだけです。
自分のアンテナのホームポジション角度を設定する場合、北を0°として右回転で359°までの間の角度のうち例えば、135°がホームポジション角度だとするとスマフォアプリのコマンドは M135 を設定でOKという事です。
下記は90°のプリセットですが、labelを ”PRESET135", commandを "M135" にするだけです。
ラベルは任意です。ボタンに表示するラベルですので HomePosition でも他何でもOKです。
一通りESP32DevKitC側の操作SWの全機能はスマフォのアプリボタンに設定出来ました。
動作確認は続けていますが、今の所はスマフォ制御にて変な動作は全くおきていません。
つづく?
execution time : 0.021 sec