robo8080のブログ

ロボット製作や電子工作など。

mbed版 豊四季タイニーBASICの機能を拡張してみた。(3)

2016年06月09日 | TinyBASIC

mbed LPC1114に移植したTiny BASICを機能拡張して実験した例。

すみませんが、これらのソースコードは整理ができていないので公開してません。 m(_ _)m

 


 I/O入出力、アナログ入力とPWM出力、RCサーボ制御コマンドを追加。

mbedに移植したTiny BASICをLPC1114で実験(1)

 


8X8 2色LEDマトリックス表示コマンドを追加した例。グラフィックコマンドも使える。

mbedに移植したTiny BASICをLPC1114で実験(2)

 


モータを回すコマンドを追加した例。

mbedに移植したTiny BASICをLPC1114で実験(3)

 


ATP3011を使った音声出力コマンドを追加した例。

mbedに移植したTinyBasicにATP3011を使った音声出力コマンドを追加(1)  

mbedに移植したTinyBasicにATP3011を使った音声出力コマンドを追加(2)       

 


mbed LPC1768版にMOVEコマンドを追加して、うおーるぼっとをコントロールできるようにした例。

うおーるぼっとをTinyBASICでコントロール

 


関連する記事

mbed LPC1114FN28を使ってみた。

豊四季タイニーBASICをmbedに移植してみた。

mbed版 豊四季タイニーBASICの機能を拡張してみた。(1)

mbed版 豊四季タイニーBASICの機能を拡張してみた。(2)

 


mbed版 豊四季タイニーBASICの機能を拡張してみた。(2)

2014年05月11日 | TinyBASIC

昔懐かしい「エスケープシーケンス」でターミナルの画面制御をできるようにしてみた。 

TeraTermのようなエスケープシーケンスに対応した端末ソフトでしか使えないので注意。

エスケープシーケンスの詳細はこちら。

エスケープシーケンスとは 

 


改造内容

”ttbasic.cpp”の”iprint()”関数に下記赤枠の改造を加える。

手抜き改造なので、”¥033”にのみ対応。

 

 


実行するとこんな感じ。

  

豊四季タイニーBASICのPRINT文は必ず改行してしまうので、カーソル位置を移動して表示するときは上記のようにカンマで区切って1行で記述しないとずれてしまう。

 


関連する記事

mbed LPC1114FN28を使ってみた。

豊四季タイニーBASICをmbedに移植してみた。

mbed版豊四季タイニーBASICの機能を拡張してみた。(1)

参考リンク

mbed LPC1114での遊び方

 


mbed版 豊四季タイニーBASICの機能を拡張してみた。(1)

2014年05月10日 | TinyBASIC

せっかくマイコンに豊四季タイニーBASICを移植したので、IO入出力コマンドも使いたくなってきたので機能拡張してみた。

豊四季タイニーBASICのコマンド拡張方法はここで解説されている。 

 ・機能拡張のおおまかな話  電脳伝説 Vintagechips

実際にやってみたがそれほど難しくはなかった。

大まかな手順は、 

1.Keyword tableにキーワードを追加する。

2.中間コードを追加する。

3.追加するコマンド/関数の処理を実装する。

4.追加したコマンド/関数を呼び出す処理を追加する。

 IO出力のようなコマンドの時は、iexe()へ追加。

 IO入力のような入力関数の時はivalue()へ追加。

 


IO出力の「OUT」コマンドと一定時間待つ「WAIT」コマンドを追加する例を紹介する。

豊四季タイニーBASICのmbedへの移植は終わっているものとする。

もし、入力関数を追加したいときはABS関数のgetabs()を参考にするとわかりやすい。

追加するコマンドの書式は

【OUT】

 OUT io番号 , 出力データ

  io番号 : 0と1(この例では、LED1とLED2に割り当ててある)

  出力データ : 0,1

 使用例:OUT 0, 1   LED1を点灯(mbed platformによっては0を出力で点灯するものもある)

【WAIT】

 WAIT 待ち時間

  待ち時間の単位はms

 使用例:WAIT 1000   1秒待つ

 


コマンド追加のためのソース修正

「ttbasic.cpp」に下記赤枠の修正をする。 

 

 ――――――――――――――――途中省略――――――――――――――――――――――

 

 ――――――――――――――――途中省略――――――――――――――――――――――

 

 ――――――――――――――――途中省略――――――――――――――――――――――

 

 ――――――――――――――――途中省略――――――――――――――――――――――

 

 ――――――――――――――――以下省略――――――――――――――――――――――

 


追加したコマンドでLチカをやってみた。

こういう時は抵抗内蔵LEDが便利。(秋月で購入)

 

 

 

 ー以上ー

 


関連する記事

豊四季タイニーBASICをmbedに移植してみた。

mbed版 豊四季タイニーBASICの機能を拡張してみた。(2)

参考リンク

mbed LPC1114での遊び方

 


豊四季タイニーBASICをmbedに移植してみた。

2014年05月03日 | TinyBASIC

”自分で組み立てて学ぶコンピューター”というものを見かけて調べてみたら、LPC1114にキーボードとディスプレイを繋いでBASICを動かすという面白いものだということが分かった。

自分で組み立てて学ぶコンピューター IchigoJam ブレッドボード版提供開始

しかし、自分の使い方だとディスプレイは不要なので、さらに調べてみるとマイコンにシリアル端末を繋いで動かすTinyBASICがあることが分かった。

豊四季タイニーBASICのリファレンスを公開  電脳伝説 Vintagechips

これは、Windows PC、PIC24F、Arduinoに対応しているが、mbedで使いたかったので移植してみた。

ハード依存はシリアル入出力ぐらいなので移植は簡単だった。

mbedに慣れた人なら1時間も掛からないと思う。

移植はここが参考になる。

豊四季タイニーBASICの移植の手引き  電脳伝説 Vintagechips

 


移植手順

1.ソースをダウンロードする。

 ここから豊四季タイニーBASICのソースをダウンロードし、適当なディレクトリに解凍する。

 PIC24F版が移植しやすい。

2.mbedコンパイラに新規プログラムを作成する。

 mbedコンパイラのメニュー New ー>New Program... で新しくプログラムを作成する。

 作成したプログラムに New ー>New File... で、空のファイル”ttbasic.cpp”と”ttbasic.h”を作る。

 拡張子は、”c”ではなく”cpp”なので注意

 

3.豊四季タイニーBASICのソースをmbedに持ってくる。

 豊四季タイニーBASICのソースを適当なテキストエディタで開き、先ほど作ったmbedコンパイラの該当するファイルへコピペする。

 必要なファイルは、"main.c"と”ttbasic.c”と”ttbasic.h”。

4.ソースを修正する。

 下記赤枠のようにソースを修正する。

【"main.cpp"の修正】

 

 ――――――――――――――――以下省略――――――――――――――――――――――

【”ttbasic.cpp”の修正】

 

 ――――――――――――――――途中省略――――――――――――――――――――――

 

 ――――――――――――――――途中省略――――――――――――――――――――――

 

 ――――――――――――――――以下省略――――――――――――――――――――――

 

  修正済みのソースをここに置いておきます。

 

5.コンパイルする。

いくつか警告が出るが無視しても大丈夫みたい。

Lpc1768とFRDM-K64F、LPC1114で動くことを確認している。

ハードウェアへの依存性が低いので他のmbedでも問題ないはず。

 6.実行する。

mbedに書き込み、TeraTermなどのシリアル端末ソフトで接続する。

うまくいけばこのようになるはず。これはLPC1114で動かした例。

 

 

7.コマンドの拡張

 ここまで来るとIO入出力コマンドを追加したくなるが、その時はここが参考になる。 

 実際にやってみたがそれほど難しくはなかった。

 ・機能拡張のおおまかな話  電脳伝説 Vintagechips

 


IO出力コマンドとWAITコマンドを追加してBASICでLチカしてみた。

 

  

 


豊四季タイニーBASICは、プログラムのLOAD機能がないので端末ソフトへのコピペで代用している。

しかしmbedの標準のシリアルだと少し長いプログラムをコピペするとすぐに取りこぼしてしまう。

その時はこのライブラリを使うとよい。

BufferSerial

使い方は「BufferSerial」ライブラリをインポートして、”ttbasic.cpp”を次のように修正する。

バッファサイズはお好みで...

 

 

ー以上ー

 


関連する記事

mbed LPC1114FN28を使ってみた。

mbed版豊四季タイニーBASICの機能を拡張してみた。(1)

参考リンク

mbed LPC1114での遊び方