Arduinoの入門キットには3色LEDがついているので、これを光らせて遊ぶ。チカチカでは面白くないから、各色にパルス幅変調をかける。変調は正弦波でかけ、各色の位相をちょっとづつずらしていろんな色にする。
メール・メーターはこのように作る。
さて、一部の変わったユーザ様(ヲイ)のために、Arduinoを使用した未読メールメータの作成方法を書いておきたい。入門キットについてくるサーボを使用する。
プログラムは次のような簡単なものでよろしい。
まず、Arduino側には次のように書く。
// // シリアルからサーボを制御 // 佐藤俊夫 // 27.05.02(土) 1028~ // #include <Servo.h> // Servo meter; const int METER_0 = 5; const int METER_100 = 175; const int METERMIN = 0; const int METERMAX = 100; const int STRLEN = 10; char buf[STRLEN]; int i = 0; // void setup() { meter.attach(9); meter.write(METER_0); Serial.begin(9600); } void loop() { int v = 0, deg = METER_0; if(Serial.available() > 0){ // もし受信したデータが存在したら buf[i] = Serial.read(); if(i >= STRLEN - 1 || buf[i] == '\n'){ buf[i] = '\0'; i = 0; Serial.flush(); // 針をナニする処理 v = atoi(buf); (v > METERMAX) ? v = METERMAX : v; (v < METERMIN) ? v = METERMIN : v; deg = METER_0 + (int)(v / ((float)METERMAX / (float)(METER_100 - METER_0))); meter.write(deg); // Serial.println(deg, DEC); // Serial.write('\n'); delay(1000); }else{ i++; } } }
テストしてうまく動いたら、次に、POP3サーバにたまっている自分のメールの本数を知る工夫をする。
私は次のようにした。まず、手近のLinuxマシンにexpectを入れる。
# yum -y install expect (中略)
そうすると、telnetなどでPOP3サーバに自動ログインできる環境が整う。
シェルでこんなのを書く。まあ、遊びなんでrootで。
# ls -Fla pop2arduino -rwx------ 1 root root 415 2015-05-02 13:58 pop2arduino* # cat pop2arduino #!/bin/sh # pop2arduino # Sat May 2 12:53:57 JST 2015 # Sato Toshio # expect -c " set timeout 5 spawn telnet pop.hogehoge.ne.jp 110 expect \"+OK POP3 ready\" send \"USER fugafuga@hagefuge.hogehoge.ne.jp\n\" expect \"+OK\" send \"PASS passpass\n\" expect \"+OK server ready\" send \"STAT\n\" expect -re \"\\\+OK (.+) .+$\" send \"QUIT\n\" " | egrep "\\+OK ([0-9]+) .+$" | sed -r "s/\\+OK ([0-9]+) .+$/\1/g" >/dev/ttyACM0
で、このシェルは、まあ、なんだっていいんだけど、安直にcronで定期実行する。
# crontab -e (以下crontab内) */5 * * * * /hoge/pop2arduino (crontabおわり) /etc/rc.d/init.d/crond restart (出力略)
……で、メールが届くのを待っていると、こういうふうに動く。
工作
一部のマニアックなユーザ様(誰?)(笑)の声にお応えし、もうすこし一生懸命に物品を作ることにする。
取り出だしましたるは、媒体のチープ化によりどこのご家庭にも余っているCDのケースでござい。
これをば、プラカッターでごりごり切断するので御座候。
そうすしますと、こういう美しいスチロール板が手に入るわけでござるよ。
コイツに、細いマジックで寸法を入れる。
マジックで入れた線を切り抜く。いろいろな方法がある。金工ドリルの細いやつでたくさん穴をあけて割り抜いたり、「ハンドニブラー」でかじったりするやり方があるが、私の場合、世のプロ電子工作派が「なんてことをするんだ!工具が傷むじゃないか!!」と怒り出すという樹脂加工の邪道!!(笑)、「半田鏝で溶断」という方法をよく使う。
線の内側を溶断したら、やすりで削り拡げてきれいな穴にする。
次に、ネジ穴をあける。アクリル板と違ってスチロール板はすぐにヒビが入ったりするから、やさしく工作しなければならない。なので、電動工具もよいが、ここは一番、ピンバイスに2ミリの歯を噛んで、ウリウリとやさしく切る。
最後に、ちょいと大技。このスチロール板を曲げる。凝る向きはニクロム線の曲げ工具などを持っていると思うが、私はめったに樹脂工作をすることはないので、持っていない。そこで、余っているアングルを適当に木の台にネジ止めし、これをガストーチで炙る。
で、ほどよく温まったら、これにえいやああ、とスチロール板を当て、曲げる。
さて、これで完成。これは何かというと……。
ハイ、サーボモーターの取り付けブラケットですよ。ええ、Arduinoで遊ぶために作ったんです、朝っぱらから(笑)。
八十八夜
#kigo #jhaiku #haiku #saezuriha (季語は「八十八夜」)
八十八夜
#kigo #jhaiku #haiku #saezuriha
今シーズンはじめて
飲みはじめる。
よしッ!……次はッ!
次は、自宅の便器をインターネットに接続するッ!!!
……と考えて荒い鼻息をついたが、1秒でやめた。
だって、品がないし、変なものを便所に取り付けると妻におこられるもん。
しかし、ヘルスケアのためには、ちょっとありえるよな。「iToilet」。
- 温度
- 重さ・量・密度
- 色合い
- におい
- 座っていた時間
- 音量
……これらをツイッターに全自動投稿。甘えるんじゃねえ、パーミッションは恥も外聞もなく、全部パブリック。忍辱の精神なくして健康なしッ!!
重量センサー、かなあ、ネックは。耐水性で、度重なる洗浄に耐え、コンマ1グラム単位の精密度、傾きに左右されないことも必要だ。
においセンサーは、まあ、なんとかなるだろ、市場をあされば。
次にまたバカなものを
ポテンショメータをつないで
次は、ポテンショメータをつないで、アナログ入出力をマスター。
9番ピンを使用したパルス幅変調もわかったし、ついでに、さっきシリアルへのアクセス方法が分かったから、IDEに式ウォッチ機能がない代わりに、出力をシリアルにタレ流して観測する方法も会得。
// // ポテンショメータとLEDのPWM制御 // 佐藤俊夫 // 27.05.01(金)1604~ // const int LED = 9; const int POTENTIOMETER = 0; // void setup() { pinMode(LED, OUTPUT); pinMode(POTENTIOMETER, INPUT); Serial.begin(9600); } void loop() { int bright = 0; bright = analogRead(POTENTIOMETER) / 4; Serial.println(bright, DEC); analogWrite(LED, bright); }