#author("2020-06-02T16:06:23+09:00","","")
#author("2020-06-02T20:48:20+09:00","default:TeleportDresser","TeleportDresser")
* TeleportDresser [#k2bd0bc2]
** ぽちっでぱっ! 服が瞬間移動 [#y33f6ae6]
- レッドハッカソン2020 栗田受賞作品&br;
&ref(TeleportDresser/outline-1.png,50%);

&ref(TeleportDresser/x.JPG,25%);

** 概容 [#ga27fcba]
超音波センサで計測した距離が、半固定抵抗で決めた値より短く成ったら、
Arduino nano のD10ピンをHighにして、そうでなかったら、Lowにするハードウェアとスケッチ(プログラム)です。
計測した距離と、半固定抵抗で決めた値をI2C-LCD
(秋月I2C接続小型キャラクタLCDモジュール 8x2行 [AQM0802A-RN-GBW])
に表示します。
- ECサイトで服を購入すると、ほぼ、待ち時間0で、それが手元に届き、その服を着ることができます。
** 背景 [#h8d2a05b]
- コロナ後は外に出ることを自粛することになりそうです。オンライン飲み会は定着しました。
次に来るのはオンライン買い物!
- でも、オンライン買い物、もうみんなやっていますよね。でも、Amazon ダッシュでも、ポチッから届くまで時間がかかりますよね。ポチッから、パッと品物が届くと嬉しいですね。
いまだと宅配さんも大変ですね。
- それならテレポーテーションを使いましょう!



** 動作例 [#i07ac0a7]
*** 音を反射する物体が近くにないとき [#z6b44d6c]
- &ref(DistanceSwitch/ds-no-object.JPG,20%); 
- LCDの上の段に表示されている値が下の段の値よりずっと大きく成っています。D10ピンの電圧が低く成って、それに接続された赤いLEDが消えています。Arduino Nano のボード上のLED (D13pin)も消えています。下の表示の値は、半固定抵抗を回すことによって、変更することができます。
*** 音を反射する物体が近くにあるとき [#xff7220f]
- &ref(DistanceSwitch/ds-object.JPG,20%);
- LCDの上の段に表示されている値が下の段の値より小さくなっています。D10ピンの電圧が高くなって、それに接続された赤いLEDが点灯しています。Arduino Nano のボード上のLED (D13pin)も点灯しています。下の表示の値は、半固定抵抗を回すことによって、変更することができます。

** 謝辞 [#p96c5d21]
- 以下の情報を参考にしました。ライブラリも利用させていただいています。感謝します。
-- オレ工房「I2C液晶のArduinoライブラリ – ST7032」 https://ore-kb.net/archives/195
-- アルゴリズム雑記「【Arduino】超音波距離センサ(HC-SR04)の使い方 」 &br;
https://algorithm.joho.info/arduino/ultrasonic-distance-sensor-hc-sr04/

** ハードウェア [#j1336770]
*** 使用部品 [#s3e3d561]
-   Arduino Nano
-   超音波距離センサ HC-SR04
-   I2C-LCD AQM0802A-RN-GBW
-   半固定抵抗 10KΩ 103 ... 200KΩ 204 でも動きました。
- ブレッドボード
- ジャンパ線
*** 回路図 [#j3882fbd]
- fritzing ... I2C-LCDは、実際に使っているLCDの部品が見当たらなかったので、I2Cが使える別のLCDを使っています。fritzing 上で配置するため、実際の接続とは異なっていますが、論理的には動くと思います。
-- &ref(DistanceSwitch/distance_switch_1.png,30%);
- Schematic
-- &ref(DistanceSwitch/distance_switch_circuit_1.png,25%);

** ソフトウェア(Sketch) [#g8663c49]
- [[このページ:https://ore-kb.net/archives/195]]のライブラリ, ST7032, をダウンロードして、解凍して、re-name して、事前に arduino の libraries に入れておくことが必要になります。
- [[pi-i2c-nano-neomatrix-ex2]]

#code(C){{
/*
超音波センサで計測した距離が、半固定抵抗で決めた値より短く成ったら、
10版ピンをOnにして、そうでなかったら、Offにするスケッチ。
計測した距離と、半固定抵抗で決めた値をI2C-LCD
(秋月I2C接続小型キャラクタLCDモジュール 8x2行 [AQM0802A-RN-GBW])
に表示します。

http://www.yama-lab.org/class/maker/distance_switch/

以下の情報を参考にしました。ライブラリも利用させていただいています。感謝します。
オレ工房「I2C液晶のArduinoライブラリ – ST7032」 https://ore-kb.net/archives/195
アルゴリズム雑記「【Arduino】超音波距離センサ(HC-SR04)の使い方 」
    https://algorithm.joho.info/arduino/ultrasonic-distance-sensor-hc-sr04/

ハードウェア
   Arduino Nano
   超音波距離センサ HC-SR04
   I2C-LCD AQM0802A-RN-GBW
   半固定抵抗 10KΩ 103

  Takashi Yamanoue
  http://www.yama-lab.org/~yamanoue/wiki/
 2018 3/26

*/ 
#include <Wire.h>
#include <ST7032.h>

ST7032 lcd;

int trig = 8; // 出力ピン
int echo = 9; // 入力ピン

int a1=1; //Analog Input A1 pin

int ledPin=13; //LED
int xout=10; //if the echo distance is shorter than the vr value, High, else Low;

void setup() {
//  Serial.begin(9600);
  pinMode(trig,OUTPUT);
  pinMode(echo,INPUT);
  lcd.begin(8, 2);  
  lcd.setContrast(30);  
//  Serial.print("setup");
   pinMode(ledPin,OUTPUT);
   pinMode(xout,OUTPUT);
   digitalWrite(ledPin,LOW);
   digitalWrite(xout,LOW);
  }

void loop() {
  // 超音波の出力終了
  digitalWrite(trig,LOW);
  delayMicroseconds(1);
  // 超音波を出力
  digitalWrite(trig,HIGH);
  delayMicroseconds(11);
  // 超音波を出力終了
  digitalWrite(trig,LOW);
  // 出力した超音波が返って来る時間を計測
  int t = pulseIn(echo,HIGH);
  // 計測した時間と音速から反射物までの距離を計算
  float distance = t*0.017;
  // 計算結果をシリアル通信で出力
  String dx=String(distance);
  dx=dx+"cm";
  lcd.setCursor(0, 0);
  lcd.print(dx);

  // アナログ入力 A1
  int a1x=analogRead(a1);
  float a1f=a1x*300.0/1023;
  String ax=String(a1f);

  // LCD表示(2行目)
  lcd.setCursor(0, 1);
  lcd.print(ax);

  if(a1f>distance){
     digitalWrite(ledPin,HIGH);
     digitalWrite(xout,HIGH);
  }
  else{
    digitalWrite(ledPin,LOW);
    digitalWrite(xout,LOW);
  }
  
  delay(500);
}

}}

** 応用例 [#v5ff24fa]
- An Arduino Controlled Fountain
-- https://youtu.be/AJOA1MNv6sQ
----
#counter


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS