今日は平日だし空いてるだろ、くらいの気持ちで家を出たところ、東武線〜日比谷線はここ数年来にもなかったほどの激混みっぷり。
なんでも蒲生駅で急病人があったとの由。
各停でダラダラ六本木まで座っていくつもりだったアテは、大ハズレとなった。しかし北千住でたまたま臨時増発の始発に乗れて、座れた。幸い、周囲に老人も妊婦もいない。ラッキー。
オッサンは生きている。
今日は平日だし空いてるだろ、くらいの気持ちで家を出たところ、東武線〜日比谷線はここ数年来にもなかったほどの激混みっぷり。
なんでも蒲生駅で急病人があったとの由。
各停でダラダラ六本木まで座っていくつもりだったアテは、大ハズレとなった。しかし北千住でたまたま臨時増発の始発に乗れて、座れた。幸い、周囲に老人も妊婦もいない。ラッキー。
晩御飯を食べて、引き続きArduinoで遊ぶ。
教科書の本文には「割り込み処理」が載ってなかったのだが、巻末のリファレンスには割り込みの関数がちゃんとある。
押ボタンスイッチでトグルする処理は、やはりポーリングではなく、割り込みによらねば面白くない。
それで、押しボタンを押すたび、LEDの点灯の流れが変わるようなものをこしらえて遊ぶ。
// // LED3つを順々に点灯,割り込みがかかると反対向きになる。 // // 佐藤俊夫 // 27.4.29 1930 // const boolean FOW = true; const boolean REV = false; boolean STATUS = REV; int LED[] = {13, 12, 11}; int i = 0; int previ = 2; void setup() { // LED3つ初期化 for(int i = 0; i <= 2; i++){ pinMode(LED[i], OUTPUT); } // 0番割り込み(2番ピン)で反転 attachInterrupt(0, switchdirection, RISING); } void loop() { // 順々点灯 previ = i; if(STATUS == FOW){ i++; if(i > 2){ i = 0; } }else{ i--; if(i < 0){ i = 2; } } digitalWrite(LED[i], HIGH); digitalWrite(LED[previ], LOW); delay(1000); } // LED点灯方向を反転させる void switchdirection(){ if(STATUS == FOW){ STATUS = REV; }else{ STATUS = FOW; } }
買ってきたガイドブック、オライリーの「Arduinoをはじめよう」に載ってるLチカは1種類だけだが、それでは面白くないのである。LEDの光らせ方しかわからなくっても、並べればこうやってもうちょっと楽しくなるのだ。
……と、いうわけで、さっそく教科書通りにいかず脱線する私。
そういえば、と思い出す。小学生の頃、理科の実験などあると、私はすぐ何かとアレンジを施したがり、「先生の言ったとおりにしていない」「教科書に載っていないことをしている」として周りの子に言いつけられ、厳しく叱られたものだった。
いや、そりゃ、化学の薬品なんか使う実験で先生の言ったとおりにしないのは問題があるだろう。だから当時の先生に文句はまったくないが、あの微妙な実験カスタマイズの経験は後年の私に大きく影響を及ぼした。
8ビットマイコンとBASIC言語全盛の頃、プログラミング雑誌が多くあった。「I/O」や「BASICマガジン」などと言った雑誌にはプログラミングリストが載っており、これを掲載のとおり打ち込めばゲームなどが出来たのであるが、私はこのプログラムリストを機械的に打ち込むのが大嫌いだった。載っている通りには絶対に打ち込まなかったし、しばらくすると、土曜日に本屋で立ち読みでリストを読んで「あらすじ」を覚えて帰り、日曜日に自分のPCで再現する、ということをよくやった。
単に楽しかったからそうしていただけだが、振り返ると、あれでプログラミング力は大いについたように思う。
無駄と言っても、私も多少世間を拡げようとしてのことですから、あながち無駄とばかりも言えんのです、ハイ。
その後、ツィマーマンと小澤征爾の名演が世に出て、まことに斯界は豊かなものとなったのだそうな。
ビートたけしの近影が何かしら前髪パッツンで話題の三戸なつめに似て見えて笑ってしまうのは俺だけに違いない。