Taula de continguts:

Arduino Morse Code Writer: 7 passos (amb imatges)
Arduino Morse Code Writer: 7 passos (amb imatges)

Vídeo: Arduino Morse Code Writer: 7 passos (amb imatges)

Vídeo: Arduino Morse Code Writer: 7 passos (amb imatges)
Vídeo: I have never eaten such delicious chicken in sauce!!! Recipe in 10 minutes! 2024, De novembre
Anonim
Image
Image
Arduino Morse Code Writer
Arduino Morse Code Writer

He creat un robot que pot convertir qualsevol text en codi Morse i després escriure-ho !! Està fet de cartró i Lego i per a l'electrònica he fet servir Arduino i només dos motors.

Subministraments

Taula Arduino Uno Motor pas a pas Micro servo SG90ULN2003 mòdul de controlador de motor pas a pas Mòdul de subministrament d’energia Taula de pa 4 × cables de pont 6 × cables dupont femella a home Adaptador de cable USB USB 2 × clavilles de fusta 2 × ressorts paper blanc de palla LegoSuper cola pistola de cola calenta Banda elàstica porta-bolígrafs) Talladora de tisores

Pas 1: Construir la base

Construint la base
Construint la base
Construint la base
Construint la base
Construint la base
Construint la base

Comenceu construint la base. El meu fa 4 tacs d’amplada i 20 tacs de llarg, després de construir una capa amb aquestes longituds, he construït un tauler ampli al voltant d’ell deixant un buit per un costat per deixar espai al motor pas a pas, i després he afegit peces de rajoles fins a la part central on hi haurà la tira de paper. L’ús de Lego el va fer molt robust i fàcil de modificar. Per fer el rotlle de paper, he tallat tires de paper A4 d’1,2 cm d’amplada (he escollit aquesta amplada perquè té la mateixa amplada que la roda de Lego que he utilitzat, podeu fer la vostra més gran o més petita segons la vostra roda) i he enganxat els seus extrems per formar una tira molt llarga, la vaig embolicar al voltant de la roda.

Pas 2: el Servo Piece

El Servo Piece
El Servo Piece
El Servo Piece
El Servo Piece
El Servo Piece
El Servo Piece

Per a aquest pas cal:

  • dues clavilles de fusta de 4cm de llarg
  • dues molles de 2cm de llarg
  • una palla tallada en dos trossos de 2cm de llargada cadascun
  • un tros de cartró de 12cm per 4cm
  • dos trossos de cartró de 4cm per 1,5cm
  • un tros de cartró de 4cm per 2cm

En primer lloc, enganxeu les clavilles a una de les peces de 4 per 1,5, després introduïu les molles i les palletes a les clavilles i, a continuació, enganxeu l’altra peça de cartró de l’altre costat per mantenir-ho tot al seu lloc.

En segon lloc, enganxeu la peça de 4cm per 2cm a sobre de les palletes.

En tercer lloc, gireu tota la peça i enganxeu un petit tac a la part posterior, no al centre, sinó lleugerament a l'esquerra. (He oblidat afegir el petit tac a la primera imatge)

Finalment, talleu un forat a la peça gran de cartró de la mida de la part frontal del servomotor i enganxeu-lo, després enganxeu la peça que acabem de fer amb els tacs a la peça gran de manera que, quan el servo es mou, empeny petit tac cap avall que al seu torn empeny també les molles cap avall.

Vaig acabar tallant uns 3cm de la part inferior de la peça de 12cm per 4cm i enganxant-hi dues peces més de 4cm per 1,5cm i després cobrint-la amb un tros de cartró de 5,5cm per 4cm. I per agafar el marcador vaig fer un petit bucle de banda elàstica i el vaig enganxar a un petit tros de cartró i després el vaig enganxar a la peça de 4cm per 2cm que es desplaçarà cap avall quan s'iniciï el servo. Aquests afegits van impedir que el marcador es mogués d'un costat a un altre quan les molles tornen a pujar.

Pas 3: Afegir el servomotor i el rotlle de paper a la base

Afegir el servomotor i el rotlle de paper a la base
Afegir el servomotor i el rotlle de paper a la base
Afegir el servomotor i el rotlle de paper a la base
Afegir el servomotor i el rotlle de paper a la base

Vaig afegir dos maons més a un costat de la base per suportar la peça del servo i l’he enganxat al seu lloc, i després he afegit la roda a l’extrem de la base.

Pas 4: construcció del marc del motor pas a pas

Construint el marc del motor pas a pas
Construint el marc del motor pas a pas
Construint el marc del motor pas a pas
Construint el marc del motor pas a pas
Construint el marc del motor pas a pas
Construint el marc del motor pas a pas

Aquest pas va suposar un repte, ja que el motor no estava adaptat perfectament a Lego. Tot i això, ho vaig aconseguir fent servir els dos forats del motor per fixar-lo al seu lloc. A continuació, vaig enganxar una roda de Lego a la punta del motor i després la vaig posar just al costat de la base del costat que vaig deixar obert al pas 1.

Pas 5: Acabat de tocs

Tocs d'acabat
Tocs d'acabat
Tocs d'acabat
Tocs d'acabat
Tocs d'acabat
Tocs d'acabat
Tocs d'acabat
Tocs d'acabat

He afegit dues peces d’arc per tapar la roda i fixar el paper al seu lloc. I he afegit dues peces d’arc més petites, una per subjectar els cables del motor pas a pas i una altra per subjectar el paper. Per últim, vaig canviar la roda del motor pas a pas per una de més gran que movia el paper millor que l’antiga.

Pas 6: electrònica

Electrònica
Electrònica
Electrònica
Electrònica

Finalment, heu de connectar els motors a l’Arduino i penjar el codi.

Començarem amb el servomotor, connectarem el fil marró (el fil de terra) al pin GND, després el fil vermell (el fil d’alimentació) al pin de 5 V i el fil taronja (el fil de senyal) al Dig # 5 pin. A continuació, el motor pas a pas, connecteu 1N1 a la excavació # 11, 1N2 a la excavació # 10, 1N3 a la excavació # 9, 1N4 a la excavació # 8, el 5V al costat positiu de la placa i el pin de terra al costat negatiu de la taulell de pa. I no us oblideu de connectar el mòdul d’alimentació a la placa de control assegurant-vos que els seus costats positius i negatius s’alineen correctament als costats corresponents de la placa de control. Si oblideu fer-ho, invertireu el poder del vostre projecte i no voleu fer-ho.

Per al codi, he escrit quatre mètodes, un per escriure un punt, un per escriure un guió i dos per deixar espai entre cada lletra i cada paraula. D’aquesta manera, només puc trucar a aquests mètodes quan els necessiti en lloc d’escriure’ls de nou per a cada carta. Llavors vaig escriure un bucle for que recorre cada lletra del text i l’escrivia. Dins d’ella, vaig escriure una sentència if per a cada lletra, però podeu escriure-la en una sentència switch si ho preferiu. Per descomptat, podeu afegir-lo al codi per permetre que el programa pugui llegir números. Quan tot el cablejat estigui a punt, només cal que copieu i enganxeu el codi al vostre IDE. No us oblideu d’instal·lar les biblioteques stepper, servo i string. Després d’això, ja estàs bé.

Com funciona

Quan Arduino inicia el programa, mira la primera lletra del text., I depèn de quina sigui, crida a les funcions que l’escriuen en codi Morse. Per exemple, quan es crida la funció de punt, el servomotor s'estableix en 160, que fa baixar el bolígraf i es torna a 90, cosa que permet que les molles tornin a pujar movent el bolígraf amb elles. I si es diu la funció de guió, el servo mou el bolígraf cap avall, el motor pas a pas gira la roda que estira el paper fent que el bolígraf escrigui un guió. I si s'anomena una de les funcions espacials, el motor pas a pas gira, però amb el bolígraf cap amunt, estira el paper fent un espai entre les lletres o les paraules. En acabar, passa a la següent lletra i repeteix el mateix procés. Espero que els agradi;)

El codi

#incloure

#include #include #include const int stepsPerRevolution = 150; // Aquesta és la variable per al motor pas a pas String sentence = "* hola"; // Canvieu aquesta variable per escriure paraules diferents, però només escriviu amb lletres petites i comenceu la vostra paraula amb "*" Stepper myStepper (stepsPerRevolution, 8, 10, 9, 11); Servo myServo; // Aquest és el mètode que fa que el robot escrigui un punt buit de punt () {Serial.println ("punt d'inici"); myServo.write (160); retard (1000); myServo.write (90); retard (1000); myStepper.step (stepsPerRevolution); retard (1000); Serial.println ("punt fet"); } // Aquest és el mètode que fa que el robot escrigui un guió buit guió () {Serial.println ("dash start"); myServo.write (160); retard (1000); myStepper.step (stepsPerRevolution); retard (1000); myServo.write (90); retard (1000); myStepper.step (stepsPerRevolution); retard (1000); Serial.println ("guió fet"); } // Aquest és el mètode que fa que el robot deixi un espai entre cada lletra buit espai () {Serial.println ("espai inicial"); myServo.write (90); retard (1000); myStepper.step (200); retard (1000); Serial.println ("espai fet"); } // Aquest és el mètode que fa que el robot deixi un espai més gran entre cada paraula buida bigSpace () {myServo.write (90); myStepper.step (250); retard (1000); } void setup () {// poseu aquí el vostre codi de configuració per executar-lo una vegada: Serial.begin (9600); myStepper.setSpeed (100); myServo.attach (5); int first = sentence.indexOf ('*'); // aquest bucle for passa per cada lletra de la cadena i després crida als mètodes adequats per escriure-la per (int i = 0; i <sentence.length (); i ++) {if (sentence.charAt (first + i) == 'a') {Serial.print (".-"); punt (); guió (); espai (); } else if (sentence.charAt (first + i) == 'b') {Serial.print ("- …"); guió (); punt (); punt (); punt (); espai (); } else if (sentence.charAt (first + i) == 'c') {Serial.print ("-.-."); guió (); punt (); guió (); punt (); espai (); } else if (sentence.charAt (first + i) == 'd') {Serial.print ("-.."); guió (); punt (); punt (); espai (); } else if (sentence.charAt (first + i) == 'e') {Serial.print ("."); punt (); espai (); } else if (sentence.charAt (first + i) == 'f') {Serial.print ("..-."); punt (); punt (); guió (); punt (); espai (); } else if (sentence.charAt (first + i) == 'g') {Serial.print ("-."); guió (); guió (); punt (); espai (); } else if (sentence.charAt (first + i) == 'h') {Serial.print ("…."); punt (); punt (); punt (); punt (); espai (); } else if (sentence.charAt (first + i) == 'i') {Serial.print (".."); punt (); punt (); espai (); } else if (sentence.charAt (first + i) == 'j') {Serial.print (".---"); punt (); guió (); guió (); guió (); espai (); } else if (sentence.charAt (first + i) == 'k') {Serial.print ("-.-"); guió (); punt (); guió (); espai (); } else if (sentence.charAt (first + i) == 'l') {Serial.print (".-.."); punt (); guió (); punt (); punt (); espai (); } else if (sentence.charAt (first + i) == 'm') {Serial.print ("-"); guió (); guió (); espai (); } else if (sentence.charAt (first + i) == 'n') {Serial.print ("-."); guió (); punt (); espai (); } else if (sentence.charAt (first + i) == 'o') {Serial.print ("---"); guió (); guió (); guió (); espai (); } else if (sentence.charAt (first + i) == 'p') {Serial.print (".--."); punt (); guió (); guió (); punt (); espai (); } else if (sentence.charAt (first + i) == 'q') {Serial.print ("--.-"); guió (); guió (); punt (); guió (); espai (); } else if (sentence.charAt (first + i) == 'r') {Serial.print (".-."); punt (); guió (); punt (); espai (); } else if (sentence.charAt (first + i) == 's') {Serial.print ("…"); punt (); punt (); punt (); espai (); } else if (sentence.charAt (first + i) == 't') {Serial.print ("-"); guió (); espai (); } else if (sentence.charAt (first + i) == 'u') {Serial.print ("..-"); punt (); punt (); guió (); espai (); } else if (sentence.charAt (first + i) == 'v') {Serial.print ("… -"); punt (); punt (); punt (); guió (); espai (); } else if (sentence.charAt (first + i) == 'w') {Serial.print (".--"); punt (); guió (); guió (); espai (); } else if (sentence.charAt (first + i) == 'x') {Serial.print ("-..-"); guió (); punt (); punt (); guió (); espai (); } else if (sentence.charAt (first + i) == 'y') {Serial.print ("-.--"); guió (); punt (); guió (); guió (); espai (); } else if (sentence.charAt (first + i) == 'z') {Serial.print ("-.."); guió (); guió (); punt (); punt (); espai (); } else if (sentence.charAt (first + i) == '') {Serial.print ("/"); bigSpace (); }}} void loop () {// No escriviu res aquí}

Pas 7: resolució de problemes

La roda no es mou

Pot haver-hi massa fregament entre la roda i el paper, proveu d’elevar una mica la roda o canviar-la.

La roda estira el paper però continua girant sense estirar el paper

Assegureu-vos que heu enganxat la roda al centre del motor pas a pas

Els punts i els guions estan connectats

Comproveu si les funcions punt, guió i espai s’escriuen correctament, haurien de ser així:

// Aquest és el mètode que fa que el robot escrigui un punt dotvoid () {Serial.println ("punt d'inici"); myServo.write (160); retard (1000); myServo.write (90); retard (1000); myStepper.step (stepsPerRevolution); retard (1000); Serial.println ("punt fet"); }

// Aquest és el mètode que fa que el robot escrigui un guió

void dash () {Serial.println ("inici de guió"); myServo.write (160); retard (1000); myStepper.step (stepsPerRevolution); retard (1000); myServo.write (90); retard (1000); myStepper.step (stepsPerRevolution); retard (1000); Serial.println ("guió fet"); }

// Aquest és el mètode que fa que el robot deixi un espai entre cada lletra

void space () {Serial.println ("espai inicial"); myServo.write (90); retard (1000); myStepper.step (200); retard (1000); Serial.println ("espai fet"); }

Recomanat: