電子ブロック工房 https://www.rad51.net/blog/mycom/ IC・トランジスタで出来たコンピューターを設計・製作するためのブログ ja Jeans CMS © Weblog http://backend.userland.com/rss https://www.rad51.net/jeans/skins/jeans/images/jeans2.gif 電子ブロック工房 https://www.rad51.net/blog/mycom/ PC上でMachiKaniaプログラミング https://www.rad51.net/blog/mycom/?itemid=1000 pc-connect 機能により、PC と MachiKania を USB ケーブルで繋ぎ、PC 上のファイルを MachiKania に転送して実行する方法を提供してきました。 Ver 1.7.0 以降では、それに加えて、PC 上のターミナルソフトで MachiKania 上の BASIC プログラムを編集・実行することができるようになりました。

20260615-PC-MachiKania.jpg

設定方法の詳細は、MachiKania type PUの公式ページでの説明を参照してください。ここでは、このページで提供する zip アーカイブを用いた、簡便な方法について説明します。

FT232RL を、RP2040-Zero と接続

この目的のため、PC と接続するために FT232RL ボード、MachiKania と接続するために RP2040-Zero ボードの2つが必要です。RP2040-Zero の代わりに、Raspberry Pi Pico でも構いません。ここでは、これら2つを繋いで以下のような回路にしました。
20260615-schematic.png
20260615-RP2040-FT232.png

RP2050-Zero の電源は、FT232RL から取るようにしています。RP2050-Zero を通じて、MachiKania にも給電されます。注意しないといけないのは、RP2050-Zero と FT232RL の両方を、同時に PC に繋げてはいけない事です。間違ってこれを行うと、最悪 PC を破壊する可能性がありますので、要注意です。


RP2040の設定に必要なファイルをダウンロード

使用するキーボードが日本語 (JP) か英語 (US) かに従って、以下のうちどちらかの zip アーカイブをダウンロードして展開してください。

FT232RL-Zero-JP.zip
FT232RL-Zero-US.zip


RP2040 にファームウェアーをインストール

FT232RL が PC に接続されていないことを確認し、この状態で RP2040 を、BOOT ボタンを押しながら、PC に接続して下さい。PC 上に RPI-RP2 ドライブが現れるので、zip アーカイブの Python ディレクトリーに含まれる uf2 ファイルをドラッグ&ドロップしてください。なお、同じボードで以前に Python を使用したことがある場合、先ず ResetRP2040 ディレクトリー内の uf2 ファイルをドラッグ&ドロップしてから、Python の uf2 ファイルをインストールする事をお勧めします。

Python が正常にインストールされれば、CIRCUITPY ドライブが現れるはずです。キーボードが JP の場合は

 ・code.py ファイル
 ・keyboard_layout_jp.py ファイル
 ・lib ディレクトリー

の3つを、キーボードが US の場合は

 ・code.py ファイル
 ・lib ディレクトリー

の2つを、CIRCUITPY ドライブにドラッグ&ドロップしてコピーしてください。これで、RP2040 の設定は終了です。RP2040 を PC から外してください。


ボードの接続

準備ができたので、ボードの接続を行います。FT232RL を PC に、RP2040-Zero を MachiKania に繋いでください。それぞれのコネクターに合わせた USB ケーブルが必要です。上の回路にしてあれば、MahiKania には、この回路を通じて PC から給電されます。


PC に TeraTerm をインストール

次に、PC に TeraTerm をインストールします。ここから、Ver 5 以降の物をダウンロードして、インストールしてください。zip アーカイブの KEYBOARD.CNF を、元のKEYBOARD.CNF を上書きする形でコピーします。

Tera Term を起動します。この時、Tera Term を起動するときのパラメーターとして以下のようにすれば、接続 COM ポートとボーレートを指定できます(COM ポートが5番の例)。どの COM ポートが割り当てられているかは、Windows なら Device Manager を用いて知ることができます。
ttermpro.exe /c=5 /baud=115200

この状態で、PC のキーボードから、MachiKania のエディターに入力が可能です。他のファイルからコードをコピー&ペーストする場合、文書をコピーした後に、メニューの Edit から Paste を選択してください。
20260618-Paste.png
ペーストする文書を確認したうえで、「OK」を押すと、MachiKania に転送されます。
20260619-Clipboard.png


日本語プログラミングが容易に

MachiKania では、CKNJ16 クラスなどを用いて、日本語を画面に出力することができます。そのような BASIC コードを MachiKania のエディター上で編集しようとすると、日本語部分が文字化けして扱いづらいです。そういった場合、今回の新機能を用いることで、日本語を含むソースコードを確認しながら、MachiKania 上で実行できるようになりました。

ここでは、日本語として UTF-8 エンコードを扱う事とします。まず、Tera Term の「KanjiCode」メニューで UTF-8 が指定されていることを確認します。されていなければ、UTF-8 を指定してください。
20260615-UTF8.png

次に、「Setup」プルダウンメニューから「Terminal」を選択します。
20260618-Terminal.png

ここで、「Local echo」にチェックを入れて、「Transmit」の設定を「CR+LF」としてください。
20260618-Echo.png

この状態で日本語を含む BASIC コードを、上で説明した方法でコピー&ペーストすると、MachiKania 側は文字化けしたコードですが、PC側に日本語のコードが表示されます。
20260619-Jananese.jpg

この状態で、Tera Term の画面を見ながら日本語文字列の入力もできます。ただし、MachiKania の画面上とTera Term の画面上での表示位置がずれたりするので、MachiKania 側のディスプレイを見ながら注意して編集してください。]]>
MachiKania https://www.rad51.net/blog/mycom/?itemid=1000 Fri, 19 Jun 2026 15:34:46 PDT ITEM1000_20260619
MachiKania type P/PU ver 1.7.0を公開 https://www.rad51.net/blog/mycom/?itemid=999
https://github.com/machikania/phyllosoma/releases/tag/Ver1.7.0

今回の更新の目玉は、以下の通りです。
Waveshare RP2350-Touch-LCD-2 (Wiki) に対応
・CST816D, TBUTTON, QMI8658 の3つのクラスを追加
・USBキーボードドライバにPCのターミナルソフトから直接文字コードで入力する機能を追加
・MachiKania USB ゲームパッドに対応
・文字列演算子(=, !=, <, <=, >, >=, AND, OR)を追加
・IF などで文字列を条件式に取ることができるようにした
・年齢制限のあるアプリケーションの開発に対応

20260601-RP2350-LCD-2.png

GitHub リリースページはこちら
Type P 公式ホームページはこちら
Type PU 公式ホームページはこちら


Waveshare RP2350-Touch-LCD-2に対応

Waveshare RP2350-Touch-LCD-2 (以下、RP2350-LCD-2) は、2インチのタッチパネル付きの液晶を搭載した RP2350 ボードです。マイクロ SD ソケット・バッテリー充電機能・加速度センサーも搭載しており外部インタフェース用のGPIOピンも使えるという、おもしろい基板なので、MachiKania type P でも対応できるようにしました。

USB ポートにキーボードを接続することができ、半田付けしなくても MachiKania が使えるボードの一つです。ボタンが無いので、GPIO ピンにタクトスイッチを接続して使うか、USB キーボードもしくは以下に述べる USB ゲームパッドを接続して使用してください。

また、タッチパネルと加速度センサーが標準装備されているので、それらを入力デバイスとして使用する BASIC プログラムを作成し、MACHIKAP.BAS に書き込んで使うなどの使用方法も可能です。タッチパネルと加速度センサーを簡単に使う方法についても、この記事の下の方で述べます。

どのポートが何に繋がれているかの一覧は、以下の通りです。
GP0 I/O bit0 / PWM3
GP1 I/O bit1 / PWM2
GP2 I/O bit2 / PWM1
GP3 I/O bit3
GP4 I/O bit4 / UART TX
GP5 I/O bit5 / UART RX
GP6 I/O bit6
GP7 I/O bit7
GP8 I/O bit8 / SPI RX / button1 (UP)
GP9 I/O bit9 / SPI CS / button2 (LEFT)
GP10 I/O bit10 / SCK / button3 (RIGHT)
GP11 I/O bit11 / SPI TX / button4 (DOWN)
GP12 IMU_SDA / TP_SDA / I2C SDA
GP13 IMU_SCL / TP_SCL / I2C SCL
GP14 I/O bit14 / IMU_INT1
GP15 LCD_BL
GP16 LCD_DC
GP17 LCD_CS
GP18 LCD_CLK
GP19 LCD_DIN(MOSI)
GP20 LCD_RST
GP21 SOUND OUT
GP22 I/O bit12 / button5 (START)
GP23 I/O bit13 / button6 (FIRE)
GP24 SD_DO(MISO)
GP25 SD_CS
GP26 SD-SCLK
GP27 SD_DI(MOSI)
GP28 BAT_ADC / ADC2
GP29 I/O bit15 / TP_INT
20260601-rp2350-lcd-2pin.png


RP2350-LCD-2 のバックライト調整

readme.txt にも書きましたが、RP2350-LCD-2 のバックライト明度は、GP15 を通じて行います。MachiKania では、PWM をこのポートに割り当てるのが、明度を調整する唯一の方法です。例えば、MACHIKAP.INI で、
PWM4=15
と記述しておくと、PWM4 をこれに割り当てることができます。次の BASIC コード例の様に制御できます。

do
  for i=0 to 1000
    PWM i, 1000, 4
    wait 1
    cursor 0,10 : print i,
  next
loop


CST816D, TBUTTON, QMI8658 の3つのクラスを追加

RP2350-LCD-2には、タッチパネル (CST816D) と加速度センサー (QMI8658A) が搭載されています。これらを簡便に使うため、CST816D, TBUTTON, QMI8658 の3つのクラスを用意しました。

下は、CST816D と TBUTTON クラスを用いて、RP2350-LCD-2 でタッチボタンを実装するサンプルプログラムです。ほぼ同じものが、SAMPLES ディレクトリーに BTNTEST.BAS として含まれています。
useclass CST816D,TBUTTON,GEN3O
usegraphic
K=new(GEN3O,88,"UTF-8")
T=new(CST816D)

for y=0 to 1
  for x=0 to 4
    point x*60,40+y*100
    K.GPRT(chr$(0x30+x+y*5),0,7)
    new(TBUTTON,x*60,40+y*100,48,88,funcaddress(push_cb),funcaddress(release_cb),x+y*5)
  next
next

do
  wait 1
  if T.POLLING() then
    TBUTTON::touch(T.Xpos, T.Ypos)
  else
    TBUTTON::release()
  endif
loop

label push_cb
  print args(1);
  point args(4),args(5)
  K.GPRT(chr$(0x30+args(1)),0,3)
return

label release_cb
  point args(4),args(5)
  K.GPRT(chr$(0x30+args(1)),0,7)
return

実行時のスクリーンショット
20260601-TBUTTON.png
動画はこちら(x.com)

下のスクリーンショットは、QMI8658 クラスに含まれている SAMPLES.BAS で、加速度センサーの値を読みこんでいる様子です。 20260618-QMI8658.png
動画はこちら(x.com)


RP2350-LCD-2 のバッテリー残量推定

RP2350-LCD-2 は、リチウムバッテリーによる駆動ができ、USB ポートから給電する事により、充電も可能です。バッテリー残量は、MachiKania では、「ANALOG(28)」の値を読むことで知ることができます。

RP2350-LCD-2 をバッテリーで作動させると、バッテリー電圧は下のグラフの様に変化しました(1150 mAh のバッテリーを用いて測定)。4100 mV でフル充電、3300 mV で残量ゼロとして、良さそうです。
20260601-battery.png

ANALOG(28) の入力は、バッテリー電圧の 1/3 の電圧を測定しており、12 ビット ADC (0 - 4095) なので、4100 mV は 1696 に、3300 mV は 1365 に相当します。色々とテストした結果、MachiKania の BASIC プログラムでは、以下のサブルーチンを GOSUB 関数で呼び出せば、バッテリーの残り容量%を、±7%の誤差で得ることができます。
rem 4100 mV = 1696 = 100%
rem 3550 mV = 1468 = 40%
rem 3300 mV = 1365 = 0%
label BATTERYP
  var a
  a=analog(28)
  if a>1468 then
    return 60*(a-1468)/(1696-1468)+40
  else
    return 40*(a-1365)/(1468-1365)


USBキーボードドライバにPCのターミナルソフトから直接文字コードで入力する機能を追加

MachiKania を PC に接続し PC 上のターミナルソフトからテキストファイルを転送できるようになりました。この機能の詳細については、別の記事を参照してください。


MachiKania USB ゲームパッドに対応

Pico-ResTouch-LCD-3.5, RP2350-Touch-LCD-2, RP2350-LCD-1.47 などの基板は、デフォルトではボタンが接続されていません。また、スピーカーやブザーが接続されていないため、音も鳴りません。そこで、それに対応するため、USB 接続のゲームパッドを使えるようにしました。

USB ゲームパッドの詳細は、別記事を参照してください。回路図、ソースコード及びバイナリーは、以下の GitHub レポジトリーにあります。
https://github.com/kmorimatsu/machikania_gamepad


文字列演算子を追加

KM-BASIC の文法をアップデートし、文字列演算子 (=, !=, <, <=, >, >=, AND, OR) を追加しました。また、IF 文などの条件式で、文字列を使えるようにしました。例えば、下の例の様に使う事ができます。
IF "ABC"=T$ AND "DEF"=S$ THEN
  print "T$ is 'ABC'"
  print "S$ is 'DEF'"
ELSEIF T$<"ABC" THEN
  print "T$ is probably shorter than 'ABC'"
ENDIF

なお、IF 文などでの条件式での判定では、文字列の先頭文字が「0」の場合に偽判定、それ以外の場合に真判定としています。「"ABC"=T$」などの比較演算子は、文字列「1」もしくは「0」を返します。

また、従来 STRNCMP() 関数が使えましたが、それ以外に STRCMP() を追加しました。STRNCMP() と異なり、比較する文字列長の指定が要りません。


年齢制限のあるアプリケーションの開発に対応

2027 年から、"California AB 1043" が施行されます。この条例は、OS とアプリケーションの両方に、年齢制限を行うためのインターフェースと実行時の対応を義務付けるものです。この条例に対応するため MachiKania では、アプリケーションで年齢確認を行うためのインターフェースを用意しました。ソフトウェアーによってはこの条例への対応として、「カリフォルニア州では使用禁止」というライセンスを適用しているものもあるようですが、開発者の一人である私自身がカリフォルニア州に在住のため、使用不可の様な対応はできず、ちゃんと対応する事にしました。

AB1043 では、OS 側で「アカウント設定時に生年月日もしくは年齢を示すことを要求するインターフェースを提供」しなければならないとあります。MachiKania では、「アカウント設定時に」に該当する操作として MACHIKAP.INI の編集とし、「インターフェースを提供」する機能として、新たに「SYSTEM(7)」を用意しました。

MACHIKAP.INI では、デフォルトとして「AGE=12」のように、年齢設定が12歳になっていますので、適宜変更して年齢設定を行ってください。また、アプリケーションの側では「SYSTEM(7)」を読み込むことでユーザーの年齢を知ることができるので、成人用アプリケーション(13歳以上、16歳以上、もしくは18歳以上を求めるもの)を作成する場合、「SYSTEM(7)」を読み込むことでプログラム実行の可否を判断するようにしてください。]]>
MachiKania https://www.rad51.net/blog/mycom/?itemid=999 Fri, 19 Jun 2026 15:30:13 PDT ITEM999_20260619
MachiKaniaの筐体を作成 https://www.rad51.net/blog/mycom/?itemid=998 工作魂さんに、MachiKania type P の基板と液晶用のサポーター基板を頂きました。有難うございます。また、最近 3D プリンター(Bambu Lab A1 mini)を購入したので、頂いた基板を用いて、MachiKania を筐体に収めることにしました。

20260307_MacBox.png

頂いた Type P 用の基板は、「MachiKania Phyllosoma BB」というものです。以下の URL に、詳しい情報がありますので、参照してください。電子工作ステーションで、BASIC搭載パソコン「MachiKania type P」(組立キット基板)として販売されています。
https://github.com/kosaku-damashii/MachiKania-MachiKaniaPhyllosomaBB

また、LCD サポーターも、いただきました。こちらは、ILI9488 液晶を、45 度傾けて接続するものです。

これらの基板を用いて Type P を作成し、筐体に収めることにしました。筐体は、Bambu Lab A1 mini を用いて 3D プリンティングで作成しました。基板・Pico・液晶と、3D 印刷した部品は、以下の写真の通りです。
20260301-MacBox-2.png

3D 印刷用の部品は、DesignSpark Mechanical を用いて設計しました。以下の画像は、設計中の様子です。
20260302-bottom.png
20260302-back.png
20260302-top.png
20260302-cover.png

これらの部品を印刷して、とりあえず組み立てたのが以下の画像です。
20260301-MacBox.png

さらに以下のものを印刷して、トップに「MachiKania Type P」の文字を入れることにしました。文字の厚みは 0.2 mm です。
20260307_Logo.png

黒のフィラメントで文字を印刷後、位置合わせのためのコの字型の細い線部分をはがしたのちに、白いフィラメントでトップ部分を印刷しました。トップ部分の部品は、文字部分は 0.3 mm だけ窪ませてあります。出来上がったものを示したのが、最初の写真です(下は、同じ画像)。
20260307_MacBox.png

少し前に 3D プリンターとして Bambu Lab A1 mini を購入して、それを使ってこの筐体を作成しました。3D プリンターは 10 年以上前に職場で購入した MakerBot Replicator 2 をずっと使ってきたのですが、新しいものは性能が全然違うのでびっくりです。工作魂さんには 3D プリンター購入の際にも色々とアドバイスをいただきました。どうも有難うございます。次は、MachiKania Type PU を、筐体に入れてみたいですね。]]>
MachiKania https://www.rad51.net/blog/mycom/?itemid=998 Sat, 07 Mar 2026 17:10:21 PST ITEM998_20260307
MachiKania用ゲームパッド、2種 https://www.rad51.net/blog/mycom/?itemid=997
20260130-gamepads.png

Dual ゲームパッド

Twitterで情報交換させてていただいている工作魂さんから、ゲームパッド用の基板と部品を送っていただきまして(基板は、電子工作ステーションで販売されています)、作ってみました。また、工作魂さんから 3D プリンター用の STL ファイルを頂いたので、筐体もプラスティックで作成して、そこに収めました。

この基板の使い方は、GitHubに説明がありますMachiKania type P 開発基板こちらも、電子工作ステーションで販売されています)や、オレンジピコの ORABGE-BUS につないで使う事ができます。私は、MachiKania type P 開発基板で使うように作成してみました。

下の写真は、基板と 3D プリンターの印刷物です。基板には、タクトスイッチを半田付けしてあります。
20251227_143356.png

下の写真は、基板を筐体にはめて、蓋を閉める直前のものです。10ピンの IDC コネクターもはんだ付けしてあります。
20251231_155902.png

完成させて、MachiKania type P 開発基板に接続した状態がこちら。
20260119_180258.png

この基板は優れもので、十字の上下左右ボタンを、パッドの右側に配置させることも左側に配置させることもできます。IDC コネクターが二か所に取り付けられるので、その選択でどちらか選べます。矢印ボタンが右側の配置は PC でゲームをやり慣れた人用、左側の配置はファミコンなどでゲームをやり慣れた人用、という所ですね。また、中央にリセットボタンがあるので、MachiKania をリセットする事も出来ます。

USB ゲームパッド

ResTouch や、RP2350-LCD-1.47 で MachiKania を走らせる場合、ボタンが無いので USB キーボードで操作する事になります。また、これらのボードには、スピーカーやブザーが無いので、音が鳴りません。そこで、それ用の、USB 接続で音が出せるゲームパッドを開発中です。これは、2026 年 1 月現在の最新版、ver 1.6.1 ではまだ使えませんが、その次の公開バージョンで使えるように準備中のものです(試用なさりたい方は、GitHub レポジトリーの production ブランチをどうぞ)。

下の写真が、開発中のものです。RP2040-Zero を工作魂さんから頂いた基板に接続し、ボタン用の配線を行いました。また、圧電ブザーと10 kΩの抵抗を音声出力端子に接続しています。3D プリンターのデーターを微修正して、圧電ブザーが表に出るようにしました。
20260119_161631.png

下の写真が、ResTouch に接続したときの様子です。ボタン操作ができ、音も鳴ります。
20260119_164715.png

なお、この目的のために、pid.codes という、オープンソースプロジェクト用に USB の PID(プロダクト ID)を取得できるサービスを用いて、0xF800 という PID を取得しました(VID(ベンダー ID)は、0x1209 です)。MachiKania 本体では、この VID/PID をチェックする事で、USB ゲームパッドかどうかを認識するようにする予定です。]]>
MachiKania https://www.rad51.net/blog/mycom/?itemid=997 Fri, 30 Jan 2026 15:26:02 PST ITEM997_20260130
MachiKania type P/PU ver 1.6.1を公開 https://www.rad51.net/blog/mycom/?itemid=996
https://github.com/machikania/phyllosoma/releases/tag/Ver1.6.1

今回の更新の目玉は、以下の通りです。

・ Waveshare RP2350-LCD-1.47に対応
・ エディター使用時に、ステートメントもしくは関数のヘルプを表示できるように
・ RND#()関数を追加
・ ネット接続におけるTLSハンドシェイクを改善
・ クラスライブラリーのWGETを更新。301 Movedなどに対応
・ PWM4~PWM9の使用をサポート

20251225-RP2350LCD.png

GitHub リリースページはこちら
Type P 公式ホームページはこちら
Type PU 公式ホームページはこちら

Waveshare RP2350-LCD-1.47に対応

Waveshare 社の RP2350-LCD-1.47 に対応しました。RP2350-LCD-1.47 は小型の液晶ディスプレイ(36 mm x 20 mm)に RP2350 マイクロコントローラーと micro SD ソケットが付属しており、GPIO ピンも15本出ているので、小型で液晶ディスプレイ付きの組み込みデバイスの作成にもってこいです。加えて、USB ポートにキーボードを接続することができ、半田付けしなくても MachiKania が使えるボードの一つになりました。USB キーボードの接続には、電源入力付きの USB Type C OTG ケーブルを用いてください。

この液晶ディスプレイは、この小ささの割にドット数が 320 x 172 ピクセルもあるので、PRINT ステートメントで表示した内容は非常に読みづらいです。クラスライブラリーの GEN3O クラスを用いれば大きなサイズのフォント(29, 44, 58, 88, 118 ピクセル)での表示が可能になるので、利用してください。

このデバイスには、上下左右ボタン・FIRE/START ボタンがありません。ボタン機能を用いる際は、キーボードを接続するか、ピンヘッダーを半田付けしてタクトスイッチなどを接続してください。接続するポート番号は、GitHub の記載を参考にしてください。

エディター使用時に、ステートメントもしくは関数のヘルプを表示できるように

エディターでBASICプログラムを編集中に、ステートメント・関数のヘルプを表示できるようにしました。表示できるのは英語もしくは半角カタカナです。この機能を有効にするには、配布アーカイブの「docs」ディレクトリーを、MMC/SDカードのルートにコピーしておいてください。また、MACHIKAP.INI を編集する事で、英語表示かカナ表示を選択することできます(デフォルトは、英語表示; HELPFILE=/docs/help-e.txt)(カナ表示にするには HELPFILE=/docs/help-k.txt)。ヘルプを表示させたい場合は、目的の命令もしくは関数にカーソルがある状態で、F3 キーもしくは Ctrl + H を押してください。下のような表示になります。

20251225-help.png

本当は日本語でのヘルプ表示ができるようになればよかったのですが、エディター使用中での漢字表示は、テキストディスプレイではなくグラフィックディスプレイを用いないといけない都合上、実装のハードルが高く、今回は見送りました。その代わり、半角カタカナ表示にも対応しましたので、非常に見づらくはありますが、ご活用ください。

RND#()関数を追加

久しぶりに KM-BASIC の仕様変更を行い、RND#() 関数を追加しました。これは、0以上1未満の乱数を浮動小数点型で返すものです。Ver 1.6.0 までは整数型の 0 以上 32768 未満の乱数しか対応しておらず、浮動小数点型で使用するときにはそれを変換する必要がありましたが、そういった煩雑さが無くなりました。

ネット接続におけるTLSハンドシェイクを改善

Raspberry Pi Pico W もしくは Pico 2 W を利用してインターネット接続する際の、TLSハンドシェイク(https 通信のためのプロトコル)を見直しました。Ver 1.6.0 までは、およそ 16 kb までの大きさのファイルしかダウンロードできませんでしたが、Ver 1.6.1 からは、それを超えるサイズでも問題なくダウンロードできるようになりました。従来通り、WGET クラスを用いて、必要ファイルをダウンロードしてください。

クラスライブラリーの WGET を更新

クラスライブラリーの WGET を更新し、301 Moved などのリダイレクトに対応できるようにしました。以前のバージョンまでだと、サーバーが 301 Moved を返した場合、BASIC プログラム側でリダイレクトアドレスを読み取って新たに接続する必要がありましたが、それが自動でなされるようにしました。従来通り、HTTP レスポンスステータスが"30x"の際にリダイレクトをせずにレスポンスヘッダーだけを取得したい場合は、「WGET::IGNOREREDIRECT( 1 )」を実行してください。

PWM4~PWM9の使用をサポート

Ver 1.6.0 までは、PWM1 から PWM3 までの3つのPWMしか使えませんでしたが、PWM4 から PWM9 までも使えるようにしました。また、これらの PWM は、MACHIKAP.INI でポート番号を指定して用いることができるので、従来より、使い勝手が増しました。

下は、RP2350-LCD-1.47 での MACHIKAP.INI の設定例です。GP21を、PWM に割り当てています。この設定を行うと、PWM4 を用いることで、画面のバックライト強度を調整することができるようになります。

PWM4=21

その他

その他の変更点は、次の通りです。ST7789 液晶への対応・バグ修正・FFTLIB クラスの追加などを行っています。

・ ST7789搭載液晶に対応(バイナリ提供なし)
・ PicoCalc、ResTouch、type PU miniで、OUT8L/IN8L、OUT8H/IN8H、OUT16/IN16ステートメントの挙動を修正
・ クラスファイル中で別のクラスを使っている際、特定の環境でコンパイルできなくなる不具合を修正
・ クラスライブラリーに高速フーリエ変換および逆変換を行うためのクラス、FFTLIBを追加
・ class.txtを修正
・ help-k.txtを追加 ]]>
MachiKania https://www.rad51.net/blog/mycom/?itemid=996 Sat, 27 Dec 2025 00:00:02 PST ITEM996_20251227
PicoCalc用MachiKaniaの紹介 https://www.rad51.net/blog/mycom/?itemid=995 ver 1.6 から、ClockworkPi 社の PicoCalc で使えるようになりました。

20250809-picocalc-photo.png

ResTouch 版と同じく、こちらもはんだ付けなしで、MachiKania を走らせることができます。

PicoCalc で MachiKania を走らせるには

まずは、PicoCalc を入手します。ClockworkPi のページから注文してください。2025 年 8 月現在、注文から受け取りまで、2-3ヶ月かかるようです。気長に待ちましょう。

目的の、Raspberry Pi Pico を PicoCalc のソケットに挿入します。次のものが使えます。すでにピンヘッダーが取り付けられている H タイプでも、通常タイプでも、どちらでも構いません。H タイプのものはそのまま、通常タイプのものは、左右に 20 ピンずつのピンヘッダーを、半田付けして使います。

・Raspberry Pi Pico
・Raspberry Pi Pico W
・Raspberry Pi Pico 2
・Raspberry Pi Pico 2 W
(PicoCalc を購入すると Raspberry Pi Pico H が付属しているので、そのまま使えます。)

MachiKania は、GitHub のリリースページからダウンロードできます。ダウンロードできる ZIP アーカイブの中から、「machikania-pc-xxx.zip」(xxxは、バージョン番号)を選んでください。この ZIP アーカイブの中に、必要なファイルがすべて入っています。

MachiKania をインストールします。ResTouch の電源を切り、裏返します。PC に micro B の USB ケーブルを接続し、ResTouch 裏側の隙間から爪楊枝などの細い棒で Raspberry Pi Pico の白い「BOOTSELボタン」を押しながら、micro B のコネクターを接続します。

20250809-picocalc-install.png

PC 上に、「RPI-RP2」ドライブもしくは「RP2350」ドライブが現れるので、そこに上記の ZIP アーカイブに含まれる「phyllosoma_kb.uf2」ファイルをドラッグ&ドロップすれば、インストールされます。ただし、

・Pico の場合は、pico_picocalc ディレクトリーの物を
・Pico W の場合は、pico_w_picocalc ディレクトリーの物を
・Pico 2 の場合は、pico2_picocalc ディレクトリーの物を
・Pico 2 W の場合は、pico2_w_picocalc ディレクトリーの物を

それぞれ選んでください。

最後に、ダウンロードした ZIP アーカイブに含まれている次のファイル・ディレクトリーを、MMC/SD カードにコピーしてください。

・MACHIKAP.INI ファイル
・LIB ディレクトリー
・samples ディレクトリー

必要に応じて、MACHIKAP.INI ファイルを編集します。細かくは、ZIP アーカイブの document ディレクトリー内の文書を読みながら設定する必要がありますが、とりあえず MachiKania を立ち上げたいだけならば、そのままでよいです。

これで、PicoCalc で MachiKania を走らせる準備ができました。

MachiKania の起動

上記の作業を進めた後に PicoCalc の電源を入れれば、MachiKania が起動するはずです。下の画像のようになります。

20250809-picocalc-editor.png

これでエディターが立ち上がっていますから、そのまま BASIC プログラムを書くことができます。また、「F1」キーでプログラムをロードすることもできます。下は、「F1」キーを押して、プログラム一覧を表示させたものです。「SAMPLES」ディレクトリーに移動した後の表示です。

20250809-picocalc-dir.png

ファイル選択画面では、上下矢印キーを押すと、青い矢印で示された選択項目が変わります。矢印で指定のファイルをロードするには、「Enter」キーを押してください。プログラムをロードすると、下の例のようになります。

20250809-picocalc-program.png

プログラムの実行には、「F4」キーを押してください。上の画像で表示した「RAYTRACE.BAS」の実行結果が、このページ最上部に表示されています。

PicoCalc 版 MachiKania を使うときの注意点

readme.txtにも書きましたが、いくつか注意点があります。まず、キーボードに関しては、以下の点に注意してください。

・「Shift + Right」「Shift + Left」が使えないので、代わりに「Alt + Right」「Alt + Left」を使う。
・「Page Up」「Page Down」ボタンが無いので、代わりに「Alt + Up」「Alt + Down」を使う。
・「Shift」キーなしで「Home」「End」を使いたい場合は、「Alt + Tab」「Alt + Del」を押す。

MachiKania の制御に使うボタンは、キーボードでエミュレートしています。上下左右矢印キーが上下左右ボタンに、スペースキーが「Fire」ボタンに、改行キーが「Start」ボタンに対応しています。これらの対応付けを変更したいときは、MACHIKAP.INIを編集してください。

BASICプログラムを実行途中で停止したい場合、Ctrl+Alt+Delキーを同時に押してください。プログラムが途中停止します。ただし、PRINT命令などを一切使わないループの中などでは、停止しない場合もあります。

MachiKania の高速実行を体験

MachiKania は、高速で BASIC プログラムを実行できるのが特徴です。C の半分、Python の数倍の速度です。サンプルプログラムの「MADELBR.BAS」を実行してみてください。

20250810-picocalc-mandr.png
動画はこちら

これは、MMBasic 用の「mand.bas」を、MachiKania 用に移植したものです。MMBasicでは全体の描画に5分ほどかかりますが、MachiKania では10秒ちょっとで表示できます。これは、MMBasicがインタープリター形式でプログラムを実行するのに対し、MachiKaniaがコンパイラー形式でプログラムを処理するからです。

PicoCalc で GPIO を使うには

PicoCalc 本体の左側に、GPIO ポートに接続された端子があり、それを使う事ができます。PicoCalc の説明書には、下のように記載されています。

20250809-picocalc-ports.png

見てわかるように、GP2, 3, 4, 5, 21, 28 と、3.3 V, GND が出ています。これ以外に、「UART0_RX」はGP1として、「UART0_TX」はGP0として使用することができます。ただし、GP1(UART0_RX) を使う場合は、内部基板の「SEL1」ディップスイッチを「M_WART_RX」の指定にしないといけないので、注意が必要です(これを怠ると、最悪、機器の故障が起こりえます)。

PicoCalc での GPIO の使用については、qiita.com で Kazuhisa Sakabe さんが精力的になさっているので、ご参照ください。MACHIKAP.INIの設定なども含めて詳細を解説してくださっているので、非常に参考になります。

PicoCalc版MachiKaniaでADT7410を利用する(I2C通信)
PicoCalc版MachiKaniaでADT7310を利用する(SPI通信)
PicoCalc版MachiKaniaでBME280を利用する(I2C通信・SPI通信)

]]>
MachiKania https://www.rad51.net/blog/mycom/?itemid=995 Sat, 16 Aug 2025 11:03:13 PDT ITEM995_20250816
ResTouch用MachiKaniaの紹介 https://www.rad51.net/blog/mycom/?itemid=994 ver 1.6 から、Waveshare 社の Pico-ResTouch-LCD-3.5 で使えるようになりました。

20250809-restouch-running.png

これにより、一切半田付けなしで、MachiKania が楽しめるようになりました。

必要な物は、以下の写真の通りです。
20250809_parts_restouch.png

・Waveshare Pico-ResTouch-LCD-3.5
・Raspberry Pi Pico H (もしくは WH, 2 H, 2 WH)
・Micro SD カード
・USB キーボード
・USB-OTG ケーブル(電源入力付き、micro-B)
・USB-micro B ケーブル

これだけあれば、半田付けなど一切することなく、組み立てるだけで MachiKania が使えるようになります。以下、順を追って説明します。

部品の購入

まず、Pico-ResTouch-LCD-3.5を入手します。アマゾンやマルツなどで、取り扱いがあるようです。「Pico-ResTouch-LCD-3.5」であることを確認してください。類似の「Pico-ResTouch-LCD-2.8」は、使えません。

Raspberry Pi Picoは、半田付けしないで使いたいのであれば、ピンヘッダー付きの H シリーズを購入してください。次のものが使えます。マルツやDigiKeyなどで、取り扱いがあるようです。

・Raspberry Pi Pico H
・Raspberry Pi Pico WH
・Raspberry Pi Pico 2 H
・Raspberry Pi Pico 2 WH

Micro SD カードは、何でも構いません。通常の SD カードとして使えるアダプターが付属しているものが、便利です。

USB キーボードも、何でも構いません。日本語配列キーボードもしくは、US配列キーボードを使ってください。

USB-OTG ケーブルは、micro B で、電源入力端子が付いているものを使ってください。アマゾンなどで、「usb-otg micro B power」などの検索語で検索すれば、見つかるはずです。上の写真のような、二股の物を使います。

同様に、USB micro B ケーブルを入手してください。

MachiKania のダウンロード

MachiKania は、GitHub のリリースページからダウンロードできます。ダウンロードできる ZIP アーカイブの中から、「machikania-rt-xxx.zip」(xxxは、バージョン番号)を選んでください。この ZIP アーカイブの中に、必要なファイルがすべて入っています。

MachiKania のインストール

次に、MachiKania を、Raspberry Pi Pico にインストールします。USB micro B ケーブルを PC に挿入し、Pico 基板上の白い「BOOTSEL」ボタンを押した状態で、接続します。

20250809-restouch-install.png

PC 上に、「RPI-RP2」ドライブもしくは「RP2350」ドライブが現れるので、そこに上記の ZIP アーカイブに含まれる「phyllosoma_kb.uf2」ファイルをドラッグ&ドロップすれば、インストールされます。ただし、

・Pico H の場合は、pico_restouch ディレクトリーの物を
・Pico WH の場合は、pico_w_restouch ディレクトリーの物を
・Pico 2 H の場合は、pico2_restouch ディレクトリーの物を
・Pico 2 WH の場合は、pico2_w_restouch ディレクトリーの物を

それぞれ選んでください。

必要なファイルの micro SD へのコピー

20250809-restouch-copy-files.png

Micro SD カードに、必要なファイルをコピーしておく必要があります。次のファイルもしくはディレクトリーを、ZIP アーカイブから SD カードにコピーしてください。

・MACHIKAP.INI ファイル
・LIB ディレクトリー
・samples ディレクトリー

必要に応じて、MACHIKAP.INI ファイルを編集します。細かくは、ZIP アーカイブの document ディレクトリー内の文書を読みながら設定する必要がありますが、とりあえず MachiKania を立ち上げたいだけならば、そのままでよいです。

組み立て

組み立ては、コネクターを接続していくだけです。まずは、Raspberry Pi Pico を、ResTouch に挿入します。この時、向きを間違えないように(「USB」の印刷があるので、Pico の micro B USB ポートをそちらの方向に)。
20250809-restouch-insert-pipico.png

次に、上の要領でファイルをコピーしておいた micro SD カードを挿入。
20250809-restouch-insert-sd.png

USB OTG ケーブルを接続。
20250809-restouch-otg-connected.png

USB キーボードを接続。
20250809-restouch-keyboard-connected.png

最後に、電源用の USB micro B ケーブルを接続。
20250809-restouch-power-connected.png

これで、すべての接続が完了です。

MachiKania の起動

電源を投入すれば、液晶ディスプレイの表示が、以下のようになるはずです。上で白い四角が点滅、下に「LOAD|SAVE| |RUN | LINE:1」のように表示されれば、動いています。
20250809-restouch-assembled.png

これで、ResTouch で MachiKania が走るようになりました。この画面で直接 BASIC コードを入力するのも良し、「F1」キーからサンプルプログラムをロードするのもよし。プログラムの実行は、「F4」キーです。

ResTouch の特徴

MachiKania を使う上での、Pico-ResTouch-LCD-3.5 の特徴は、次の通りです。

・液晶のピクセルサイズが 480 x 320 と、少し大きめ
・タッチパネル搭載
・液晶からの情報を、Raspberry Pi Pico から読み取ることができない
・音が出ない

まず、ピクセルサイズですが、MachiKania type P では、320 x 240 ピクセルの ILI9341 液晶を使うのがデフォルトですから、480 x 320 と、大きめの液晶を使えることがポイントです。画像はより鮮明にできるし、文字表示を行う場合など、より多くの情報を表示できます。

タッチパネルが付属しているので、これがそのまま、MachiKania で簡単に使えます。クラスライブラリーの TSC2046 クラスを用いてください。使い方は、クラスの help.txt を参照してください。

液晶からの情報が読み取れないことがデメリットです。具体的には、BASIC の GCOLOR 関数が使えません。例えば、この機能を使ったサンプルプログラム、INVADE.BAS が正常動作しないので、ResTouch 用のサンプルプログラムには同梱していません。ただ、 GCOLOR 関数が必要になるプログラムはめったにないので、殆どの場合で問題なく使えるはずです。

ResTouch には音声出力用の部品が搭載されていないので、音が鳴りません。ResTouch で音を鳴らせたい場合は、次のセクションを参考にしてください。

ResTouch で音を鳴らせたい場合

上で述べた通り、ResTouch には音声出力のための部品が搭載されていません。音を鳴らしたい場合は、次の例を参考にしてください(半田付けが必要です)。

まず、ResTouch を裏返して、Raspberry Pi Pico を取り外します。下の画像で赤矢印のところから音声出力を取り出すことができます。上の赤矢印が接地 (GND) で、下の赤矢印が音声出力端子(GP27)です。
20250809-restouch-audio-ports.png

上の画像の赤矢印の位置に、1-10 KΩの抵抗を取り付けます。
20250809-restouch-audio-resistor.png

次に、その抵抗に並列に、圧電ブザーを取り付けます。
20250809-restouch-audio-buzzer.png

これで、ResTouch でも、音が鳴るようになります。ただし、圧電ブザーは小さな音なので、WAV ファイルの再生などでは聞こえないぐらいの小さな音しかでません。そういった場合は、圧電ブザーの代わりにイヤホンジャックなどを同じ位置に取り付け、イヤホンで聞くかアンプに接続すればよいです。]]>
MachiKania https://www.rad51.net/blog/mycom/?itemid=994 Sat, 16 Aug 2025 11:02:59 PDT ITEM994_20250816
MachiKania type P/PU ver 1.6.0を公開 https://www.rad51.net/blog/mycom/?itemid=993
https://github.com/machikania/phyllosoma/releases/tag/Ver1.6.0

今回の更新の目玉は、以下の通りです。

・LCD用のコードエディターで、予約語・文字列・コメントの色付けに対応
Waveshare Pico-ResTouch-LCD-3.5に対応
ClockworkPi PicoCalcに対応
・IPSタイプのLCDに対応
・ボタン操作を、キーボードでもエミュレートできるようにした
・AVI動画ファイルの再生ができるようになった(Type PUのみ)

20250810-editor.png

GitHub リリースページはこちら
Type P 公式ホームページはこちら
Type PU 公式ホームページはこちら

コードエディターでの色付け

エディターでの BASIC ソースコードの表示・編集の際、予約語・文字列・コメントに色付けがされるようになりました。これにより、ソースコードが見やすくなりました。色は、予約語に青、文字列に赤、コメントに緑と、一般的なソースコードエディターと似せた色にしました。

ただし、type PUはこの色付けは対応していません。NTSC ディスプレイの場合、色を付けると逆に読みにくくなったりするからです。ですので、type PUの場合は、今まで通り白黒のディスプレイでソースコードを編集してください。

ResTouch 及び PicoCalc に対応

Waveshare 社の Pico-ResTouch-LCD-3.5 と、ClockworkPi 社の PicoCalc で、MachiKania が使えるようになりました。従来、何らかの電子工作をしないと MachiKania が使えませんでしたが、これらのガジェットへの対応により、半田付けを一切することなく MachiKania を楽しめるようになりました。

ResTouch 対応についてはこちらの記事に、PicoCalc 対応についてはこちらの記事に、それぞれ詳細を書きましたので、詳しくはそれらの記事をご覧ください。

IPSタイプのLCDに対応

従来の MachiKania を IPS タイプの LCD で使うと、色が反転した状態で表示されていましたので、それに対応しました。IPS-LCD をお使いの場合は、MACHIKAP.INI で、「LCDINVERT」のコメントを外して、有効にしてください。

ボタン操作をキーボードでエミュレート

MachiKania は、ボタン操作でゲームを楽しんだりすることができます。今回の更新では、ボタンが無くてもキーボードが接続されていれば、ボタン操作と同じことができるようにしました。必要な場合は、MACHIKAP.INIで、「EMULATEBUTTONUP=」等の行のコメントを外して有効化し、右にキーコードを指定してください。特定の キーの仮想キーコードを知りたいときは、次のBASICプログラムを実行して、キーを押せば、表示されます。

DO:PRINT INKEY():LOOP

AVI動画ファイルの再生

Type PU では、AVI 動画ファイルを再生できるようになりました。そのための、PLAYAVI クラスを追加しました。この、AVI 動画ファイルの再生については別に記事を書きましたので、そちらを参照してください。

MachiKania type PUで動画再生
MachiKania type PUで動画再生、その2
MachiKania type PUで動画再生、その3]]>
MachiKania https://www.rad51.net/blog/mycom/?itemid=993 Sat, 16 Aug 2025 11:02:43 PDT ITEM993_20250816
MachiKania type PUで動画再生、その3 https://www.rad51.net/blog/mycom/?itemid=992
250519-withSound.png

まず、PLAYAVIクラスで音声付きで再生することができるのは、15 fpsの動画だけである。また、AVIファイルは、音声データーを含まないことが前提だ。従って、動画の再生と同時に音声も再生するには、別途音声ファイルを準備する必要がある。PLAYAVIクラスでは、音声ファイルとしてWAVファイルを扱うので、これをAVIファイルとは別に用意する。

ここで使用するWAVファイルは、次の条件を満たしている必要がある。

1.音声データーは、圧縮なしのPCM
2.8ビットモノラル
3.サンプリングレートは、およそ15825 Hz

ここでは、このようなwavファイルを作成する方法の例について述べる。mp4ファイルから音声を抽出し、aviファイルに変換する方法を例示する。次のツールを用いる。

FFmpeg:MP4ファイルをWAVファイルに変換するために用いる

MP4ファイルを準備

まず、元となるMP4ファイルを準備する。この記事の説明では、以下のwebサイトからダウンロードした。「NHKクリエイティブ・ライブラリー」著作の、フリー素材だ。

https://www2.nhk.or.jp/archives/movies/?id=D0002030736_00000

このMP4ファイルは、29.97 fps(1秒間に29.97フレーム)で1分39秒の動画である。ここでは、最終的に15 fpsのAVIファイルと、別にWAVファイルに変換する例を挙げる。また、動画の初めの30秒だけ使用する。

AVIファイル作成

AVIファイルの作成方法は、「その2」で述べた方法と同じである。ただし、最初の30秒だけ使うため、FFmpegを使う時のパラメーターに「-t 30」を加える。その他は、同様に進める。ここでは、最終的なAVIファイルを、「crick15.avi」として保存する。

WAVファイルのサンプリングレートの算出

ここで使うWAVファイルのサンプリングレートの値は、少し複雑だ。最初に述べた「15825 Hz」というサンプリングレートは、元のmp4動画のサンプリングレートが、ぴったり 30 fps の場合である(30*1055/2)。ここで使うmp4動画はサンプリングレートが29.97 fps なので、微調整が必要である。

この、29.97 という値は、正確には 30000/1001 なのだが、この値は、FFmpegに含まれている「ffprobe」によって調べることができる。
ffprobe -v error -select_streams v:0 -show_entries stream=r_frame_rate input.mp4
ただし、「input.mp4」は任意のmp4ファイル。

この例の場合、作成するWAVファイルのサンプルレートは、次のように計算する

 15825 * (30000/1001) / 30 = 15809.190809...

サンプリングレートは整数値で設定する必要があるから、15809 Hzを使う。ただし、0.190809...(191/1001)の誤差があるので、それについては後で考察する。

WAVファイルの作成

サンプリングレートが確定したら、WAVファイルを作成する。FFmpegを利用し、一般的には次のように実行する。

ffmpeg -i input.mp4 -ac 1 -ar 15825 -f wav -acodec pcm_u8 -t 31 result.wav

ただし、「input.mp4」は任意のmp4ファイル名、「result.wav」は任意の出力wavファイル名。

ここの例では、「最初の31秒だけ抽出する」ためと「音量を上げる」ために、それぞれ「-t 31」と「-af "volume=32, dynaudnorm, alimiter=limit=0.9"」のパラメーターを追加し、上の計算通りサンプリング周波数を15809 Hzとするために「-ar 15809」として、次のコマンドを実行した。

ffmpeg -i D0002030736_00000_V_000.mp4 -ac 1 -ar 15809 -f wav -acodec pcm_u8 -t 31 -af "volume=32, dynaudnorm, alimiter=limit=0.9" crick15.wav


いよいよ再生

必要なAVI、WAVの両方のファイルがそろったので、MachiKania type PUで再生する。RP2350搭載のRaspberry Pi Pico 2を使う。BASICファイルは、次の例のようにする。

useclass PLAYAVI

cls
system 51,15
system 50,315000000
system 57, 40000000

a=new(PLAYAVI,"crick15.avi")
a.SETWAVE("crick15.wav")

do
  wait 1
loop while a.play()

end


音声と映像のずれの修正

元のmp4ファイルのサンプリングレートが、ぴったり 30 fps の場合、ここで述べた方法で動画再生しても理論的に音と映像がずれることはない(WAVファイルは、15825 Hzで作成)。しかし、元のmp4ファイルのサンプリングレートが29.97 fpsの場合などは、長く再生していると音と映像が少しずつずれてくる。

元のmp4ファイルのサンプリングレートが29.97 fps (30000/1001)の場合、本当ならサンプリングレートを

15809.190809190809190809190809...

でWAVファイルを作成しないといけないところ、15809 Hzで作成することになる。0..190809...(191/1001) Hz分のずれがある。3分の動画ならおよそ0.002秒、30分の動画ならおよそ0.02秒のずれだからほとんど気が付かないレベルだが、2時間の動画なら0.087秒ずれる(音声が遅れる)ので、気になるかもしれない。

そこで、こういった場合は再生中に音声再生位置を微調整する。画像を 1001 x 15 フレームだけ再生したときに 音声データーが191 ビットずれる計算だ。なので、BASICプログラムのメインループを次のようにすればよい。

w=15015
do
  w=w-1
  if 0=w then
    w=15015
    a.MOVEWAVPOINTER(191)
  endif
  wait 1
loop while a.play()


もう一つの方法は、動画を15分ぐらいずつのものに分割しておき、それらを順次再生する方法だ。ファイルサイズが4 GBまでという制限があるFAT32ファイルシステムでは、336x216ピクセルサイズの動画はおよそ60分までしか対応できないので、長い動画を再生したいときはこちらのやり方の方が現実的かもしれない。この場合、上で述べた「MOVEWAVPOINTER」メソッドによる微修正は必要ない。]]>
MachiKania https://www.rad51.net/blog/mycom/?itemid=992 Sat, 24 May 2025 19:13:53 PDT ITEM992_20250524
MachiKania type PUで動画再生、その2 https://www.rad51.net/blog/mycom/?itemid=991
MachiKaniaで再生するAVIファイルは、以下のような条件を満たさないといけない。

1.幅は、336ピクセル以下
2.高さは、216ピクセル以下
3.上下反転
4.画像データーは圧縮なし
5.画像は256色パレット
6.音声データーを含まない

ここでは、このようなaviファイルを作成する方法の例について述べる。mp4ファイルをaviファイルに変換する方法を例示する。次に示す、2つのツールを用いる。

FFmpeg:MP4ファイルをAVIファイルに変換するために用いる
Fiji:AVIファイルを編集するために用いる

MP4ファイルを準備

まず、元となるMP4ファイルを準備する。この記事の説明では、以下のwebサイトから960x540ピクセルサイズのものをダウンロードした。

https://pixabay.com/ja/videos/カメ-海洋-野生動物-水中-244754/

このMP4ファイルは、30 fps(1秒間に30フレーム)で30秒の動画である。ここでは、最終的に15 fpsのAVIファイルに変換する例を挙げる。

AVIファイルに変換

まず、編集が容易なAVIファイルに変換する。これには、FFmpegを用いる。コンソールで、以下のように呼び出す。
ffmpeg -i original.mp4 -c:v rawvideo result.avi
「original.mp4」の部分には使用するMP4ファイルのファイル名を、「result.avi」の部分には任意のファイル名を指定する。

AVIファイルを編集

作成したAVIファイルを、Fijiで開く。この時、"Flip Vertical"にチェックを入れる。
open.png

次に、横幅を調整する。プルダウンメニューの、「Image->Adjust->Size」を選択する。
size.png
ここでは幅を336に変更するため、「Width」に「336」を入力する。「Height」は自動的に「189」になるはずだ。
resize.png

256 色パレットモードに変更する。プルダウンメニューから「Image->Type->8 bit Color」を選択する。
8-bit-color.png
通常は「256」を入力し、「OK」を押す。もし、動画再生時にキャプションをつけたいのなら、2色減らして「254」などとすることもできる。
mediancut.png


次に、フレームレートを 30 fps から 15 fps に変更する。半分の動画データーを捨てることになる。プルダウンメニューの「Image->Stacks->Tools->Deinterleave」を選択する。
deinterleave.png
半分の動画データーを捨てるので「2」を入力し、「OK」を押す。
de-interleave.png


「#1」と「#2」の2つができるので、どちらかを選択し、保存する。プルダウンメニューから「File->Save As->AVI」を選択する。
saveas.png
ここで「Compression」には「None」を選び、Frame Rateを「15.0」とする。
saveasavi.png

これで、MachiKaniaで再生できるAVIファイルが作成された。

アスペクト比を変えたいとき

上の例では、336x189のピクセルサイズの動画になる。MachiKania type PUでは336x216のピクセルサイズが画面いっぱいなので、上下が開いてしまう。336x216の動画にするには、以下のように操作する。

上の操作の「Image->Adjust->Size」のところ、「Height」に216を入力する。「Width」は自動的に「384」になるはずである。
resize-2.png


次に、画像ウィンドウ上で長方形の領域を、336x216のサイズで選択する。
rectangleroi.png
これは、ドラッグ&ドロップでも行えるが、「Edit->Selection->Specify」で数値指定することもできる(ただし、(384-336)/2 = 24 であることに注意)。
specify.png


ここで、プルダウンメニューから「Image->Duplicate」を選択する。この時、「Duplicate stack」のチェックボックスを有効にすること。
duplicate.png


あとは、上記と同じ方法で256色パレットに変更し、フレームレートを15 fpsに変更し、保存すればよい。]]>
MachiKania https://www.rad51.net/blog/mycom/?itemid=991 Sat, 24 May 2025 19:13:41 PDT ITEM991_20250524