Einfaches Sonar auf TFT - AZ-Delivery

Salve Community,

oggi vorrei brevemente un rudimentale Sonar con Visualizzazione su un Display TFT da mostrare. L'Attuazione è volutamente semplice e senza Winkelkorrektur. L'applicazione di Esempio per mostrare come, in breve Tempo, un aspetto molto suggestivo Progetto con un po ' di Hardware in grado di fare. Nel nostro Esempio, "scansiona" un SR04 montato su un SG90 Servo di un Campo di 180° e facciamo a dare riconosciuto Hinternisse effetto sul nostro 1.77" TFT Display.

Distinta:

1x Alimentazione, ad esempio MB102 Breadboard Kit)
1x Servo SG90 con componenti per il montaggio
1x TFT-Display 1.77"
1x HC-SR04 
1x Nano V3 

Piedinatura:

Alimentazione NanoV3 Display TFT SR04 Servo
+ 5V 5V Pin 2 VCC rosso
GND GND Pin 1 GND nero
+ 3.3 V Pin 8
D2 Trig
D3 Eco
D6 giallo
D8 Pin 5
D9 Pin 6
D10 Pin 7
D11 Pin 4
D13 Pin 3

 

Sketch:

 

//Servo #include <Servo.h>  Servo servo; //HC-SR04
int interval = 0; double distance = 0; //Prepare the TFT #include <TFT.h>  // Arduino TFT library (standard) #include <SPI.h>// Display Pin sul Nano #define cs 10 #define dc 9 #define rst 8// Istanza di TFT   di TFT TFTscreen = TFT(cs, dc, rst);// char Array di   char rc_Printout[4]; void setup() { servo.attach(6);  //D6 al Nano   pinMode( 2, OUTPUT );   pinMode( 3, INPUT );   Serial.begin( 9600 ); TFTscreen.begin(); TFTscreen.background(0, 0, 0); } void loop()  {   int r_beam = 100; //D6 TFTscreen.stroke(255, 255, 255); TFTscreen.circle(80,128,r_beam+2); TFTscreen.setTextSize(2); TFTscreen.testo(Dist(cm)", 0, 0); //ruota a destra
for (int i=0;i<180;i=i+1){ servo.write(i); measure_dist();Serial.print(i);Serial.print("\n");   delay(20);   int r = distanza*2;String r_Printout = String(r/2); TFTscreen.stroke(0, 0, 0); TFTscreen.setTextSize(2); TFTscreen.testo(rc_Printout, 100, 0); r_Printout.toCharArray(rc_Printout, 4); TFTscreen.stroke(255, 255, 255); TFTscreen.setTextSize(2); TFTscreen.testo(rc_Printout, 100, 0); TFTscreen.stroke(70, 70, 70); TFTscreen.line(80,128,80+r_beam*cos((360-i)*3.14/180), 128+r_beam*sin((360-i)*3.14/180)); TFTscreen.stroke(0, 255, 0); TFTscreen.circle(80+r*cos((360-i)*3.14/180), 128+r*sin((360-i)*3.14/180), 2); } TFTscreen.background(0, 0, 0); TFTscreen.stroke(255, 255, 255); TFTscreen.circle(80,128,r_beam+2); TFTscreen.setTextSize(2); TFTscreen.testo(Dist(cm)", 0, 0); //ruota a sinistra
for (int i=180;i>0;i=i-1){ servo.write(i); measure_dist();Serial.print(i);Serial.print("\n");   delay(20);   int r = distanza*2;String r_Printout = String(r/2); TFTscreen.stroke(0, 0, 0); TFTscreen.setTextSize(2); TFTscreen.testo(rc_Printout, 100, 0); r_Printout.toCharArray(rc_Printout, 4); TFTscreen.stroke(255, 255, 255); TFTscreen.setTextSize(2); TFTscreen.testo(rc_Printout, 100, 0); TFTscreen.stroke(70, 70, 70); TFTscreen.line(80,128,80+r_beam*cos((360-i)*3.14/180), 128+r_beam*sin((360-i)*3.14/180)); TFTscreen.stroke(0, 255, 0); TFTscreen.circle(80+r*cos((360-i)*3.14/180), 128+r*sin((360-i)*3.14/180), 2); } TFTscreen.background(0, 0, 0); } void measure_dist() {Serial.read();   // Trig SR04   digitalWrite( 2, HIGH );   delayMicroseconds( 100 );   digitalWrite( 2, LOW );   // Echo SR04 interval =pulseIn( 3, HIGH ); distanza = interval * 0.017;// cm    Serial.print( interval, DEC );   Serial.print( "\t" );   Serial.print( distance, 1 );Serial.print( "\n" ); }  

 

DisplaysProjekte für anfängerSensoren

6 commenti

Andreas Wolter

Andreas Wolter

@Douglas Debnar:
Can you explain this in more detail? What is the error you are experiencing?

Douglas Debnar

Douglas Debnar

The code that is posted is wrong. The for loops are missing some things. Pleas check k and repost.

Siebo Mörig

Siebo Mörig

Moin.
Super Idee. Würdet Ihr das ganze noch um eine Fritzing Zeichnug erweitern? Auch ein kleines Video währe sehr anschaulich.
Macht weiter so.
Ist der direkte Betrieb des Servos über den Ausgang so sinnvoll? Oder sollte da besser noch ein Treiber zwischengeschaltet werden?

Vielen Dank
Siebo

Hans-Gerd Valks

Hans-Gerd Valks

Wie wäre es mit einer Säge?😜

Markus Neumann

Markus Neumann

Hallo Herr Rode,

unser Mini-Breadboard gibt es unter https://www.az-delivery.de/products/mini-breadboard

Heinrich Rode

Heinrich Rode

Moin,

ich möchte das Sonar gerne nachbauen. Jetzt stellt sich die Frage, wo ich so ein kurzes Breadboard her bekomme.

Gruß Heiner

Lascia un commento

Tutti i commenti vengono moderati prima della pubblicazione