Introducción: En el siguiente tutorial se les presentará el funcionamiento de un servomotor controlado a través de la señal de un sensor de ultrasonido, además, utilizando una pantalla OLED 128×32 se visualizarán los valores de distancia medida por el sensor, y también respecto a la distancia, el ángulo del Servomotor. Elementos utilizados: – Protoboard Mediana – Arduino UNO y cable (USB del PC al puerto de Arduino) – Sensor de Ultrasonido – Servomotor 180° no continuo – Pantalla OLED 128×32 I2C 0.91″ SSD1306 Conexiones, por partes: Servomotor – Pin «Power» de Servomotor (Rojo) a 5V de Arduino – Pin «Ground» de Servomotor (Café) a GND de Arduino – Pin «Signal» del Servomotor (Naranja) a Pin 9 de Arduino Pantalla OLED – Pin VCC de Pantalla OLED a 5V de Arduino – Pin GND de Pantalla OLED a GND de Arduino – Pin SDA de Pantalla OLED a A4 de Arduino – Pin SCL de Pantalla OLED a A5 de Arduino Sensor de Ultrasonido Un sensor de ultrasonido es un componente que emite una onda y calcula la distancia basándose en el retorno de esta onda, se puede saber otras funciones o aplicaciones si profundizamos más en el tema viendo el siguiente tutorial. ( Tutorial Sensor Ultrasónico ) – Pin VCC de Sensor Ultrasónico a 5V de Arduino – Pin Trig de Sensor Ultrasónico a Pin 2 de Arduino – Pin Echo de Sensor Ultrasónico a Pin 3 de Arduino – Pin GND de Sensor Ultrasónico a GND de Arduino Conexión completa de los componentes: Código Descargar Servo.Ultrasónico.Pantalla.ino Código, explicación en partes #include <U8g2lib.h> #include <Servo.h> Incluye las librerías necesarias para el manejo de la pantalla OLED (U8g2lib) y el servo (Servo). U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE); Servo miServo; Crea un objeto u8g2 para la pantalla OLED utilizando la resolución 128×64 y el protocolo I2C. Crea un objeto miServo para el control del servo. const int pinTrig = 2; // Pin de trig del sensor de ultrasonido const int pinEcho = 3; // Pin de echo del sensor de ultrasonido Define constantes para los pines del sensor de ultrasonido. void setup() { Serial.begin(9600); u8g2.begin(); miServo.attach(9); // Pin de control del servo pinMode(pinTrig, OUTPUT); pinMode(pinEcho, INPUT); } En la función setup(), inicia la comunicación serial, la pantalla OLED y asocia el servo al pin 9. Configura los pines del sensor de ultrasonido como salida y entrada. void loop() { long duracion, distancia; La función loop() inicia el bucle principal y declara variables para almacenar la duración del pulso y la distancia medida. // Generar pulso ultrasónico digitalWrite(pinTrig, LOW); delayMicroseconds(2); digitalWrite(pinTrig, HIGH); delayMicroseconds(10); digitalWrite(pinTrig, LOW); Envía un pulso ultrasónico desde el pin Trig para activar el sensor de ultrasonido. // Calcular distancia duracion = pulseIn(pinEcho, HIGH); distancia = (duracion / 2) / 29.1; Mide la duración del eco del pulso ultrasónico en el pin Echo y calcula la distancia en centímetros. // Mapear la distancia directamente al rango de ángulos del servo (0 a 180 grados) int anguloServo = map(distancia, 0, 40, 0, 180); // Ajustar el ángulo del servomotor miServo.write(anguloServo); Mapea la distancia medida al rango de ángulos del servo (0 a 180 grados) y ajusta el ángulo del servo. // Mostrar información en la pantalla OLED u8g2.firstPage(); do { // Utiliza una fuente razonable y centrada u8g2.setFont(u8g2_font_t0_11_tf); // Limpiar pantalla u8g2.clearBuffer(); // Parte superior de la pantalla u8g2.setCursor(5, 20); u8g2.print("Mechatronics"); // Centro de la pantalla u8g2.setCursor(5, 40); u8g2.print("Distancia: "); u8g2.print(distancia); u8g2.print(" cm"); // Parte inferior de la pantalla u8g2.setCursor(5, 60); u8g2.print("Angulo: "); u8g2.print(anguloServo); u8g2.print(" grados"); // Enviar a la pantalla u8g2.sendBuffer(); } while (u8g2.nextPage()); Configura la pantalla OLED y muestra información sobre la distancia y el ángulo en diferentes partes de la pantalla. delay(70); } Introduce un retraso de 70 milisegundos antes de repetir el bucle para estabilizar la visualización y evitar actualizaciones demasiado rápidas. En el siguiente video se comprueba el correcto funcionamiento del circuito, además de visualizar de forma óptima los resultados: Conclusión En resumen, este tutorial destaca la integración de un servomotor, sensor ultrasónico y pantalla OLED con claras instrucciones y código. Proporciona una solución efectiva para controlar el servomotor según la distancia medida, con resultados visualizados en tiempo real en la pantalla. El video demostrativo valida la funcionalidad eficiente de esta configuración. Francisco2024
Introducción: En el siguiente tutorial se les presentará el funcionamiento de un servomotor controlado a través de la señal de un sensor de ultrasonido, además, utilizando una pantalla OLED 128×32 se visualizarán los valores de distancia medida por el sensor, y también respecto a la distancia, el ángulo del Servomotor. Elementos utilizados: – Protoboard Mediana – Arduino UNO y cable (USB del PC al puerto de Arduino) – Sensor de Ultrasonido – Servomotor 180° no continuo – Pantalla OLED 128×32 I2C 0.91″ SSD1306 Conexiones, por partes: Servomotor – Pin «Power» de Servomotor (Rojo) a 5V de Arduino – Pin «Ground» de Servomotor (Café) a GND de Arduino – Pin «Signal» del Servomotor (Naranja) a Pin 9 de Arduino Pantalla OLED – Pin VCC de Pantalla OLED a 5V de Arduino – Pin GND de Pantalla OLED a GND de Arduino – Pin SDA de Pantalla OLED a A4 de Arduino – Pin SCL de Pantalla OLED a A5 de Arduino Sensor de Ultrasonido Un sensor de ultrasonido es un componente que emite una onda y calcula la distancia basándose en el retorno de esta onda, se puede saber otras funciones o aplicaciones si profundizamos más en el tema viendo el siguiente tutorial. ( Tutorial Sensor Ultrasónico ) – Pin VCC de Sensor Ultrasónico a 5V de Arduino – Pin Trig de Sensor Ultrasónico a Pin 2 de Arduino – Pin Echo de Sensor Ultrasónico a Pin 3 de Arduino – Pin GND de Sensor Ultrasónico a GND de Arduino Conexión completa de los componentes: Código Descargar Servo.Ultrasónico.Pantalla.ino Código, explicación en partes #include <U8g2lib.h> #include <Servo.h> Incluye las librerías necesarias para el manejo de la pantalla OLED (U8g2lib) y el servo (Servo). U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE); Servo miServo; Crea un objeto u8g2 para la pantalla OLED utilizando la resolución 128×64 y el protocolo I2C. Crea un objeto miServo para el control del servo. const int pinTrig = 2; // Pin de trig del sensor de ultrasonido const int pinEcho = 3; // Pin de echo del sensor de ultrasonido Define constantes para los pines del sensor de ultrasonido. void setup() { Serial.begin(9600); u8g2.begin(); miServo.attach(9); // Pin de control del servo pinMode(pinTrig, OUTPUT); pinMode(pinEcho, INPUT); } En la función setup(), inicia la comunicación serial, la pantalla OLED y asocia el servo al pin 9. Configura los pines del sensor de ultrasonido como salida y entrada. void loop() { long duracion, distancia; La función loop() inicia el bucle principal y declara variables para almacenar la duración del pulso y la distancia medida. // Generar pulso ultrasónico digitalWrite(pinTrig, LOW); delayMicroseconds(2); digitalWrite(pinTrig, HIGH); delayMicroseconds(10); digitalWrite(pinTrig, LOW); Envía un pulso ultrasónico desde el pin Trig para activar el sensor de ultrasonido. // Calcular distancia duracion = pulseIn(pinEcho, HIGH); distancia = (duracion / 2) / 29.1; Mide la duración del eco del pulso ultrasónico en el pin Echo y calcula la distancia en centímetros. // Mapear la distancia directamente al rango de ángulos del servo (0 a 180 grados) int anguloServo = map(distancia, 0, 40, 0, 180); // Ajustar el ángulo del servomotor miServo.write(anguloServo); Mapea la distancia medida al rango de ángulos del servo (0 a 180 grados) y ajusta el ángulo del servo. // Mostrar información en la pantalla OLED u8g2.firstPage(); do { // Utiliza una fuente razonable y centrada u8g2.setFont(u8g2_font_t0_11_tf); // Limpiar pantalla u8g2.clearBuffer(); // Parte superior de la pantalla u8g2.setCursor(5, 20); u8g2.print("Mechatronics"); // Centro de la pantalla u8g2.setCursor(5, 40); u8g2.print("Distancia: "); u8g2.print(distancia); u8g2.print(" cm"); // Parte inferior de la pantalla u8g2.setCursor(5, 60); u8g2.print("Angulo: "); u8g2.print(anguloServo); u8g2.print(" grados"); // Enviar a la pantalla u8g2.sendBuffer(); } while (u8g2.nextPage()); Configura la pantalla OLED y muestra información sobre la distancia y el ángulo en diferentes partes de la pantalla. delay(70); } Introduce un retraso de 70 milisegundos antes de repetir el bucle para estabilizar la visualización y evitar actualizaciones demasiado rápidas. En el siguiente video se comprueba el correcto funcionamiento del circuito, además de visualizar de forma óptima los resultados: Conclusión En resumen, este tutorial destaca la integración de un servomotor, sensor ultrasónico y pantalla OLED con claras instrucciones y código. Proporciona una solución efectiva para controlar el servomotor según la distancia medida, con resultados visualizados en tiempo real en la pantalla. El video demostrativo valida la funcionalidad eficiente de esta configuración.
Introducción: En el siguiente tutorial se les presentará el funcionamiento de un servomotor controlado a través de la señal de un sensor de ultrasonido, además, utilizando una pantalla OLED 128×32 se visualizarán los valores de distancia medida por el sensor, y también respecto a la distancia, el ángulo del Servomotor. Elementos utilizados: – Protoboard Mediana – Arduino UNO y cable (USB del PC al puerto de Arduino) – Sensor de Ultrasonido – Servomotor 180° no continuo – Pantalla OLED 128×32 I2C 0.91″ SSD1306 Conexiones, por partes: Servomotor – Pin «Power» de Servomotor (Rojo) a 5V de Arduino – Pin «Ground» de Servomotor (Café) a GND de Arduino – Pin «Signal» del Servomotor (Naranja) a Pin 9 de Arduino Pantalla OLED – Pin VCC de Pantalla OLED a 5V de Arduino – Pin GND de Pantalla OLED a GND de Arduino – Pin SDA de Pantalla OLED a A4 de Arduino – Pin SCL de Pantalla OLED a A5 de Arduino Sensor de Ultrasonido Un sensor de ultrasonido es un componente que emite una onda y calcula la distancia basándose en el retorno de esta onda, se puede saber otras funciones o aplicaciones si profundizamos más en el tema viendo el siguiente tutorial. ( Tutorial Sensor Ultrasónico ) – Pin VCC de Sensor Ultrasónico a 5V de Arduino – Pin Trig de Sensor Ultrasónico a Pin 2 de Arduino – Pin Echo de Sensor Ultrasónico a Pin 3 de Arduino – Pin GND de Sensor Ultrasónico a GND de Arduino Conexión completa de los componentes: Código Descargar Servo.Ultrasónico.Pantalla.ino Código, explicación en partes #include <U8g2lib.h> #include <Servo.h> Incluye las librerías necesarias para el manejo de la pantalla OLED (U8g2lib) y el servo (Servo). U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE); Servo miServo; Crea un objeto u8g2 para la pantalla OLED utilizando la resolución 128×64 y el protocolo I2C. Crea un objeto miServo para el control del servo. const int pinTrig = 2; // Pin de trig del sensor de ultrasonido const int pinEcho = 3; // Pin de echo del sensor de ultrasonido Define constantes para los pines del sensor de ultrasonido. void setup() { Serial.begin(9600); u8g2.begin(); miServo.attach(9); // Pin de control del servo pinMode(pinTrig, OUTPUT); pinMode(pinEcho, INPUT); } En la función setup(), inicia la comunicación serial, la pantalla OLED y asocia el servo al pin 9. Configura los pines del sensor de ultrasonido como salida y entrada. void loop() { long duracion, distancia; La función loop() inicia el bucle principal y declara variables para almacenar la duración del pulso y la distancia medida. // Generar pulso ultrasónico digitalWrite(pinTrig, LOW); delayMicroseconds(2); digitalWrite(pinTrig, HIGH); delayMicroseconds(10); digitalWrite(pinTrig, LOW); Envía un pulso ultrasónico desde el pin Trig para activar el sensor de ultrasonido. // Calcular distancia duracion = pulseIn(pinEcho, HIGH); distancia = (duracion / 2) / 29.1; Mide la duración del eco del pulso ultrasónico en el pin Echo y calcula la distancia en centímetros. // Mapear la distancia directamente al rango de ángulos del servo (0 a 180 grados) int anguloServo = map(distancia, 0, 40, 0, 180); // Ajustar el ángulo del servomotor miServo.write(anguloServo); Mapea la distancia medida al rango de ángulos del servo (0 a 180 grados) y ajusta el ángulo del servo. // Mostrar información en la pantalla OLED u8g2.firstPage(); do { // Utiliza una fuente razonable y centrada u8g2.setFont(u8g2_font_t0_11_tf); // Limpiar pantalla u8g2.clearBuffer(); // Parte superior de la pantalla u8g2.setCursor(5, 20); u8g2.print("Mechatronics"); // Centro de la pantalla u8g2.setCursor(5, 40); u8g2.print("Distancia: "); u8g2.print(distancia); u8g2.print(" cm"); // Parte inferior de la pantalla u8g2.setCursor(5, 60); u8g2.print("Angulo: "); u8g2.print(anguloServo); u8g2.print(" grados"); // Enviar a la pantalla u8g2.sendBuffer(); } while (u8g2.nextPage()); Configura la pantalla OLED y muestra información sobre la distancia y el ángulo en diferentes partes de la pantalla. delay(70); } Introduce un retraso de 70 milisegundos antes de repetir el bucle para estabilizar la visualización y evitar actualizaciones demasiado rápidas. En el siguiente video se comprueba el correcto funcionamiento del circuito, además de visualizar de forma óptima los resultados:
Descargar Servo.Ultrasónico.Pantalla.ino Código, explicación en partes #include <U8g2lib.h> #include <Servo.h> Incluye las librerías necesarias para el manejo de la pantalla OLED (U8g2lib) y el servo (Servo). U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE); Servo miServo; Crea un objeto u8g2 para la pantalla OLED utilizando la resolución 128×64 y el protocolo I2C. Crea un objeto miServo para el control del servo. const int pinTrig = 2; // Pin de trig del sensor de ultrasonido const int pinEcho = 3; // Pin de echo del sensor de ultrasonido Define constantes para los pines del sensor de ultrasonido. void setup() { Serial.begin(9600); u8g2.begin(); miServo.attach(9); // Pin de control del servo pinMode(pinTrig, OUTPUT); pinMode(pinEcho, INPUT); } En la función setup(), inicia la comunicación serial, la pantalla OLED y asocia el servo al pin 9. Configura los pines del sensor de ultrasonido como salida y entrada. void loop() { long duracion, distancia; La función loop() inicia el bucle principal y declara variables para almacenar la duración del pulso y la distancia medida. // Generar pulso ultrasónico digitalWrite(pinTrig, LOW); delayMicroseconds(2); digitalWrite(pinTrig, HIGH); delayMicroseconds(10); digitalWrite(pinTrig, LOW); Envía un pulso ultrasónico desde el pin Trig para activar el sensor de ultrasonido. // Calcular distancia duracion = pulseIn(pinEcho, HIGH); distancia = (duracion / 2) / 29.1; Mide la duración del eco del pulso ultrasónico en el pin Echo y calcula la distancia en centímetros. // Mapear la distancia directamente al rango de ángulos del servo (0 a 180 grados) int anguloServo = map(distancia, 0, 40, 0, 180); // Ajustar el ángulo del servomotor miServo.write(anguloServo); Mapea la distancia medida al rango de ángulos del servo (0 a 180 grados) y ajusta el ángulo del servo. // Mostrar información en la pantalla OLED u8g2.firstPage(); do { // Utiliza una fuente razonable y centrada u8g2.setFont(u8g2_font_t0_11_tf); // Limpiar pantalla u8g2.clearBuffer(); // Parte superior de la pantalla u8g2.setCursor(5, 20); u8g2.print("Mechatronics"); // Centro de la pantalla u8g2.setCursor(5, 40); u8g2.print("Distancia: "); u8g2.print(distancia); u8g2.print(" cm"); // Parte inferior de la pantalla u8g2.setCursor(5, 60); u8g2.print("Angulo: "); u8g2.print(anguloServo); u8g2.print(" grados"); // Enviar a la pantalla u8g2.sendBuffer(); } while (u8g2.nextPage()); Configura la pantalla OLED y muestra información sobre la distancia y el ángulo en diferentes partes de la pantalla. delay(70); } Introduce un retraso de 70 milisegundos antes de repetir el bucle para estabilizar la visualización y evitar actualizaciones demasiado rápidas. En el siguiente video se comprueba el correcto funcionamiento del circuito, además de visualizar de forma óptima los resultados:
Incluye las librerías necesarias para el manejo de la pantalla OLED (U8g2lib) y el servo (Servo).
Crea un objeto u8g2 para la pantalla OLED utilizando la resolución 128×64 y el protocolo I2C.
Crea un objeto miServo para el control del servo.
Define constantes para los pines del sensor de ultrasonido.
En la función setup(), inicia la comunicación serial, la pantalla OLED y asocia el servo al pin 9.
Configura los pines del sensor de ultrasonido como salida y entrada.
La función loop() inicia el bucle principal y declara variables para almacenar la duración del pulso y la distancia medida.
Envía un pulso ultrasónico desde el pin Trig para activar el sensor de ultrasonido.
Mide la duración del eco del pulso ultrasónico en el pin Echo y calcula la distancia en centímetros.
Mapea la distancia medida al rango de ángulos del servo (0 a 180 grados) y ajusta el ángulo del servo.
Configura la pantalla OLED y muestra información sobre la distancia y el ángulo en diferentes partes de la pantalla.
Introduce un retraso de 70 milisegundos antes de repetir el bucle para estabilizar la visualización y evitar actualizaciones demasiado rápidas.
Conclusión En resumen, este tutorial destaca la integración de un servomotor, sensor ultrasónico y pantalla OLED con claras instrucciones y código. Proporciona una solución efectiva para controlar el servomotor según la distancia medida, con resultados visualizados en tiempo real en la pantalla. El video demostrativo valida la funcionalidad eficiente de esta configuración.