Einfaches Sonar auf TFT - AZ-Delivery

Hallo Gemeenschap,

vandaag wil ik kort een primitieve Sonar met een display op een TFT-Scherm. De uitvoering is bewust eenvoudig gehouden en zonder hoek-correctie. Deze applicatie voorbeeld is om te laten zien hoe het kan worden geïmplementeerd in een korte periode van tijd is een visueel zeer indrukwekkend project, met een beetje Hardware. In ons voorbeeld, "scans" en kan een SR04 gemonteerd op een SG90 Servo met een bereik van 180°, en we geven de gedetecteerde obstakels effect op onze 1.77" TFT-Display.

Lijst van onderdelen:

1x voeding (bijv., MB102 Breadboard Kit)
1x Servo SG90 met onderdelen
1x TFT-Display 1.77"
1x HC-SR04 
1x Nano V3 

Pinout:

Voeding NanoV3 TFT-Display SR04 Servo
+ 5V 5V Pin 2 VCC rode
GND GND Pin 1 GND zwart
+ 3.3 V Pin 8
D2 Trig
D3 Echo
D6 geel
D8 Pin 5 van de
D9 Pin 6
D10 Pin 7
D11 Pin 4
D13 Pin 3

 

Schets:

 

//Servo #include <Servo.h>  Servo servo; //HC-SR04
int interval = 0; dubbele afstand = 0; //Voorbereiding van de TFT #include <TFT.h>  // Arduino TFT-bibliotheek (standaard) #include <SPI.h>// Display Pinnen op de Nano #define cs 10 #define dc 9 #define eerste 8// exemplaar voor TFT   TFT TFTscreen = TFT(cs, dc, rst);// char-Array van   char rc_Printout[4]; void setup() { servo.bevestig(6);  //D6 op Nano   pinMode( 2, OUTPUT );   pinMode( 3, INGANG );   Serial.beginnen( 9600 ); TFTscreen.beginnen(); TFTscreen.achtergrond(0, 0, 0); } void loop()  {   int r_beam = 100; //D6 TFTscreen.beroerte(255, 255, 255); TFTscreen.cirkel(80,128,r_beam+2); TFTscreen.setText size(2); TFTscreen.tekst("Dist(cm)", 0, 0); //rechtsom draaien
voor (int i=0;i<180;i=i+1){ servo.schrijven(ik); measure_dist();Serieel.afdrukken(i);Seriële.print("\n");   vertraging(20);   int r = afstand*2;String r_Printout = String(r/2); TFTscreen.beroerte(0, 0, 0); TFTscreen.setText size(2); TFTscreen.tekst(rc_Printout, 100, 0); r_Printout.toCharArray(rc_Printout, 4); TFTscreen.beroerte(255, 255, 255); TFTscreen.setText size(2); TFTscreen.tekst(rc_Printout, 100, 0); TFTscreen.beroerte(70, 70, 70); TFTscreen.lijn(80,128,80+r_beam*cos((360-i)*3.14/180), 128+r_beam*sin((360-i)*3.14/180)); TFTscreen.beroerte(0, 255, 0); TFTscreen.cirkel(80+r*cos((360-i)*3.14/180), 128+r*sin((360-ik)*3.14/180), 2); } TFTscreen.achtergrond(0, 0, 0); TFTscreen.beroerte(255, 255, 255); TFTscreen.cirkel(80,128,r_beam+2); TFTscreen.setText size(2); TFTscreen.tekst("Dist(cm)", 0, 0); //draai naar links
voor (int i=180;i>0;i=i-1){ servo.schrijven(ik); measure_dist();Serieel.afdrukken(i);Seriële.print("\n");   vertraging(20);   int r = afstand*2;String r_Printout = String(r/2); TFTscreen.beroerte(0, 0, 0); TFTscreen.setText size(2); TFTscreen.tekst(rc_Printout, 100, 0); r_Printout.toCharArray(rc_Printout, 4); TFTscreen.beroerte(255, 255, 255); TFTscreen.setText size(2); TFTscreen.tekst(rc_Printout, 100, 0); TFTscreen.beroerte(70, 70, 70); TFTscreen.lijn(80,128,80+r_beam*cos((360-i)*3.14/180), 128+r_beam*sin((360-i)*3.14/180)); TFTscreen.beroerte(0, 255, 0); TFTscreen.cirkel(80+r*cos((360-i)*3.14/180), 128+r*sin((360-ik)*3.14/180), 2); } TFTscreen.achtergrond(0, 0, 0); } void measure_dist() {Seriële.lezen();   // Trig-SR04   digitalWrite( 2, HOGE );   vertraging in micro seconden( 100 );   digitalWrite( 2, LAGE );   // Echo-SR04 interval =pulseIn( 3, , HIGH ); afstand = interval * 0.017;// cm    Serieel.afdrukken( interval, DEC );   Seriële.print( "\t" );   Serieel.afdrukken( afstand, 1 );Seriële.print( "\n" ); }  

 

DisplaysProjekte für anfängerSensoren

6 Reacties

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

Laat een reactie achter

Alle opmerkingen worden voor publicatie gecontroleerd door een moderator

Aanbevolen blogberichten

  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