2017年4月29日 星期六

筆記 Arduino HC-SR04超音波測距

Arduino HC-SR04超音波測距


使用HC-SR04偵測距離並印在OLED面板上

材料


  1. Arduino *1 (Uno)
  2. 麵包板 *1
  3. 麵包板跳線 數根
  4. HC-SR04超音波模組 *1
  5. OLED面板 *1 (SSD1306 128*64)

如果沒有OLDE面板也可以選擇使用Serial Monitor將數值印出

另外在這個例子中使用了 JRodrigoTech所製作的函式庫"Ultrasonic-HC-SR04"
Github連結:https://github.com/JRodrigoTech/Ultrasonic-HC-SR04
函式庫點這裡下載

電路圖



接線圖



CODE


這個例子使用U8G2lib函式庫控制OLED面板
若要使用Serial Monitor印出數值,請參考"Ultrasonic-HC-SR04"函式庫Example中的"Serial"

// U8g2_Arduino - Version: Latest 
#include <U8g2lib.h>
#include <U8x8lib.h>

// Ultrasonic - Version: Latest 
#include <Ultrasonic.h>

#define TRIG_PIN 12 //定義TrigPin
#define ECHO_PIN 11 //定義EchoPin

//OLED面板
U8G2_SSD1306_128X64_NONAME_1_SW_I2C u8g2(U8G2_R0, SCL, SDA, U8X8_PIN_NONE);//(rotation, clock, data [, reset])
//HC-SR04超音波測距
Ultrasonic ultrasonic(TRIG_PIN,ECHO_PIN); // (Trig PIN,Echo PIN)


void setup() {
  u8g2.begin();
}

void loop() {  
  
  u8g2.firstPage();  
  do {
    draw();
  } while( u8g2.nextPage() );   
  
}

void draw(){
  u8g2.setFont(u8g2_font_unifont_t_greek);//設定字型
  u8g2.setCursor(0,16);//設定位置(0,16)
  u8g2.print("HC-SR04 Sensor");//印出文字
  
  u8g2.setCursor(20,32);//設定位置(20,32)
  u8g2.print("CM: ");//印出文字
  u8g2.setCursor(64,32);//設定位置(64,32)
  u8g2.print(ultrasonic.Ranging(CM));//印出HC-SR04測出的距離(單位:公分)
  
  u8g2.setCursor(20,48);//設定位置(20,48)
  u8g2.print("INC: ");//印出文字
  u8g2.setCursor(64,48);//設定位置(64,48)
  u8g2.print(ultrasonic.Ranging(INC));//印出HC-SR04測出的距離(單位:英吋)

}


影片



沒有留言:

張貼留言