TFT Display und HC-SR04 Distanzsensor machbar ?

Ich habe einen Arduino Uno
HC-SR04 Distanzsensor
1,8 inch Display Sainsmart ST7735, 128x160 Pixel.

Möchte gerne dass die Entfernung auf dem Display angezeigt wird.

Kann mir da bitte jemand helfen wie man das am besten machen kann?

Vielen Dank.

Bin leider noch Anfänger im Arduino-Bereich

Funktioniert denn shon etwas?
US-Sensor oded Display?
Oder hast du noch nichts am Laufen?

Den Sensor kann ich ansteuern und auslesen.
Nur mit dem Display hapert es noch

reimundko:
Den Sensor kann ich ansteuern und auslesen.
Nur mit dem Display hapert es noch

Ja, dann zeig doch mal deine Sketch.
Wir wissen doch nicht was du machst.

/*
HC-SR04 Ping distance sensor:
VCC to arduino 5v
GND to arduino GND
Echo to Arduino pin 7
Trig to Arduino pin 8

This sketch originates from Virtualmix: http://goo.gl/kJ8Gl
Has been modified by Winkle ink here: http://winkleink.blogspot.com.au/2012/05/arduino-hc-sr04-ultrasonic-distance.html
And modified further by ScottC here: http://arduinobasics.blogspot.com.au/2012/11/arduinobasics-hc-sr04-ultrasonic-sensor.html
on 10 Nov 2012.
*/

#define echoPin 7 // Echo Pin
#define trigPin 8 // Trigger Pin
#define LEDPin 13 // Onboard LED

int maximumRange = 200; // Maximum range needed
int minimumRange = 0; // Minimum range needed
long duration, distance; // Duration used to calculate distance

void setup() {
Serial.begin (9600);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(LEDPin, OUTPUT); // Use LED indicator (if required)
}

void loop() {
/* The following trigPin/echoPin cycle is used to determine the
distance of the nearest object by bouncing soundwaves off of it. */
digitalWrite(trigPin, LOW);
delayMicroseconds(2);

digitalWrite(trigPin, HIGH);
delayMicroseconds(10);

digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);

//Calculate the distance (in cm) based on the speed of sound.
distance = duration/58.2;

if (distance >= maximumRange || distance <= minimumRange){
/* Send a negative number to computer and Turn LED ON
to indicate “out of range” /
Serial.println("-1");
digitalWrite(LEDPin, HIGH);
}
else {
/
Send the distance to the computer using Serial protocol, and
turn LED OFF to indicate successful reading. */
Serial.println(distance);
digitalWrite(LEDPin, LOW);
}

//Delay 50ms before next reading.
delay(50);
}

Und das ist der andere Code der funktioniert ebenfalls sehr gut.

/*
HC-SR04 Ping distance sensor]
VCC to arduino 5v GND to arduino GND
Echo to Arduino pin 13 Trig to Arduino pin 12
Red POS to Arduino pin 11
Green POS to Arduino pin 10
560 ohm resistor to both LED NEG and GRD power rail
More info at: http://goo.gl/kJ8Gl
Original code improvements to the Ping sketch sourced from Trollmaker.com
Some code and wiring inspired by http://en.wikiversity.org/wiki/User:Dstaub/robotcar
*/

#define trigPin 13
#define echoPin 12
#define led 11
#define led2 10

void setup() {
  Serial.begin (9600);
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
  pinMode(led, OUTPUT);
  pinMode(led2, OUTPUT);
}

void loop() {
  long duration, distance;
  digitalWrite(trigPin, LOW);  // Added this line
  delayMicroseconds(2); // Added this line
  digitalWrite(trigPin, HIGH);
//  delayMicroseconds(1000); - Removed this line
  delayMicroseconds(10); // Added this line
  digitalWrite(trigPin, LOW);
  duration = pulseIn(echoPin, HIGH);
  distance = (duration/2) / 29.1;
  if (distance < 4) {  // This is where the LED On/Off happens
    digitalWrite(led,HIGH); // When the Red condition is met, the Green LED should turn off
  digitalWrite(led2,LOW);
}
  else {
    digitalWrite(led,LOW);
    digitalWrite(led2,HIGH);
  }
  if (distance >= 200 || distance <= 0){
    Serial.println("Out of range");
  }
  else {
    Serial.print(distance);
    Serial.println(" cm");
  }
  delay(500);
}

Die Ausgabe kommt also am seriellen Monitor an und zeigt auch die Entfernung an wenn man davor steht.

Habe nun auch einen Code gefunden der das Display ansteuert und die Werte ausgibt.
Aber ich weiss immer noch nicht wie ich beide kombiniere.

Das ist mor noch ein wenig zu hoch.

/*
Arduino TFT text example

This example demonstrates how to draw text on the
TFT with an Arduino. The Arduino reads the value
of an analog sensor attached to pin A0, and writes
the value to the LCD screen, updating every
quarter second.

This example code is in the public domain

Created 15 April 2013 by Scott Fitzgerald

*/

#include <TFT.h> // Arduino LCD library
#include <SPI.h>

// pin definition for the Uno
#define cs 10
#define dc 9
#define rst 8

// pin definition for the Leonardo
// #define cs 7
// #define dc 0
// #define rst 1

// create an instance of the library
TFT TFTscreen = TFT(cs, dc, rst);

// char array to print to the screen
char sensorPrintout[4];

void setup() {

// Put this line at the beginning of every sketch that uses the GLCD:
TFTscreen.begin();

// clear the screen with a black background
TFTscreen.background(0, 0, 0);

// write the static text to the screen
// set the font color to white
TFTscreen.stroke(255, 255, 255);
// set the font size
TFTscreen.setTextSize(2);
// write the text to the top left corner of the screen
TFTscreen.text("Sensor Value :\n ", 0, 0);
// ste the font size very large for the loop
TFTscreen.setTextSize(5);
}

void loop() {

// Read the value of the sensor on A0
String sensorVal = String(analogRead(A0));

// convert the reading to a char array
sensorVal.toCharArray(sensorPrintout, 4);

// set the font color
TFTscreen.stroke(255, 255, 255);
// print the sensor value
TFTscreen.text(sensorPrintout, 0, 20);
// wait for a moment
delay(250);
// erase the text you just wrote
TFTscreen.stroke(0, 0, 0);
TFTscreen.text(sensorPrintout, 0, 20);
}

Ich vermute mal, da du deine Sketche immer nur im Web zusammenkopierst, kümmerst du dich zu wenig um die Grundlagen.
Deswegen ist das zu hoch für dich.

Dennoch hier ein Vorschlag wie du es machen könntest.

Setze die Loop des US Sketch in eine Funktion und diese dann in den Displaysketch.
Die jeweiligen Anweisungen der Deklaration und des Setups kannst du in den entsprechenden Ort kopieren aber doppelte Anweisungen vermeiden.
Die Funktion rufst du aus der Loop auf und übergibst den Messwert in einer Variable an das Display.

Allerdings ohne die nötigen Basics wird das sicher schwierig.

Und setze deine Sketche bitte in Code-Tags, bei einem hast du es doch geschafft.
Das geht auch noch nachträglich.

Die Ausgabe kommt also am seriellen Monitor an und zeigt auch die Entfernung an wenn man davor steht.

Habe nun auch einen Code gefunden der das Display ansteuert und die Werte ausgibt.
Aber ich weiss immer noch nicht wie ich beide kombiniere.

Das ist mor noch ein wenig zu hoch.

/*
 Arduino TFT text example

 This example demonstrates how to draw text on the
 TFT with an Arduino. The Arduino reads the value
 of an analog sensor attached to pin A0, and writes
 the value to the LCD screen, updating every
 quarter second.

 This example code is in the public domain

 Created 15 April 2013 by Scott Fitzgerald

 http://www.arduino.cc/en/Tutorial/TFTDisplayText

*/

#include <TFT.h>  // Arduino LCD library
#include <SPI.h>

// pin definition for the Uno
#define cs   10
#define dc   9
#define rst  8

// pin definition for the Leonardo
// #define cs   7
// #define dc   0
// #define rst  1

// create an instance of the library
TFT TFTscreen = TFT(cs, dc, rst);

// char array to print to the screen
char sensorPrintout[4];

void setup() {

 // Put this line at the beginning of every sketch that uses the GLCD:
 TFTscreen.begin();

 // clear the screen with a black background
 TFTscreen.background(0, 0, 0);

 // write the static text to the screen
 // set the font color to white
 TFTscreen.stroke(255, 255, 255);
 // set the font size
 TFTscreen.setTextSize(2);
 // write the text to the top left corner of the screen
 TFTscreen.text("Sensor Value :\n ", 0, 0);
 // ste the font size very large for the loop
 TFTscreen.setTextSize(5);
}

void loop() {

 // Read the value of the sensor on A0
 String sensorVal = String(analogRead(A0));

 // convert the reading to a char array
 sensorVal.toCharArray(sensorPrintout, 4);

 // set the font color
 TFTscreen.stroke(255, 255, 255);
 // print the sensor value
 TFTscreen.text(sensorPrintout, 0, 20);
 // wait for a moment
 delay(250);
 // erase the text you just wrote
 TFTscreen.stroke(0, 0, 0);
 TFTscreen.text(sensorPrintout, 0, 20);
}

Hmm doch schwer. Habe den Code nun so

#define cs   10   //2-CS
#define dc   9   //3-D/C
#define rst  8   //1-RST
 
#define trigger 3
#define echo 4
 
#include <Adafruit_GFX.h>  // Core graphics library
#include <Adafruit_QDTech.h> // Hardware-specific library

 
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 ");
  tft.print(duration/58);
  tft.println("cm");
  delay(1000);
 
}

Display ist nur hell.
Also wird das Display noch nicht richtig angesteuert?

Ich sehe auch keine Funktion mit dem Code für den US-Sensor.

Beispiel:

// Aufruf in der Loop
USsensor();

// Funktion
void USsensor() {
//der Sensor-Code
}

Das gehört auch zu den Grundlagen.

Und du solltest auch testen, ob das Display einfachen Text anzeigt.

Hier gibts nen nettes Tutorial.... zwar mit etwas mehr Schnickschnack, aber die angesprochene Entfernungsmessung eben auch