Arduino Kodu ve Video: HC-SR04 Ultrasonik Mesafe Sensörü ile TP1637 Ekran
Bu eğitimde, HC-SR04 ultrasonik mesafe sensörünü TP1637 ekranıyla birlikte kullanarak mesafe ölçümlerini görsel olarak nasıl göstereceğimizi keşfedeceğiz. Bu proje, robotik arabalar ve diğer mesafe algılama görevleri gibi uygulamalar için harikadır. Bu rehberin sonunda, mesafeyi ölçen ve ekranda gösteren, sensör okumalarının kolayca izlenmesini sağlayan çalışan bir kuruluma sahip olacaksınız.

İki ana bileşen kullanacağız: HC-SR04 ultrasonik sensör ve TP1637 ekran modülü. HC-SR04 sensörü ultrasonik dalgalar yayar ve geri dönmeleri için geçen süreyi ölçerek bu süreye dayalı mesafeyi hesaplar. TP1637 ekranı, ölçülen mesafeyi kullanıcı dostu bir formatta göstermek için I2C iletişimini kullanır. Ek netlik için, bileşenlerin görsel açıklaması için videoya 1:30'da başvurabilirsiniz.
Donanım Açıklaması
HC-SR04 ultrasonik sensörün dört pini vardır: VCC, Trig, Echo ve GND. VCC pini güç kaynağına bağlanırken, GND pini toprağa bağlanır. Trig pini ultrasonik darbeyi tetiklemek için kullanılır ve Echo pini yansıyan darbeyi alır. Bu sensör 2 cm ile 400 cm arasındaki mesafeleri ölçebilir.
TP1637 ekran modülü, I2C iletişimi için kullanılan dört pinden oluşur. Bu pinler VCC, GND, Clock (CLK) ve Data (DIO) içerir. Bu projede, CLK pini Arduino'daki dijital pin 2'ye ve DIO pini dijital pin 3'e bağlanır. Bu ekran, ultrasonik sensörden gelen mesafe okumalarını görselleştirmeyi kolaylaştırır.
Veri Sayfası Detayları
| Üretici | TM1637 |
|---|---|
| Parça numarası | TM1637 |
| Mantık/G/Ç voltajı | 3,3 V ila 5,5 V |
| Besleme voltajı | 5 V |
| Çıkış akımı (kanal başına) | ~25 mA |
| Tepe akımı (kanal başına) | ~50 mA |
| PWM frekansı yönergesi | Yok |
| Giriş mantık eşikleri | 0,3VCC maks |
| Gerilim düşümü / RDS(on) / doyum | Yok |
| Termal sınırlar | 85 °C |
| Paket | DIP-16 |
| Notlar / varyantlar | Genellikle 7 segmentli ekranlarda kullanılır |
- Hasardan kaçınmak için doğru bağlantıları sağlayın.
- Güvenli çalışma için maksimum 5 V besleme voltajını koruyun.
- Gerekirse I2C iletişimi için uygun pull-up dirençleri kullanın.
- Mesafe ölçüm aralığını belirtilen sınırlar içinde tutun (2 cm - 400 cm).
- Güç ve toprak pinlerini kısa devre yapmaktan kaçının.
- Görünürlüğü sağlamak için ekran parlaklık ayarlarını test edin.
- Hatalı okumalara yol açabilecek yüzen girişleri kontrol edin.
CLK = saat, DIO = veri çıkışı
Bağlantı Talimatları

HC-SR04 ultrasonik sensörü bağlamak için, VCC pinini (kırmızı kablo) Arduino'daki 5V pinine ve GND pinini (sarı kablo) toprağa bağlayın. Trigger pini (mavi kablo) dijital pin 12'ye, Echo pini (yeşil kablo) ise dijital pin 11'e bağlanmalıdır. Doğru çalışmayı sağlamak için bu bağlantıların güvenli olduğundan emin olun.
TP1637 ekranı için, VCC pinini (kırmızı kablo) Arduino'daki 5V pinine ve GND pinini (sarı kablo) toprağa bağlayın. Clock pini (mavi kablo) dijital pin 2'ye, Data pini (beyaz kablo) ise dijital pin 3'e bağlanmalıdır. Bu kurulum, Arduino'nun ekranla iletişim kurmasını ve görselleştirme için mesafe verilerini göndermesini sağlar.
Kod Örnekleri ve Açıklama
Aşağıdaki kod alıntısı ultrasonik sensörü ve ekranı başlatır:
#define TRIGGER_PIN 12
#define ECHO_PIN 11
#define MAX_DISTANCE 200
NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE);
TM1637Display display(CLK, DIO);
Burada, ultrasonik sensörün tetik ve yankı pinlerini tanımlıyoruz ve maksimum mesafeyi 200 cm olarak ayarlıyoruz. Sensörü yönetmek için NewPing kütüphanesi kullanılırken, TM1637Display nesnesi ekranı yönetir.
Ana döngüde, sürekli olarak mesafeyi okur ve görüntüleriz:
int distance = sonar.ping_cm(); // mesafeyi al
display.showNumberDec(distance, false, 3, 1);
Kodun bu kısmı, sensörden mesafe ölçümünü alır ve TP1637 ekranında gösterir. showNumberDec işlevi, mesafeyi ondalık bir sayı olarak görüntülenecek şekilde biçimlendirir.
Tam kod için lütfen makalenin altındaki bölüme bakın.
Gösterim / Ne Beklemeli
Her şey kurulduktan ve kod yüklendikten sonra, TP1637 ekranında mesafe okumalarını görmelisiniz. Okumalar yaklaşık her 50 milisaniyede bir güncellenerek, ultrasonik sensör tarafından ölçülen mesafe hakkında neredeyse gerçek zamanlı geri bildirim sağlar. Beklenmeyen değerler fark ederseniz, sensörün doğru yöne baktığından ve yolunda hiçbir engel olmadığından emin olun (videoda 6:15'te).
Video Zaman Damgaları
- 00:00 - Giriş
- 01:30 - Bileşen genel bakışı
- 02:45 - Bağlantı talimatları
- 04:00 - Kod açıklaması
- 06:15 - Gösterim
/*
* This is the Arduino code for the HC-SR04 Ultrasonic Distance Sensor with TP1637 Display
* to measure the distance using Arduino for a robotic car and other applications
* Watch the video https://youtu.be/SlgLj_T5GaY
*
* Written by Ahmad Shamshiri for Robojax Video
* Date: December 21, 2017, in Ajax, Ontario, Canada
* Permission granted to share this code given that this
* note is kept with the code.
* Disclaimer: this code is "AS IS" and for educational purposes only.
*
*/
/* Original Code
from https://github.com/avishorp/TM1637
// https://playground.arduino.cc/Code/NewPing
* Modified for Robojax video on December 21, 2017
// ---------------------------------------------------------------------------
// Example NewPing library sketch that does a ping about 20 times per second.
// ---------------------------------------------------------------------------
*/
#include <NewPing.h>
#define TRIGGER_PIN 12 // Arduino pin tied to trigger pin on the ultrasonic sensor.
#define ECHO_PIN 11 // Arduino pin tied to echo pin on the ultrasonic sensor.
#define MAX_DISTANCE 200 // Maximum distance we want to ping for (in centimeters). Maximum sensor distance is rated at 400-500cm.
NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); // NewPing setup of pins and maximum distance.
////////////////////////////
#include <Arduino.h>
#include <TM1637Display.h>
// Module connection pins (Digital Pins)
#define CLK 2
#define DIO 3
// The amount of time (in milliseconds) between tests
#define TEST_DELAY 500
TM1637Display display(CLK, DIO);
/////////////////////////
void setup() {
Serial.begin(115200); // Open serial monitor at 115200 baud to see ping results.
}
void loop() {
display.setBrightness(0x0f);
uint8_t data[] = { 0x0, 0x0, 0x0, 0x0 };
display.setSegments(data);
int distance = sonar.ping_cm();// get the distance and store it in "distance" variable
// Wait 50ms between pings (about 20 pings/sec). 29ms should be the shortest delay between pings.
Serial.print("Ping: ");
Serial.print(sonar.ping_cm()); // Send ping, get distance in cm and print result (0 = outside set distance range)
Serial.println("cm");
display.showNumberDec(distance, false, 3,1);
delay(50);
}
İhtiyacın olabileceğini düşünüyor
-
eBay
Kaynaklar ve referanslar
-
DışHC-SR04 Ultrasonic Library from the Arduino official websiteplayground.arduino.cc
Dosyalar📁
Diğer dosyalar
-
HC-SR04 ultrasonik sensör Arduino Kütüphanesi
robojax-HC-SR04-ultrasonic-Library.zip0.02 MB