TIM Labs

2019年8月アーカイブ

次のような模様を見たことが無いだろうか?

これは、Processingに用意されているnoize関数を用いることで、簡単に作ることができる。

パーリンノイズ(Perlin noise) と呼ばれるこの関数は、自然なテクスチャを表現するために用意されたもので、雲を表現するためなどに使われる。

PerlinNoise1.png

この画像は、以下のプログラムを実行すると、静止画として表示されたものである。

void setup() {
  background(255);
  colorMode(HSB, 100);
  size(500, 500);
  strokeWeight(1);
}

void draw() {
  for ( int x=0; x<width; ++x ) {
    for ( int y=0; y<height; ++y ) {
      float co =100 * noise(x/50.0, y/50.0);
      stroke(co, 100, 100);
      point(x, y);
    }
  }
}

最初に、setup()が呼ばれる。

  colorMode(HSB, 100);

が、カラーモード指定で、色をHue(色相)、Saturation(彩度)、 Brightness(明度)で表現し、範囲が0から100である。

draw() が実際に描画する部分だが、noise()関数は、引数を1個,2個,または3個とり、それぞれ1次元、2次元、3次元のnoize空間に対応する。引数に対しては、型はfloatで、範囲の指定は特にない。しかし、noise()の戻り値は0.0〜1.0となっている。
そのため、100倍して、HSBの色として利用している。
これを、ピクセル数だけ繰り返しているという、非常に単純なプログラムである。

前回、400円オシロスコープの話をしたが、これはProcessingで作られているのだ。

信号(電圧)の読み取りはArduinoで行っているが、そのデータは全部パソコン側に送られ、Processingでつくられたプログラムで処理されているのだ。

oscilloscope-bridge-2.png

電圧の測定はArduinoで行い、データをパソコン上のProcessingのプログラムに送って処理している。
もちろん、右側のボタンによるさまざまな制御もProcessingで処理されている。
これだけできるにだから、これは十分に習得する価値があるプログラミング言語と思われる。

最近は、STEM教育といって、小学生のうちからプログラミング、IoTなどの教育を始めようと言う動きが世界中に拡がっている。
そこで良く紹介されていて、書籍なども非常にたくさん出ているのが、ScratchというMITのMedia Lab で子供向けに開発されたプログラミング言語であり開発環境がある。

しかし、子供向けにしているために、せっかくのコンピュータの性能が十分に生かせないなど問題も色々ある。
入門には良いが、そのまま実用に結びついている訳ではない。

今回紹介しようとしているProcessingは、非常に入門のハードルは低いけれど、コンピュータの持つさまざまな機能、性能を十分に使えるようにしたものである。
とくに、デザイナー向けに作られており、最近のデジタルデザインが手軽に、そして優れたデザインができるようにと作られたものだ。
ということで、グラフィックス機能はやたらに高く、かつ便利にできている。
たとえば、東京芸術大学のメディアアート・プログラミングでは、Processingが用いられているのだ。

なお、このProcessingもMITのMedia Lab発祥のプログラミング言語である。

oscilloscope-bridge-2.pngIoTを色々いじっていると、電気が思った通りに変化しているか、電圧の波形を見たいことがある。つまり、可視化。

ということで、Arduinoで何とか測定装置、要するにオシロスコープはできないだろうか、できそうではないか、一定時間間隔で電圧を測定して記録さえできれば、あとは表示するだけだ。

といっても、オシロスコープを自分で考えるのはとても面倒である。

折角のインターネット時代なので、ちょっとインターネットで検索してみたら、こんなサイトが見つかった。

Arduino簡易オシロスコープ|国立大学法人 九州工業大学情報工学部【飯塚キャンパス】で作り方が公開されているのだった。

ソフトウエアもダウロードできるようになっていて、これはもう作るしかない。

Arduino1台と、簡単な回路を作ることと、パソコン側にProcessingという最近流行りのプログラミング言語をインストールしてオシロスコープの画面・制御パネルを動かす構成になっている。

Arduinoは、その機能の一部が使われるだけなので、Arduino Uno の必要もなく、もっと小さいArduino Nanoで十分である。Arduinoはオープンハードウェアなので、安い互換品が多数存在する。
ネットで調べていたら、中国からのネットショッピングで、USBケーブル+Geekcreit® ATmega328P Nano V3 Module Improved Version が1セット275円であったので入手した。

とても怪しいビニール袋(小さなゴミ袋の感じ)に、最低限の包装で物が入っているだけだったが、組み立てたらちゃんと動作した。

ということで、ケーブル付きで275円のArduino nanoを、ブレッドボード互換のユニバーサル基板に若干の部品と共に取り付けたら、Arduino側ができた。
その他の部品を入れて、400円程度で完成した。つまり、普通に安いオシロスコープの値段の1%である。

このアーカイブについて

このページには、2019年8月に書かれたブログ記事が新しい順に公開されています。

前のアーカイブは2019年7月です。

次のアーカイブは2019年10月です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

月別 アーカイブ