3313461 ランダム
 HOME | DIARY | PROFILE 【フォローする】 【ログイン】

Bubble, bubble, toil and cuddle !!!

全196件 (196件中 1-10件目)

1 2 3 4 5 6 ... 20 >

作りモノ

October 7, 2021
XML
カテゴリ:作りモノ
今日は早めで帰宅は18時過ぎ。

mouse computer MB-B507H の通電しない原因を探るにはプローブ先の細いテスターが必要です。いや、ここで発想を転換して、プローブの先が細いUSBオシロスコープを確保するのはどうだろうか?! (どういう発想の転換や(^^;)

っちゅうことで、某ワンクリックなところで物色したところ、48MS/sec サンプリングで 20MHz 帯域の USBオシロスコープ KUMAN ISDS205A を発見しました。2ch あるし、20MHz まで測れるし、電子工作にも重宝しそうなので、これを確保。(^^;;

パッケージ内容
パッケージ内容

USBオシロスコープ本体、プローブが2本、PC接続用USBケーブル、ソフトウェアのCDが入っていました。ソフトウェアは最新のものがよかろうと、メーカサイトを見に行ったのですが、めっちゃ回線速度が遅い(56kbpsモデムより遅いかも(^^;;)ので、最新ではないけども新しめのソフトウェアが置いてあるGitHubのメーカサイトからMulti VirAnalyzer V3.12.1.1をダウンロードしました。

これを VB-R 二号機(Core i5 6200U 2.2GHz, メモリ4GB, Windows 11 Insider Preview)にインストール。Windows 11対応なんてどこにも書いてませんが問題なく動作しました。

Rspberry Pi Pico の NTSC 信号出力を観測
Rspberry Pi Pico の NTSC 信号出力を観測

接続は簡単でUSBオシロスコープをUSBケーブルでPCに接続し、プローブで測定点をクリップするだけ。PC側ではオシロスコープソフトウェアを立ち上げます。ソフトウェアで測定開始する方法が最初分からなかったのですが、CH1やCH2と書かれてるところをクリックして横のLED風表示が緑色になれば測定開始です。

PC画面上で測定できている
PC画面上で測定できている

NTSC信号の確認をせずに Raspberry Pi Pico のデバッグを行っていたのですが、このようにオシロスコープ画面で確認していれば、もっと効率的にデバッグできたかも。(^^;;

一応サンプリングオシロスコープなので、波形のワンショット記録なんかもできます。カーソルを出せば、時刻差や電圧差が測れるので、信号周期なんかも計算してくれます。

垂直同期信号周期は64usecになっている
垂直同期信号周期は64usecになっている

ナカナカ便利なツールが手に入りました。当面は高級テスタとして、MB-B507Hの各部電圧測定に使用される予定ですが... (^^;; 解析がはかどるといいけど。
--- 19:10 ---






Last updated  October 7, 2021 07:11:10 PM
コメント(0) | コメントを書く


April 26, 2021
カテゴリ:作りモノ
今日は在宅勤務。

お外は少し冷えていました。コートでも可、っちゅう感じ。
---

細々と作り続けていた Raspberry Pi Pico 用ゲーム第3弾(?) "DEFEND MONSTERS" が一応完成しました。

タイトル画面
タイトル画面

プレイ画面
プレイ画面

丸っこいモンスターをとげとげのモンスターから守る、っちゅうゲームです。とげとげのモンスターを全部(規定数)ショットガンで倒すとステージクリア。丸っこいモンスターが全部とげとげのモンスターに食われるとゲームオーバーです。もちろん、自分の体力(HP)が無くなってもゲームオーバーです。自分もモンスターも障害物のあるところは通れないし、ショットガンの弾も障害物で遮られます。

作ってはみたもののゲームバランスがイマイチ取れてなくてプレイが単調になってしまいます。

動くものが4種類(自分、モンスター2種類、弾)と動かないものが1種類(障害物=サボテン(^^)あって、それなりにコーディング量もあるのですが、動きがイマイチかも。当たり判定が厳しめなので、そこも問題かもしれません。

っちゅうことで、改良は連休中の宿題かな。ソースの公開は改良が済んでからにします。

一応プレイ動画

--- 19:20 ---






Last updated  April 26, 2021 07:20:04 PM
コメント(0) | コメントを書く
April 25, 2021
カテゴリ:作りモノ
今日は曇り。

曇ってても気温は高めです。
---

Raspberry Pi Pico のソースファイルはOneDrive上に置いて単身赴任先でも自宅でも開発ができるようにしています。神田装備で確保した dynabook AZ35/GB(Core i5 8250U, メモリ16GB, SSD512GB)で新たにRaspberry Pi Picoの開発環境を整えたところ、ソースのビルドでエラーが出ました。

ビルドエラーが出る
ビルドエラーが出る

エラーの内容は、

[build] -- The C compiler identification is unknown
[build] -- The CXX compiler identification is unknown
[build] CMake Error at CMakeLists.txt:2 (project):

で、C/C++コンパイラが見つからん、といった内容です。また、

[build] The CMAKE_C_COMPILER:
[build]
[build] C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/VC/Tools/MSVC/14.28.29333/bin/Hostx86/x86/cl.exe
[build]
[build] is not a full path to an existing compiler tool.

[build] The CMAKE_CXX_COMPILER:
[build]
[build] C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/VC/Tools/MSVC/14.28.29333/bin/Hostx86/x86/cl.exe
[build]
[build] is not a full path to an existing compiler tool.

とも文句を言われています。確かに dynabook A35/GB にインストールした Visual Studio 2019の cl.exe のパスは上記と異なっています。これはエラーが出ても仕方がない。(^^;

このCMAKE_C_COMPILERCMAKE_CXX_COMPILERで指定されるパスさえ正しくしてやればエラーは出なさそうなので、Visual Studio Code の拡張機能である CMake Tools の設定で環境変数を定義してみたりしたのですが、同じエラーが出ます。

ビルドしたソースは別のPCからビルドした後やったので、どうもそのPCにインストールした Visual Studio 2019 の cl.exe のパスがどっかに残ってるようです。が、どこに残ってるのか探すのは大変... (^^;;

それなら、っちゅうことで、buildフォルダを丸ごと消して、フォルダコンフィグレーションをやり直し、ビルドしてみたところ、コンパイルが通りました!

コンパイルするPCのVisual Studio 2019のアップデート具合が微妙に違う(cl.exeのパスが違う)ときに、OneDrive上の同じソースをコンパイルしようとすると、この現象に出くわすようです。解決策は、buildフォルダを一度消してビルドするということのようです。もっとスマートな解決法もあるのかもしれませんが... (^^;;
--- 11:10 ---






Last updated  April 25, 2021 11:13:17 AM
コメント(0) | コメントを書く
April 17, 2021
カテゴリ:作りモノ
今日は雨時々曇り。

午前中は曇りやったので、散髪に行きました。今日は珍しくおばちゃんに刈ってもらいました。頭スッキリ。
---

Raspberry Pi Pico の USB ホストモードで USB キーボードを接続したので、USBキーボードからのキー入力を扱うにはどうしたらいいのか、何となく雰囲気はつかめました。っちゅうことで、前に作ったスペースマウスもどきの"DROPPING MONSTERS"をUSBキーボードで操作できるように改造してみました。ソースは、pa-art/test_usb_hostの中にあるdropping_monsters_usbの中にあります。

キーを読み取るには、キーボードの状態を格納するhid_keyboard_report_t型の変数を定義して、その変数に格納されたキーコードを変換テーブルを使って対応するキーに変換すればよいようです。

キーボードの状態を読み取るにはtuh_hid_keyboard_get_report()関数を使います。引数にポインタ渡ししてるhid_keyboard_report_t型の変数にキーコードとかシフトキーなどの状態が入ってるので、return_key_code()関数でキーの情報に変換します。元々サンプルに入ってた変換テーブルはUSキー配列やったので、日本語配列に近くなるように変更を加えてあります(pseudo_jp106.h)。

ただ、この動作を行うためには、Tiny USBのホストタスクであるtuh_task()を無限ループ内で実行している必要があります。

また、最初にボードの初期化board_init()とUSBの初期化tusb_init()を呼ばないといけません。あと、コールバック関数、
void tuh_hid_keyboard_mounted_cb(uint8_t dev_addr)
void tuh_hid_keyboard_unmounted_cb(uint8_t dev_addr)
void tuh_hid_keyboard_isr(uint8_t dev_addr, xfer_result_t event)
を定義しておかないとコンパイルが通りません。(^^;

と、色々ややこしいのですが、何とかUSBキーボード対応に改造することができました。

USBキーボード対応の"DROPPING MONSTERS"
USBキーボード対応のDROPPING MONSTERS

ただ、家のUSBキーボードは認識されるときとされないときがあって、その識別のために画面の一番上に表示を追加しています。TinyUSBが何をしてるのか分らんのですが、NTSC表示にノイズが乗ることから割込も使ってるのかな??

USBキーボードでプレイしているところ


Raspberry Pi Pico + TinyUSB でのUSBキーボードの使い方は何となくわかったような気がします。
--- 15:15 ---






Last updated  April 17, 2021 03:15:12 PM
コメント(0) | コメントを書く
April 12, 2021
カテゴリ:作りモノ
今日は在宅勤務。

画像をASCIIアートに変換してくれるページ、AA変換(アスキーアート生成)、があったので、SIDBAの標準画像の Girl と Lenna をASCIIアートに変換してみました。SIDBAの標準画像は、神奈川工科大学 情報学部 情報工学科 信号処理応用研究室のダウンロードページからもらってきました。

で、何をしたかというと、Raspberry Pi Pico の NTSC出力で表示させてみた、というそれだけです。(^^;

Girl の原画像をPNGにしたもの
Girl の原画像をPNGにしたもの

GirlのASCIIアート(ネガ状態)
GirlのASCIIアート(ネガ状態)

GirlのASCIIアート(ポジ状態)
GirlのASCIIアート(ポジ状態)

ポジ状態は画像変換ソフトでネガポジ反転したモノです。ポジ状態にすると何となく雰囲気は出てるような気がします。(^^;; 同様に、Lennaは...

Lennaの原画像をPNGにしたもの
Lennaの原画像をPNGにしたもの

LennaのASCIIアート(ネガ状態)
LennaのASCIIアート(ネガ状態)

LennaのASCIIアート(ポジ状態)
LennaのASCIIアート(ポジ状態)

こちらもポジ状態だとそれっぽくはなります。

いずれにせよ、小さく表示してるからそれっぽく見えるだけで、クリックして元のサイズで見ると、何だかなぁ、っちゅう感じです。(^^;;

まぁ、こんな遊びではなく、ちゃんとグラフィック表示しろ、っちゅうことですか。(^^;; 今のままでは色数が足りん...
--- 19:20 ---






Last updated  April 12, 2021 07:20:03 PM
コメント(0) | コメントを書く
April 10, 2021
カテゴリ:作りモノ
今日は晴れ。

単身赴任先はまだ少し冷えています。コートを着てもまだ大丈夫。
---

Raspberry Pi Pico の USB のホストモードを使って、USBキーボードを接続して文字入力するサンプルがpico-examples¥usb¥host¥host_hidにあるので、それを動かしてみることを目標に実験してみます。

ホストモードのときの難点は、Raspberry Pi Pico の USB 端子がUSBデバイス用になってしまうため、5V電源を Raspberry Pi Pico に接続しないといけないことです。ブレッドボード上で 5V 電源を Raspberry Pi Pico に供給するために、秋月電子通商で売ってる、ブレッドボード用DCジャックDIP化キットを使って、5V ACアダプタから電力供給してみました。このとき、

+5V → VBUS (40ピン)

とします。GNDはRaspberry Pi PicoのどのGND端子につないでも構いません。

Raspberry Pi Pico と USBキーボードはどうやって接続するかっちゅうと、Raspberry Pi Pico のマイクロUSB端子に OTG ケーブルを挿して、その先にUSBキーボードを挿します。

さて、サンプルのhost_hidはメッセージとか入力されたキーを標準出力に出力しています。最初、USBシリアル変換を Raspberry Pi Pico につないで TeraTermでそれらの出力を見ようとしてたのですが、文字化けしたりしてどうもうまくいきません。

仕方ないので、標準出力に出力している内容をNTSCモニタに出力するようソースを少しいじりました。これで、USBキーボードで打った文字がNTSCモニタに表示できるようになりました。ソースはpa-art/test_usb_hostにあります。メインは host_hid.c です。

Raspberry Pi Pico と USBキーボード接続の様子
Raspberry Pi Pico と USBキーボード接続の様子

host_hid.cで何をやってるかイマイチ理解できてないので、USBキーボード入力部分を切り出して自分のプロジェクトに組み込みところまではまだまだですが、とりあえず、Raspberry Pi Pico のホストモードで USBキーボードが使えることは分かりました。

USBキーボードから入力している様子(ちょっと見にくいけど(^^)

--- 16:15 ---






Last updated  April 10, 2021 04:17:32 PM
コメント(0) | コメントを書く
March 25, 2021
カテゴリ:作りモノ
今日は早めで帰宅は18時過ぎ。

Raspberry Pi Pico の NTSC 信号生成もだいぶこなれてきたので、そろそろ関数群を別ファイルにまとめて使いやすくしました。pa-art/pico_ntscにファイルを置きました。releaseオプション(速度最適化)でコンパイルする必要があります。

pico_ntsc_grph.cに関数群が入っています。

// initialize video and LED GPIO
init_video_and_led_GPIO();
// initialize and start PWM interrupt by 64us period
enable_PWM_interrupt( );

これでグラフィックVRAMにデータを書けば画面に表示されます。ドットの描画は、

// to write a value into graphical VRAM located at (x, y)
void gvram_write ( int x, int y, unsigned char value );

です。valueは色で黒=0、白=1、グレー=2です。文字を描画するときは、

// put a character on VRAM
void gvram_put_char( int x, int y, char c, char col );
// put strings on VRAM
void gvram_strings( int x, int y, char *mes, char col );

を使います。colは色で先ほどと同じです。

このように関数をファイル分けしてからなぜか処理速度が上がり、画面の解像度が上がりました。(^^; 400x200ぐらい表示できるようです。ただし、縦横比が違うので円を描いても縦長になります。

pa-art/pico_ntscには今のところ、
・dropping_monsters:スペースマウスをリスペクトした(^^)ゲーム
・graphic_demo
がサンプルとして入ってます。

graphic_demoを実行した様子(円が縦長(^^)


これで色々作れそうになってきました。ただ、USBキーボードを接続して使いたいので、そっちの実験を優先するかもしれません。(^^;;
--- 20:40 ---






Last updated  March 25, 2021 08:40:52 PM
コメント(0) | コメントを書く
March 22, 2021
カテゴリ:作りモノ
今日は早めで帰宅は18時過ぎ。

Raspberry Pi Pico の NTSC 出力を行う際に今まではキャラクタVRAM方式を使ってました。VRAMにはキャラクタコードが格納されていて、水平同期信号に合わせて、そのキャラクタを描画する、という方式です。この方式はVRAMサイズが小さくて済む、という利点があります。

しかし、Raspberry Pi Pico には 264kB ものメモリがあるので、256x192のグラフィック画面に対して、1ドットをunsigned char (1バイト)で表しても48kBぐらいの VRAM サイズで納まります。残り200kBもあるなら VRAM にこれぐらい使ってもよかろう、っちゅうことで、

unsigned char gvram[256][192];

のように VRAM を確保して、水平同期信号に合わせて、1ドットずつ描画することにしました(グラフィカルVRAMと呼ぶことにします。)。この方式を使えば、現状の回路で1ドットに対して白、グレー、黒を表現することができます。もっと頑張って外付け回路作れば1バイト=8ビット→256階調を表現することができるようになると思いますが、とりあえずは頑張らない。(^^;

1ドット毎の描画っちゅうことなので、文字表示するためには文字を1ドットずつグラフィカルVRAMに書き込む関数を作る必要がありますが、フォントファイルがあるのでそんなに面倒でもありませんでした。

っちゅうことで、pa-art/test_ntsctest_ntsc_grph.cとしてグラフィカルVRAMのテストプログラムを置きました。

sinカーブもちゃんと描ける
sinカーブもちゃんと描ける

黒描画のタイミングが白/グレーに対して少し違うようなので、右端に行くほどフォントが潰れやすくなっているような気がします。何とかならんかな。(^^;;

また、ドットとしてグレーが表現できるようになったので、"DROPPING MONSTERS"の壁部分をグレーにしてみたバージョンをpa-art/test_ntsctest_ntsc_wall_grph.cとして置きました。とりあえず動かすことを目標にしたのでソースとは汚いですが... (^^;;

壁がグレーになっている(ハッシュパターンも込みで)
壁がグレーになっている(ハッシュパターンも込みで)

見た目は前とあまり変わりませんが、内部的にはキャラクタベースのマップ(vram)に描画用のVRAM(gvram)を追加して論理はほとんどいじらずに描画を変更しています。なので、見にくい。(^^;; 最初から設計しなおしたら違う実装があると思います。

グラフィカルRAM版の"DROPPING MONSTERS"プレイ動画


グラフィカルRAM版のNTSC出力の方が融通が利きそうなので、これからはこちらをベースにしていきたいと考えています。ドットの微妙なズレを何とかしたいけど...
--- 21:20 ---






Last updated  March 22, 2021 09:25:00 PM
コメント(0) | コメントを書く
March 20, 2021
カテゴリ:作りモノ
今日は曇り時々晴れでそれなりの気温。

今日は春分の日、昼と夜がほぼ同じ時間の日です。東京やとだいぶ春になった気がします。単身赴任先やともうちょっと経たんとあかんのやろな。
---

家のテレビに Raspberry Pi Pico の NTSC出力をつないだところ、上下が少し切れるけれども安定して表示されることが分かりました。

"DROPPING MONSTERS"プレイ中
DROPPING MONSTERSプレイ中

単身赴任先で開発用に使ってる小さいモニタでは文字が滲んで見にくいのですが、まともなモニタやとドットがくっきり映るんですね。(^^;

昼食を食べてからは、"DROPPING MONSTERS"のゲームパラメータの調整をしたり、"FLYING METEOR"にシューティング要素を加えたりしてました。ソースファイルはいつものpa-art/test_ntscにあります。

平和な春分の日です。
--- 15:15 ---






Last updated  March 20, 2021 03:16:02 PM
コメント(0) | コメントを書く
March 17, 2021
カテゴリ:作りモノ
今日は早めで帰宅は18時過ぎ。

その昔、PC-8001のゲームで遊んでいた頃、芸夢狂人という方が I/O 誌にゲームをたくさん投稿されてました。その中でもスペースマウス、っちゅうゲームが面白かったので、もう一度遊びたいのですが、いかんせん、PC-8001は動くかどうか分からん状態。(^^; それなら自分で作ればいいのでは?? と考えてました。

っちゅうことで、以前、Ichigo Jam の BASIC で作ろうとしたのですが、謎のバグに悩まされ断念した経緯があります。今回、Raspberry Pi Pico で NTSC ビデオ信号を出せるようになり、簡易ゲームパッドも作ったことやし、Raspberry Pi Pico 上で作ってみたら割とあっさり似たようなゲームが作れました。

スペースマウスっちゅうゲームは、

・迷路状になった階をスペースマウスを避けながら上へ上へと昇っていく
・下へは移動することができない
・ハート形のパワーアップアイテムを取ると一定時間壁をぶち破って上へ進むことができる
・スペースマウスやハートは一度左右のいずれかに動き出したら向きを変えることはない
・スペースマウスやハートは穴があると必ず下へ降りてくる
・250階まで行ったらその面はクリア
・酸素(Oxygen)ゲージがあって、それがゼロになるとゲームオーバー

という私の記憶を元に作成したのが "DROPPING MONSTERS"です。(^^;; ソースは、pa-art/test_ntsctest_ntsc_wall.cです。コンパイル時にはReleaseオプションでコンパイルする必要があります。

オープニング画面
オープニング画面

ゲーム開始直後
ゲーム開始直後

開始直後は地面の上にいる設定なので、下は全部*で埋めてます。

もうすぐクリア
もうすぐクリア

クリア(今回は150階の設定)直前になると屋上が見えてきます。

ステージクリア
ステージクリア

ステージクリア時に残り酸素に応じてボーナスがもらえます(オリジナルと同じ)。ステージボーナスも追加しました。(^^; また、3,000点毎にライフが1増えます(オリジナルは5,000点やったかな)。

ゲームオーバー
ゲームオーバー

上階に行くほどモンスター(スペースマウス)の出現数と移動速度が上がるようにしてあるので、終盤立ち止まってしまうと、モンスターの隙を伺うのが大変になってます。(^^;; 移動アルゴリズムは分かってるのですが...

プレイ動画


自分で作ったのにナカナカ面クリアできないので、くやしいです。(^^;; オリジナルと同じ250階設定にしたらたぶんクリアできない...

しかし、8ビットマシンでスペースマウスを作り上げた芸夢狂人さんは素晴らしい人です。尊敬してます。
--- 20:05 ---






Last updated  March 17, 2021 08:07:08 PM
コメント(0) | コメントを書く
このブログでよく読まれている記事

全196件 (196件中 1-10件目)

1 2 3 4 5 6 ... 20 >

PR

X

© Rakuten Group, Inc.