超音波センサで距離測定

概要

Seeed Studio の Grove シリーズのセンサを利用した例。超音波センサで測定した距離をLCDに表示させます。超音波センサは、通常、デジタルピンに入力するが、LCDのスイッチ1とGrove&5VのDin1が同じピンを使用しているため、UARTピンに接続しUARTピンをデジタルピンとして使用します。

overview1

overview2

使用するリーフ

Type Name Q’ty
AZ62 Connector Cover 1
AI04 LCD 1
AX04 Spacer 1
AX06 Grove&5V 1
AP01 AVR MCU 1
AZ01 USB 1
AV01 CR2032 1
Grove – Ultrasonic Distance Sensor 1
CR2032 coin cell battery 1
M2*18mm screw 2

リーフの組み立て

下図のようにリーフを組み立てましょう。

assemble1

ソースコード

  • 書き込みには、LCDライブラリ、超音波制御 ライブラリ( Ultrasonic.h )が必要です。予め、ライブラリをインクルードしておいてください。詳しくは、こちら
  • Arduino IDEで下記のプログラムを書きましょう。
//=====================================================================
//  Leafony Platform sample sketch
//     Platform     : Grove + Ultrasonic
//     Processor    : ATmega328P (3.3V /8MHz)
//     Application  : Ultrasonic Ranger demo
//
//     Leaf configuration
//       (1) AI04 LCD
//       (2) AP01 AVR MCU
//       (3) AX01 Grove&5V + Grove - Ultrasonic Ranger (UART pinに接続)
//           ※  Ultrasonic RangerはGrove&5VのUARTに接続する
//       (4) AZ01 USB
//
//		(c) 2019  Trillion-Node Study Group
//		Released under the MIT license
//		https://opensource.org/licenses/MIT
//
//      Rev.00 2019/08/01 First release
//=====================================================================
//Grove - Ultrasonic Rangerを使用したデモ
//LCDに超音波センサーから取得した対象物からの距離を表示
//=====================================================================
//use libraries
//ST7032 - Arduino LiquidCrystal compatible library
//https://github.com/tomozh/arduino_ST7032
//Grove_Ultrasonic_Ranger
//https://github.com/Seeed-Studio/Grove_Ultrasonic_Ranger/
//=====================================================================


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

// LCD
ST7032 lcd;
char strMessage[8];

#include "Ultrasonic.h"
Ultrasonic ultrasonic(A1);


void setup() {
  Serial.begin(115200);

  //LCD Initialize
  lcd.begin(8, 2);
  lcd.setContrast(30);
  lcd.clear();
  lcd.print(" Hello!");
  lcd.setCursor(0, 1);
  delay(1000);
  lcd.begin(8, 2);
  lcd.setContrast(30);
  lcd.clear();
  lcd.print("12345678");
  lcd.setCursor(0, 1);
  lcd.print("87654321");
  delay(500);
  lcd.clear();
  lcd.blink();
  int i;
  for (i=0 ; i<8 ;i++)
  {
     lcd.setCursor(i, 0);
      delay(100);
  }
  for (i=0 ; i<8 ;i++)
  {
     lcd.setCursor(i, 1);
      delay(100);
  }
  lcd.noBlink();

}



void loop() {
  long RangeInCentimeters;
    
      lcd.clear();
      lcd.print("Distance");
      RangeInCentimeters = ultrasonic.MeasureInCentimeters();
      sprintf(strMessage,"%5d cm",RangeInCentimeters);    
      lcd.setCursor(0, 1);
      lcd.print(strMessage);

  delay(250);
}



Grove-Ultrasonic_LCD.ino


最終更新 August 21, 2020