超音波距離センサー その1

f:id:tadpole-endoh:20170811080229j:plain

部品:超音波距離センサー HCSR04 (2017年8月現在 秋月電子では400円)安くてもちゃんと動く。この写真ではadafruit の8×8 matrix が写っていますが必須ではありません。これとarduino UNO をつなぎ、この右側に(赤いケーブルで)私のパソコンがUSB接続してます。

 センサーは1秒間に8回の超音波を発信し、その跳ね返り時間をarduino が計測し、それをパソコンに表示するようにしています。サンプルファイルが公開されていますので難しくありません。

 最初全く計測ができなかった。音の伝導速度を元に遅延時間から距離を割り出さなくてはいけないが(計算はarduinoがします)、計算式が一桁間違っていた。高校卒業してからずいぶん経ちますからねえ。

 この写真は、人が近づいたときだけ私の名前が表示されるようにしようと実験中のところです。

ペンダント

f:id:tadpole-endoh:20170811071108j:plain

部品:adafruit Gemmma または trinket,  adafruit 8×8 mini matrix,

(ペンダントにするなら)battery、(ペンダントならGemmaの方が良い) 

スイッチを入れるとmatrix にスペースインベーダーが現れてピコピコ踊ります。

この写真は試作品で最終的にはGemma につないでペンダントにしました。

早期に壊れてしまいましたが。

 作り方は簡単で、adafruit のHPにアクセスしてTrinket / Gemma Space Invader Pendant と入力して検索してください。指示通りに接続してプログラムをdownload してTrinket かGemma にupload すれば動きます。

 ただ、このプログラムを書いた人はレベルの高い人だろうと思う。どうして動くのかいまだにわかりません。

【ご注意】 Trinket やGemma にupload するとき、お使いのPCがUSB3.0 の場合は間にUSB2.0 のハブを入れてください。

 

piano tie

f:id:tadpole-endoh:20170810204359j:plain

Tony Olsson 氏著、「Arduino Wearables」の中のPiano tie をほぼ真似して作りました。原著では鍵盤にあたるスイッチも導電の布を使って作られているのですが、そこまでのスキルが無いのでLilypad 押しボタンスイッチを使って楽をしています。

 外側のネクタイは私がパリで学会発表を行った際に買ったものです。安物なのですがデザインが良いですね。さすが芸術の都です。

 ボタンを押すとドレミファソラシドと右の黒い圧電サワンダから音が出て演奏ができます。周波数はArduino IDE を開き、「スケッチの例」→「02.Digital」→「toneMelody」を開き、中の「pitches.h」ファイルを参照。

 小さい音なので、静かなところで近くに居ないと聞こえません。圧電サワンダの音はピープーなので趣に欠けます。

 できた画像をOlsson 氏にメールで送ったらお褒めの言葉をいただきました。

電光掲示板式の名札

f:id:tadpole-endoh:20170810192438j:plain

部品:adafruit trinket 3V, adafruit 8×8 mini matrix, adafruit pro trinket battery module

sparkfun RPI-1031 4方向傾きセンサー(これは販売終了だが安いチルトスイッチで充分),   Lipo-battery

ビニールの名札入れに入れて使います。左下にオレンジのジャンパーピンが付いていますが、左下に付けると電源がon。消すときには右上に付けて紛失を防ぎます。

 傾けるとmatrix にローマ字表記で私の名前が流れて表示されます。

 下記はarduinoIDEに入れて使います。事前にadafruit のHPにアクセスしてinclude する3つのファイルを指示に従って組み込んでおく必要があります。

 

/* 電光掲示板方式の名前を表示する。
 2016年1月6日breadboardで配線に成功 2月13日にマイコンをTrinket に変更
そのためtilt をAnalogにするためのprogram を変更。
2月15日 傾けると動作するように設定。
長文表示でTrinketが誤作動する。for文から始まる部分を2重にして表示する文章を分割することで解決。
書き込みはtool USBtinyAspでboard はAdafruitTrinket8mHz */
 
#include <TinyWireM.h>
#include "Adafruit_LEDBackpack.h"
#include "Adafruit_GFX.h"
Adafruit_8x8matrix matrix = Adafruit_8x8matrix();
  int val_s1=0;
  int val_s2=0;
    boolean position_s1= false;
    boolean position_s2= false;

void setup() {
    matrix.begin(0x70);
}
void loop(){
 
   val_s1=analogRead(2);
   val_s2=analogRead(3);
 
if (val_s1>340) {
     position_s1 =true;
 }else {
   position_s1 =false;
 }
 if (val_s2>340)  {
   position_s2 =true;
 } else {
   position_s2= false;
 }
   
   if (position_s1 == position_s2)
          {
          matrix.setTextSize(1);
          matrix.setTextWrap(false);  //
          matrix.setTextColor(LED_ON);
                for (int8_t x=10; x>=-48; x--) {
                     matrix.clear();
                      matrix.setCursor(x,0);
                      matrix.print("T.Endoh");
                      matrix.writeDisplay();
                      delay(100);                     
                }
                for (int8_t x=14; x>=-90; x--) {
                      matrix.clear();
                        matrix.setCursor(x,0);
                        matrix.print("Takata Company");
                        matrix.writeDisplay();
                  delay(100);
                }          
          }
else {
  matrix.clear();
  matrix.writeDisplay();
  delay (500);
   }
}