経由でインストールしてみてください。Tweet次のような模様を見たことが無いだろうか?これは、Processingに用意されているnoize関数を用いることで、簡単に作ることができる。呼ばれるこの関数は、自然なテクスチャを表現するために用意されたもので、雲を表現するためなどに使われる。この画像は、以下のプログラムを実行すると、静止画として表示されたものである。}}最初に、setup()が呼ばれる。Brightness(明度)で表現し、範囲が0から100である。実際に描画する部分だが、noise()関数は、引数を1個,2個,または3個とり、それぞれ1次元、2次元、3次元のnoize空間に対応する。引数に対しては、型はfloatで、範囲の指定は特にない。noise()の戻り値は0.0〜1.0となっている。そのため、100倍して、HSBの色として利用している。これを、ピクセル数だけ繰り返しているという、非常に単純なプログラムである。Tweet前回、400円オシロスコープの話をしたが、これはProcessingで作られているのだ。信号(電圧)の読み取りはArduinoで行っているが、そのデータは全部パソコン側に送られ、Processingでつくられたプログラムで処理されているのだ。電圧の測定はArduinoで行い、データをパソコン上のProcessingのプログラムに送って処理している。右側のボタンによるさまざまな制御もProcessingで処理されている。これだけできるにだから、これは十分に習得する価値があるプログラミング言語と思われる。最近は、STEM教育といって、小学生のうちからプログラミング、IoTなどの教育を始めようと言う動きが世界中に拡がっている。子供向けに開発されたプログラミング言語であり開発環境がある。子供向けにしているために、せっかくのコンピュータの性能が十分に生かせないなど問題も色々ある。入門には良いが、そのまま実用に結びついている訳ではない。今回紹介しようとしているProcessingは、非常に入門のハードルは低いけれど、コンピュータの持つさまざまな機能、性能を十分に使えるようにしたものである。デザイナー向けに作られており、最近のデジタルデザインが手軽に、そして優れたデザインができるようにと作られたものだ。いうことで、グラフィックス機能はやたらに高く、かつ便利にできている。東京芸術大学のメディアアート・プログラミングでは、Processingが用いられているのだ。Lab発祥のプログラミング言語である。TweetIoTを色々いじっていると、電気が思った通りに変化しているか、電圧の波形を見たいことがある。いうことで、Arduinoで何とか測定装置、要するにオシロスコープはできないだろうか、できそうではないか、一定時間間隔で電圧を測定して記録さえできれば、あとは表示するだけだ。いっても、オシロスコープを自分で考えるのはとても面倒である。インターネット時代なので、ちょっとインターネットで検索してみたら、こんなサイトが見つかった。キャンパス】で作り方が公開されているのだった。ソフトウエアもダウロードできるようになっていて、これはもう作るしかない。Arduino1台と、簡単な回路を作ることと、パソコン側にProcessingという最近流行りのプログラミング言語をインストールしてオシロスコープの画面・制御パネルを動かす構成になっている。Nanoで十分である。Arduinoはオープンハードウェアなので、安い互換品が多数存在する。1セット275円であったので入手した。怪しいビニール袋(小さなゴミ袋の感じ)に、最低限の包装で物が入っているだけだったが、組み立てたらちゃんと動作した。nanoを、ブレッドボード互換のユニバーサル基板に若干の部品と共に取り付けたら、Arduino側ができた。その他の部品を入れて、400円程度で完成した。普通に安いオシロスコープの値段の1%である。Tweet128×64ドットで、多数jの文字を表示するのは、1画面ならOKだが、2画面だとダメだった。いうことで、次のような実験をした。画面を128×64ではなく、128x32を指定してみた。表示する文字数をぐっと半分以下に減らしてみた。これだと、ディスプレイの上半分だけが使われるのだろうか。プログラム全体を以下に示す。disp.display();}すると、結果はこうなった。文字が縦に倍に伸ばされているようだ。1行の文字数には変化がない。して、128×64では動かず、128×32にしたら動いたのであろうか。以下のような理由ではないかと思う。TweetOLEDは非常に鮮明な表示と言われているので、文字を非常に小さくしてみた。漢字を表示したりするには、フォントを入れたりしないといけないのだが、面倒なので止めた。これを表示しているスケッチ(プログラム)を示す。disp.display();}さて、次は、2つのディスプレイに異なる内容を表示してみよう。adafruitのデモプログラムに手を入れて、2つのディスプレイに異なるグラフィックス表示をさせるのは面倒だったので、とりあえずこのプログラムを修正して、2つのディスプレイで、最後まで表示してみよう。Arduinoに接続したが、まったく何も表示されず、画面は真っ暗なままだった。いうとき、一番考えられるのは、I2Cのアドレスが一致していないことである。}となっていて、プログラムではアドレスが0x3Dが指定されている。デバイス側のI2Cのアドレスが3Dであるかどうかを確認しなくてはならない。確認方法は色々考えられる。他のI2Cのアドレスを調べられるマシンで確認する。デバイスの説明書を読んで確認する。Arduinoに、I2Cバスに接続したデバイスのアドレスを調べるソフト(スキャナ)を入れて確認する。2.が正統派と思うが、ここでは、知っておくと非常に便利なI2Cのアドレス・スキャナについて説明しよう。128×64のモノクロのOLED(有機EL)を繋いでみたことを書いた。今回は、もっと掘り下げてみよう。nanoについて説明しよう。UNOとほぼ同じであるが、ピンに違いがあるので、結線するときには必ず印刷されているピンの記号を見ながら行おう。今回は、I2CでOLEDディスプレイを繋ぐので、必要な結線は4本だけである。Tweet16文字2行の液晶ディスプレイをArduinoにつけたが、基板も含めると、幅8cm、高さ3.6cmとかなり大きい。Arduino本体より大きく、拡張ボードと同じ幅になってしまった。遠くから眺めるのならともかく、これではあまりにも大きく、基板を専有し過ぎて邪魔である。いうことで、小型化に取り組んでみよう。このディスプレイはピンの数が多く、ハンダ付けするのが面倒である。いうことで、少ない線数で接続できる小型のディスプレイを探すことにした。それで、ネットで何か手頃なものはないかと調べてみた。Arduino/NodeMCUがあり、参考になった。英語だけど、非常に丁寧な説明で、英語が聞き取れなくても、良く分かる説明であったので、これをベースに考えることにした。小さいディスプレイではなく、ドットマトリックスにしてみよう。液晶はバックライトがないと見難いし、視野角に限度がある。diode、有機EL)なら、ドット自身が発光しているから、見やすい。Arduinoとの接続に、I2Cバスを使えば、たった4本の結線で済むので、楽そうだ。(エンジニアはlazyであるべし)温湿度気圧センサーはI2Cだったし。いうはるかに小さいのが使われていた。いうことで、ちょっと部品を集め直して、ディスプレイのテストをしてみた。どのくらい小さくなったか、センサーの値を表示する3階建てと比較してみた。ディスプレイははるかに小さくなって、約1/3の大きさである。これだけ小さいけれど、実はこちらの方が、より多くの文字を表示することができる。楽勝で、10文字4行の英数字が表示できる。頑張れば、20文字8行さえ可能である。正しくは、その互換品の安いやつである。いう、それほど一般的でないコネクタになっていたので、これのケーブルはわざわざ入手した。ディスプレイにはイメージが描かれているが、これはこのデバイスのためのライブラリのサンプルを走らせただけである。次回から、もう少し詳しく説明しようと思う。Tweetここ3回で以下の記事を書いてきた。まとめて表示できるようにしてみた。今までは、次図の左のブレッドボードを使い、ジャンパー線で結んでいた。プロトタイプではよくやる方法だが、どうしてもジャンパー線は外れやすい。それで、今回は、中央のArduino用の拡張ボードを用いた。Arduinoのピン位置に合わせて穴が空いているので、これを用いると二階建て構造にして、ブレッドボードの代わりにこの拡張ボードに部品を取り付けることができるようになる。いうことで、ハンダ付けが必要になるのだが、ハンダ付けの個所もできるだけ減らしたい。配線は最小限にしたい。それで用いたのが、右端の超薄型ユニバーサル基板である。見ると、ブレッドボードとプリントパターンがよく似ていることが分かるであろう。薄く、カッターで簡単に切り分けることができ、穴を合わせてユニバーサル基板の上に置いて配線すると、とても便利であった。3つの部品の配線であるが、電源系は当然共通になる。それ以外の部品とArduinoを結ぶ信号線などは、異なるピンになるように最初から話を進めてきたので、そのまま3つの回路を拡張基板上に実現すれば動く。組み立てて動かすと、こんな感じになった。1行目に気温と湿度、2行目に二酸化炭素濃度と気圧を表示している。拡張基板、センサーとディスプレイの3階建てになってしまった。ディスプレイはとても見やすいのだが、ディスプレイの幅が拡張基板と同じだけあり、このディスプレイは大き過ぎた気がする。安かったから我慢しよう。