ポテンショメータをつないで

投稿日:

 次は、ポテンショメータをつないで、アナログ入出力をマスター。

 9番ピンを使用したパルス幅変調もわかったし、ついでに、さっきシリアルへのアクセス方法が分かったから、IDEに式ウォッチ機能がない代わりに、出力をシリアルにタレ流して観測する方法も会得。

IMG_2748

//
// ポテンショメータと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);
}



で、それじゃ、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);
  }    
}

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



シリアルで制御できたら、次は……

投稿日:

 次も、既にやることは決まっている。

 Arduinoをおもむろに手元のLinuxマシンにつなぐ。で、Linuxへ行って、rootになり、

# dmesg
usb 3-2: new full speed USB device using uhci_hcd and address 2
usb 3-2: configuration #1 chosen from 1 choice
usb 3-2: New USB device found, idVendor=2a03, idProduct=0043
usb 3-2: New USB device strings: Mfr=1, Product=2, SerialNumber=220
usb 3-2: Product: Arduino Uno
usb 3-2: Manufacturer: Arduino Srl
usb 3-2: SerialNumber: 75439333335351303121
cdc_acm 3-2:1.0: ttyACM0: USB ACM device
usbcore: registered new interface driver cdc_acm
drivers/usb/class/cdc-acm.c: v0.25:USB Abstract Control Model driver for USB modems and ISDN adapters

……となってればオッケーだ。

 で、

# ls -Fla /dev/ttyACM0
crw-rw---- 1 root uucp 166, 0 2015-05-01 11:50 /dev/ttyACM0

 よっしゃ、あるある。

 スピードなどはsttyで確かめると良い。

# stty -F /dev/ttyACM0
speed 9600 baud; line = 0;
-brkint -imaxbel

 オッケー。

 で、Linuxのコマンドラインから、旗を上げ下げする。

# cat /dev/ttyACM0 &
# echo '1' >/dev/ttyACM0

 おう、旗が上がる。

# echo '0' >/dev/ttyACM0

 ふふっ、旗が下がる。

 ……で、ここまで来たら、もうやりたいことはできたも同然w。



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

投稿日:

 次も、やることは決まっている。サーボが動かせたら、今度はそれを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」やその他の文字を入力・送信する。



ルーブル美術館展へ行ってきた

投稿日:

 休暇前から楽しみにしていたルーブル美術館展を見に行ってきた。六本木の国立新美術館でこの2月から開催している。

 テーマは「風俗画(ジャンル画 Peinture de genre)」であり、市井の人々の暮らしの絵や静物画など、さまざまな題材の企画展である。

 昔のヨーロッパ美術は、キリスト生誕や聖母マリアなどの抹香臭いものを描き留めた宗教画が最も崇高なものとして価値を認められており、市井の風俗や静物などは一段低いものとされていたそうで、ところが逆説的に、画家は風俗画に自由な裁量を持つことができ、後世芸術的に優れたものが多く残る要因となったそうである。

 普段であれば、誰かに誘われたというのでもなければそれほど興味もなく、広告も見過ごしてしまうところだったのだが、今回は違う。行ってみようと言う気になったのは、フェルメールの「天文学者」が、広告のキャッチ画像になっていたからだ。

 それはこの絵である。有名であるから知っている人は多いと思う。

800px-Johannes_Vermeer_-_The_Astronomer_-_WGA24685

 そのフェルメールの「天文学者」も、絵そのものをよく知っていて前々からずっと見たいと思っていた、というわけではない。この絵を私が知っている理由は、別のところにある。

 私は、微生物の発見者としてその名を永久に記憶されているオランダの科学者、アンソニー・レーウェンフックを大変尊敬しているのであるが、フェルメールのこの絵のモデルは、彼、レーウェンフックではないかと言われており、そのために知っていたのである。

 私がレーウェンフックを尊敬する理由は、彼が学府の学問を受けた本職の学者ではないからである。だがしかし、彼がうち建てた科学上の金字塔は、彼以外の誰も達成しえなかったほど巨大である。

 そのことをまた、忘れないよう改めて書き留めておこうと思う。

久しぶりに

投稿日:

 恵比寿の駅に降りてみたら、以前はたしかなかったような地下鉄の出入り口ができていて、ちょっと珍しい気持ち。

出かける

投稿日:

 今日は平日だし空いてるだろ、くらいの気持ちで家を出たところ、東武線〜日比谷線はここ数年来にもなかったほどの激混みっぷり。

 なんでも蒲生駅で急病人があったとの由。

 各停でダラダラ六本木まで座っていくつもりだったアテは、大ハズレとなった。しかし北千住でたまたま臨時増発の始発に乗れて、座れた。幸い、周囲に老人も妊婦もいない。ラッキー。