TeleportDresser

&ref(): File not found: "x.JPG" at page "TeleportDresser";

概容

超音波センサで計測した距離が、半固定抵抗で決めた値より短く成ったら、 Arduino nano のD10ピンをHighにして、そうでなかったら、Lowにするハードウェアとスケッチ(プログラム)です。 計測した距離と、半固定抵抗で決めた値をI2C-LCD (秋月I2C接続小型キャラクタLCDモジュール 8x2行 [AQM0802A-RN-GBW]) に表示します。

動作例

音を反射する物体が近くにないとき

音を反射する物体が近くにあるとき

謝辞

ハードウェア

使用部品

回路図

ソフトウェア(Sketch)

٤Ƴ٤Ĥ
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
!
 
 
 
 
 
 
 
 
 
 
 
 
 
-
-
!
|
|
|
-
!
|
|
|
!
 
-
-
!
|
-
!
|
-
!
-
!
-
!
-
!
|
|
|
|
-
!
|
|
|
-
!
|
|
-
|
|
!
-
|
|
!
|
|
!
 
/*
超音波センサで計測した距離が、半固定抵抗で決めた値より短く成ったら、
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);
}
 

応用例


Counter: 1800, today: 1, yesterday: 1

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