カテゴリー「プログラミング」の記事

2020年2月22日 (土)

micro:bitを照度計にしてみる(その4)

一応、計測はできましたが問題点もいくつか出てきました。
micro:bitの固定が難しくてチョット箱を動かすとmicro:bitかLEDライトが転がってしまう。
箱の中がどうなっているのか分からずシュレーディンガーの猫状態 (´・ω・`)
micro:bit本体に明るさを感知する機能があるので本体をセンサーとして使っていましたが、本体と一緒に買ったキットの中に明るさセンサーが付いていましたのでセンサーを箱の中に入れ本体は箱の外に出して計測状況を表示するようにします。

光センサーはCDs使うのが定石のような気がしますが、たまたまキットにオプチカルトランジスタを使ったモジュールがあったのでコレを使います。

TEMT6000光センサーモジュール、1個300~600円位です。
使い方はCDsセンサーと同じですのでCDsを使用した作例を参考にしました。

200222p01

BlockEditorだとサクッと確認できますね。
200222p03

MicroPythonでは参考に出来る作例が見当たらなかったのでリファレンス見て試行錯誤
ファイルが追記できない問題も「追記しないで書き続ければよい」と言う単純な解決策に至り1分間隔で(理論上)最大50時間まで保存できるようになりました。

ダウンロード - brightloger2.py

再度、計測テスト
前回と同条件にするのが望ましいので電池もヘタれたエネループ を使用

前回と同じ傾向で有効なランタイムも大体同じくらい。
うまく動いていると考えてよさそうです。
200222p02

。.+:・゚☆゚・:+.。Y⌒Y⌒Y。.+:・゚☆゚・:+.。Y⌒Y⌒Y。.+:・゚☆゚・:+.。

PVアクセスランキング にほんブログ村

| | コメント (0)

2020年2月20日 (木)

micro:bitを照度計にしてみる(その3)

MicroPythonで照度計測が出来ましたのでmicro:bitのストレージに計測結果を保存して照度ロガーに仕立てます。
MicroPythonのファイルはAppend(追記)が出来ません。
どっかのドキュメントに「面倒だから実装しない」みたいな事が書いてありました。(・Д・`)
2個のファイルをコピーしながらやれば追記擬きな事が出来なくは無いのですが、ファイルが大きくなる毎に処理に時間がかかるようになり時間計測の誤差が大きくなるように思いますのでRTC(時計)がついていないmicro:bitでは無理があるように思います。
代替えとしてList(可変サイズの配列)に計測結果を覚えておいて計測終了時にまとめて書き出す方法にしてみました。

メモリー量が分からないので実験してみたところ、2個の値(経過時間と明るさ)を追記していくと250要素でメモリーエラーが発生、使えるのは200回って所でしょうか。

1分間隔で記録するつもりだったのですが200分(3時間20分)では意味がないので5分間隔で16時間30分の記録が取れるようにしました。

ダウンロード - brightloger.py

5分あれば1~2km走れますが600km走るランドヌールにしてみれば1~2km位は誤差の範囲でしょう。

micro:bitとLEDライトを箱に入れてランタイム計測
使用したライトは手持ちで一番小さきいFENIX LD13。
いつもはミドルモードでヘルメットライトに使用しているのですが取り敢えずテストしたいのでヘタれたエネループを入れてTurboモードにしておきます、多分2時間位で電池が切れる筈。
200220p01

計測結果をExcelでグラフにしてみます。
200220p02

micro:bit とライトの固定に難があってイマイチでしたが 計測結果は分かりやすい感じで出てます。
有効なランタイムは80~100分って感じでしょうか。

。.+:・゚☆゚・:+.。Y⌒Y⌒Y。.+:・゚☆゚・:+.。Y⌒Y⌒Y。.+:・゚☆゚・:+.。

PVアクセスランキング にほんブログ村

| | コメント (0)

2020年2月17日 (月)

Pythonでmicro:bitを操作してみる

BlockEditor版のFilesystem(ベータ版)が上手く動かなかったのでMicroPythonを試してみることにしました。
micro:bitはBlockEditorもMicroPythonもオンライン開発環境が用意されていますが…
オフラインの方が何となく好き(?)安心(?)なのでmicro:bitでPython[Muエディター]を参考にMicroPythoneのオフライン開発環境を整えます。
BBC micro:bit MicroPython ドキュメンテーションを見れば大体の使い方はわかります。

Python…教育は受けたんで概要は知っていますが実際に使うのははじめてです。
この辺りのプログラム言語は各々の特徴はあっても極端な違いはないのでJava(JavaScriptではない)とかC++とかをマスターしていればリファレンス見ながらで十分使えると思います。
MicroPythonはぶっちゃければ若干書式が違うだけで難易度はBlockEditorのJavascriptと大差ありません。

なので、まずはBlockEditorで作った照度測定をMicroPythonで書き直してみました。

Block Editorの
(明るさ)に相当するのがmicrobit.display.readlightlevel()
(一時停止ミリ秒)に相当するのがutime.sleep_ms(ms)
LEDの初期化はmicrobit.display.clear()
LEDの点灯はmicrobit.display.set_pixel(x,y,9)
と、これだけ分かっていれば組めるでしょう。

ダウンロード - bright.py

多少 (´・ω・`) 試行錯誤しつつ無事に再現
(明るさ)を3桁の2進化10進数で表示

200217p01

。.+:・゚☆゚・:+.。Y⌒Y⌒Y。.+:・゚☆゚・:+.。Y⌒Y⌒Y。.+:・゚☆゚・:+.。

PVアクセスランキング にほんブログ村

| | コメント (0)

2020年2月14日 (金)

micro:bitを照度計にしてみる(その2)

計測結果を記録出来なきゃ意味ないじゃん!
と言う訳で記録方法を調べてみました。
micro:bitには32KByteのファイルシステムが存在する事が判明
MicroPythonでファイルシステムにアクセス出来る…ってPythonかよ開発環境そろえるの面倒くさい。
BlockEditorで何とかならんの?
と思って見たら有りました、ベータ版だけど

後は時間ですが、micro:bitにはRTC(時計)が付いてないんですね。
ブロックの一覧を見たら(稼働時間:ミリ秒)があったのでコレで時計を作って誤差を見てみる。
サクッと制作 2進化10進数表示の時計、時刻合わせ機能付き。

ダウンロード - microbitclock.hex

コレを一晩動かして誤差を見る。
200214p01

結果は10時間で2分の遅れ  (´・ω・`)

自転車用LEDヘッドライトのランタイムを計測する目的には2分程度のズレは許容範囲内ですが、時計としては使えませんね。

。.+:・゚☆゚・:+.。Y⌒Y⌒Y。.+:・゚☆゚・:+.。Y⌒Y⌒Y。.+:・゚☆゚・:+.。

PVアクセスランキング にほんブログ村

| | コメント (0)

2020年2月13日 (木)

micro:bitを照度計にしてみる(その1)

micro:bitで何をしようかな(*´ω`*)
スペックを再確認してみると明るさが計測できるらしい。
照度計をライトで照らしてビデオカメラで撮影して放置し、再生して確認の超人力アナログでやってたLEDライトのランタイム測定が自動化出来るんじゃね? ( *´艸`)

もうね、サンプルにあるくらい簡単ですね、早速やってみます。
200213p01

0~255の値を25個のLEDで表現するので10刻み…感覚的には分かるけど…コレじゃない感が…

明るさセンサーの値を2進化10進数で表示する様に変更。
何か思うように動かない…って実数演算か!いつものクセで整数演算だと思い込んでました (´・ω・`)

でも、これ計測値をどうやって記録したら良いの?
計測値が記録出来なきゃ意味ないじゃん orz

。.+:・゚☆゚・:+.。Y⌒Y⌒Y。.+:・゚☆゚・:+.。Y⌒Y⌒Y。.+:・゚☆゚・:+.。

PVアクセスランキング にほんブログ村

| | コメント (0)

2019年5月20日 (月)

カードサイズゲーム機 Arduboy 買ってみた

カードサイズのゲーム機 Arduboy(アルデュボーイ) を買ってみました。
 190418p01
Arduboy(アルデュボーイ) はRaspberry-Piと人気を二分した(?)ワンボードマイコンArduino(アルデュイーノ)に液晶表示とボタンを付けてGameBoy風の外観に仕立てたゲーム用ワンボードマイコンです。
190418p02  
姉妹品にTetris MicroCardがありますが、こちらはテトリス専用でプログラムの入れ替えは出来ません。
性能的には液晶はモノクロ2値で解像度も320×200と低解像度ですし、PSGも搭載しておらずCPUも8bitでRaspberry-Piと比較しても大きく劣ります…だが、それが良い??
高性能になったハードウエアをサポートするためにOSが複雑化し、それに伴ってアプリケーション作製の敷居も高くなってゲーム本体にたどり着くまでの道程が遠くなりすぎてたどり着く前に挫折してしまう人が多すぎると感じています。
シンプルな構成で弄り易く、人に見せて自慢(?)出来る可搬性はプログラミングの学習教材に最適です(多分)。

| | コメント (0)