3色LEDをパルス幅変調

投稿日:

 Arduinoの入門キットには3色LEDがついているので、これを光らせて遊ぶ。チカチカでは面白くないから、各色にパルス幅変調をかける。変調は正弦波でかけ、各色の位相をちょっとづつずらしていろんな色にする。



で、それじゃ、IoT風味で

投稿日:

 で、私がやりたかったのはコレなんである。

……つまり、このオモチャを、インターネットにつなぐ。これがやりたかった。

 あとはもう、

「メールが来たら旗があがる」

とか、

「録画が終わったら、人形が手を上げる」

とか、もう、なんぼでもアレンジ可能である。

 チナミに、Linuxだとこういうことをするのに大したことは書かなくてよく、

tail -n 0 -f /var/log/httpd/access_log | grep --line-buffered 'HTTP/1.1\" 200' | sed --unbuffered -e 's/..*/1/' >/dev/ttyACM0

……ぐらいの「ワン・ライナー」で済んでしまう。

 Arduino側のソースコードは、結局最終的には

//
//  シリアルからサーボを制御
//    佐藤俊夫
//    27.05.01(金) 0946~
//
#include <Servo.h>
//
Servo flag;
int incomingByte = 0;
const int FLAGOFF = 5;
const int FLAGON = 90;
//
void setup() {
  flag.attach(9);
  flag.write(FLAGOFF);
  Serial.begin(9600);
}

void loop() {
  if(Serial.available() > 0){  //  もし受信したデータが存在したら
    incomingByte = Serial.read();
    if(incomingByte == '1'){
      flag.write(FLAGON);
    }else if(incomingByte =='0'){
      flag.write(FLAGOFF);
    }
    Serial.flush();
    delay(1000);
  }    
}

……ぐらいの、お気楽な感じのモノになった。



サーボが動かせたら、次は……

投稿日:

 次も、やることは決まっている。サーボが動かせたら、今度はそれをPCにつなぎ、シリアルから制御するのだ!

 ここでは、キャラクタ「’1’」を送信したら旗が立ち、それ以外だったら旗が降りる。

 やり方はカンタンだ。

  1.  サーボをArduinoにつなぐ。教科書通り電源をVinに、黄色をデジタル9番ピンに、茶色をアースに
  2.  プログラムを書く。
    //
    //  シリアルからサーボを制御
    //    佐藤俊夫
    //    27.05.01(金) 0946~
    //
    #include <Servo.h>
    //
    Servo flag;
    int incomingByte = 0;
    const int FLAGOFF = 0;
    const int FLAGON = 90;
    //
    void setup() {
      flag.attach(9);
      flag.write(10);
      Serial.begin(9600);
    }
    
    void loop() {
      if(Serial.available() > 0){  //  もし受信したデータが存在したら
        incomingByte = Serial.read();
        if(incomingByte == '1'){
          flag.write(FLAGON);
          Serial.println(incomingByte, DEC);
        }else{
          flag.write(FLAGOFF);
          Serial.println(incomingByte, DEC);
        }
        Serial.flush();
      }    
    }
    
    
  3.  IDEのシリアルモニタから「1」やその他の文字を入力・送信する。



それでまあ、Lチカで遊ぶ。

投稿日:

 買ってきたガイドブック、オライリーの「Arduinoをはじめよう」に載ってるLチカは1種類だけだが、それでは面白くないのである。LEDの光らせ方しかわからなくっても、並べればこうやってもうちょっと楽しくなるのだ。

……と、いうわけで、さっそく教科書通りにいかず脱線する私。

 そういえば、と思い出す。小学生の頃、理科の実験などあると、私はすぐ何かとアレンジを施したがり、「先生の言ったとおりにしていない」「教科書に載っていないことをしている」として周りの子に言いつけられ、厳しく叱られたものだった。

 いや、そりゃ、化学の薬品なんか使う実験で先生の言ったとおりにしないのは問題があるだろう。だから当時の先生に文句はまったくないが、あの微妙な実験カスタマイズの経験は後年の私に大きく影響を及ぼした。

 8ビットマイコンとBASIC言語全盛の頃、プログラミング雑誌が多くあった。「I/O」や「BASICマガジン」などと言った雑誌にはプログラミングリストが載っており、これを掲載のとおり打ち込めばゲームなどが出来たのであるが、私はこのプログラムリストを機械的に打ち込むのが大嫌いだった。載っている通りには絶対に打ち込まなかったし、しばらくすると、土曜日に本屋で立ち読みでリストを読んで「あらすじ」を覚えて帰り、日曜日に自分のPCで再現する、ということをよくやった。

 単に楽しかったからそうしていただけだが、振り返ると、あれでプログラミング力は大いについたように思う。



かつてラフマニノフピアノ協奏曲の2番というと

投稿日:

 名演はこれにとどめを打っていたのだそうな。

https://www.youtube.com/watch?v=agqH6y-T0vc&feature=youtu.be&t=29m5s

メモ;Google Mapなどで沖ノ鳥島を一発で表示させるコツ

投稿日:

 標記。

 紀伊半島南端、潮岬から真南、台湾とルソン島のちょうど中間から真東、この線を拡大すると、沖ノ鳥島がすぐ見つけられる。

“sm21525892 ラフマニノフ:ピアノ協奏曲 第2番 ハ短調 作品18 辻井伸行 / Nobuyuki Tsujii BBC Proms full Blind Pianist” を YouTube で見る

投稿日: