Einfaches Sonar auf TFT - AZ-Delivery

Salut Community,

aujourd'hui, je voudrais montrer brièvement un sonar primitif avec la représentation sur un display TFT. La mise en oeuvre est tenue intentionellement simple et sans correction d'angle. Cet exemple d'application doit démontrer comme on peut réaliser en peu de temps un projet optiquement très impressionnant avec peu de matériel. Dans notre exemple SR04 "scanne" de manière montée un domaine de 180 ° sur SG90 Servo et nous donnons, Hinternisse reconnus distribuent à effet sur notre 1.77" display TFT.

Liste:

1x Alimentation en courant (par exemple, Kit MB102 Breadboard)
1x Servo SG90 avec des parties de montage
1x Display TFT 1.77"
1x HC-SR04 
1x Nano V3 

Le Pinbelegung :

Alimentation en courant NanoV3 Display TFT SR04 Servo
5 V 5 V Pin 2 VCC rouge
GND GND Pin 1 GND noir
3,3 V Pin 8
D2 Trig
D3 Echo
D6 jaune
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 (la manière de place) #include <SPI.h>//Display Pins à Nano   #define cs   10   #define dc   9   #define rst  8//Instance pour TFT   TFT TFTscreen = TFT(cs, dc, rst);//char Array   char rc_Printout [4]; void setup() {servo.attach(6);  //D6 à Nano   pinMode( 2, SORTIE );   pinMode( 3, ENTREE );   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.text ("Dist (cm)", 0, 0); //à droite tournent
for (int i=0;i<180;i=i 1) {servo.write(i); measure_dist ();Serial.print(i);Serial.print("\n");   delay(20);   int r = distance*2;Chaîne r_Printout = Chaîne(r / 2); TFTscreen.stroke (0, 0, 0); TFTscreen.setTextSize (2); TFTscreen.text (rc_Printout, 100, 0); r_Printout.toCharArray(rc_Printout, 4); TFTscreen.stroke (255, 255, 255); TFTscreen.setTextSize (2); TFTscreen.text (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.text ("Dist (cm)", 0, 0); //à gauche tournent
for (int i=180;i>0;i=i-1) {servo.write(i); measure_dist ();Serial.print(i);Serial.print("\n");   delay(20);   int r = distance*2;Chaîne r_Printout = Chaîne(r / 2); TFTscreen.stroke (0, 0, 0); TFTscreen.setTextSize (2); TFTscreen.text (rc_Printout, 100, 0); r_Printout.toCharArray(rc_Printout, 4); TFTscreen.stroke (255, 255, 255); TFTscreen.setTextSize (2); TFTscreen.text (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 ); distance = interval * 0.017;//cm    Serial.print(interval, DEC );   Serial.print( "\t" );   Serial.print(distance, 1);Serial.print( "\n" ); }  

 

DisplaysProjekte für anfängerSensoren

6 commentaires

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

Laisser un commentaire

Tous les commentaires sont modérés avant d'être publiés

Articles de blog recommandés

  1. ESP32 jetzt über den Boardverwalter installieren - AZ-Delivery
  2. Internet-Radio mit dem ESP32 - UPDATE - AZ-Delivery
  3. Arduino IDE - Programmieren für Einsteiger - Teil 1 - AZ-Delivery
  4. ESP32 - das Multitalent - AZ-Delivery