Tabla de contenido:

Escritor de código Morse Arduino: 7 pasos (con imágenes)
Escritor de código Morse Arduino: 7 pasos (con imágenes)

Video: Escritor de código Morse Arduino: 7 pasos (con imágenes)

Video: Escritor de código Morse Arduino: 7 pasos (con imágenes)
Video: EL TERRORÍFICA SERIE de VILMA y DAFNE que TE DEJARÁ TIESO 💀 (efecto manuela) 2024, Mes de julio
Anonim
Image
Image
Escritor de código Morse Arduino
Escritor de código Morse Arduino

¡Hice un robot que puede convertir cualquier texto en código Morse y luego escribirlo! Está hecho de cartón y Lego y para la electrónica usé Arduino y solo dos motores.

Suministros

Placa Arduino Uno Motor paso a paso Micro servo SG90ULN2003 Módulo controlador de motor paso a paso Módulo de fuente de alimentación Placa de pruebas 4 × Cables de puente6 × Cables dupont hembra a macho Adaptador 9V1A Cable USB Cartón 2 × Tacos de madera 2 × Muelles Paja Papel blanco Lego Pegamento súper Pistola de pegamento caliente Banda elástica (para hacer una portalápices) Cortador de tijeras

Paso 1: construcción de la base

Construyendo la Base
Construyendo la Base
Construyendo la Base
Construyendo la Base
Construyendo la Base
Construyendo la Base

Comience construyendo la base. La mía tiene 4 pernos de ancho y 20 pernos de largo, después de construir una capa con esas longitudes, construí un borde de un perno de ancho a su alrededor dejando un espacio en un lado para dejar espacio para el motor paso a paso, luego agregué azulejos a la parte media donde estará la tira de papel. El uso de Lego lo hizo muy resistente y fácil de modificar. Para hacer el rollo de papel, corté tiras de papel A4 de 1,2 cm de ancho (elegí este ancho porque es del mismo ancho que la rueda de Lego que usé, puedes hacer la tuya más grande o más pequeña dependiendo de tu rueda) y pegué sus extremos. para formar una tira muy larga, luego la envolví alrededor de la rueda.

Paso 2: la pieza del servo

La pieza de servo
La pieza de servo
La pieza de servo
La pieza de servo
La pieza de servo
La pieza de servo

Para este paso necesitas:

  • dos tacos de madera de 4 cm de largo
  • dos resortes de 2cm de largo
  • una pajita cortada en dos piezas de 2 cm de largo cada una
  • una pieza de cartón de 12 cm por 4 cm
  • dos piezas de cartón de 4 cm por 1,5 cm
  • una pieza de cartón de 4 cm por 2 cm

Primero, pegue las clavijas a una de las piezas de 4 por 1,5, luego inserte los resortes y las pajitas en las clavijas, luego pegue la otra pieza de cartón en el otro lado para mantener todo en su lugar.

En segundo lugar, pegue la pieza de 4 cm por 2 cm en la parte superior de las pajitas.

En tercer lugar, dé la vuelta a toda la pieza y pegue una pequeña clavija en la parte posterior, no en el medio sino ligeramente hacia la izquierda. (Olvidé agregar la clavija pequeña en la primera imagen)

Finalmente, haga un agujero en la pieza grande de cartón del tamaño de la parte delantera del servomotor y pegue el motor, luego pegue la pieza que acabamos de hacer con las clavijas a la pieza grande para que cuando el servo se mueva, empuje el pasador pequeño que a su vez empuja los resortes hacia abajo también.

Terminé cortando unos 3 cm de la parte inferior de la pieza de 12 cm por 4 cm y pegando dos piezas más de 4 cm por 1,5 cm, luego cubrí eso con un trozo de cartón de 5,5 cm por 4 cm. Y para sostener el marcador hice una pequeña bucle de banda elástica y lo pegué a un pequeño trozo de cartón, luego lo pegué a la pieza de 4 cm por 2 cm que se moverá hacia abajo cuando se inicie el servo. Estas adiciones impidieron que el marcador se moviera de un lado a otro cuando los resortes volvían a subir.

Paso 3: Adición del servomotor y el rollo de papel a la base

Agregar el servomotor y el rollo de papel a la base
Agregar el servomotor y el rollo de papel a la base
Adición del servomotor y el rollo de papel a la base
Adición del servomotor y el rollo de papel a la base

Agregué dos ladrillos más a un lado de la base para sostener la pieza del servo y lo pegué en su lugar. Luego agregué la rueda al extremo más alejado de la base.

Paso 4: construcción de la estructura del motor paso a paso

Construyendo el marco del motor paso a paso
Construyendo el marco del motor paso a paso
Construyendo el marco del motor paso a paso
Construyendo el marco del motor paso a paso
Construyendo el marco del motor paso a paso
Construyendo el marco del motor paso a paso

Este paso fue un desafío, porque el motor no se hizo para encajar perfectamente con Lego. Sin embargo, logré hacerlo usando los dos orificios del motor para asegurarlo en su lugar. Luego, pegué una rueda de Lego a la punta del motor y luego la puse justo al lado de la base en el lado que dejé abierto en el paso 1.

Paso 5: Toques finales

Últimos retoques
Últimos retoques
Últimos retoques
Últimos retoques
Últimos retoques
Últimos retoques
Últimos retoques
Últimos retoques

Agregué dos piezas de arco para cubrir la rueda y fijar el papel en su lugar. Y agregué dos piezas de arco más pequeñas, una para sostener los cables del motor paso a paso y otra para sostener el papel. Por último, cambié la rueda del motor paso a paso a una ligeramente más grande que movía el papel mejor que la rueda vieja.

Paso 6: Electrónica

Electrónica
Electrónica
Electrónica
Electrónica

Finalmente, debes conectar los motores al Arduino y cargar el código.

Comenzaremos con el servomotor, conectaremos el cable marrón (el cable de tierra) al pin GND, luego el cable rojo (el cable de alimentación) al pin de 5V, y el cable naranja (el cable de señal) al Dig # 5 alfiler. Luego, el motor paso a paso, conecte 1N1 a Dig # 11, 1N2 a Dig # 10, 1N3 a Dig # 9, 1N4 a Dig # 8, el 5V al lado positivo de la placa y el pin de tierra al lado negativo del tablero de circuitos. Y no olvide conectar el módulo de fuente de alimentación a la placa de pruebas, asegurándose de que sus lados positivo y negativo se alineen correctamente con los lados correspondientes de la placa de pruebas. Si se olvida de hacerlo, invertirá el poder de su proyecto y no querrá hacerlo.

Para el código, escribí cuatro métodos, uno para escribir un punto, otro para escribir un guión y dos para dejar espacio entre cada letra y cada palabra. De esa manera, puedo simplemente llamar a estos métodos cuando los necesite en lugar de escribirlos nuevamente para cada letra. Luego escribí un bucle for que pasa por cada letra del texto y lo escribí. Dentro de él, escribí una declaración if para cada letra, pero puedes escribirla en una declaración de cambio si lo prefieres. Por supuesto, puede agregar al código para permitir que el programa lea números. Cuando todo el cableado esté listo, simplemente copie y pegue el código en su IDE. No olvide instalar las bibliotecas stepper, servo y string. Después de eso, estás listo para irte.

Cómo funciona

Cuando Arduino arranca, el programa mira la primera letra del texto., Y dependiendo de cuál sea, llama a las funciones que lo escriben en código Morse. Por ejemplo, cuando se llama a la función de punto, el servomotor se establece en 160, lo que mueve el lápiz hacia abajo, luego se vuelve a configurar en 90, lo que permite que los resortes vuelvan a subir moviendo el lápiz con ellos. Y si se llama a la función de guión, el servo mueve el bolígrafo hacia abajo, luego el motor paso a paso hace girar la rueda que tira del papel haciendo que el bolígrafo escriba un guión. Y si una de las funciones espaciales se llama el motor paso a paso gira pero con el bolígrafo hacia arriba tira del papel haciendo un espacio entre las letras o las palabras. Cuando termina, pasa a la siguiente letra y repite el mismo proceso. Espero que te guste;)

El código

#incluir

#include #include #include const int stepsPerRevolution = 150; // Esta es la variable para el motor paso a paso String statement = "* hola"; // Cambie esta variable para escribir diferentes palabras, pero solo escriba en minúsculas y comience su palabra con "*" Stepper myStepper (stepsPerRevolution, 8, 10, 9, 11); Servo myServo; // Este es el método que hace que el robot escriba un punto void dot () {Serial.println ("punto de inicio"); myServo.write (160); retraso (1000); myServo.write (90); retraso (1000); myStepper.step (stepsPerRevolution); retraso (1000); Serial.println ("punto hecho"); } // Este es el método que hace que el robot escriba un guión void guión () {Serial.println ("inicio guión"); myServo.write (160); retraso (1000); myStepper.step (stepsPerRevolution); retraso (1000); myServo.write (90); retraso (1000); myStepper.step (stepsPerRevolution); retraso (1000); Serial.println ("guión hecho"); } // Este es el método que hace que el robot deje un espacio entre cada letra void space () {Serial.println ("space start"); myServo.write (90); retraso (1000); myStepper.step (200); retraso (1000); Serial.println ("espacio hecho"); } // Este es el método que hace que el robot deje un espacio mayor entre cada palabra void bigSpace () {myServo.write (90); myStepper.step (250); retraso (1000); } void setup () {// ponga su código de configuración aquí, para que se ejecute una vez: Serial.begin (9600); myStepper.setSpeed (100); myServo.attach (5); int primero = oración.indexOf ('*'); // este bucle for pasa por cada letra de la cadena y luego llama a los métodos correctos para escribirlo for (int i = 0; i <statement.length (); i ++) {if (statement.charAt (first + i) == 'a') {Serial.print (".-"); punto(); pizca(); espacio(); } más si (oración.charAt (primero + i) == 'b') {Serial.print ("-…"); pizca(); punto(); punto(); punto(); espacio(); } más si (oración.charAt (primero + i) == 'c') {Serial.print ("-.-."); pizca(); punto(); pizca(); punto(); espacio(); } más si (oración.charAt (primero + i) == 'd') {Serial.print ("-.."); pizca(); punto(); punto(); espacio(); } más si (oración.charAt (primero + i) == 'e') {Serial.print ("."); punto(); espacio(); } más si (oración.charAt (primero + i) == 'f') {Serial.print ("..-."); punto(); punto(); pizca(); punto(); espacio(); } más si (oración.charAt (primero + i) == 'g') {Serial.print ("-."); pizca(); pizca(); punto(); espacio(); } más si (oración.charAt (primero + i) == 'h') {Serial.print ("…."); punto(); punto(); punto(); punto(); espacio(); } más si (oración.charAt (primero + i) == 'i') {Serial.print (".."); punto(); punto(); espacio(); } más si (oración.charAt (primero + i) == 'j') {Serial.print (".--"); punto(); pizca(); pizca(); pizca(); espacio(); } más si (oración.charAt (primero + i) == 'k') {Serial.print ("-.-"); pizca(); punto(); pizca(); espacio(); } más si (oración.charAt (primero + i) == 'l') {Serial.print (".-.."); punto(); pizca(); punto(); punto(); espacio(); } más si (oración.charAt (primero + i) == 'm') {Serial.print ("-"); pizca(); pizca(); espacio(); } más si (oración.charAt (primero + i) == 'n') {Serial.print ("-."); pizca(); punto(); espacio(); } más si (oración.charAt (primero + i) == 'o') {Serial.print ("---"); pizca(); pizca(); pizca(); espacio(); } más si (oración.charAt (primero + i) == 'p') {Serial.print (".-."); punto(); pizca(); pizca(); punto(); espacio(); } más si (oración.charAt (primero + i) == 'q') {Serial.print ("--.-"); pizca(); pizca(); punto(); pizca(); espacio(); } más si (oración.charAt (primero + i) == 'r') {Serial.print (".-."); punto(); pizca(); punto(); espacio(); } más si (oración.charAt (primero + i) == 's') {Serial.print ("…"); punto(); punto(); punto(); espacio(); } más si (oración.charAt (primero + i) == 't') {Serial.print ("-"); pizca(); espacio(); } más si (oración.charAt (primero + i) == 'u') {Serial.print ("..-"); punto(); punto(); pizca(); espacio(); } más si (oración.charAt (primero + i) == 'v') {Serial.print ("… -"); punto(); punto(); punto(); pizca(); espacio(); } más si (oración.charAt (primero + i) == 'w') {Serial.print (".-"); punto(); pizca(); pizca(); espacio(); } más si (oración.charAt (primero + i) == 'x') {Serial.print ("-..-"); pizca(); punto(); punto(); pizca(); espacio(); } más si (oración.charAt (primero + i) == 'y') {Serial.print ("-.--"); pizca(); punto(); pizca(); pizca(); espacio(); } más si (oración.charAt (primero + i) == 'z') {Serial.print ("-.."); pizca(); pizca(); punto(); punto(); espacio(); } más si (oración.charAt (primero + i) == '') {Serial.print ("/"); bigSpace (); }}} void loop () {// No escriba nada aquí}

Paso 7: solución de problemas

La rueda no se mueve

Puede haber demasiada fricción entre la rueda y el papel, intente elevar un poco la rueda o cambiarla.

La rueda tira del papel pero luego sigue girando sin tirar del papel

Asegúrate de pegar la rueda en el centro del motor paso a paso.

Los puntos y los guiones están conectados

Compruebe si las funciones de punto, guión y espacio están escritas correctamente, deberían ser así:

// Este es el método que hace que el robot escriba un dotvoid dot () {Serial.println ("dot start"); myServo.write (160); retraso (1000); myServo.write (90); retraso (1000); myStepper.step (stepsPerRevolution); retraso (1000); Serial.println ("punto hecho"); }

// Este es el método que hace que el robot escriba un guión

guión vacío () {Serial.println ("inicio guión"); myServo.write (160); retraso (1000); myStepper.step (stepsPerRevolution); retraso (1000); myServo.write (90); retraso (1000); myStepper.step (stepsPerRevolution); retraso (1000); Serial.println ("guión hecho"); }

// Este es el método que hace que el robot deje un espacio entre cada letra

espacio vacío () {Serial.println ("inicio del espacio"); myServo.write (90); retraso (1000); myStepper.step (200); retraso (1000); Serial.println ("espacio hecho"); }

Recomendado: