Hatena::ブログ(Diary)

熊工房 ohgumaの腹凹ませたい日記

2004 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2005 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2006 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2007 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2008 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2009 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2010 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2011 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2012 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2013 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2014 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2015 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2016 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2017 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2018 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |

2018-04-05

[] 自作 Mouse Jitter

マウスとして動作させることでスクリーンセーバーの起動を回避する「Mouse Jitter」なるUSB機器があることを知る。

ATMEGA32U4を使うArduino Leonardoは、PCUSB接続した際にHIDヒューマンインターフェイスデバイス)として自身認識させる機能があり、その機能を使って「Mouse Jitter」を自作してみる。


元々はジャイロセンサー用のサブマイコンとして使うつもりで購入していた中華製の「SS Micro」は利用できるピンに制限があるがArduino Leonardo互換機として使える上に、直接USBポート接続でき、かつ小型・安価なのでこのような用途にはちょうどよい。ebay経由で700円ほどで購入。

f:id:ohguma:20180406051255j:image


Arduino IDEは1.8.5を使い、スケッチ例の「09.USB」→「Mouse」→「JoysticMouseControl」などを参考にソース作成する。最終的にはこんな感じになった。

/**
   Mouse Jitter
   2018-04-04
   ohguma

   Bord : SS Micro(32u4)
*/

#include "Mouse.h"
#define PIN_LED 13
#define MOVE_PX 3

void setup() {
  Mouse.begin();
  pinMode(PIN_LED, OUTPUT);
}

void loop() {
  Mouse.move(0, MOVE_PX, 0);
  digitalWrite(PIN_LED, HIGH); //ON
  delay(50);

  Mouse.move(0, - MOVE_PX, 0);
  digitalWrite(PIN_LED, LOW); //OFF
  delay((unsigned long) 1000 * 200);
}

ポイント1

作業中にマウスポインタが動いても支障がないように、動きは最小限にする。

自分が使う環境ではMOVE_PXが「1」の場合マウス挙動は無視されるようだった。

ポイント2

当初「delay(1000 * 200)」としていて200秒おきにマウスポインタが動くだろうと思っていたら、3秒ほどで動作するのでなぜかと調べて、以下に気づく。

f:id:ohguma:20180406060634j:image

問題点

しばらく放置すると13ピンのLEDが点きっぱなしになる。

  • Mouse.move()の後に「delay(10);」を入れても変わらず。
  • digitalWrite()の後にMouse.move()を持っていっても変わらず。
  • 1週目のloop()ではOFFになっているが、2周目のloop()でLEDがOFFにならない模様。

2017-09-13

[] Pixy IRテスト

テスト風景。

f:id:ohguma:20170914040028j:image:w360


ノーマルレンズ状態IRカットされている。

f:id:ohguma:20170914040934p:image:w360


レンズ交換後。IRは透過しているが、他の色との区別は難しそう。

f:id:ohguma:20170914040940p:image:w360

http://amzn.to/2fiPjHb


ファームウェア、PixMonをIR-LOCK版に変更後。

f:id:ohguma:20170914040945p:image:w360

少しでも離すと反応しない。

2017-05-25

[]ファイルフォルダ比較ツール

ロボットプログラムを改良する際に、以前の状態に戻せるように修正後は別のファイル名で保存したり、別フォルダに保存するなどして、プログラム管理することがある。

後日どこを直したかを確認する際、プログラムを並べて開き、目視で間違い探しをするのは大変効率悪いので、ファイルフォルダ比較ツールを使う。コメント等で情報を残し忘れていても、なんとかなる。



C-Styleの「CSY形式」のファイルは、人が直接見る前提のファイルでなく、専用のデータ形式なので、この手の比較ツールに向かない。

f:id:ohguma:20170526050532j:image:w400


ビルド時に自動作成される「C形式」のファイル比較するか、

f:id:ohguma:20170526050528j:image:w400


テキストエディタで「CSY形式」の行頭の行数部分を強制的にオールゼロなどに置換し、

f:id:ohguma:20170526050525j:image:w400


置換後のファイル同士で比較すれば変更箇所が分かる(かもしれない)。

f:id:ohguma:20170526050521j:image:w400



本来プログラムバージョン管理をするなら、Gitなどのソース管理システムを使うべきだとは思う。

2017-05-17

[]ロボット三角関数(その2)

(度数法の180[度]) = (弧度法のパイ(円周率3.14)[ラジアン])となることから、度とラジアンの値はそれぞれ以下で変換できる。


円周率無理数分子・分母ともに整数である分数として表すことのできない実数)であり、小数点以下の値が無限に続くので、プログラム上では通常、近似値を用いる。

近似値を用いることで計算に掛かるコスト(処理速度や使用メモリ量など)を下げることが期待できる。よく使われるであろう近似値には、

  • 3
  • 7/22
  • 113/355

などがある。

例として(180 ÷ 円周率)をプログラム上で(60)にしておけば、割り算1回分のコストを省略できる。


(参考)

2017-05-16

[]ロボット三角関数

角度を表すのに使われる単位

  • 度数
    • 1回転を360分割して測った角度。
    • 算数で扱う角度。
    • 単位は度。

よって、(度数法の180度) = (弧度法のパイ(≒3.14)ラジアン)