ザ☆マニアックス

~マニアックだろうと思い込んでいる趣味について~

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
[ --/--/-- ] | スポンサー広告

arduino電界強度計のスケッチ

プログラム解らないんですが、
arduinoでAD8307を使って電界強度計を作ったので、スケッチを放り込んでみます。
ネットでスケッチ探したんですが、なかなか見当らないので、
色々と参考にしながら作ったんですが、VSWRの表示が出来ていないので、
コメントして動作させていません。
ちなみに、VSWRは3D無線クラブのリターンロスブリッジを作って表示させたいと
思っているけど、セットボタン押してもセットされない気がするので、
現状放置状態っす。

回路図は書いてないです。
時間を見付けてツイッターにでもアップします。
アカウントは@osamouです。

変な所があれば指摘もらいたいと思っておるよ。
あわよくば、VSWRの表示のよい方法とかも。。。

powermeter.ino
---------------------------------------------
#include <LiquidCrystal.h>
#include "math.h"

//int SetSwitch = 5; //vswrセット用スイッチ"D5"
int ModeSwitch = 4; //モード切り替え用スイッチ"D4"

//int SET = 0; //セット出来ないでコメント
int MODE = 0; //モード初期値0

LiquidCrystal lcd(7,8,9,10,11,12); //LCD設定 それぞれの環境に合せて

void setup() {

//ピンをインプットにする。セットはコメント
// pinMode(SetSwitch, INPUT);
pinMode(ModeSwitch, INPUT);

lcd.clear();
lcd.begin(16,2);
delay (500);

}

void loop() {
float dat = analogRead(0); // AD8307 spec. Slope 25mV/dB, intercept -84dBm
double dbm, dbu, mv, mw, rloss, vswr;
static double oloss;
char dbm_ch[16];
char dbu_ch[16];
char mv_ch[16];
char mw_ch[16];
char vswr_ch[16];

//ここで計算させる
dbm = dat * (2.5 / 1024.0) / 0.025 - 84.0 - 6.0;
dbu = dbm + 107.0;
mv = pow(10.0, (dbu / 20.0)) * 0.001;
mw = mv * mv / 50.0 * 0.001;
delay (50);

//表示桁数と小数点以下の表示
dtostrf(dbm,5,3,dbm_ch);
dtostrf(dbu,5,3,dbu_ch);
dtostrf(mv,5,3,mv_ch);
dtostrf(mw,13,12,mw_ch);

//セットをコメント
/* if (digitalRead (SetSwitch) == 1) {
* SET = SET + 1;
* if (SET >= 3) SET = 0;
* }
*
* lcd.setCursor(0,0);
*
* if (SET == 0) {
* lcd.print("NotSet ");
* }
*
* else if (SET == 1) {
* oloss = dbu;
* lcd.print("Set");
* }
*
* else if (SET == 2) {
* rloss = dbu - oloss;
* vswr = (pow(10,(rloss / 20)) + 1) / (pow(10,(rloss / 20)) - 1);
* delay (50);
* lcd.print("VSWR=");
* dtostrf(vswr,5,3,vswr_ch);
* lcd.print(vswr_ch);
* }
*/

//MODEスイッチdbm→dbu→mv→mw切り替え
if (digitalRead (ModeSwitch) == 1) {
MODE = MODE + 1;
if (MODE >= 4) MODE = 0;
}

lcd.setCursor(0,1);

if (MODE == 0) {
lcd.print(dbm_ch);
lcd.print("dBm");
}

else if (MODE == 1) {
  lcd.print(dbu_ch);
lcd.print("dBu");
}

else if (MODE == 2) {
lcd.print(mv_ch);
lcd.print("mV");
}

else if (MODE == 3) {
lcd.print(mw_ch);
lcd.print("mW");
}
//mw表示のあとゴミが残るので500msでLCDをクリア
delay (500);
lcd.clear();
}
---------------------------------------------
[ 2017/05/24 ] | arduino | CM(0) | TB(0)
コメント
この記事へのコメント
コメントを投稿する
URL:
Comment:
Pass:
秘密: 管理者にだけ表示を許可する
 
トラックバック
この記事のトラックバックURL
http://osamou.blog23.fc2.com/tb.php/277-723dda37
この記事にトラックバックする(FC2ブログユーザー)
この記事へのトラックバック
プロフィール

おさもう

Author:おさもう
出身&住まい
沖縄在住

趣味などに関する事を書いていきます。

カウンター

ブログランキング

これは素晴らしいと思った方はクリックしてください。


そうでない人もクルックしてね。

amazon検索

ブログ内検索

裏ブログの入口
青空文庫

手作りアンプの会HP

集まれ塩ビ管スピーカー

ブロとも申請フォーム
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。