フォト
2020年9月
    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30      
無料ブログはココログ

TinyBASIC

2020年7月27日 (月)

豊四季タイニーBASIC for Arduino 機能拡張版 V0.08の更新

Arduino(AVR)版用でMega2560でのフルスクリーンエディタ対応中のV0.08を更新しました。

豊四季タイニーBASIC for Arduino機能拡張版 V0.08
https://github.com/Tamakichi/ttbasic_MW25616L/tree/support_fulledit

01_20200727074901

Arduino Uno環境でコンパイルエラーが発生する不具合を修正しました。
開発中のため、ブランチです。完成次第、本流にマージします。




2020年2月20日 (木)

豊四季タイニーBASIC for Arduino 機能拡張版 フルスクリーンエディタ対応

継続的に開発を進めている「豊四季タイニーBASIC for Arduino機能拡張版」、
Arduino Mega2560にも対応しているのですが、SRAMが5kバイト無駄に余っています。

SRAMを有効に使おう! ということで、Mega2560限定でフルスクリーンエディタ対応してみました。

まだまだテスト中ですが、とりあえず動いています。
画面操作は「豊四季タイニーBASIC Arduino STM32」と同等です。

01_20200220201001

起動画面(クリックすると拡大表示します)
02_20200220201001
 バージョンは1つ上がってV0.08としています。

内部EEPROMに保存していたプログラムをロードして表示
03_20200220201001

Arduino Mega2560では、プログラム領域が2Kバイトです。
内部EEPROMには、2kバイトのプログラムが2本保存することが出来ます。

LISTコマンドでプログラムを出力し、
フルスクリーンでカーソル移動にてテキスト編集出来ます。
全角文字(シフトJIS)にも対応しています。

04_20200220201001

サンプルとして、組み込んでいる美咲フォントのデータを参照して、
「あ」を表示してみました。

豊四季タイニーBASIC Arduino STM32」版で作成したフルスクリーンエディタ部分のクラスライブラリを
そのまま組み込んだので、意外と楽に実装出来ました。

現時点では、ブランチ版として開発を進めています。
フルスクリーンエディタ対応の他に、Mega2560のもう一本のシリアルポートも使えるようにしたいと思います。

ブランチ版として開発を進めています。下記ブランチ版リンクページから参照&ダウンロード可能です。
https://github.com/Tamakichi/ttbasic_MW25616L/tree/support_fulledit

00_20200220201001

Arduino Mega2560ではまだまだメモリの余裕がありそうです。
豊四季タイニーBASIC Arduino STM32」でやっていたOLED画面+PS/2キーボードも実装出来るかも..
Neopixelの16x16ドットマトリックスにも対応したい..

2019年12月10日 (火)

IchigoJamのファームウェア 1.4.1が正式に公開されました

IchigoJamのファームウェア 1.4.1が正式に公開されました。
早速、ファームウェアをアップデートしました。

関連記事
  ・こどものプログラミング教育ツール『IchigoJam BASIC』ver 1.4リリース
  ・IchigoJam ダウンロード
  ・documents of IchigoJam
  ・IchigoJam BASIC リファレンス ver 1.4
  ・IchigoJam BASIC 1.4 コマンド一覧
  ・IchigoJam BASIC 1.4 コマンド一覧(印刷用)
   
追加された機能の中で、クリスマスが近いということで、
NeoPixel(WS2812B)の制御を行うコマンド WS.LED の動作を試して見ました。
このコマンドは、表示する色のパターンを配列([0]~)に定義し、そのパターンを繰り返して表示します。
下記に仕様をまとめました。


WS.LED
---------------------------------------------------------------------------------------------
【概要】
    NeoPixel(WS2812B)の制御を行う  

【書式】
    WS.LED 色パターン定義数 {,繰り返し数}

【結線】
    IchigoJam側          NeoPixel(WS2812B)
     LEDピン                  DIN
     GND                       GND
     5V                         VCC(5V)

【引数】
  色パターン定義数:  配列に定義(緑、赤、青の3つで1セット)のする色パターン数
  繰り返し数        :  色パターン繰り返し回数

【解説】
    配列の先頭([0]~)から緑、赤、青の順に設定された連続する3つの値(0~255)でLEDピンに接続された
    NeoPixel(WS2812B)を1つ分、光らせます。
    緑、赤、青の値は複数定義可能で、複数のNeoPixelを光らせることができます。
    繰り返し回数を指定することで、緑、赤、青の値のパータンでの光らせます。
    
    データ送信の際、割込みを中断するためNTSCビデオ出力の画面表示が一瞬止まります。
---------------------------------------------------------------------------------------------

実際に、NeoPixel(WS2812B)30個接続のリボンタイプのモジュールを制御してみました。

    02_20191210094401

まずは、全30個のLEDを次のコマンドで赤(最大輝度 255)で表示してみます。 
   LET [0],0,255,0:WS.LED 1,30

    Dscn2305

あらかじめ配列に1つ分のLEDの色パターン 緑:0、赤:255、青:0を格納します。
次にWS.LEDコマンドにて、パターン数=1、繰り返し数=30回を指定して実行します。
これだけで、30個のLED全点が赤になりました。

次に緑、赤、青のパターンを10回繰り返す表示をやってみます。
   LET [0],255,0,0,0,255,0,0,0,0,255:WS.LED 3,10

    Dscn2306

  配列に3個分のパターン 
      緑:255、赤:0、   青:0
      緑:0、   赤:255、青:0
      緑:0、  赤:0、    青:255
  を格納します。
  次にWS.LEDコマンドにて、パターン数=3、繰り返し数=10回を指定して実行します。

今度は、プログラムを組んで動きのある表示をやってみます。
  10 LET [0],255,0,0,0,255,0,0,0,255:WS.LED 3,10:WAIT 30
  20 LET [0],0,255,0,0,0,255,255,0,0:WS.LED 3,10:WAIT 30
  30 LET [0],0,0,255,255,0,0,0,255,0:WS.LED 3,10:WAIT 30
  40 GOTO 10

    Dscn2307

  0.5秒間隔でLEDの表示がシフトして表示されます。

  なかなか遊べるコマンドですね。
  

 

2019年11月16日 (土)

TextsでWord文書をMarkdown形式に変換してみる

豊四季タイニーBASIC for Arduino機能拡張版 」用のリファレンスマニュアルは
Word 2016で作成し、PDF形式に変換して公開しているのですが、今一閲覧しにくいです。

オンラインドキュメント化したいと思い、「Texts」を使ってWord文書からMarkdown形式に変換してみました。

 ■ Texts  - Rich Editor for Plain Text
    公式サイト http://www.texts.io/

TextsはMarkdown形式の文書を作成できるエディタですが、
Word文書をインポートしてMarkdown形式に変換することが出来ます。

インストールして、初回起動時に「Pandoc」のダウンロードとインストールを要求されるので、
Pandocもインストールします。Pandocはコマンドラインで利用する変換ツールです。

01_20191116114501

さっそく、Word文書をインポートしてみました。
ざっくり変換結果を見ると、テキストに関しては欠落なく変換できているようです。
Wordの図形はダメみたいです。
表は比較的良好ですが、セル結合には対応出来ていないようです。1つ前に詰められてしまいます。

部分的に元のWord文書と比較してみます。

元のWord文書「1.15 美咲フォント対応」部分
06_20191116114901

変換したMarkdown形式の文書をTextsで表示
07_20191116114901


変換したMarkdown形式の文書のテキスト
08_20191116114901

インデントがあったり、スタイル指定していたり、文書を罫線で囲ったりしていると、
引用文(">")扱いとなるようです。
引用文(">")指定は、簡単な文字列置換を行ってプレーンテキスト化した方がよいでしょう。

完全には変換できないものの、変換作業の支援ツールとしては使えると思います。
変換自体は「Pandoc」を使ていると思います。

ただし、Markdown形式ではページの概念がないのでArsciiDoc形式に変換した方が良さそうです。
「Pandoc」単体での利用ではArsciiDoc形式への変換も出来るので、単体利用も調べたいと思います。



 

2019年10月29日 (火)

豊四季タイニーBASIC for Arduino機能拡張版 のマニュアル完成

「豊四季タイニーBASIC for Arduino機能拡張版 V0.07」のマニュアルがやっと完成しました。

01_20191029115601

マニュアル作成は非常に単調な作業で面白くないのですが、
しっかりと作っておかないと、1年後には全て忘却してしまいます。
全ては1年後の自分のためなのです。

  公開サイト  豊四季タイニーBASIC for Arduino機能拡張版 V0.07
  https://github.com/Tamakichi/ttbasic_MW25616L

これで、やっと電子工作の時間が取れます。


2019年10月23日 (水)

豊四季タイニーBASIC for Arduino機能拡張版 V0.07の公開

ブランチ版の仕様が確定し、メインストリーム(V007) にマージして正式版として公開しました。

  豊四季タイニーBASIC for Arduino機能拡張版 V0.07 メインストリーム(仕様確定版) 
    ・ https://github.com/Tamakichi/ttbasic_MW25616L

     ※ブランチは削除予定です。

V007版公開ですが、まだまだテスト不足で不具合対応、プログラムソースのダイエット等の修正を
メインストリームに逐次マージしていきます。

マニュアル(pdf形式)の内容もV007に対応しました。
まだまだ誤字等の記載ミスがあると思いますが、ぼちぼちと修正してまいります。

01_20191023093601

02_20191023093601

03_20191023093601

2019年10月18日 (金)

豊四季タイニーBASIC for Arduino機能拡張版の更新

開発中の豊四季タイニーBASIC for Arduino機能拡張版 V0.07を更新しました。

Tamakichi/ttbasic_MW25616L
   ブランチ(随時更新) https://github.com/Tamakichi/ttbasic_MW25616L/tree/update_to_v007

   2019/10/22 追記
   ブランチ版をメインストリーム(V007) にマージして正式版として公開しました。※ブランチは削除予定です。
   メインストリーム(仕様確定版)   https://github.com/Tamakichi/ttbasic_MW25616L


主な変更点
1)マニュアルの更新
  ・完成度 90%

2)システムコマンドを一般コマンドに変更
  コマンドラインでのみ利用可能なコマンドの大半をプログラム内でも利用出来るようにしました。
  LOADコマンドもプログラム内で実行出来ます。
  プログラムから別のプログラムをロードして実行することも出来ます。

3)Arduino MEGA2560ではデフォルトでVFD以外全て利用可能変更
  ttconfig.hの機能利用設定をArduno UnoとArduino MEGA2560 と別々にしました。
  Arduino MEGA2560 では、VFD以外全ての機能が利用可能です。

4)不具合修正
  いくつかの不具合を修正しました。


話が変わりますが、Arduino MEGA2560 の小型のボードを入手し使ってみましたが、小さくていい感じです。
形状的に、Arduino用のシールドは利用できませんが良しとします。

左が小型ボード、右が通常サイズのボード
Dscn2239

Arduino MEGA2560 は、フラッシュメモリとSRAMにまだ余裕があるのでフルスクリーンエディタ対応をちょっと考えています。


2019年10月 8日 (火)

マニュアル作成は楽しくない

※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※
   2019/10/22 追記
   ブランチ版をメインストリーム(V007) にマージして正式版として公開しました。※ブランチは削除しました。
   メインストリーム(仕様確定版)   https://github.com/Tamakichi/ttbasic_MW25616L
※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※

現在、「豊四季タイニーBASIC for Arduino機能拡張版 V0.07」のマニュアルをちびちびを作成しながら、
プログラミングの細かい不具合の修正を行っています。

この作業を夏からやっているのですが、あまり楽しくなくないです。

01_20191008233201

細かな仕様の再確認をしながら、
サンプルプログラムの作成、その実行結果の解説、実際に動作させての結果の記載、
なかなか面倒で退屈な作業です。

(写真は、Arduno MEGA2560での動作確認)
02_20191008233401

ただし、この地味な作業でエラーチェック漏れ等が見つかり、品質は向上にはつながっていると思います。

マニュアルをWordで作成してしまったのも、ちょっと失敗でした。
文章内の類似・関連記事を同時に多数開いて横並びにして眺めたり出来ないことがストレスとなります。

とりあえずの目標として、10月中には完成させたいところです。

2019年9月 4日 (水)

豊四季タイニーBASIC - I2C EEPROMへのプログラム保存

豊四季タイニーBASIC for Arduino機能拡張版は、
作成したプログラムを内部EEPROMの領域に1つだけ保存することが出来ます。

これとは別に、外付け(I2C接続)EEPROMにも保存出来ます(以降、外部接続EEPROMと呼称)。

下記の写真はブレッドボード上に実装したEEPROMです。
   Dscn2173

対応しているEEPROMは24xxx系 (5V対応のもの)で、
4kバイト(32kビット)~64kバイト(512ビット)の容量に対応します。

動作確認 EEPROM
   AT24C32、AT24C64、24LC64、AT24C256、24LC256、24FC512、AT25C32

保存可能ファイル数
   17
   ※ 容量が1024ビットタイプのEEPROMでも保存は可能ですが、利用出来る容量は512ビット(64kバイト)となります。

使い勝手は次のような感じです。
10_20190903184501

Formatコマンドで初期後、Saveコマンドでファイル名で保存、
Filesコマンドでファイル一覧の表示、Loadコマンドでプログラムの読み込みが出来ます。
プログラムは、ファイル名(12文字)を付けて保存することが出来ます。

12

Filesコマンドでは、ワイルドカード(*、?)が利用可能です。
Files ""、Files " は Files "*"と等価です。


外部接続EEPROMの実装

EEPROMの結線は次のような感じになります。
    09_20190903181301
       プルアップ抵抗は、2 ~ 10kΩの範囲(Arduinoでプルアップしているため無く可)、
       コンデンサは無くても可、I2Cスレーブアドレスは$50に設定(A0 ~ A2ピンで$50 ~ $57の設定が可能)

EEPROMI2Cアドレスの設定により、最大8個のEEPROMを同時接続して利用することが出来ます。

実際には、市販モジュールの利用がお手軽です。種類も色々とあるようです。
いくつか持っている中で、写真のタイプが使いやすいです。
Dscn2166

amazonでもいくつかの業者が取り扱っています。
 ・KKHMF AT24C256 I2C インターフェースEEPROMメモリモジュール
   13

このモジュールは、ジャンパピン (ショートピン) の設定でI2Cスレーブアドレス、ライトプロテクトの設定が出来て便利です。
乗っているEEPROMをの差し替えも出来ます(4kバイト(32kビット) ~ 64kバイト(512ビット)で交換)。
(ICソケットが逆についているモジュールがあるようです。基板のシルク印刷を確認し、逆ならICを付け直しましょう)

動作確認のため、4つのモジュールを同時接続してみました。
Dscn2179
4つのうち2つはAT24C256、残り2つは24FC512を乗せています。
I2Cスレーブアドレスは、0x50、0x51、0x52、0x53と異なるアドレスを割り当てています。

アダプタを製作して接続してみました。

Dscn2180

4つをI2C接続している様子
Dscn2184

4つ同時利用はあまり意味が無いのですが、スレーブアドレス違いでの利用の検証です。

まずは、Formatコマンドで各EEPROMを初期化します。
Driveコマンドで利用するEEPROMを指定して、フォーマットします。

14

DRIVEコマンドの引数 "A"、"B"、"C"、"D"はEEPROMのI2Cスレーブアドレス $50、$51、$52、$53に対応します。
Formatコマンドの引数はEEPROMの容量指定と、ドライブ名(任意)です。
"A"、"B"、"C"、"D"のかわりに、$50、$51、$52、$53の指定も可能です。

次に簡単なプログラムをファイル名を変えて各EEPROMに保存してみます。

15

保存したプログラムをFilesコマンドで確認してみます。
Filesコマンドの引数 "" すべてのファイルを一覧表示します。
ワイルドカード指定 "*" でもOKです。

16

個々のEEPROMをちゃんと識別し、それぞれに保存出来ています。

Filesコマンドの出力の1行目はドライブ名、
2行目はファイル名一覧(存在するファイル数により出力行数は可変)、
3行目の出力は
  条件パターン一致ファイル / 全ファイル数 (保存可能ファイル数) 
を意味します。

条件パターン一致ファイル数 は "t*.bas" のようにワイルドカード指定時で一致したファイル数が表示されます。
今回は一致ファイルが1つで、存在するファイル数も1つなので 1/1 となります。

こんな感じで、外付けのEEPROMへの保存が可能です。

2019年8月29日 (木)

豊四季タイニーBASIC for Arduino機能拡張版のラインエディタについて

豊四季タイニーBASIC for Arduino機能拡張版のラインエディタについて少々、解説します。
(現在整備中のマニュアルにも記載します)

SRAMが2kバイトしかないため、スクリーンエディタの実装が無理だったのですが、
ラインエディタでもストレスなく編集できるよう、機能強化しました。

下記が利用可能な操作で利用する編集キーの一覧です。

04_20190829085501

いくつかの編集操作を紹介します。

1) 行番号 + [Tab]キーで編集対象行の指定
  05_20190829202601
   ">"(プロンプト)の後に、編集したい行番号を入力し、[Tab]キーを押すと、
   その行の内容を表示して編集できる状態にします。

  06_20190829202601 
   20 と入力し[Tab]キーを押すと、該当行の内容を表示します。

  07_20190829202601
  この状態で、[←][→]キーでカーソル移動、[Home]、[End]キーで行頭、行末にカーソルを移動、
  [BS]、[Del]キーで文字削除、任意の文字入力、IMEを使った日本語入力が出来ます。
    
  修正確定は[Enter]キーを押します。
  修正確定前に[Tab]キーを押すと修正前の内容に戻します。

2) [↑][↓]キーで前後の行の表示

08_20190829214601
[↑]キーで現在編集している前の行、[↓]で次の行の表示をします。
また、   ">"(プロンプト)表示だけの状態では先頭行、最終行を表示します。

大した追加機能では無いですが、ラインエディタでもそこそこ使えるようになったと思います。