#kigo #jhaiku #haiku #saezuriha (季語は「花菖蒲」)
花菖蒲
@no_ra_coさんのツイート(https://twitter.com/no_ra_co/status/611921355345276928?s=09)をチェック
徹夜明け
夏
Arduinoでいろいろできるようになるには今年の夏ぐらいまでかかるだろうと思っていたが、思いのほか、今日現在でも自分で面白いと思うことができるようになった。
こうなってみると、夏の休暇には「Raspberry Pi」を買ってみようかという気にもなるではないか。
あー、銭ゲバっぽく
Arduinoで株価の監視、とかもゲスっぽくていいなあ。……アクチュエータはLEDとかじゃなくってさ、ソレノイドでピンが抜けて、鉄槌みたいなものがドガッ!!って振り下ろされるワケよ。
来週は
来週は、ピアノとArduinoで何か、面白いことができないものかな。MIDIをどうにかするとか、アナログの音声をどうにかするとか。
昔に比べて
昔に比べて、本当にビールの品質がよくなった。昔は「ビール」と称していても、大抵コーンスターチなどが入っていて、今の発泡酒の品質だった。ごく僅かな銘柄(ヱビスなど)だけが麦芽とホップのみで作られていた。
この状況は何年くらい前までだったろう。
ビールの品質が向上するのと前後して、底質の「発泡酒」が出てきた。これは以前のビールとあまり変わらない品質だ。買い手ははっきりそれと知って買うことができるのだから、正直でよいことだと思う。
さて今日の飲み料は
メールサーバお知らせランプ
今朝の着想、「Arduinoのメールサーバお知らせランプ」というのを実際に作った。
自分のプロバイダのメールサーバを定期的に監視して、メールがたまっていなければ緑、少し多ければ黄、たまりすぎていれば赤、早急に読み出さなければならないようなら赤の点滅、というふうに、ランプで知らせてくれるのである。
以前作った「未読メールメータ」とは違って、「ETHERNET SHIELD 2」を使って単独でネットにつながるように作ってあり、パソコンを立ち上げたりサーバを上げたりする必要はないので、使い方も単純だ。電源をつなぎ、そのへんにのたくっているカテ5のケーブルを突っ込めば終わりである。
まず、100円ショップで買ったアクリルの枠にEHTERNET SHIELD 2を取り付けたArduino UNOをねじ止めする。
LEDは昨日も使ったアノードコモンのものを、大きく見えるよう、これまた100円ショップで買ってきたピンポン玉の中に封入し、クリップでアクリルの枠にとりつける。
RGBそれぞれのピンをデジタルの3,4,5番につなぎ、アノードに+5Vを加える。それぞれのピンに330Ωの抵抗を付けておくことを忘れてはならない。
回路図については、描くほどのものではないが、まあ、描けばこうなる。
そうすると、メールの量に応じて、こんな具合に光り方が変わる。
写真の彩度が悪いが、実物はもっと鮮やかな色に見える。
スケッチはこんな感じだ。
// // メールの残りによりランプの色を変える。 // 佐藤俊夫 // 27.06.14(日) 1500~ // #include <SPI.h> #include <Ethernet2.h> byte MAC[] = { 0x90, 0xA2, 0xDA, 0x0F, 0xF6, 0x74 }; IPAddress IP(192, 168, 1, 129); IPAddress MY_DNS(192, 168, 1, 1); EthernetClient CLIENT; const char MAIL_SERVER[] = "pop.hogehoge.ne.jp", USER[] = "USER hoge@pop.hage.ne.jp", PASS[] = "PASS passpass"; unsigned long LAST_CONNECTION_TIME = 0; const unsigned long CONNECTION_INTERVAL = 300L * 1000L; int R = 0, G = 0, B = 0; const int LEDR = 3, LEDG = 4, LEDB = 5; unsigned long LAST_LED_BLINK_TIME = 0; boolean LED_BLINK_RED = true; const int LED_BLINK_INTERVAL = 1000; int MAIL_NUM = 0; String RECEIVE_STR = ""; void setup() { pinMode(LEDR, OUTPUT); pinMode(LEDG, OUTPUT); pinMode(LEDB, OUTPUT); digitalWrite(LEDR, HIGH); digitalWrite(LEDG, HIGH); digitalWrite(LEDB, HIGH); delay(1000); Ethernet.begin(MAC, IP, MY_DNS); } void loop() { if (CLIENT.available()) { char c = CLIENT.read(); RECEIVE_STR += c; } if (millis() - LAST_CONNECTION_TIME > CONNECTION_INTERVAL) { pop3connect(); if(RECEIVE_STR.indexOf("+OK server ready\r\n+OK ") >= 0){ RECEIVE_STR = RECEIVE_STR.substring(RECEIVE_STR.indexOf("+OK server ready\r\n+OK ") + 22); RECEIVE_STR = RECEIVE_STR.substring(0, RECEIVE_STR.indexOf(" ")); MAIL_NUM = RECEIVE_STR.toInt(); } RECEIVE_STR = ""; } if(MAIL_NUM <= 10){ digitalWrite(LEDR, HIGH); digitalWrite(LEDG, LOW); digitalWrite(LEDB, HIGH); }else if(MAIL_NUM <= 50){ digitalWrite(LEDR, LOW); digitalWrite(LEDG, LOW); digitalWrite(LEDB, HIGH); }else if(MAIL_NUM <= 100){ digitalWrite(LEDR, LOW); digitalWrite(LEDG, HIGH); digitalWrite(LEDB, HIGH); }else if(MAIL_NUM > 100){ if(millis() - LAST_LED_BLINK_TIME > LED_BLINK_INTERVAL){ if(LED_BLINK_RED){ digitalWrite(LEDR, HIGH); digitalWrite(LEDG, HIGH); digitalWrite(LEDB, HIGH); LED_BLINK_RED = false; }else{ digitalWrite(LEDR, LOW); digitalWrite(LEDG, HIGH); digitalWrite(LEDB, HIGH); LED_BLINK_RED = true; } LAST_LED_BLINK_TIME = millis(); } } } void pop3connect() { CLIENT.stop(); if (CLIENT.connect(MAIL_SERVER, 110)) { CLIENT.println(USER); delay(1000); CLIENT.println(PASS); delay(1000); CLIENT.println("STAT"); delay(1000); CLIENT.println("QUIT"); delay(1000); CLIENT.println(); LAST_CONNECTION_TIME = millis(); } }
スペーサーなど
秋葉原へ出掛けて千石電商へ行き、プラスチックのスペーサーなどいくつか買う。