https://tonarinoyj.jp/episode/13933686331793273798
ワンパンマン、新しいの来てた。
年末に書いてたように、唯一もってた2現象のUSBオシロ
DSO2150が壊れちゃったので、
https://brown.ap.teacup.com/nekosan0/4426.html
同じHantekのもっと安いUSBオシロを注文してた。
例によって中華オシロ。
https://brown.ap.teacup.com/nekosan0/4429.html
届いた。Hantek 6022BE。
まだ箱開けてみただけで、PCと接続してないんだけど、
とりあえずブツは一式入っているっぽい感じ。あとで
動作確認する。
なお、これって型式自体はそんなに新しくなくて、付属
のCDに入ってるドライバがWindows7用だったりするので
要注意っていう話があちこちで聞かれている。
https://t3e.jp/hantek-6022be-windows10-64bit-use/
https://androiphone.uvs.jp/?p=2604
https://pavement1234.net/usb_oscilloscpe_hantek_6022be/
下手にWindows7用ドライバをインストールしちゃうと、
削除するのに結構大変らしかったりするみたいなので、
まずはドライバとかソフトとか一式(4ファイル)を
公式サイトからダウンロードしておいた。
http://www.hantek.com/en/productdetail_2_31.html
(Windowsのドライバーストアって仕組み、あれって
メリットあるのかな?デメリットの方が多い気がする
んだけどなぁ)
このオシロ、世代的にはDSO2150とかと一緒だと思うんだ
けど、DSO2150はメーカーがサポートしなくなっちゃってる
のに対し、6022BEはまだWindows10のドライバとかを
メーカーが公開しているので、その点が安心だった。
(DSO2150をWindows10で使うの、ちょっと苦労した)
スペック的には150MspsのDSO2150に比べてだいぶ落ちる
んだけど(48Mspsと1/3くらいのスペック)、これでも
ビデオ信号くらいなら普通に見れるはずなので、まぁ
当面はこれでいいかなと。
スペック的に不満になったら、その時また新しいのを
買えばいいかなと。
https://www.youtube.com/watch?v=64prHmlVt0E
ロードスター乗りの知人から、「S660販売終わっちゃう
前に買った方が?」ってすすめられたんだけど、どうやら
終わっちゃうって情報があるわけじゃないみたい。
ちなみに、先月売れた台数は226台らしい。
(正しい数値かどうかは検証できてないので注意)
https://www.youtube.com/watch?v=llqPdt3FC5U
もへじさんの動画。成田新幹線のお話の第1話。なかなかに
面白い。
https://www.youtube.com/watch?v=9-nQUjPu-CA
いつもの熊五郎お兄さんの動画見てたら出てきた
QCシール。
https://www.shigezone.com/?product=qclabel
売り切れてた…これ面白いなぁ。Shigezoneさんの
ところで作ったのかなぁ?それとも、Aliexとか探すと
出てくるのかなぁ?
https://twitter.com/memorydirect1/status/1349548371128684544
なんとなく、頭の中に「末端価格」という言葉が思い
浮かんだ。
https://www.youtube.com/watch?v=RFZVJB2PKJQ
電力需給が厳しい理由。お天気だけじゃなく、電気関係
についてもすごい詳しいな、ぐっさん。
https://www.youtube.com/watch?v=00v_8RqCKYs
電飾の木を自作するだけじゃない。電気関係お手の物
ってことなのかな。
こないだ見つけた、オセロを小一時間で作ってみちゃう
動画から繋がって、小一時間でライフゲームを作っちゃう
動画を眺める。あまり飛ばさずに結構じっくり見てた。
オセロもライフゲームも、昔BASICで組んだ記憶がある
ので、オイラのアタマの中の記憶と比較しながら見てた
んだけど、かなり効率的な処理方法になってるなぁ、と
感心しながら見てた。
https://www.youtube.com/watch?v=zywruyyURlY
GUI全盛になっちゃってから、あまりその手のプログラムを
書こうって気にあまりならなくて、一番大きい理由はやっぱ
その手の環境に合わせたコーディング環境を考えるのが
面倒だったり。
でもCLI環境だと、エスケープシーケンスとかもろもろ、
画面表示で面倒があるし、じゃぁguiをtkinterで、なんて
思ってもいざ組み始めようと思うとおっくうになって
しまったり。
で、この動画見てたら出てきた「_getch関数」なんていう
のがあるのか…。ちょっと敷居が下がったぞ、と思って、
ちょっと簡単なプログラム書いて動作を見てみようと。
VirtualBoxのCLI環境でやってみた。
…なんか、エラー出た。どうやら、こういう関数使えるのは
MS-DOS~Windows環境だけなんだな。そうか。
調べてたら、ほぼ同じような関数使える環境として、ncurses
の名前が出てきた。改めてncurses関係を調べなおす。
https://qiita.com/kaityo256/items/80863d466e0d69808eb9
ほほう。なんかイイカンジのチュートリアルになっている
なぁ。ブロック崩しなんだけど、マウスカーソルの座標で
操作するっていうやつ。面白そう。
Hello, Worldの手前からのチュートリアルになっている
ので、以前途中でめげたオイラでもやってみる気になった。
あらためてncursesをちょっと弄ってみる。
まず、このチュートリアルをやる前に、ncurses関係の
パッケージをインストールしておく。(Debian系の場合)
sudo apt-get install libncurses5-dev libncursesw5-dev
で、あとはここに書いてあるようにプログラムをテキスト
エディタで入力して、g++でコンパイル。ポイントは、
リンクのスイッチ(-lncurses)を付けてコンパイルすること
みたいだな。(こういうところがオイラは全然弱い)
g++ hello.cpp -lncurses
(ソースファイルがhello.cppの場合。なお、-oスイッチ
をつけて、実行ファイル名指定しておいた方がいいよね)
g++ hello.cpp -lncurses -o hello
実行。
./hello
でたでた。なんか、P8とかPC88とかで、BASICでlocate
命令使ってprintしていたころを思い出しす。よいよい。
まぁ、違うことがあるとしたら、ncursesにしてもtkinter
にしても、多分内部がダブルバッファになっていて、
「バッファ側をクリア」→「描画処理」→「refreshで反映」
みたいな流れで表示させるって辺りかな。
BASICなら、1命令実行するごとに結果が画面に反映される
わけだけど、最近のこの手の環境だと、とりあえず表示内容
を編集して、そのあとに一気に画面表示に反映っていう流れ
になってて、そういう処理方法って、なんかいまだに
なじめないんだよな。
(tkinterとか、HSPとか、最近いじったものは大体そんな。
ちなみに、オイラがArduino用に作った、OLEDモジュールや
LCDマトリックスモジュール用のグラフィックライブラリは、
当然ながらかつてのBASICみたいに、命令実行後に即時反映
されるタイプ)
あと、このチュートリアルをLinux(Ubuntu Mate20.04)で
実行してみた結果、いくつか引っかかった点があったので、
その内容と対策をメモに残しておく。
(1)リンク方法
ブロック崩しのプログラムの場合、スレッド処理を使って
いるんだけど、コンパイル時に上記のように「-lncurses」
だけしかつけてないとエラーになっちゃう。具体的には、
「undefined reference to `pthread_create'」
っていうエラーが出る。
検索してみると、
https://qiita.com/kazatsuyu/items/5c8d9f539cd925fda007
このページの真ん中辺にあるように、「-pthread」って
いうスイッチつけてコンパイルする必要があるみたい。
たとえば、
g++ breakout.cpp -lncurses -pthread -o breakout
といった具合。
(スイッチ書くの面倒くさいので、多分makeファイルを
書いちゃう方がいいと思うんだけど、面倒だったので、
このコンパイルのコマンドをテキストファイルに保存
しておいて、shコマンドで実行させるようにしてた)
(2)マウス移動のイベントが取れない
このページでは、環境変数の「TERM」に「xterm-1003」を
設定しておくと、マウスをクリックしたりしなくても、
移動して座標が変化するだけでイベントが発生して拾って
くれるって書かれているんだけど、頑張ってみてもなんか
上手くいかなかった。
(ネイティブ環境でOS動かしてるわけじゃなくて、
VirtualBox上で動かしているからかもしれない。ちなみに
クリックした瞬間はイベントが発生してくれるので、
このプログラムのままでも、クリックさえすれば、パドルが
マウスカーソルのx座標に移動してくれる)
仕方ないので、マウスカーソルの座標で移動させる代わりに、
キーボードからの入力で左右移動させるように、一部コード
を書き換えてみた。
(3)abs関数の絶対値
いざ動かしてみたところ、とりあえずパドルから玉を発射
して、上に向かっていったまではいいんだけど、天井に
ぶつかった時に、Y座標用の速度(vy)の絶対値が反転せず。
同様に、右端にぶつかってもX座標の絶対値が反転せず。
(vy、vxの値が0になっちゃってるみたい)
コードを眺めても、そんなことにならないんじゃないかなぁ?
なんでだろう?と頭を悩ましたんだけど、なんとなく気に
なって、絶対値を求めるabs関数って、整数型も浮動小数型
も、どっちも使えるんだっけ?と思って検索。
どうやら、floatとかdouble型だと、違う関数使うものみたい
なんだよな。うん、やっぱそうだよな。
ってことで、ちょっとロジックをいじりなおす。abs関数を
使わずに、単純にvxとかvyの値の符号を逆にするだけ。
反射するだけだからな。
(例えば、absを使わずに、「vx = -vx」とかに置き換える)
で、ようやく動いた。まぁ、ゲームを実際にやりたかった
わけじゃないから、動いた動いた、ってところまでで
終了。
なんにしても、ncurses使ってCLIアプリを作る入り口には
入れたみたいだな。よかった。
ちなみに、ncursesはC言語で使いたいっていうわけじゃ
なくて、どっちかっていうと、最近使ってるPythonとか
Rubyとかから使いたいんだけどな。その辺をもうちょっと
弄りなおしてみようかなぁと思っているところ。
https://twitter.com/qx5k_iskw/status/1349324001391243265
https://twitter.com/qx5k_iskw/status/1349323619151724544
知らなかったな。AVR128DB28。
28ピン DIPってだけでもうれしいんだけど、メモリマシマシ、
マルチ電圧I/O、CCLなどなど。いいねぇ。
これを使ったArduino後継機なんて、出てこないかなぁ?と
期待してしまうよな。
|
|
|
|
|
|