Sonar simple en TFT

Hola Comunidad,

hoy me gustaría mostrar brevemente una sonda primitiva con una pantalla en una pantalla TFT. La implementación es deliberadamente simple y sin corrección de ángulo. Este ejemplo de aplicación está destinado a mostrar cómo se puede realizar un proyecto visualmente muy impresionante con poco hardware en poco tiempo. En nuestro ejemplo, un SR04 montado en un servo SG90 "escanea" un rango de 180o y generamos las traseras detectadas de manera efectiva en nuestra pantalla TFT de 1.77".

Bom:

1x Fuente de alimentación (por ejemplo, MB102 Breadboard Kit)
1x Servo SG90 con piezas de montaje
1x Pantalla TFT 1.77"
1x HC-SR04 
1x Nano V3 

Pinout:

Fuente de alimentación NanoV3 Pantalla TFT SR04 Servo
+ 5V 5v Pin 2 Vcc Rojo
Gnd Gnd Pin 1 Gnd Negro
+ 3.3V Pin 8
D2 Trig
D3 Eco
D6 Amarillo
D8 Pin 5
D9 Pin 6
D10 Pin 7
D11 Pin 4
D13 Pin 3

 

Bosquejo:

 

Servo #include <Servo.h>  Servo servo; HC-SR04
Int intervalo 0; Doble distancia 0; Preparar el TFT #include <Tft.h>  Biblioteca Arduino TFT #include <Spi.h>   Pines de visualización en el Nano #define cs 10 #define dc 9 #define rst 8   Instancia para TFT   Tft Pantalla TFT (TFTScreen) Tft(cs, dc, rst);   char Array   Char rc_Printout[4];    Vacío Configuración() servo.adjuntar(6);  D6 en el Nano   pinMode( 2, Salida );   pinMode( 3, Entrada );   Serial.Comenzar( 9600 );   Pantalla TFT.Comenzar();   TFTscreen.background(0, 0, 0); }    Vacío Bucle()  {   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); Gire a la derecha  
Para (Int i-0;i<180;i-i+1) servo.Escribir(i);   measure_dist();   Serial.Impresión(i);   Serial.Impresión("Un");   Retraso(20);   Int r - distancia*2;   Cadena r_Printout de la casa de la Cadena(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*Porque((360-i)*3.14/180), 128+r_beam*Pecado((360-i)*3.14/180));   TFTscreen.stroke(0, 255, 0);   TFTscreen.circle(80+r*Porque((360-i)*3.14/180), 128+r*Pecado((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); Gire a la izquierda  
Para (Int i-180;i>0;i-i-1) servo.Escribir(i);   measure_dist();   Serial.Impresión(i);   Serial.Impresión("Un");   Retraso(20);   Int r - distancia*2;   Cadena r_Printout de la casa de la Cadena(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*Porque((360-i)*3.14/180), 128+r_beam*Pecado((360-i)*3.14/180));   TFTscreen.stroke(0, 255, 0);   TFTscreen.circle(80+r*Porque((360-i)*3.14/180), 128+r*Pecado((360-i)*3.14/180), 2);   TFTscreen.background(0, 0, 0);   } Vacío measure_dist()    Serial.Leer();   Trig SR04   digitalWrite( 2, Alto );   delayMicroseconds( 100 );   digitalWrite( 2, Bajo );   Eco SR04 Intervalo de intervalos ? pulseEn( 3, Alto );   distancia: intervalo * 0,017; Cm    Serial.Impresión(intervalo, Diciembre );   Serial.Impresión( "En" );   Serial.Impresión( distancia, 1 );   Serial.Impresión( "N" ); }  

 

MuestraProyectos para principiantesSensores

4 comentarios

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

Deja un comentario

Todos los comentarios son moderados antes de ser publicados

Artículos de blog

  1. Ahora instalamos el esp32 a través de la administración.
  2. Lüftersteuerung Raspberry Pi
  3. Arduino IDE - Programmieren für Einsteiger - Teil 1
  4. ESP32 - das Multitalent
  5. Transporte Aéreo - programación de ESP mediante redes locales inalámbricas