Arduino Nano und der HC-SR04 Ultraschall-Entfernungssensor

Von der Natur lernen kann man auch in der Elektronik, heute verwenden wir die Fähigkeiten der Fledermaus um mit Hilfe des HC-SR04 Entfernungssensors per Ultraschall Hindernisse zu erkennen oder einfach nur um die Entfernung eines Objektes zu messen.

Arduino Nano und der HC-SR04 Entfernungssensor

Arduino Nano und der HC-SR04 Entfernungssensor

Wir verbinden den HC-SR04 mit dem Arduino wie folgt:

Schaltplan (Arduino-Verdrahtung des HC-SR04 Entfernungssensors):

Schaltplangröße:

1afbgchdie1j5510101515202025253030353540404545505055556060afbgchdiej-+-+5V OFF 3.35V OFF 3.31.8 SPI TFT 128*160HY-1.8 SPI
Für weitere Informationen (z.B. Pinbelegungen von Bauteilen oder genaue Kabelverbindungen)
mit der Maus über Elemente fahren (oder im Touch-Modus: Elemente antippen)...

Arduino HC-SR04
D2 Pin Echo
D3 Pin Trig
5V (VCC) Pin VCC
GND Pin GND
HC-SR04 Ultraschall-Entfernungssensor

HC-SR04 Ultraschall-Entfernungssensor

… und schliessen danach noch das Display an. Für die Verdrahtung des Displays bitte diesen Link klicken, hier gibt es auch noch weitere Informationen zum Display und die benötigten Bibliotheken.

Anschließend laden wir noch das folgende Programm auf den Arduino…

Programmcode:

// HC-SR04 und 1.8 Zoll TFT-Farb-Display (HY-1.8 SPI)

#define cs   10 // Arduino-Pin an Display CS   
#define dc   9  // Arduino-Pin an Display A0
#define rst  8  // Arduino Reset-Pin

#define trigger 3  // Arduino Pin an HC-SR04 Trig
#define echo 2     // Arduino Pin an HC-SR04 Echo

#include <Adafruit_GFX.h>    // Adafruit Grafik-Bibliothek
#include <Adafruit_ST7735.h> // Adafruit ST7735-Bibliothek
#include <SPI.h>

Adafruit_ST7735 tft = Adafruit_ST7735(cs, dc, rst);  // Display-Bibliothek Setup

void setup(void) {
  
  pinMode(trigger, OUTPUT);
  pinMode(echo, INPUT);
  
  tft.initR(INITR_BLACKTAB);     // ST7735-Chip initialisieren
  tft.fillScreen(ST7735_BLACK);  // Display schwarz
  tft.setTextWrap(true); 
  
  
  tft.setTextSize(2);
  tft.setTextColor(ST7735_BLUE);
  tft.setCursor(5,4);
  tft.print("Entfernung");
  
  tft.setTextSize(1);
  tft.setTextColor(ST7735_GREEN);
  tft.setCursor(14,147);
  tft.print("blog.simtronyx.de");
    
  tft.setTextSize(3);

}

long duration=0;
long distance=0;
long distance_old=0;

void loop() {

  digitalWrite(trigger, LOW);  
  delayMicroseconds(2); 
 
  digitalWrite(trigger, HIGH);  
  delayMicroseconds(10);
  
  digitalWrite(trigger, LOW);
  duration = pulseIn(echo, HIGH); // Echo-Zeit messen
  
  // Echo-Zeit halbieren (weil hin und zurück, der doppelte Weg ist)
  duration = (duration/2); 
  // Zeit des Schalls durch Luft in Zentimeter umrechnen
  distance = duration / 29.1;
  
  
  // Anzeige nur ändern wenn neue Entfernung
  if(distance!=distance_old){ 
  
    // Alten Werten mit schwarz überschreiben, also vom Display löschen
    show_distance(distance_old,ST7735_BLACK);
    // Neuen Wert anzeigen
    show_distance(distance,ST7735_WHITE); 
  }
  
  distance_old=distance; // letze Entfernung speichern (Displayausgabe)

  delay(1000);
  
}

void show_distance(long distance,int color){
  
  int x;
  if(distance<10)x=41;
  else if((distance<100)||(distance>=1000))x=28;
  else x=19;
  tft.setCursor(x,60);
  tft.setTextColor(color);
  if(distance<1000){
    tft.print(distance);
    tft.print("cm");
  }
  else tft.print("----");
}


Download Source Code


… und schon:

können wir mit unserem Arduino Hindernisse auch in der Nacht erkennen.

Bauteile (Bezugsquellen):

eBay: 1.8 Zoll TFT SPI Display
Arduino Nano
Breadboard
Breadboard Kabel
Breadboard Power Modul
HC-SR04
Amazon: 1.8 Zoll TFT SPI Display
Arduino Nano
Breadboard
Breadboard Kabel
Breadboard Power Modul
HC-SR04

Gut?

FacebooktwitterredditpinterestlinkedinmailFacebooktwitterredditpinterestlinkedinmail