« ウォシュレットTCF4011Rに水漏れが発生したのでTCF712Cに交換しました | トップページ | 江戸東京博物館の特別展「東京オリンピックと新幹線」を見てきました »

2014年11月 8日 (土)

freetel Priori FT132AにRFO BASICを入れてπ(円周率)を計算してみました

 なにか面白いアプリはないかとい思ってPlayストアを眺めていたら、昔懐かしいBASICインタプリタがありました。

  BASIC! - Android Apps on Google Play
  https://play.google.com/store/apps/details?id=com.rfo.basic

  Learn RFO Basic - The Easiest Way To Create Android Apps
  http://rfobasic.com/

 いまさらBASICという気がしないでもありませんが、仕様を少し見てみると一寸興味を引かれる部分があります。
 端末(スマホ)のGPSデータを取り込むことができるようです。
 GPS関係のAndroidアプリは色々あるようですが、自分の希望に沿ったものはなかなかありません。
 GPSデータを利用できるのであれば、飛行機に乗っているときに、ターゲット(日付変更線や赤道)に近づいたときに(通過5分前位に)アラームを鳴らして通過の瞬間を動画で撮影するときに役に立つようなプログラムを作ることができるかもしれません。
 GPS Essentialsでも同じようなことができるようですが、機能が多すぎて使いこなせません。
 サイズは541kということで、それ程大きくないので試しに入れてみることにしました。

 インタプリタを入れただけでは何の役にも立たないので、昔デモ用によく使われていたπ(円周率)の計算をしてみることにしました。
 πの計算には色々な種類があるようですが、なるべく簡単なものをということで、以下の記事を参考にして作ってみました。

  円周率πの数値計算1 正多角形による近似
  http://math-lab.main.jp/pi01.html

******************************
LET A=SQR(3)/6
LET B=1/3
FOR I=1 TO 10 STEP 1
LET A=(A+B)/2
LET B=SQR(A*B)
PRINT I,1/A,1/B
NEXT I
END
******************************

  このプログラムは十進BASICということで、RFO BASICと互換性があるのかどうかよく判りませんが、とりあえず作って走らせてみました。
 どうやらエラーも出ずに実行できたようです。
 計算は一瞬で終わりましたが、3.141592までの精度しかありません。
 オリジナルのプログラムの計算結果では、

   10  3.14159292738508 >π> 3.14159251669214

 となっており、はやり3.141592までの精度しかありませんので、似たような結果となりました。
 ループの回数Iを10から30に変更したら、3.14159 26535 8979まで精度が上がりました。
 しかし、ループの回数をこれ以上増やしても精度は高くならないようです。
 十進BASICでは1000桁の実数の計算ができるようですが、RFO BASICでの高精度演算の方法がまだ判りません。
 そのうち、勉強してみます。

 オリジナルのプログラムでは計算が一瞬で終わってしまうので、あまり面白くありません。
 いかにも計算しているという感じを出すためにプログラムを以下のように修正してみました。

【修正プログラム】
******************************
LET A=SQR(3)/6
LET B=1/3
FOR I=1 TO 30 STEP 1
LET A=(A+B)/2
LET B=SQR(A*B)
cls
PRINT I
c=1/a
d=1/b
print c,d
print c-d
print
tone 440,200
if c-d=0 then tone 880,200
for j=1 to 10000
next j
NEXT I
END
******************************

  RFO BASICのコマンドは殆ど見ずに、昔かじったことがあるF-BASICを思い出しながら修正したので、変なところがあるかもしれません。
 小文字の部分が追加・修正した箇所です。
 追加・修正部分が小文字だったり、LETがないのは単なる手抜きです。

 修正点は以下の通りです。
 ・計算過程が目に見えるように、1万回の遅延ループを入れました。
 ・数値の変化が判りやすいように、スクロール表示を固定表示に変更しました。
 ・音がないと一寸寂しいので、1回の演算ループごとに発振音(440Hz)を出しました。
  ・演算結果が収束したら違う発振音(880Hz)を出しました。

 端末本体でもプログラムを入力できますが、操作性が良くないので、以下の手順でプログラムを作りました。

【PC側の操作】
  (1)たたき台のプログラムをPC(CF-W4)のメモ帳(*****txt)で作成する。
 (2)適当なファイル名を付け、拡張子をbasにして保存する。
 (3)FT132AをUSBケーブルでPCに接続する。
 (4)FT132Aを「USBストレージ」モードにする。
 (5)FT132AのメモリがPCから見えるようになるので、作成したプログラムがBASフォーマット(*****.bas)であることを確認して「computer/removable-disk/rfo-basic /source」に転送する。
Computerremovablediskrfobasic_sourc

【FT132A側の操作】
 (1)RFO BASIC(天体望遠鏡のアイコン-BASIC!)のアプリを開く。
01freetel_priori_ft132a_launcher


 (2)プログラム入力画面が開くので、メニューボタンをタップする。
02basic_program_editor


 (3)メニューの中の「Load」をタップする。
03basic_menu_load


 (4)BASIC! Load Fileの中から実行するファイル(*****.bas)を選ぶ。
04basic_load_file

 (5)プログラムが表示されるので、メニューボタンをタップする。
04abasic_program_editor_pi_2


 (6)メニューの中の「Run」をタップするとプログラムが実行される。
05basic_menu_run_3

06basic_program_output_1

07basic_program_output_2


 たたき台のプログラムは、当方の場合は殆どエラーが出るので、虫取りが必要になります。
 FT132A本体やPCでデバッグは可能ですが、一寸面倒なので、当方はBluetoothキーボード(ELECOM TK-FBP030)を利用しました。
  殆どの操作がキーボードからできるので操作が楽ですが、当方が買った安い(\980)のキーボードは訳有り品だったようで、アルファベットと数字は問題ないのですが、記号の表記が実際の出力と一致しません。
 たとえば「=」のキーを押すと「_ 」が表示され、「^」を押すと「=」が表示されます。
 そういえば、何か注意書きが書いてあったような気がしますが、このことだったのかもしれません。
 対応が判れば使えないことはないので、記号を書いたシールをキートップに貼って使っています。

【RFO BASICによるπの計算】

 FT132Aの操作はBluetoothキーボードで行いました。

 RFO BASICとAndroidの組み合わせでサーボの制御もできるようなので、そのうち試してみたいと思います。

  Using RFO BASIC to Control Two Servos Via an EMGRobotics A2SCB_ML .
  http://www.youtube.com/watch?v=SeiZBG2Quyw

|

« ウォシュレットTCF4011Rに水漏れが発生したのでTCF712Cに交換しました | トップページ | 江戸東京博物館の特別展「東京オリンピックと新幹線」を見てきました »

パソコン・インターネット」カテゴリの記事

freetel Priori FT132A」カテゴリの記事

コメント

はじめまして

私は、個人でBASIC!のファンサイトを
運営する者です。

FT132A・・・SIMフリーのスマホですね。

画面も3.5インチということでプログラミングもPCになるのも理解できます。

わたしは10インチまたは7インチの
タブレットでBASIC!を使うのでタブレットで
プログラミングするスタイルです。

BASIC!はとても便利ですね。

私は、たまにしか作りませんが楽しんで
使っています。

http://simplog.jp/top/8554306874

投稿: BASIC!友の会(@basictomonokai -twitter) | 2014年11月12日 (水) 11時46分

始めまして。Kです。
BASIC!友の会のHPは、BASIC!をインストールする前に拝見させて頂きました。
BASIC!に関する日本語サイトの情報が意外と少ないようなので助かりました。
始めたばかりなので、まだ手探り状態ですが、GPS情報を処理できるようなので試してみたいと思います。しばらくはこれで遊べそうです。

投稿: K | 2014年11月12日 (水) 21時43分

。Kさん

BASIC!友の会のHPをご覧いただき
ありがとうございます。

たまたまですがYOLPとBASIC!の
gps機能の連携の実験を私もしていました。

【YOLP】
http://developer.yahoo.co.jp/webapi/map/openlocalplatform/v1/js/

たいした内容ではないのですが、
実験自体は成功しています。

あんまり、参考にはならないかも
しれませんが、simplogには記事を
掲載しようと思っています。

http://simplog.jp/top/8554306874

BASIC!で楽しく遊んでいきましょう☆

投稿: BASIC!友の会(@basictomonokai -twitter) | 2014年11月13日 (木) 09時50分

Kです。
情報をありがとうございます。
走行中の電車でgps.basを実験してみました。
座標データは取得できるのですが、速度表示が0のままです。
原因はよくわかりません。
もう少し勉強してみます。

投稿: K | 2014年11月15日 (土) 15時46分

この記事へのコメントは終了しました。

トラックバック


この記事へのトラックバック一覧です: freetel Priori FT132AにRFO BASICを入れてπ(円周率)を計算してみました:

« ウォシュレットTCF4011Rに水漏れが発生したのでTCF712Cに交換しました | トップページ | 江戸東京博物館の特別展「東京オリンピックと新幹線」を見てきました »