ページ

2012-01-31

[arduino]Arduinoの性能測定

以前、暇つぶしにArduinoの性能測定をしたことがあります。

その時のコードが以下になります。


時間があったら、測定結果をまとめてみたいと思います。



/*
  Arduino Mega向け性能テストコード
 */
#undef AD_TEST
#undef SIN_TEST
#undef SIN_TEST_SINGLE
#undef CALC_MULTI_I
#undef CALC_MULTI_F
#undef CALC_MULTI_D
#undef CALC_MULTI_L
#undef CACL_ADD_I
#undef CACL_ADD_L
#undef CACL_ADD_F
#undef CACL_ADD_D

long startTime = 0;
long endTime = 0;

int randValueI;
long randValueL;
float randValueF;
double randValueD;

void setup() {
  Serial.begin(115200);
  randomSeed(analogRead(A0));
  randValueI = random(1,100);
  randValueL = random(1,1000);
  randValueF = (float) random(1,100) / random(1,50 );
  randValueD = (float) random(1,100) / random(1,50 );
  Serial.print("randValueI = ");
  Serial.println(randValueI); 
  Serial.print("randValueL = ");
  Serial.println(randValueL);
  Serial.print("randValueF = ");
  Serial.println(randValueF);
  Serial.print("randValueD = ");
  Serial.println(randValueD);
}

void loop() {
  startTime = micros();

#ifdef AD_TEST
  updateAdValues();
#endif /* AD_TEST */

#ifdef SIN_TEST
  calcSin();
#endif /* SIN_TEST */

#ifdef SIN_TEST_SINGLE
  calcSinSingle();
#endif /* SIN_TEST_SINGLE */

#ifdef CALC_MULTI_I
  calcMultiplicationI();
#endif /* CALC_MULTI_I */

#ifdef CALC_MULTI_F
  calcMultiplicationF();
#endif /* CALC_MULTI_F */

#ifdef CALC_MULTI_D
  calcMultiplicationD();
#endif /* CALC_MULTI_D */

#ifdef CALC_MULTI_L
  calcMultiplicationL();
#endif /* CALC_MULTI_L */

#ifdef CACL_ADD_I
  calcAddI();
#endif /* CACL_ADD_I */

#ifdef CACL_ADD_L
  calcAddL();
#endif /* CACL_ADD_L */

#ifdef CACL_ADD_F
  calcAddF();
#endif /* CACL_ADD_F */

#ifdef CACL_ADD_D
  calcAddD();
#endif /* CACL_ADD_D */

  endTime = micros();

  Serial.print("Time = ");
  Serial.print(endTime - startTime);  
  Serial.println(" [usec]");

}


/* 全チャンネルAD変換 ここから */
const int AD_PORT_NUM = 16;
const int AD_PORT_INDEX[] = { 
  A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7,
  A8 , A9 , A10, A11, A12, A13, A14, A15 };
int adValues[AD_PORT_NUM] = {
  0};
void updateAdValues(){
  for( int i = 0; i < AD_PORT_NUM; i++ ){
    adValues[i] = analogRead(AD_PORT_INDEX[i]);
  }
}

/* 全チャンネルAD変換 ここまで */

/* sinの計算 ここから*/
/* 1回*/
double sinValue = 0.0;
void calcSinSingle(){
  sinValue = sin(0.5);
}
/* sinの計算 ここまで*/

/* sinの計算 ここから*/
/* 0.0-3.14まで314回*/
void calcSin(){
  for( float f = 0.0; f < 3.14; f += 0.01 ){
    sinValue = sin(f);
  }
}
/* sinの計算 ここまで*/

/* 掛け算 10000回*/
int calcMultiValueI = 0;
void calcMultiplicationI(){
  for( int i = 0; i < 10000; i++ ){
    calcMultiValueI = randValueI * i;
  }
}

long calcMultiValueL = 0;
void calcMultiplicationL(){
  for( int i = 0; i < 10000; i++ ){
    calcMultiValueL = randValueL * i;
  }
}

float calcMultiValueF = 0.0;
void calcMultiplicationF(){
  for( int i = 0; i < 10000; i++ ){
    calcMultiValueF = randValueF * i;
  }
}

double calcMultiValueD = 0.0;
void calcMultiplicationD(){
  for( int i = 0; i < 10000; i++ ){
    calcMultiValueD = randValueD * i;
  }
}


/* 足し算 10000回 */
int calcAddValueI = 0;
void calcAddI(){
  for( int i = 0; i < 10000; i++ ){
    calcAddValueI = randValueI + i;
  }
}

long calcAddValueL = 0;
void calcAddL(){
  for( int i = 0; i < 10000; i++ ){
    calcAddValueL = randValueL + i;
  }
}

float calcAddValueF = 0.0;
void calcAddF(){
  for( int i = 0; i < 10000; i++ ){
    calcAddValueF = randValueF + i;
  }
}

double calcAddValueD = 0.0;
void calcAddD(){
  for( int i = 0; i < 10000; i++ ){
    calcAddValueD = randValueD + i;
  }
}






2012-01-30

[ニッキ]アキバをぶらつく

最近は秋葉原に行く理由を見つける必要が無くなりました。

週末になると、自然と友人達とアキバに集まり、ぶらぶらして、酒でも飲んで帰ります。


以下写真。



画像のセンスを測れるらしい、webサービス。

セミプロ級でした。




色々偶然が重なって、メイド喫茶へ。

メイドさんを楽しむのではなく、ミルヒの写真を見て楽しんでいました。
ちなみに、ここはドールも飾ってありました。








これは抑えておきたい一品。

シュタインズ・ゲートのアレ





バー

僕はほとんどお酒が飲めません。








デスペラードという、ビール+テキーラな飲み物。
中に、テキーラが入ったグラスが入っていて綺麗です。



飲み終わると、こんな感じです。
友人が2杯も飲んでました。




シャレオツな食べ物。




タコライスで沖縄気分。

2012-01-26

[arduino][ADK][android]Arduino Mega ADKでDemoKitを試す

Arduino Mega ADKを購入しました。



















せっかくなのでGoogleのDemoKitを試したいと思います。

以下の3つをダウンロード

  • arduino-0023.zip
  • adk_release_0512.zip
  • CapacitiveSense003.zip
適当に解凍して、"ADK_release_0512"の中にある"AndroidAccessory"と"USB_Host_Shield"フォルダを"arduino-0023\libraries"フォルダの中に入れる。

CapacitiveSense003も"arduino-0023\libraries"フォルダの中に入れる(CapSenseに名前を変更する)。



Arduinoの開発環境"arduino.exe"を起動する。

Openから"adk_release_0512"の中にある"demokit.pde"を開く。

開いたスケッチ(ソースコード)のsetup関数内にあるinit_joystick( 5 );の行をコメントアウトします(理由は後ほど)。


後は、USBでArduino Mega ADKに接続して、アップロードするだけです(ドライバのインストールは必要です)。


Android側のアプリはマーケットで"DemoKit"と検索して適当にインストール。


こんな感じに繋いで、バッテリーの電源を入れれば、

ダイアログが出てくるので、適当にOKして



出来上がり。

何も部品を接続していないので、何もできません。



※init_joystick( 5 )をコメントアウトした理由

本来、ADKのサンプルアプリを動作させるには、Arduino Mega ADKの上にLEDやJoyStickなどが付いたIOボードが必要になります。

JoyStickが接続されていない場合、init_joystick( 5 );関数内で無限ループに陥ってしまいます。

そのため、init_joystick( 5 )をコメントアウトします。

全ての機能を試したい場合、株式会社アールティなどで販売されているボードを購入するのが簡単です。



以下、ミルヒと。




2012-01-25

[arduino]PCの温度をひたすらロギング(Logginging)

ArduinoとWebサーバを使って、自宅PCの温度をひたすらロギングし、それをブラウザ上で閲覧出来るシステム?を作りました。


http://logginging.org/

ドメインも取得したよ!
ロゴは友人が作ってくれました!!!
サンクスデス


この記事では、大枠を説明したいと思います。
ソースコードなどは後ほどArduino側とサーバ側に分けて説明記事を書きたいと思います。


ではまず、構成は以下の通りです。

・ Arduino+EthernetShield
美しい輝きです。




















・ 温度センサ × 3
秋月で買ったセンサと基板です。ケーブルは千石で購入しました。

















・ Webサーバ(さくらのレンタルサーバ)
さくらインターネットは色々と素晴らしいです。これからもよろしくお願いしたいです。

で、出来ています。


Arduino+EthernetShieldと温度センサはスタックします。
オシャレですね。









これらをホームセンターで買った安物のケースに入れます。
適当に穴を開けて、センサとLANケーブル、ACアダプタを出します。
ACアダプタから電源をとっているため、PCの状態に関わらず常にロギングし続けることが可能です。

熱なんて関係無いです(EthernetShieldは結構熱くなる)。




















温度センサは部屋とPC内部の電源、グラフィックボードに適当に貼り付けました。
適当です。


















■ロギング方法

1) 1秒毎にArduinoで温度情報を取得(LPFをしています)

2) 5分毎にWebサーバに温度情報を送信

3) Webサーバが温度情報と時刻をデータベースに登録

4) 1)に戻る


■閲覧方法

1) http://logginging.org にアクセス

2) データベースから24時間分のデータを取得

3) Google Chart Toolsでグラフを作成、表示

4) 単位はケルビンです。


5分毎にデータをとっているのですが、結構バラつきます。
ノイズの影響なのか、詳細は私にはわかりませんでした・・・

2012-01-23

[カメラ]レンズ購入[SIGMA 17-70mm F2.8-4 DC MACRO OS HSM]

レンズを購入しました。

購入したのは「SIGMA 17-70mm F2.8-4 DC MACRO OS HSM」というレンズです。

カメラを買ったときに付いてきた標準レンズより高スペックなものが欲しくなったので購入しました。

第一印象は「重い!!」でした。


このレンズとストロボを付けて手持ちで撮影するには、筋トレが必要そうです…



以下写真。




2012-01-20

[arduino][ドール]コラボレーション

ドールとArduinoという新たな価値のご提案。

世界初なのでは?という勝手な期待。


腕の保持力が高いので、基板2つ持たせても余裕なのは、さすがと言いたいです。

■Arduino Uno & EthernetShield











































■Arduino Uno











































■ガチャンコ












































ミルヒが薦めてくれたら100枚だって買いますとも。


後、前2chでドールとティッシュ箱の比較をしてたのを見て、それを猛烈にやりたくなったので撮ってみた。
存在感が半端じゃないです。




2012-01-17

[ドール]ミルヒお迎え!


先日のドルパアフターでミルヒをお迎えしました。
ドルフィードリームは初お迎えです。


人生が捗りますね!


僕の部屋に撮影スペースが有るのですが、さすがにDDのような大きなものには対応していないので、少し改造が必要になりそうです。



箱ー










ハイテンション!


これからの人生が捗ります!

2012-01-16

[カメラ]ストロボ購入

ストロボを購入しました。

色々撮影が捗るはずです!!




2012-01-07

[ニッキ]アキバぶらぶら

今日は秋葉原を友人とぶらぶらしてました。

昼飯はサンボに行ってきました。


その後、しばらくブラブラして、秋葉原と御徒町の間にある2k540に行きました。

ここは秋葉原に行くたびに、ふらふらっと訪れたくなる場所です。


お目当ては2k540の中にあるカフェ"cafe Asan"

前に来たときに「かぼちゃ入りおしるこ」なるものを発見したのですが、その時はお店がお休みだったので、リトライしてきました。

今季初、おしるこで満足しました。


カレーじゃないよ、おしるこ。















珈琲















Asanはカレーも美味しいそうですよ。

2012-01-03

[ニッキ]新年

今年の初詣は秋葉原の神田明神に行きました。

今までは生まれてからずっと長野の諏訪大社で初詣していましたが、今年は皇居での一般参賀の後、秋葉原の流れで神田明神に初めて行きました。



IT情報安全祈願のお守りをゲットしました。

バグの少ないプログラムを書けるように精進していきます。


























あと、コーヒーの同人誌を買いました。

柚子屋茶寮さんの『珈琲読本Volume.5』です。
コーヒー好きとしてはたまらない一冊でした。

シリーズになっていて、この本で5冊目らしいです。
1冊目から読んでみたいです。


2012-01-01

[TED][Ken Robinson]"Ken Robinson says schools kill creativity"

邦題:"ケン・ロビンソン「学校教育は創造性を殺してしまっている」"

教育に関する伝説的な動画。


本当に素晴らしい動画です。