「PIC AVR 工作室」サイトの日記的なブログです。
サイトに挙げなかった他愛ないことを日記的に書き残してます。
PIC AVR 工作室 ブログ



こないだ壊れたDSO2150の代わりに買った、同じHantekの
6022BEが届いてるので、繋いでセッティングしておく。

まず、付属品を改めて確認。本体、USBケーブル、プローブ
×2、CD-ROMといった具合。ちなみにUSBケーブルはDSO2150
と同様に、汎用じゃないケーブルが付いてる。
(オシロ側は普通のUSBコネクタ形状なんだけど、PC側は
二股に分かれてて、多分片方が電源供給用、もう片方が
信号用だと思う。両方をPCに挿せば動く)

で、当然のようにドライバが当たってないので、公式ページ
からダウンロードしたドライバを当ててやる。

http://www.hantek.com/en/productdetail_2_31.html

ドライバのzipファイルを解凍しておいて、デバイスマネージャ
開いて「!」マーク付いてるデバイスについてこの解凍した
フォルダを指定してやればよし。
ただし、いつものことだけど、Windows10って、なぜかこういう
ドライバの設定するたびに「デバイスマネージャ」を開くまでが
一苦労なんだよな。
(他の設定画面からでもドライバの設定ってできるものなの?)


ドライバを当てたら、同様に公式ページからダウンロードして
おいたアプリをインストールして実行。(マニュアルpdfも
あるので一緒にダウンロードしておくとよいかと)




プローブを1chに繋いで、本体背面にある補正用の矩形波を
出力する端子に繋いでみたところ。2V 1kHzの矩形波が出て
いるらしい。

トリガ条件の設定とかトリガレベルとかをいじってみて、まぁ
普通に動くことを確認。2ch側もちゃんと動くか確認しておいた。


ちなみに、メニューから設定いじると、このように左側に
メジャーウィンドウっていうのと、下側にディスプレー
アウトプットウィンドウっていうのを表示できて、例えば
左窓で「RMS」って選ぶと電圧の平方値の平均の平方根が
下窓に表示されたり。そのほか、PtoPとか、平均といった
値も表示できるし、周期や周波数、デューティーサイクル
なんかも表示できる。


で、ひとまず本体が機能することは判ったので、そういえば
DSO-2150同様にこれもFFT対応してたはずだよなと思って、
アプリ側のFFTモードを探すんだけど…なんか見当たらない。

一旦機材を片付け。


あらためて型番でFFT表示について何か情報ないかな?と
思って検索してみると、どうやらあるっぽいな。というか、
そもそもマニュアル読めば書いてある。



メニューアイコンにある、加減乗除のアイコンをクリック
すると、計算メニューのダイアログが出てきて、そこで
FFTを選んだり、2つのチャンネルの信号を加減乗除して
表示したりできるみたい。あぁ、このアイコンは触って
なかった。
(DSO-2150をいじってた頃には、ファイルメニューの
どこぞやからFFTに入れたんだよな。その辺のUIがガラッと
変わったみたい)

まぁ、あとであらためていじりなおしてみよう。





あと、USB接続なわけなので、サンプルデータをPCに
取り込めないと困るよなと。ハードコピーだけだと
少し物足りないわけで。
で、マニュアルを見ると、



ファイルメニューからsave dataって進めばできそうな気が
するんだけど、以前DSO-2150ではデータは使ったことが
無かったんだよな。波形情報を保存しておいて、あとで
その波形データを呼び出して表示するっていうのには使った
ことがあるんだけど。

EXCEL形式やCSV形式でデータが保存できるのかどうかも、
あとで確認してみよう。
FFTモードにした場合なんかは、素の波形じゃなく、
スペクトルの波形が保存できたりするのかなぁ?


とりあえずDSO-2150の代わりとして、一番安かったこれ
を買ったんだけど、サンプル速度が48Mspsで、DSO-2150
の1/3以下だったり、ACカップリングが無かったりする
ものの、まぁ、当面使うにはそれほど困らないスペック
なんじゃないかな。
3MHzちょっとのビデオ信号くらいまでなら、全然問題なく
きれいに見れるだろう。


そういえば、このアプリは、少し不満があるといえばある
んだよな。((1)はDSO-2150用を使ってた時からの不満)

(1)FFTの表示

横軸に周波数が表示してくれないので、スペクトルが表示
されても、ぱっと見、それぞれの山がどのくらいの周波数
なのかがよくわからない。

(2)トリガ位置

トリガを掛ける電圧は設定できるんだけど、トリガを掛ける
タイミングを設定する部分が無いので、どこでトリガが
かかっているのかが分からない。

といったあたりかなぁ。細かいところをいえば他にも
あれこれあるんだけどな。以前秋月で買ったPicoScope
(ペン型オシロ)のソフトの方が使いやすいんだよな。




http://galaxyheavyblow.web.fc2.com/fc2-imageviewer/?aid=1&iid=136

ワンパンマン、新しいの来てた。(原作の方)




いつものひよりふぁくとりーchの動画来てた。例の白い
キラキラゲーミングPCを組み立て。

https://www.youtube.com/watch?v=-uAitRzEI0E

いつも思うんだけど、やっぱり動画の編集クオリティが
いつもすごい高いよな。




https://www.youtube.com/watch?v=8NEvbYg4W38

かほなんさんの動画、こないだの自作薪ストーブと自作
シェルターで冬山キャンプっていう、なんか例によって
いきなり実践投入してるんだけど、場所がforenta
(東白川村)って書かれてて、ここどこよ?って思ったら、
岐阜県だった。福島かと思ったんだけど、福島県だと
村じゃなく、東白川郡だな。

で、そのforentaっていうのは、「森林レンタル」って
いうものらしくて、森林を借りてキャンプとかするための
本格的なフィールドを間借りするサービスみたい。へぇ。

で、かほなんさんは、そこのスペシャルアドバイザーとして
紹介されていた。もう、アイドルというよりこっちが本職
なんじゃ?




http://radiopench.blog96.fc2.com/blog-entry-1069.html

https://www.hackster.io/mircemk/extremely-simple-oscilloscope-clock-with-esp32-789a08

ほほう。ESP32を使ってオシロに時計表示。

以前、オイラもArduinoつかって簡単な絵を表示したいと
思ったりしたんだけど、なんかうまく仕上がらないまま、
とちゅうで放置してあったんだよな。

ESP32は、そもそもDACが2ch内蔵されてるんだな。これを
使えば結構面倒なく、楽にできそうな気がするなぁ。

https://qiita.com/tkyko13/items/2a2dec7180fd2430bb08

D25、D26がDACなんだな。





https://twitter.com/furima2733/status/1350002859199193089

スカンチ。



コメント ( 0 )




昨日、Pythonのncurses(curses)についてあれこれ
調べてて、なんとなく動きそうな感じだったので、
VirtualBoxのUbuntu Mate上であれこれ実験してた。

結果、とりあえず簡単な文字表示とか、キー入力とかを
行う実験ができた。

書いてみたスクリプトがこれ。

#!/usr/bin/env python3

import time
import curses

stdscr = curses.initscr()

def test3(stdscr):
  stdscr.clear()

  for i in range(10):
    stdscr.addstr(i, 5, str(i))
    stdscr.refresh()
    time.sleep(0.1)


  while True:
    c = stdscr.getkey()  # getch()
    stdscr.clear()
    #curses.beep()
    stdscr.addstr(10, 10, str(c))
    stdscr.refresh()
    if c == "q":
      exit(0)


curses.wrapper(test3)

すごく簡単な内容にとどめてある。
処理内容としては、前半のfor文で0~9の数字を0.1秒ごと
に表示するもの。後半は、キー入力された文字を画面に
表示するんだけど、「Q」キーが押されたら終了。

このあたりの処理は、使ってる関数(メソッド)がcurses
関係のものであるってこと以外は、特に難しいものはない。
多分、cursesを使って入力や表示を行うPythonスクリプト
としては、これがだいたい最小のひな形的に使えるもの
じゃないかなと。


いくつかポイントとなるところがあるので、忘れないように
メモしておく。


(1)ライブラリのimport

Ubuntu Mateでは、どうやら最初からcursesが取り込まれて
いるっぽい。
(もしかしたら、こないだncurses関係のパッケージを
aptでインストールしておいたことで使えるようになって
いるのかもしれないけど、詳細はちょっとわからない。
ただ、Python3を入れるか、プラスしてncurses関係の
パッケージを入れる程度で使えるみたい)

冒頭でcursesをimportしておいて、curses.init()メソッド
を呼び出すと、初期化された画面が返ってくるので、
そのオブジェクトの各種メンバにアクセスすることで、
画面に書き込んだり、(アクティブになってる画面上で
キー入力された)キー入力内容を取得したりできる。


(2)wrapper

上記の表示や入力といった処理を行うだけなら、最後の行
に出てくるwrapperは使う必要がなくて、単にメインロジック
部分をだらだらと書けば動いちゃう。
(ただし、プログラムの終了時に、忘れずに「curses.endwin()」
を呼んでおかないと、画面表示やキー入力が、コマンドライン
に戻ってもおかしな感じになっちゃうので注意)

けど、それだけだと支障がある場合がちらほら出てくる。

具体的には、エラーでプログラムが中断したり、なにか
例外が発生してプログラムが終了しちゃったり、さらには
Ctrl-Cで強制終了させたときにも同様。
(端末をいったん終了させて、再度起動しなおさないと
いけなくなっちゃって、とても不便)

なので、そういったことを踏まえて、意図せずに途中で
終了しちゃっても、コマンドラインに戻った時にちゃんと
画面表示やキー入力ができるようにするのが、wrapper。

メイン処理として処理させたい内容を上記のプログラム
みたいに関数にまとめておいて、wrapperの引数に指定
して、wrapperからその関数を起動することによって、
途中で意図せず終了しちゃっても、コマンドラインが
普通に機能する様にできるという次第。
(なので、これはやっておいたほうがいい、というより、
やらないと絶対困ることになる)


(3)ダブルバッファ

表示を行うメソッドを呼び出しても、その時点では実際の
画面には反映されないし、画面クリアをしても、その時点
では画面はクリアされない。描画やクリアの処理をした
時に内容が更新されるのは、表示前の「バッファ」側の
方で、そのバッファの内容を実際の画面に反映させるには、
refreshメソッドを呼び出す必要がある。

つまり、表示に使っているバッファと、描画処理を行って
いるバッファの2枚(ダブルバッファ)の構成になって
いるので、クリア処理や表示処理をある程度行った時点で、
その内容を画面上に反映させるために、refreshを行う
ことを忘れてはいけない。(忘れると表示内容いが反映
されない)


といったあたり。
多分、そのあたりを踏まえておけば、あとはどんなメソッド
があったりするのかを調べれば、あんなことやこんなこと
ができるはず。


Linux上では動くことが判ったんだけど、せっかくのPython
なので、このままWindowsのidleで動くかなぁ?と思って、
ちょっと実験してみるも、なんかエラーが出る。

そもそも、idleのコマンドライン的なアレって、端末と
おなじことできるのかなぁ?と思って、ちょっと調べてみた。

https://www.raspberrypi.org/forums/viewtopic.php?t=236107

これはRaspberry Piのidleの話だけど、どうやらidleの
コマンドラインは、端末と同様のエミュレーションは行って
いないということらしい。なら、Windowsでも同じだよな。





ダブルバッファといえば、I2CのOLED液晶SSD1306用にオイラ
が書いたオレオレライブラリ。あれは内部にバッファを確保
しているものの、ダブルバッファではなく、バッファに
書き込みすると同時にOLED画面上にも反映させちゃうので、
いわゆるダブルバッファではないんだけど、あれを使って
オシロを作るとして、気になっているのが表示速度。

オシロの表示処理で、どのくらいのデータ通信が発生する
のかで、画面の更新頻度(FPS)が変わってくるんだけど、
波形をドット表示機能で「消去+描画」するのと、ダブル
バッファで全面書き換えるの、どっちが速いの?と。

ドット単位で書き換えするとなると、横方向にずらずらと
消去してから、新しい波形を描画することになるんだけど、
画面の横方向だいたい3/4くらいをグラフの表示領域として
つかっているので、96ドット分くらいかな?
1ドットずつひょうじするとなると、アドレス指定+データ
の最低でも2つのデータを通信する必要があって、それを
消去と描画するとなると単純に2倍。だいたい400回くらいの
通信があるって考えておけばいいのかなぁ。(合ってる?)

一方、ダブルバッファ方式で、全画面転送するってなると、
1kB分(128ドット×64ドット÷8ビット)のデータ転送が
必要。たしか、アドレス指定は最初の1回だけで、あとは
データだけダラダラと転送すれば、よかったはず。つまり、
およそ1000回くらいデータ転送すれば、全画面の更新が
できるはず。

検索してみると、

http://blog3.narimatsu.net/article/181218a

ダブルバッファでの転送に必要な時間は、100kbpsの通常
速度では、1回あたり0.08秒らしい。
ドット描画方式でクリア+表示をしても、その半分くらい
の速度にしかならないので、大同小異ってところなんだなぁ…。
ドット表示方式でも、もっと速いと思ってたよ…。


まぁ、ダブルバッファ方式だとしても、以前ラジオペンチ
さんが作られていたペン型オシロ(使っていたライブラリ
が確かダブルバッファ方式だったかと)が、結構ちゃんと
実用レベルの表示更新頻度だったので、ダブルバッファ
方式でもいいのかもしれないなぁ…

現状のオレオレライブラリだと、ダブルバッファ方式には
対応してないんだよな。(処理した直後に反映されてない
のは、ちょっとキモチワルイ気がして)

オレオレライブラリでも、こういう風にダブルバッファで
描画処理と反映処理を分ける方法も使えるようにしておいた
方が、応用するのに便利なのかもしれないなぁ…。などと
思ったりしてるところ。
(速度気にするほどじゃないSPI方式のモジュール用と
ロジックを共用しているので、あまりいじりたくはないん
だけどなぁ)





https://twitter.com/Shepherd4013/status/1350435144755146753

ウレタンマスクとポリエステルマスクの違い…ぱっと見
はよくわからないよなぁ。
ウレタンマスクはあれこれ言われているけど、ポリエステル
マスクは、不織布マスクと同じくらい高性能なのか。へぇ。



コメント ( 0 )




改めてncurses。

昨日書いてたように、以前からncursesを自由自在に
使いたいと思っていたものの、環境周りとかで面倒に
なって投げてたっていう状況だったんだけど、C言語
(というかC++)ではそれっぽく思ったように動かせた
ので、気を取り直して、PythonやRubyでncursesを使う
方法について調べなおしてた。

以前どこでどんなふうにつっかえて投げ出したのかを
正確なところは忘れちゃったんだけど、なんかいくつか
環境周りでアレだったのはかすかに記憶が。

https://docs.python.org/ja/3/howto/curses.html

https://docs.python.org/ja/3/library/curses.html

https://qiita.com/floatnflow/items/1710b0bdd529e4e3a28a

http://sumitomohiko.hatenablog.com/entry/20070507/1178541054

うんうん。うんうん。なんかイイカンジに使えてる
感じで使えてる風のお話がちらほら。情報もPython
公式で挙げられてる。

で、じゃぁインストールが出来ちゃえば使うのは楽々
なんじゃないか、と思って調べてみる。

https://stackoverflow.com/questions/33271000/install-ncurses-on-python3-for-ubuntu

あぁ…。Python2と3でゴニョゴニョって話がまた出て
きてる…。5年前の情報なので、ここから何か進歩
しているのかはよくわからないんだけど…

ひとまず、VirtualBoxのUbuntu Mateを起動して、
端末でPython3を起動。インタプリタモードで
 「import curses」
と打ってみると…読み込めた。ちょこっとコマンドを
ポチポチ打ってみると、それなりにうごくっぽい感じ
がする。(インタプリタモードなので、cursesとは
相性悪いので、まともに動くわけではない)

じゃぁ、ncursesはどうなの?と思って、再度Python3
を起動して、
 「import ncurses」
と打ってみると…読み込めた。ただし、cursesとは
実装が全然違うみたい。同様のコードを動かしてみても、
違うメソッド名になってるみたいで、cursesでできた
ことがエラーになったり。

詳しくは判らないけど、なんとなく、あれこれできる
っぽいことは見えた。もうちょっとちゃんとコードを
書いて動くものなのか試してみよう。




安物小型オシロといえば、やっぱDSO SHELL(DSO150)
が筆頭にあがると思うんだけど、あれの次に来そうな
小型(超小型)オシロが出てきたみたい。

https://www.youtube.com/watch?v=VDRwiqwfhw4

DSO188っていうやつ。ものすごい小さいんだけど、
コアCPUがもうちょっといいやつになっているみたいで、
スペック的には少し良くなってる。

アナログ帯域、DSO SHELL(DSO150)は200kHzだったけど
(動画では70kHzって書いてあるけど多分間違え)、この
DSO188は、300kHzまで行けるみたい。
(ホントかなぁ?どっちのスペックを見ても、サンプリング
自体は1Mspsなんだけどな…同じじゃないかな?)

まぁ、何より小さい。で、バッテリー内蔵しているので、
本体だけで駆動できつつ、外部給電しながら動かすことも
できるっぽい。

そしてなにより、小さくて薄い。それはなかなかよい。

気になる点としては、操作系が「ロータリーエンコーダ」
じゃなくて、ボタン操作なこと。
あと、詳細が分かってないので何とも言えないんだけど、
カップリングはAC、DC両対応なのかが不明。その手の
スイッチ類が無いように見えるので、DCカップリングだけ
なんじゃないかなぁ?という気がする。

なんにしろ、Aliexでは30ドル以下で売ってるので、今
買うなら、DSO SHELL(DSO150)じゃなく、こっちでもいい
んじゃないかな?という気がする。
(ちなみにオイラはDSO SHELL(DSO150)がまだちゃんと
動いているので、すぐに買おうという気はない)




https://www.youtube.com/watch?v=GNemNNFwHZg

「読みとーるオルゴール」
面白い。音色がさらにオルゴールっぽいものにしたり、
シンセを使ってもっといろんな音色で奏でられたり
したら、かなり良さげな気がするなぁ。

あと、読み取りをモータ制御にせずに、あえて手動に
しちゃう方が「オルゴール」感がよく出るんじゃない
かなぁ?とか思ったり。




https://www.youtube.com/watch?v=Bx4c-O17qpE

ICHIKENさんのオルタネータの解説動画を眺めてた。

知らなかった。界磁ってモノを使うことで、エンジンの
(というかオルタネータの)回転数が変化しても、
発生させる電圧が急上昇したり急下降したりせず、一定
の電圧を発生させることができるのか。

オイラてっきり、DC/DCコンバータ使って、電圧を調整
しているものとばかり思ってた。

もし、バッテリーが満充電になった場合は、それ以上
充電しないためのしくみってどうなってるんだろう?
(バッテリー電圧と充電電圧が等しくなったら、それ以上
充電されないよね、っていう仕組み?)




https://twitter.com/kidkaido/status/1349927244202819585

国民皆保険云々の話。
まぁ、所信表明か何かで、「自助、共助、公助」って
言ってたわけだから、こんな発言が出てくるのなんて
特に不思議でも何でもないんだけどな。このじーさん
なら、当然そういうことを考えているんだろうし、
それがうっかり口が滑っただけなんだろうな。

さすがとしか言いようがない。(もちろんほめてない)





https://www.jiji.com/jc/article?k=2021011500149&g=soc

>「老化細胞」除去する薬剤 動脈硬化や糖尿病改善
>―東大など

すっごいね。これ、どういう仕組みなのかはよく解らない
けど、いわゆる成人病の予防につながるすごい研究
なんじゃないかなぁ。
医療費削減につながるのか、それとも、もしかしたら
世の中に、体だけは健康な老害があふれることになって
しまうのか…




コメント ( 0 )




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後継機なんて、出てこないかなぁ?と
期待してしまうよな。



コメント ( 0 )




ちょっと困ってる。

古いノートPCを処分するのに、以前これを買ったときにSSD
のOS丸ごとバックアップイメージを作っておいたはずなん
だけど、そのイメージが、バックアップ用HDDのどこにに
置いておいたのかが見つけられない…。

さんざん探してみたんだけど、見つからないので、他の
HDDに保存しておいたんじゃないかな…っていう気がしてる
ところ。でも、オイラの記憶ではほかのHDDには保存してない
ような気がするんだけどな。

とりあえず、手持ちのHDDを片っ端から見ていくしかない
かなぁ。
最悪の場合、奥の手っていうのもあることはあるんだけど、
セキュリティー的にアレなので、あまり使いたくはないん
だよな。





https://twitter.com/twi_kingyo/status/1348972958203539462

京都。92Vまで下がってたらしい。

https://twitter.com/azzurrissimo12/status/1348815694343729152

東京。95%を下回って、約94%。やっぱり相当やばい状態
だったんだな。

でんき予報。



相当やばい需給状況だったみたいなんだけど、そもそもこの
グラフ、なんで5000ちょうど付近でフラットになってるんだ
ろうなぁ?
あと、明日の予想見ると、需要ピーク時の16時台をみると、
供給より需要が上回っているように見えるんだけど、ホント
大丈夫なのこれ?ダメなんじゃないの?


https://twitter.com/Twilightepco/status/1348606208844853248

12日が危ないって話だったみたいなんだけど、11日も同じ
ような天候だったのになんで?って思ったら、11日はお休み
だったんだな。そうか。

https://twitter.com/micacimica/status/1348507129540345858

試乗変動型の電気料金、すごいことになっちゃってるらしい。
(電気料金が8倍に膨れ上がる)


思うんだけど、冬場って、コンビニとかスーパーとかで売ってる
冷たいドリンク。
ああいう陳列棚のヒートポンプって、こういう季節に本当に
必要なのか疑問なんだよな…。

なので、ああいうのを、全企業全店舗で、一斉にオフにして、
常温で販売してもいいんじゃないのかなぁ?と。冬なんだから、
常温でもソコソコ冷たいし、どうしても冷やしたいなら、家に
持って帰ってから冷やした方が、エネルギー効率的にはいい
んじゃないのかなぁ?って思うんだけどな。

ちなみに、家庭用の冷蔵庫では、そういうわけにいかなくて、
肉や魚、野菜、冷凍食品などなど入っている家庭用冷蔵庫は、
オフにしたら食品が腐っていっちゃうのでだめ。
でも、ドリンク類なら、多少温まって常温になっても、腐る
わけじゃないし、冬場ならそれなりに冷えてるし、家の
冷蔵庫で冷やしてもそんなに時間要らないんじゃないかな、と。



そうそう。寒さ対策といえば、数日前、あまりに寒いので、
とうとう「着る毛布」をAmazonで注文してしまった。届いて早速着て数日使ってみた感想。

うん、まぁ悪くない。腰で結ぶベルトも付属してたんだけど、
オイラ的にはこれ要らない(使わないので、多分捨てちゃう)。

あたたかさ的には、可もなく不可もなく。暑くなるってほど
ではないけど、これ着ていれば、確かに寒さには対抗できる
感じがある。

あと、静電気的にどうなの?と気になっていたんだけど、
届いた直後はちょっとびりびり来るものがあったものの、
数回、着たり脱いだりしていたら、びりびり来なくなった。
快適。
(まぁ、その辺は内側に来ている服の素材次第なんだろう
けど、ちなみにこれの内側に着ているのは、ユニクロの
フリースだったりする)

さらに、ひざ掛け兼肩から羽織るブランケット的な製品も
ちょっと気になってるところ。

手はこないだAliexで買った、指先を出すタイプのグローブを
使えば、寒さや手の冷えで痛いっていう感じはない。
部屋の温度を多少下げても、何とか乗り切れそう。





https://twitter.com/Twilightepco/status/1348584850232496131

>電事連は1月10日午後にも会見し、節電のお願いをする
>方針だった。しかし、経産省との文言調整に相当の時間を
>要した。経産省が『節電』という文言を入れることに難色を
>示していたからだ。

来たねぇ。節電」を「電気の効率的な使用」に読み替え。
これはまさに、現代版の「玉砕、転進」じゃないか。
大本営発表。





https://twitter.com/shota_/status/1347769463249068034

おぉ!!NTSC!! NTSCフェチのオイラとしては、この
学研の図鑑のNTSCの仕組みの解説。とてもスバラシイ。





https://twitter.com/hayakawa2600/status/1347778326002241538

デスラー総統ばんざーい。




https://twitter.com/OKB1917/status/1347884241489563653

末端価格。





https://twitter.com/potetoichiro/status/1347817389266673669

平方根の問題。これはなんかすごいヨカッタ。
(電卓弾いてみるとわかる)





https://twitter.com/flydolphin132/status/1347960742616600578

https://ja.wikipedia.org/wiki/%E3%82%B9%E3%83%AA%E3%82%A6%E3%82%A3%E3%82%B8%E3%83%A3%E3%83%A4%E8%88%AA%E7%A9%BA182%E4%BE%BF%E5%A2%9C%E8%90%BD%E4%BA%8B%E6%95%85

スリウィジャヤ航空182便、ラダーのトラブルっていう線で
考えると、なるほどと思う部分はあるものの、個人的には、
加えて水平尾翼(場合によっては水平尾翼も)が根本的に
機能を失ったなどと考えると、なんとなく理解できるような
気がしないでもない…。

それにしても、あまりにも急激な急降下だよな。

ブラックボックスは発見できるのかなぁ?この海域、水深
は深くないみたいなんだけどな。


それにしても、「バックミラーをつけてくれたら1000ドル
やるぞ」のキーワードが気になったので、ちょっと検索
してみた。あとでその辺の動画とか眺めてみる。





https://twitter.com/Yuki_cco_/status/1347829609388118021

三角標識が、なんかすごいかっちょよくなってる。




https://twitter.com/Bonezine/status/1348115315071217666

ほほう。降圧型のDC/DCって、ちゃんと動かなくなった瞬間、
何が起こるのか。回路を思い出してみて、
  「あぁ、ヤバいことが起きそうだな」
ってことがわかった。

こういうのって、どうやって保護すればいいの?ポリスイッチ
とか使ったりするといけたりするの?




https://twitter.com/DaTa_jp/status/1348453925242826753

知育玩具の設計。
申し訳ないなとは思ったものの、やっぱり声を出して
笑ってしまった…。



コメント ( 0 )



« 前ページ 次ページ »