Arduino mit dem 1.8 SPI TFT LCD 128 x 160 und HC-SR04 Distanzsensor

Ich habe mich nun an etwas komplexeres heran gewagt. Der Aufbau ist ganz leicht erklärt: Ein Ultraschallsensor misst die Entfernung. Diese soll quasi on-time auf dem Display angezeigt werden. Display? Ich habe mich für ein 1.8 Zoll TFT Display mit einer Auflösung von 128 x 160 Pixel entschieden. Das Display läuft auf 5V. Die Ansteuerung war schwierig. Zugegeben – sehr schwierig. Aber es hat dann dank 1kOhm geklappt! Das Display gibt es in unterschiedlichen Revisionen und Breakout-Boards sowie mit unterschiedlichen Chips. Ich habe ein TFT, dass bereits die Pins gelötet hat. Hierbei sind aber nur die 8 Pins für das Display. Der SD-Slot wird nicht bedingt. Ziel war eine einfache Erkennung eines Menschen. Wenn der Abstand x kleiner wird (Mensch durchläuft), soll der Counter hochzählen. Nicht so spektakulär und mit einem Ultraschallsensor sicherlich auch nicht die beste Wahl. In der Endausbaustufe wurde noch eine RGB-LED hinzugefügt, die den aktuellen Status noch zusätzlich visuell quittiert. Hier die konkreten Bauteile:

tft

  • TFT Display 1.6 SPI 128 x 160 S6D02A1 (siehe Links)
  • HC-SR04 Distanzsensor
  • RGB LED
  • Arduino Nano

 

Die Daten-Pins sind alle mit 1kOhm zu versehen. Die Belegung selbst entnehmt ihr dem Code unten. Ansteuern lässt sich das Display über die Adafruit GFX unn Adafruit QDTech Library (beide bei GitHub zu finden) .

[divider scroll_text=“oben“]

#define sclk 13  //5-CLK
#define mosi 11  //4-DIN
#define cs   9   //2-CS
#define dc   8   //3-D/C
#define rst  7   //1-RST

#define trigger 3
#define echo 4

#include <Adafruit_GFX.h>    // Core graphics library
#include <Adafruit_QDTech.h> // Hardware-specific library
#include 

Adafruit_QDTech tft = Adafruit_QDTech(cs, dc, rst);  
float p = 3.1415926;
long duration=0;

void setup(void) {
  tft.init();
  tft.setRotation(1);	// 0 - Portrait, 1 - Lanscape

  pinMode(trigger, OUTPUT);
  pinMode(echo, INPUT);
  
  digitalWrite(trigger, LOW);
  delayMicroseconds(2); 
 
  tft.fillScreen(QDTech_BLACK);
  tft.setTextSize(1);
  tft.setTextColor(QDTech_WHITE);
  tft.setTextWrap(false);
}

void loop() {

  tft.setCursor(2, 30);

  digitalWrite(trigger, HIGH);  
  delayMicroseconds(10);
  
  digitalWrite(trigger, LOW);
  duration = pulseIn(echo, HIGH);
  tft.fillScreen(QDTech_BLACK);
  tft.print("Entfernung Birne ");
  tft.print(duration/58);
  tft.println("cm");
  delay(1000);
 
}

 
[youtube]https://www.youtube.com/watch?v=1-Df_bGx3OE&feature=youtu.be[/youtube]

Von Alexander

Das Projekt derFernstudent.de ist für mich gleichermaßen Dokumentation und Erfahrungsbericht. Als Erfahrungsbericht für mein Fernstudium gestartet, dient es nun als Plattform, um mein Hobby und Wissen zu teilen. Ergänzt wird die Seite durch den YouTube Kanal

4 Kommentare

  1. Hallo ich stehe vor dem selben Problem wie Du. „Ansteuerung war schwierig“. Jetzt wollte ich deinen Sketch ausprobieren, dabei bekomme ich den Fehler:

    This report would have more information with
    „Show verbose output during compilation“
    enabled in File > Preferences.
    Arduino: 1.0.6 (Windows 7), Board: „Arduino Uno“
    sketch_jan24a.ino:10:10: error: #include expects „FILENAME“ or
    sketch_jan24a.ino:11:10: error: #include expects „FILENAME“ or
    sketch_jan24a.ino:12:10: error: #include expects „FILENAME“ or
    sketch_jan24a:14: error: ‚Adafruit_QDTech‘ does not name a type
    sketch_jan24a.ino: In function ‚void setup()‘:
    sketch_jan24a:19: error: ‚tft‘ was not declared in this scope
    sketch_jan24a:28: error: ‚QDTech_BLACK‘ was not declared in this scope
    sketch_jan24a:30: error: ‚QDTech_WHITE‘ was not declared in this scope
    sketch_jan24a.ino: In function ‚void loop()‘:
    sketch_jan24a:36: error: ‚tft‘ was not declared in this scope
    sketch_jan24a:43: error: ‚QDTech_BLACK‘ was not declared in this scope

    Da ich Neuling bin hab ich keine Ahnung…!

  2. Hi Samy,

    hast du dir die entsprechenden Libaries runtergeladen? Du musst sie dann einbinden. Der o. a. Code wurde vom Syntax-Highlighting etwas zerschossen. Insbesondere beim Include.

    Es müsste heißen

    #include // Core graphics library
    #include // Hardware-specific library

    VG

  3. Hallo Alexander,

    ich habe genau das gleiche Display gekauft. Jetzt stehe ich vor dem Problem es anzuschließen.
    Die entsprechenden Libaries habe ich runtergeladen und eingefügt. Jetzt wollte ich fragen wo genau die 1 kOhm Wiederstände eingefügt werden. Welche Anschlüsse außer CLK, DIN, CS, D/C und RST muß ich noch anschließen? Wie kann ich den SD-Slot anschließen?

    VG
    Ralph

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.