室内灯をつけっぱなしにしたせいで、バッテリーが上がったので、急遽、簡易型の充電器を制作して一晩充電し、事なきを得ました。
作品集に載せてあります。
前回バッテリー交換してからたぶん5年近く交換してないので、室内灯を24時間つけておいたくらいでやられるとは、そろそろ寿命かな?
でも、定期メンテで交換した気もするので、記録を確かめねば。
室内灯を LED に交換すれば消し忘れてもダメージは少ないかも。
室内灯の消し忘れって多いんだから、もっとインテリジェントにはならないものかね?一定時間で自動消灯とか、電圧低下時は点灯しないようにするとか。高級車なら対策済みかな?
昨年、「大人の科学」のArduinoで遊んでみたのを皮切りに、秋月電子やDX.comで電子部品やユニットを買い始めた。
そして、小3の子供に「一緒にロボットを作ろう」と約束したこでが、本格的に電子工作を再開する決心をした。また、情報を伝達するためにこのサイトを開設した。
今回のGW期間中に、28年ぶり?に電子工作の部品箱をひっくり返し、一斉に整理した。
驚いたのは、30年も昔の部品でも、わりときちんと使えるということです。電子パーツは外観上はほとんど変化なし。錫メッキ銅線なんてピカピカのまま。電解コンデンサだけは信用できないと思うので、なるべく古いものは避けようと考えています (DX.com で電解コンデンサのパーツセット注文した)。
また、カーステレオにつなぐ Bluetooth アダプタを作成して車に装着し、数年前に秋月で衝動買いした USB DAC & パワーアンプの基板に改造を施してケースに入れて USB オーディオアンプを完成させ、DX.com で購入したファンクションジェネレータを単3電池2本で動くようにしてケースに収め (まだ未完成)、キットで作った 2-way スピーカーのフロントグリルカバーを木枠+サランネットで作成した。
いろいろできて満足です。
この勢いを止めないように頑張りたいと思います。
インターフェースチップのファームウェアのバージョンは、mbed.htmをテキストエディタ等で開くことで確認できます。
最新のファームウェアとWindowsでのファームウェアのアップデート手順はmbed.orgのwikiをご覧ください。
mbed LPC1114FN28のファームウェアの更新方法(英語)
ISP ボタンを押しながら USB 接続すると、通常の mbed drive ではなく "CRP DISABLED" drive が出現するので、古いファイルを消去して、そこにダウンロードしておいた最新のファームウェアをコピーする。
ファイル名を変更する必要なし。
本日コピーしたのは build 20150206 だが、何が変わったのかは未確認。
安全のため、Windows から右クリックで取り外ししようとしたがエラーとなった。仕方ないのでいきなり抜いた。
今度は何も押さずに USB 接続すると、通常の mbed drive が出現。めでたくアップデート完了した。
mbed サイトで compiler を開くと、デフォルトでLチカのソースが展開されるので、それをコンパイルして MBED drive にコピー。
コピー終了後に、Explorer のウィンドウが閉じるので、再度開くと先程のファイルは見えなくなっている。
要するに、ほにゃらら.bin をコピーすると、それがプログラムとして認識され、すでに書き込まれている以前のプログラムは消去される。すなわち、「ほにゃらら」の部分は何でも良い。
mbed コンソールでプロジェクトに応じて名前を付け、そのまま変更せずにコピーでよろしい。
ソースをみると、
DigitalOut myled(LED1);
とある。
ピン LED1 を myled という名のデジタル出力に設定する、という意味(に違いない)。
おそらく、LED1 は dp14 という名前の上書きと思えるので、ちょっと試してみる。
#include "mbed.h"
DigitalOut myled(dp14);
int main() {
while(1) {
myled = 1;
wait(0.1);
myled = 0;
wait(0.1);
}
}
はたして、全く同じ動作でした。
要するに、標準の mbed ボードにはもともと LED が2つついているんですね。
だから端子に別名が付けられている。
今度は圧電スピーカを繋いで音を出してみた。
#define mC 261.626
#define mD 293.665
#define mE 329.628
#define mF 349.228
#define mG 391.995
#define mA 440.000
#define mB 493.883
#include "mbed.h"
DigitalOut sp1(dp14);
Ticker timer;
int oto=0;
void tick(void)
{
sp1.write(oto);
oto=!oto;
}
int main() {
float mm[]={mC,mD,mE,mF,mG,mA,mB,mC*2};
int i;
for (i=0;i<sizeof(mm);i++) {
timer.attach(&tick,1.0/mm[i]/2.0);
wait(0.5f);
}
timer.detach();
while(1);
}
成功。簡単でした。
リファレンスはやはり書籍で手に入れないと、オンラインでみるのは疲れる。
mbed console から、Import で HCSR04 (DX で購入したセンサ) を探したところ、まさに HCSR04 というライブラリがあったのでインポート。
Author の記載したページ (http://developer.mbed.org/users/prabhuvd/code/HCSR04/)
に参考プログラムがあるのでこれをコピペしてみた。
LCD を持ってないので、距離を音程に変換試みた。
...鳴らず。失敗。
#include "mbed.h"
#include "hcsr04.h"
HCSR04 usensor(dp25, dp26); // (TRIGGER, ECHO)
DigitalOut sp1(dp14);
Ticker timer;
int oto=0;
float dist;
void tick(void)
{
sp1.write(oto);
oto=!oto;
}
int main() {
wait(1.0); // 1 sec
while(1) {
usensor.start();
dist = (float)usensor.get_dist_cm() * 10.0; // mm
if ((dist > 100) & (dist < 1000)){
timer.attach(&tick,1.0/dist/2.0);
wait(0.1);
}
}
timer.detach();
}
原因は? そもそも、3.3V しか繋がってないのでセンサーが動作してないのだろう。
mbed LPC1114FN28 は 3.3V 動作なので、端子には 3.3V しか出ていない。
ちょっと改造して、USB の 5V を引き出せるようにピンヘッダを付けることにしよう。
GPIO pin は 5V tolerant だそうで。壊れる心配はなさそう (ADC 入力は VCC 以上入れると壊れるそうな)。
あと、LCD モジュールも購入しよう。
今日はここまで。
あなたもジンドゥーで無料ホームページを。 無料新規登録は https://jp.jimdo.com から