2014年1月31日金曜日

Force.com mobile SDK 2.1.0 for iOS(追記)

■まずインストール■

インストールの方法と基本的な操作はここに書いてあります。

forceios
Utilities for creating mobile apps based on the Salesforce Mobile SDK for iOS

2.0まではgitからのcloneでしたが、2.1になってnpmが用意されたようです。自分のアカウント用として作るのであれば、適当なディレクトリに移動してから
    $ sudo npm install forceios
を実行すると直下にnode_modulesディレクトリが出来、その下にインストールされます。

Macの全てのユーザから使えるようにするには
    $ sudo npm install forceios -g
いずれもターミナルから実行します。この場合は/usr/local/lib/node_modules下にパッケージがインストールされます。

以下、-gの付いている方を前提とします…Terminalでパスなど切らなくて良いのでラクですし。インストールが終わったら、
    $ forceios version

    forceios version 2.1.0
と表示されればインストールOKです。

■まずはSamples■

もうSampleは見なくていいよ、という方は次の段落へどうぞ。これもターミナルでの作業です。まず、適当なディレクトリに移動してから
    $ forceios samples -outpoutDir=Samples
とすれば、直下にSamplesというディレクトリが作られ、さらにその下にサンプルプロジェクトが並びます。



あとは各フォルダの中にある .xcodeproj をダブルクリックしてXcodeで開き、どういう作りになっているか覗いてみてください。

■プロジェクトの作り方■

これもターミナル上での作業です。プロジェクトを置くディレクトリに移動します。少し長いですが、forceiosのcreateコマンドを使います(実際は1行です…nativeの場合apptypeは省略可能です)。
    $ forceios create --apptype=native --appname=TestForce210
    --companyid=com.your.domain --organization=あなたの会社名 

リターンキーを押すと、プロジェクトを作るディレクトリ、App ID、App Callback URI()を聞いてきます。全部リターンキーでOKです。
    Enter the output directory for your app (defaults to the current directory): 
    Enter your Connected App ID (defaults to the sample app's ID): 
    Enter your Connected App Callback URI (defaults to the sample app's URI): 
数秒間メッセージが流れて、最後にこれが出ればOKです。
    Congratulations!  You have successfully created your app.
できました。では、TestForce210/TestForce210.xcodeprojをダブルクリックします。さっきリターンキーで飛ばしたApp IDはProject情報で設定し直すことができます。また、Callback URIとRemoteAccessConsumerKeyも今までと同様、Classesフォルダ下のAppDelegate.mで正しい値に設定することができます。cmd+Rでビルド&実行してみます。スプラッシュの後、認証画面が出て、さらにその数秒後にさっき認証した組織のユーザ名一覧が表示されれば完了です。

さっくり見てみましたが、ARCは前回対応されたものの、Storyboardはやっぱりまだですね…。Storyboardを使うには、AppDelegateの - (void)setupRootViewControllerを変更します。以前書いた方法と少し違いますが、基本的なやり方は同じです。

追記2014/01/31:Storyboard上ではUITableViewControllerにnavigation controllerをEmbed InしてAppDelegate.mの -(void)setupRootViewControllerで以下のようにrootViewControllerにセットするとStatusBar / TopBarが正しく動作します。

- (void)setupRootViewController
{
    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Storyboard"
                                                         bundle:[NSBundle mainBundle]];
 
    UINavigationController *navi = [storyboard instantiateViewControllerWithIdentifier:@"naviView"];
    self.window.rootViewController = navi;
}

さて、世界がぶっとぶようなアプリでも作るかねw

2014年1月26日日曜日

LPC1114FN28のアナログ入力で躓く



タイトルの通り「可変抵抗で入力電圧を変えるとその通りにPWMでLEDが明暗する」というのを作ろうとして、見事にハマりました。

結論からいうと、LPC1114FN28のAD変換器(AnalogIn)は、基準電圧0vと3.3vをつながないと正常に動かないよ、ということです。AnalogInが0-3.3vに変化するならば、pin8をGND、pin7を3.3vにつなぐ必要があります。

まぁ、分かってしまえばバカバカしいことなのですが…AnalogInのリファレンスを見ても、基準電圧を設定するためのAPIが見当たらなかったので、0-3.3vになっている、と思い込んでいました。PwmOutも正常に動いているし、AnalogInへの電圧も0-3.3vで変化しているし…あとはAnalogInしかありません。でもググってもそれらしい記事は見当たらない。これはもう、何か根本的なミスだろうと、何度目かの配線チェックをしていて「AVIN」「AGND」に気づいた、という展開でした。

あと、副産物ですが、PwmOut led(dp18);と定義して led = 0.0f; を出力してもLEDは消えません。うっすらと点灯しています。でも、led = 0; と整数をセットすると消えます。

また余談ですが、基板の上で光っているLEDは秋月で10個250円で買って来た「超高輝度赤色LED」です。20mAぐらいでもかなり明るいのですが、連続最大定格の60mAを流すと直視できません。安くなったもんだなぁ…。

2014年1月22日水曜日

Macで初mbed

秋月で買ってきてそのまま引き出しで眠っていたLPC1114FN28、今日ようやく陽の目を見ました。

ジャンパが足りなかったりブレッドボードが小さかったりでムダに苦労しましたが、一昨日FT232の基板にフラックスを塗っておき(秋月の半完成基板は昔からハンダの乗りが悪いような気がします)、昨日FT232を組み立てて、今日会社から戻ってからブレッドボードに組み立て、mbedにサインアップ、lpc21ispのビルド、lpc21ispでのインストール…で、LEDチカチカまでたどり着きましたw

マイコン界のHello,World、Lチカw

なお、秋月のUSBシリアル変換キットFT232RLを買ったのですが、J1のジャンパの説明が今ひとつピンと来なかったので、回路図をにらめっこしJ1のジャンパはGND表記の側、J2ジャンパを差して、最終的にはUSBをつないだ状態でテスターで電圧を測り「3V3」と「VIO」が3.3V前後になっていることを確認しました。最近のLSIは昔より大分丈夫になりましたが、電源間違えると死ぬ確率は飛躍的に高くなります。しっかり確認しましょう。

回路図で電池ってどうやって書いたっけ?w

なお、今回の試作にあたっては、こちらのサイトが大変参考になりました。ありがとうございます。

  [lang:ja] mbed LPC1114での遊び方

なお、補足ですが、Macでの lpc21isp のビルドは

  • LPC21ISPをダウンロード&解凍
  • ターミナルを起動し、解凍してできたLPC21ISPのディレクトリに移動
  • make -f Makefile clean all
  • chmod +x lpc21sp
  • sudo mv lpc21isp /usr/sbin 

これで lpc21ispが使えるようになります。

次にいよいよLPC1114FN28への書き込みですが、その前にシリアルポートの名称を調べる必要がありますが、それにはターミナルで ls /dev/cu.* と入力するとusbserialとか何とかと出てきます。あるいは /dev/cu. まで入力してTabキーを押すと残りが出てくるはずです。では書き込みましょう。

  • USBを接続する
  • リセットボタンとISPボタンを同時に押す。
  • リセットを先に離し、ISPボタンも離す。
  • mbedサイトから落としたバイナリのあるディレクトリへ移動
  • ターミナルで
  • lpc21isp -bin HelloLED_LPC1114.bin /dev/cu.usbserial-AH01KSGF 115200 48000
  • 転送中の表示の後、自動的に実行開始。

28pin、秋月…というとワンチップデジタル時計のMN5311を思い出してしまうんですが、今はこんな高機能なチップが100円かそこらで買えるなんて凄いですね。

2014年1月19日日曜日

反応の鈍くなったリモコンを直す

後記のように鉛筆の芯で姑息的修復をしていましたが、やっぱり所詮粉は粉、次第に反応が鈍くなってきました。ので、アマゾンから届いた「ナノカーボンペン」を使ってみたのですが、まったく使い物になりませんでした。用途が違うんでしょうね。

というわけで、アルミ箔を貼ろうということになったのですが…家にある両面テープは分厚すぎて押さなくてもショートしてしまいます。箸にアルミ箔を巻いて接点に触ってみたら一応機能するのですが、さすがにそれは問題があります(以下の写真)。

導電ゴム板を外した図。穴をアルミ箔巻いた箸でつつけばとりあえず機能します…

あまり粘着力が強すぎるともし失敗した時に貼り直せないし、弱すぎると後でご動作するリスクが高くなる。程々の粘着力でできるだけ薄い物、ということで思いついたのが「テープのり」です。封筒なんかを貼るのに使うアレです。試してみたら実にいい感じでした。なお、テープのりはトンボ鉛筆以外からもでていますが、ドットタイプのものはスイッチの凸部分とドットの位置が合わないと剥がれやすくなるかもしれません。

原価としては1円も掛かっていないと思いますw

アルミ箔、ピンセット、はさみ、テープのり

テフロン加工のハサミだと作業しやすいです。

作業方法は以下の通り:

  1. リモコンを分解する。
  2. 導電ゴムをアルコールなどでよく掃除する。
  3. アルミ箔の裏側(光沢のない面)にテープのりを貼る。
  4. 幅を整えてハサミで手頃な大きさ(3x3mm〜5x5mm)に切る。
  5. ピンセットで導電ゴムに貼り付けて余分な部分を取り除く。
  6. リモコンを組み立て直す
とりあえず、最初は1〜数個だけアルミ箔を貼ってリモコンを仮組みして様子を見た方がいいかもしれません。作業の方向性としては、アルミ箔がしっかり密着することが最優先です。アルミ箔が浮いてしまうと押さなくても押されたようになってしまいますので、リモコンとして機能しません。

これで我が家のリモコンは見事復活しました。


剥がれると押さなくても接触してしまうのでとにかくしっかり密着させることが大事
以下は失敗記録です。

エアコンのリモコン、別に醤油をかけたわけでもないのに反応が鈍くなってきまして。一番劣化著しいのは電源ボタン。最初は少し長い時間押していれば反応してくれたのですが、最近では渾身の力を込めないと反応してくれません。でがけにエアコンの電源が切れないのはイラつきますし、そのうちリモコンが折れそうで怖い。

というわけで、修理します。

最近のリモコンは導電ゴムをプリント基板に押し付けるタイプのスイッチが使われています。ボタンがフニフニと柔らかいやつです。これは大変よく使われているのですが、導電ゴムが劣化して電気を通さなくなってしまうとスイッチとして働かなくなってしまいます。

用意するのは、導電塗料。カーボン粉末などが入っていて、抵抗は大きいものの一応電気が流れます。我が家にあるのはナノカーボンペンです。しかし、どこにしまいこんだか忘れてしまったw

というわけで、代替品として鉛筆の芯を使います。方法は何でも良いのですが、鉛筆の芯の粉末をスイッチシートの導電ゴムの部分、基板の接点と向かい合った真っ黒いところに振りかけます。私は導電ゴムの上にカッターナイフを少し浮かせておき、そこでシャープペンシルを削るようにして粉を落としました。ある程度粉がたまったら、芯の尖ったところではなく「面」を使って粉をなすりつけます。6Bくらいの鉛筆があれば、そのまま導電ゴムの上に書いても良いと思います。いずれにせよ、塗りたくると金属光沢が出てきますが、ボタン面積の70-80%ぐらいが金属光沢になっていればOKです。余分なところについた粉はこすらないように、綿棒などで抑えるようにして取り除きます。

塗りつぶしながら思い出したのは共通一次試験(年がバレるな)。あのマークシート塗りは地獄だったなぁ(当時はマークシートを鉛筆で塗りつぶしたところ=電気が通る、で読み取っていた)。

なお、導電塗料を使う場合には、無水アルコールなどで軽く掃除してから基板と正対する黒いゴムに塗料を薄く薄く塗って乾かすだけです。

リモコンを仮組みしてボタンが反応するか確認してみてください。私は、「リモコンのフタが開いているモードか否か」を切り替えるためのスイッチのことを忘れていて、「あれー、こんだけ塗りつけてもどうしてここのボタンは反応してくれないのだ?」と頭を抱えていましたが、そういう落とし穴にも要注意です。

鉛筆の粉を使うのはあくまでも避難措置というか、導電塗料は1000円ぐらいしますので、原因が導電ゴムなのかそれ以外なのかを鉛筆で安上がりに検証する、という程度のものだと思ってください。導電塗料が手に入ったら、ゴム接点を一度中性洗剤でよくあらい、基板もティッシュで鉛筆の粉をきれいに取り除いてから、塗料を使ってください。

2014年1月16日木曜日

こういうのを作りたかった…。


7500円かー。何かと不便な家電を便利に使えるようにしていきたい、といろいろ実験していて、コアになるアイディアはとっくにできていたものの…WiFi高いし、今どき家庭内にEtherはどうよ?だし、XBeeは商用ライセンスが高いし、赤外線がやっぱり現実解なのかなー、でもセキュリティが…とウダウダ。

いいんだ、私には私の最適解がある←負け惜しみw

2014年1月15日水曜日

Arduinoのバックライトを周辺光で制御

明度センサー(CDS)をアナログ入力ポートにつないで、PWM出力を液晶のバックライト(+)につないだだけですが、それだけではソフト屋として芸がないので「フワッ」と明るくなったり暗くなるように作ってみました。

なお、CDSは、+5V電源〜CDS〜アナログ入力へ〜抵抗〜GNDという配線です。手持ちのCDSの資料がなかったので、抵抗はまずボリュウムをつないでみて、どのぐらいで適当なアナログ入力が得られるかを測定しました。1200Ωと出たのですが、手持ちの関係で1KΩを使いました。

以下、関連するソースです。
// 宣言部
int   backLight = 9;     // pwm出力ポート
float cdsTarget  = 0.0;  // 最後のcds読み込み値
int   lastMillis = 0;    // 最後にバックライトを更新したミリ秒     
// loopに以下の処理を追加:50ミリ秒ごとにバックライト更新
  if ( millis() - lastMillis > 50) {
    lastMillis = millis();
    cdsToBacklight();
  }  
// 関数 : CDSの値でバックライトを制御
void cdsToBacklight() { 
  int current = analogRead(cds);              // 明るさを読み込む
  float diff  = (current - cdsTarget) / 20.0; // 差分の1/20を変化値とする

  cdsTarget += diff;         // 差分を目標値に加算
  int intTarget = cdsTarget;

  int brt = intTarget >> 3; // 目標値の1/8をpwm値とする

  // バックライトへの出力値を制限し、pwm出力
  if (brt < 5) brt = 5;
  if (brt > 128) brt = 128;
  analogWrite(backLight, brt);
}

2014年1月11日土曜日

Arduino的一発芸写真「残念」

SainSmartのキットより。


ちなみに、LEDマトリクスのピンはa列とj列にあります。
本当にありがとうございました。

もっと大きなブレッドボードあるけど、横に長いだけで縦は同じなんすよね。手持ちで丁度いいのがあるんで、ユニバーサルボードにICソケットをハンダ付けして使います。でも…性能・機能には関係ないとはいえ右に1列はみ出すのがすごく気になる。


机のウレタン塗装が剥がれているのも気になりますが。とほほ。

2014年1月10日金曜日

ArduinoでFFT : 音声を入力してみた

ほぼ昨日のソースと同様、違うのは主に関数でデータを取り込む代わりに

data[i] = (analogRead(mic) >> 2) - 128;
としているところ。

マイクは秋月の「高感度マイクアンプキット 500円」。まずこれを組み立てたのですが…ハンダがランドに乗ってくれなくてまたしても苦戦。「こんだけ熱が回っちゃうとマイク壊れているかもしれないなぁ…」と思いつつ、オシロにつないでみると一応声を拾っている。良かった良かった。


FFTは昨日も使った8bit fft。で、結果なのですが…ピークtoピークのアナログ波形でも出力は0-50程度、どうも今ひとつダイナミックレンジが狭い感じ。また、人間の声についてはそれなりに拾っていますが、ビープ音についてはレンジを越えてしまう様子。128点のサンプリングに約15mSかかっているので約8500回/秒、その半分として4.2Khzは拾っているはずなのですが。うーん。

さて、今回は芸無くSerialへの出力でしたが、次回は何かもっと見やすく表示してみます。
#include <fix_fft.h>
#include <Time.h>
#define N_SAMPLES 128
char im[N_SAMPLES];      // 虚数部
char data[N_SAMPLES];    // 入力/実数部
char buf[20];            // 文字出力バッファ
int mic = 0;      // マイク接続ポート
int cnt = 0;      // ループカウンタ
int prevSec = 0;  // 秒カウント

void setup() {
  Serial.begin(115200);
  analogReference(DEFAULT);
 
  prevSec = -1;
}

void loop(){
  int  i;
  unsigned long mil;
 
  cnt ++;
 
  mil = millis();
  for (i = 0; i < N_SAMPLES; i++) {
    // 音声を読み込み
    data[i] = (analogRead(mic) >> 2) - 128;
   
    // 虚数部をクリア
    im[i]   = 0;
  }
  // 128個の読み込み時間を計測
  mil = millis() - mil;
  // FFT
  fix_fft(data, im, 7, 0);  // full scale 2^7=128, FFT mode
  for (i = 0; i < N_SAMPLES / 2; i++) {
    data[i] = sqrt(data[i] * data[i] + im[i] * im[i]);
  }
 
  // 1秒ごとのループ回数と128個の読み込み時間(mSec)を表示
  int s = second();
  if (prevSec != s) {
    prevSec = s;
    data[0] = cnt;  // 0をcnt出力に流用
    data[1] = mil;  // 1をmil出力に流用
    dispData("Results : ", data, N_SAMPLES / 2);  //  結果出力
    Serial.println("");
   
    cnt = 0;  //  カウンタをクリア
  }
}

void dispData(char *inMsg, char *inData, int inN) {
  Serial.print(inMsg);
  for (int i = 0; i < inN; i++) {
    sprintf(buf, "%5d", inData[i]);
    Serial.print(buf);
  }
}

2014年1月9日木曜日

ArduinoでFFT(8bit int)

ハンダ付け作業台、4980円

もちろん(と威張って言うことではないのですが)自分では書けないので、あちこちで公開されているライブラリを漁ってみたのですが…私の目的に一番フィットしていたのがこれでした。
  Modified 8bit FFT in c
Webに貼ってあるfix_fft.hとfix_fft.cppをテキストにしてArduinoライブラリフォルダに入れておく。それからArduino IDEを起動しSketchで以下のようなコードを実行(「マイコンボードへの書き込みが完了しました」という表示が出たところで、すぐにツール>シリアルモニタを開き、ボーレートが違っていたら57600に設定する)すると、意図したようなスペクトル数列が得られました。
#include <fix_fft.h>
char im[128];
char data[128];
char buf[20];

void setup() {
  Serial.begin(57600);
}

void loop(){
  int  i;
  char buf[6];
  for (i = 0; i < 128; i++) {
    //  data[i] = (i % 16) * 16 - 120;  // 三角波  
    //  data[i] = (((i >> 4) & 1) * 255) - 128;  // 方形波
    // 2つの正弦波を合成した波形
    float d = (float)i * (PI * 2.00) / 128.00;   // ラジアンへ変換:dは0〜2pi
    float f = (sin(d * 2.00) * 0.66 + sin(d * 30.00) * 0.33) * 127.00;  // 2fと30fの正弦波
    data[i] = f;
 
    // 虚数部をクリア
    im[i]   = 0;
  }
  Serial.println("");
  dispData("Source  : ", data, 128);
  Serial.println("");

  fix_fft(data, im, 7, 0);  // full scale 2^7=128, FFT mode

  for (i = 0; i < 64; i++) {
    data[i] = sqrt(data[i] * data[i] + im[i] * im[i]);
  }

  dispData("Results : ", data, 64);
  Serial.println("");
  while(1) ;
}

void dispData(char *inMsg, char *inData, int inN) {
  Serial.print(inMsg);
  for (int i = 0; i < inN; i++) {
    sprintf(buf, "%5d", inData[i]);
    Serial.print(buf);
  }
}

よかった良かった。ここ数日これに睡眠時間を削られていたので、安眠できます。

…でも、中学生ぐらいからずっと欲しかったハンダ付け作業台が昨日Amazonから届いたので、やっぱり睡眠不足は続く予感:-)

2014年1月3日金曜日

Arduino時計+温度計

年末年始は電子工作で遊ぶ予定だったのに大掃除の際にハンダゴテを破損。次にいじれるのはいつになることやら…と思っていたら、思わぬところから発掘しました。

何年行方不明だっただろう…。
というわけで、SainSmartのキットからLCDと小型ブレッドボードとLM35(温度センサ)をつかって、デジタル時計/温度計を作ってみました。何を今更と言われようとも、私のデジタル工作の原点は秋月ならぬ信越商会のMN5311デジタル時計キットなので(アナログは今はなき三鷹トリオ商会で買った2石レフレックストランジスタラジオ)、ともかく時計を作らなければいけないのです。

Arduinoはハンダゴテ使わずに試作できてしまうのですが、SainSmartのキット付属の
LCDにはヘッダピンが付いていなかったので、ハンダ付けします。老眼が大いに障害になりましたが、何とか完了。ハンダの溶け込むリズムを思い出すのに時間がかかったぜ。

そして、小型ブレッドボードをパッチベイのように使って配線。まぁパッチベイといってもGNDやらVccなど複数の線が集まるところをブレッドボードのrowを使って配線するってだけですけども。

まずは、キットのテストコードをそのまま入力して実行。最初まったく表示が出なくて焦りましたが、コントラスト調整をしたら文字が出ました。また、LCDバックライトの抵抗を220Ωにしたら物凄く明るくて全体的に薄暗い写真になってしまいました。この後、1kΩまであげてみたのですが、それでもかなり明るいです。


続いて時計スケッチ。あちこちサンプルが上がっているのですが、いまさらArduinoで時計作る人も少ないのか、Timeライブラリの仕様が古かったりして使えません。ので、ググりつつコーディングしてアップロード。

温度計の補正に悩みましたが、それもなんとかクリア。とりあえず、
 温度 = analogPort値 ☓ 基準電圧 ☓ 100 / 1024
で上手いこと動きます。素子の出力電圧が1度=10mVなので基準電圧☓100、1024はフルスケール値です。なお、浮動小数点なら最後の3つの定数を電卓で計算して1つにしてしまえばいいのですが、浮動小数点演算の負荷を嫌って整数を使う場合は演算の順番を考えないとオーバー/アンダーフローを起こします。こういう場合、例えば500と1024を因数分解して演算の途中でも値がintの生の最大値32767を超えないようにします。今回は確実に動くこと優先で浮動小数使いました。また、文字列への変換もsprintfを使っています。書式指定のあるprintf/sprintfはプログラムサイズが大きくなるのですが、まぁここは確実に動くこと優先で…なお、Auduinoのライブラリではprintfの浮動小数への書式指定 %f は使えませんのでご注意を(少しハマりました)。

追記:
ArduinoのADCは基準電圧の切り替えが可能です。unoの場合は電源電圧、外部、内部(1.1V)に設定可能です。設定するには analogReference(type); のtypeにDEFAULT、INTERNAL、EXTERNALのいずれかを使います。EXTERNALの場合にはAREFピンに基準電圧を与える必要があります。詳細については以下のページが参考になりました。ありがとうございます。
  Arduino 日本語リファレンス - analogReference(type)

というわけで、何とか動きました。デジタル時計作ったのは何年ぶりかなー。

次はmbedのLPC1114FN28と適当なRTCを使って、ローコストかつデカイLEDデジタル時計でも作ろうっと。

#include <Time.h>
#include <LiquidCrystal.h>

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
time_t tokei;

int iYear  = 2014;
int iMonth = 1;
int iDay   = 3;
int iHour   = 18;
int iMinute = 20;
int iSecond =  0;

int lm35 = 0;

void setup() {
  lcd.begin(16, 2);
  setTime(iHour, iMinute, iSecond, iDay, iMonth, iYear);
  tokei = now();

  analogReference(INTERNAL);  
}

void loop() {
  
  while( tokei == now() ) {
    delay(100);
  }
  
  tokei = now();
  digitalTokei();
  digitalOndokei();
}


void digitalOndokei() {
  float val;
  int dat;
  char buffer[5];
  
  val = (float)analogRead(lm35) * 110.0 / 1024.0;
  dat = val * 10;
  sprintf(buffer, "%02d.%1dc", dat / 10, dat % 10);
  lcd.setCursor(11, 0);
  lcd.print(buffer);
}

void digitalTokei(){
  char buffer[20];
  
  sprintf(buffer, "%4d/%02d/%02d", year(), month(), day());
  lcd.setCursor(0,0);
  lcd.print(buffer);

  sprintf(buffer, "%02d:%02d:%02d", hour(), minute(), second());
  lcd.setCursor(4,1);
  lcd.print(buffer);
}


さて、一応時計なのでしばらく動かして精度を見てみようと思いますが、USBにつないだままにしておくのも少し不安があるので、とりあえず使わなくなったスマフォ充電用エネループをつないで放置したところ、約18時間で終了。消費電力150mAってところでしょうか。なお、スマフォ充電用のエネループを使うと写真ではわかりませんが何やら液晶が脈打ってるようになります。他の電源やUSBではこういう症状が出なかったので、電池の3.7V出力を5Vに変換するためのDC/DCがあんまり安定していないのかもしれませんね。



■追記■

その後、別バージョンの時計も作りました。この他にも教材用やアルバイトで3つ作ったw

Arduino時計+温度計(7セグメントLED編)
Arduinoユニバーサルボードにハンダ付けして作りました。私の部屋で元気に稼働中です。

Beaglebone Blackで7セグメントLEDデジタル時計
待ちに待ったBeagleboneがようやく入手してうれしさのあまりついデジタル時計を作ってしまいましたが、BoneScript(Node.js)でセグメントごとに制御しているため表示がちらつきます。digitalOutじゃなくBus命令があればもうちょっと速くなるんですが。とりあえず多セグメント用のLEDドライバを入手したので、そのうち改良します。

Energia + MSP430G2でのハマりポイント
製作途中の巨大7セグメントLEDデジタルクロック。TIの省電力MCU MSP430G2シリーズをArduino互換のEnergiaという開発プラットフォームで動かしています。マカーにはありがたい。