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" ); }
6 comentarios
Andreas Wolter
@Douglas Debnar:
Can you explain this in more detail? What is the error you are experiencing?
Douglas Debnar
The code that is posted is wrong. The for loops are missing some things. Pleas check k and repost.
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
Wie wäre es mit einer Säge?😜
Markus Neumann
Hallo Herr Rode,
unser Mini-Breadboard gibt es unter https://www.az-delivery.de/products/mini-breadboard
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