実験室 » Arduino » この記事

アルディーノの工作続き

自走ロボットは解体して小さなモジュール作りをしています。RGBライトのモジュールは地味だけどいじってると面白かったりします♪

自走ロボット

ちびっこ生徒さんたちが作っている八の字コースを自走してコースをはずれそうになると、自分で軌道を修正するというロボットを自分も作ってみました。自分で作ってはじめて分かりましたが、センサーの取り付け位置によって、制御プログラムの指定値も変わってくるので、手で工作するハードパートは思っていた以上に重要だということが分かりました。

アルディーノ(温度センサ)の実験あと久しぶりに秋葉原いってきた

写真はLCDシールドを乗っけたアルディーノに温度センサをくっつけてみた実験の結果です。机の上の温度計付き時計の温度は27度を指しているので、センサーが示す値が26度ということだと誤差が一度以上でてますヾ(o゚ω゚o)ノ゙100円のセンサーだから?

さて、誤差なのかそもそもその程度の性能なのかは置いといて、これらの部品を買いになんか久しぶりに秋葉原に買い出しに行ってきました。そして実に4年程秋葉原きてないことに気付く(゚д゚)! しかしなんかずいぶん変わりましたね秋葉原は。自作パソコン系のショップがほんとに減りました。というか、無いの。以前パーツや中古パソコンを売っていたような、ちっこい裏通りのボロテナントの二階の店とかがみんな風俗店になってますがな(;´Д`) これはひどい。結局のところAmazonとかにおされて、ネットで買えるものは秋葉原に無くてもいいやということで、食いもの屋とかメイド喫茶とかのサービス業だらけになったんでしょうね。しかし…表通り歩いてても、客引きのコスプレネーちゃんと変な外人ばっかりじゃんヽ(`Д´)ノプンプン。しかし、これも時代の流れなのか。

…どうせだったら、フィギュアとロボットが融合したようなのが次の秋葉原の顔になった方が面白いのにね。イメージとしてはホイホイさん的なのとか。秋葉原もこの中途半端な過渡期を過ぎて七年後にはどう更に変わってゆくのでしょうかね。興味つきませんわ♪

アルディーノのLCDシールドを組み立ててみた

今後センサーなどの実験をした際に測定値をアルディーノ側でも表示できたらいいなぁと思って、LCDシールドキットを購入してみました(初心者なので無理しない)。半田づけなんて小学校か中学校以来ですよ…なんというか…ジュ~( ;∀;)とかプリント基板少しこがしちゃったりハンダがうまくのってくれなかったりいろいろ難しいです。


動きましたヾ(o゚ω゚o)ノ゙基板少し焦げたけど。

WordPressのバックアップと復元についての覚書き

WordPressは便利なんで重宝していますが、PHPとMySQLを使ってデータ管理しているのでなんかの拍子にバランスが崩れると激しく壊れるおそれがあってデータのバックアップと復元の演習を行う必要性をずーっと感じていました(めったな事では壊れたりしないので、やらなかったんですが)。が、今回手元に何も入っていないXP機が一機あるのでこれにこのFC2のブログの複製サイトを構築して、データを移植する復元の演習作業を行ってみました。実際やってみて分かった事もあるので、備忘録として書いてますが参考になればと思います。

(さらに…)

ノートン先生とマルウェア

最近マルウェアに感染したマシンを診ました(※キャプチャーを原寸で見るには、画像を二回ぐらいクリックしてブラウザに直接jpgがロードされる状態にする)

以前にもみたタイプのマルウェアだったので、駆逐ツール(ココで配布してる)を使って除去を試みましたが、今回はスルーしてしまいました。またこれも使いましたが、今回はCookieしかひっかけてくれませんでした(メールについてきたウィルスを駆逐する時には役だったんですが…) しょうがないので、タスクマネージャからおかしな動きをしているプロセスを見つけて、バッチファイルが保存されているフォルダと、起動トリガーとなっているレジストリの登録箇所をつぶして手作業でマルウェアを取り除きました。このマルウェアの駆動のカラクリに関しては、トレンドマイクロの分析官さんのブログに詳しく載っているのでそちらを読んでいただければいいと思いますが(参考 「HTAを利用したワンクリックウエアの新たな手口」)、ボタンを押してあやしい「HTA」形式ファイルがダウンロードされた時、このマシンに入ってたノートン先生(期限切れではない)は何してたんだろうかと思いました。トレンドマイクロの該当記事は四年前に投稿されてるので四年経っても未対応なんでしょうかねぇ( ̄д ̄) マカフィーもちゃんと引っかけてくれるのかいまいち信用が無いのでウィルスバスターいれとけばいいんですかね(危ないサイトにはウィルスバスターがブロックしててそもそも行かせてもらえないし)

P.S Vistaのセキュリティに閉口しました。マルウェアがもぐりこんでいる階層に行けないこと。行けないこと。邪魔でしょうがないヽ(`Д´)ノプンプン

スズノネセブン(画像アーカイブ用)アーカイブカッター

HG3形式の画像をスズノネセブンでも使ってるみたいなので、アーカイブカッターを作ってみました。Windows7環境なら展開できるかもしれません。

Download:[suzu_cut.lzh]

※画像アーカイブ以外のアーカイブの展開には使用できません。

WindowsSDK 備忘録 その十二

前回までで構文解析をさらっと通過したので、画面にビットマップ画像を表示するところを追加しています。

教本のCmdMascotSub();以降の部分になります。画像管理クラスを作成し、マップコンテナを作って複数HBITMAPを管理しています。

画像管理に関わるところは…
————————————————————————————-
CImageWindow::CImageWindowのコンストラクタ内で、
// 画像ファイルの読み込み
Images=new CImages();
Image=Images->GetOrNew(image_name);
の部分から、
CImage* CImages::GetOrNew(string file_path)へと渡り、
// 既存のオブジェクトがなければ新規に作成する
CImage* image=new CImage(file_path);
Images.insert(TFileImageMap::value_type(file_path, image));

によって、ここのコンテナに、”pmm1_ask”と、”新規に作成されたHBITMAP情報を持つCImage(単体)オブジェクトへのポインタ”を格納する。このコンテナImagesも静的に配置された(1個しか出現しないのでstaticではない。CImage[単体]のコンテナBmpsはマスコットが複数宣言されれば、その分存在する可能性があるので、コンテナも共用できるようstatic)
—————————————————————————————-
1つの画像に関して上の関係を整理すると、
Imagesコンテナ > Imageクラスのオブジェクトへのポインタ > HBITMAP > bmpファイル
という、関係になっていると解釈されます(左二つと右二つはそれぞれ別のマップコンテナで管理されてますが)

スクリプトindex.mctには、二つのマスコットを宣言してますので、画面には二つの窓が開くようになります。

以上、最小構成のつもりでマスコット宣言の処理の流れを追って教本の内容を整理しただけなのですがそれでも結構な量になっちゃいました。やっぱり大まかにWindowsとクラスの関係を把握するというのが目的なのなら、字句解析以降は省略して、一個の画像を表示するぐらいでコンパクトにまとめた方がおさまりが良かったみたいです。

P.S メモリリークをチェックするように途中からしましたが、これによってちょこちょこ今まで小さなリークの警告がでていたんで教本にはない後処理を追加しています。ただそれでもメモリリークが最後に一個残りました(;´Д`)
一つ目に読み込んだビットマップ画像に関係してると思われるのですが、それがどこかのタイミングでメモリ域に残るみたいです。二つ目のビットマップ画像に関しては残らないのでどうもよくわかりません。マップコンテナに複数画像のHBITMAPを持っているので、終了時にコンテナの中身をチェックしてHBITMAPが存在するなら、DeleteObjectするようにテストしてみましたが、はずれでした。このリークの警告に関しては、解決方法が残念ながらわからないです。残念(`・ω・´)

ソースコード[v11.lzh]

WindowsSDK 備忘録 その十一

トークンに分割する字句解析のところまで進んでるので、構文解析もさらっと流します。マスコット宣言についてのみ流れを追っているので、ParseLine();での字句解析が済むと、教本はCmdMascot();にて、マスコット文の種類の判別に進んでいます。このルーチンでParseExpression();という構文を判別するサブルーチンを行き来します。

教本でも、構文解析のところは難しいと思います云々書いてありますが、ParseExpression();辺りのコードは、チェックのための補助の関数をあちこち呼んだりする一方で、この解析が済むといよいよマスコットクラスのオブジェクトを生成するので、その前準備も必要になり、関数の数がまたまた増えます(マスコット宣言文に関係するコードだけに絞ってるのにね)( ´ー`)フゥー

制作メモでは…

制作メモ[v09] ———————————————————————————–

構文解析を行い、CMascotのオブジェクトを生成するのに伴い、Cvalue、CImage の両クラスも一気に作った。

▼CmdMascotSub(true, mascot_name, image_name, 0, 0);の直前まで
CInterpreter::CmdMascot()から、CInterpreter::ParseExpression()の構文解析部分で動きを把握する為、ログをかなり埋め込んだ。
CInterpExpr.cppの CInterpreter::NewStrConst()で、CStrValue型の配列の int型の 添え字StrConstsPtr を CInterpreterのコンストラクタで
初期化し忘れていたので、プログラムが誤動作した。ここを設定し忘れるとcase TK_STRING:のvalue_stack.push(NewStrConst(token->GetStrValue()));
から戻ってこれなくなる[先に進めなくなる]<==デバッカでスタックに「ぽもも」が二番目(一番目はダミー)の要素として入ってくるか確認する必要がでてくる。 ★例外クラスを追加[宣言…CLexer.h で、EScriptErrorとしてクラス宣言[インライン関数なので、CLexer.cppにはない]  例外クラスのオブジェクトは、CInterpreter.cppの先頭で7個生成。 ------------------------------------------------------------------------------- と、なっています。また、CInterpreter::Continue();では、構造が複雑になってきたので原文に従い、try~catch文を機能させるように戻しています。 分かりにくいところだと思います。なので、ログをいっぱいv09では吐いてます(;´Д`) ソースコード[v09.lzh]

WindowsSDK 備忘録 その十

制作メモ.txtに書いてあるところまで、マスコット文の宣言に関係するコードのみに絞ってみましたが、それでも一気にファイルが増えてしまいました。

字句解析をしてトークンに切り分けるところがv08で追ってるところです。ここはまだあっちこっち飛ぶとはいってもなんとかなるレベルですが、それでもねぇ…もぅ備忘録じゃねぇなこれは( ・∀・)ノ

制作メモ[v08] ———————————————————————————–

字句解析のCLexerクラスを追加。Utilites.cppにも補助関数を追加。
CInterpreter::ParseLine()の字句解析を一行分処理し、トークンを調べて、switch文に正しく分岐していかというところまで。

——————————————————————————-

ソースコード[v08.lzh]

3 / 512345