Indholdsfortegnelse:
- Forbrugsvarer
- Trin 1: Opbygning af basen
- Trin 2: Servostykket
- Trin 3: Tilføjelse af servomotor og papirrulle til basen
- Trin 4: Bygning af trinmotorrammen
- Trin 5: Efterbehandling
- Trin 6: Elektronik
- Trin 7: Fejlfinding
Video: Arduino Morse Code Writer: 7 trin (med billeder)
2024 Forfatter: John Day | [email protected]. Sidst ændret: 2024-01-30 08:25
Jeg lavede en robot, der kan konvertere enhver given tekst til Morse -kode og derefter skrive den ned !! Det er lavet af pap og Lego, og til elektronikken brugte jeg Arduino og kun to motorer.
Forbrugsvarer
Arduino Uno board Steppermotor Mikro servo SG90ULN2003 stepper motor driver modul Strømforsyningsmodul Breadboard4 × Jumperwires6 × Female-to-Male dupont wires9V1A AdapterUSB cable Cardboard 2 × Wooden dowels 2 × Springs Straw White paper LegoSuper lim Hot lim gun Elastic band (to make a penneholder) Saksekutter
Trin 1: Opbygning af basen
Start med at bygge basen. Min er 4 studs bred og 20 studs lang, efter at have bygget et lag med disse længder, byggede jeg en one stud wide boarder omkring den, hvilket efterlod et hul på den ene side for at efterlade plads til steppermotoren, så tilføjede jeg flisestykker til den midterste del, hvor papirstrimlen vil være. Brug af Lego gjorde det meget robust og let at ændre. For at lave papirrullen skar jeg strimler af A4 -papir 1,2 cm bredt (jeg valgte denne bredde, fordi det er den samme bredde som Lego -hjulet, jeg brugte, du kan gøre din større eller mindre afhængigt af dit hjul) og jeg limede deres ender sammen for at danne en meget lang strimmel, så viklede jeg den om hjulet.
Trin 2: Servostykket
Til dette trin har du brug for:
- to træpinde 4 cm lange
- to fjedre 2 cm lange
- et halm skåret i to stykker 2 cm lange hver
- et stykke pap på 12 cm x 4 cm
- to 4 x 1,5 cm stykker pap
- et stykke 4 x 2 cm pap
Lim først dyvlerne til en af de 4 x 1,5 stykker, indsæt derefter fjedrene og sugerørene i dyvlerne, lim derefter det andet papstykke på den anden side for at holde alt på plads.
For det andet limes det 4 cm x 2 cm stykke oven på sugerørene.
For det tredje vender du hele stykket om og limer en lille dyvel på bagsiden af det, ikke i midten men lidt til venstre. (Jeg glemte at tilføje den lille dyvel på det første billede)
Skær til sidst et hul i det store stykke karton på størrelse med servomotorens forside og lim motoren ind, lim derefter det stykke, vi lige lavede med dyvlerne til det store stykke, så når servoen bevæger sig, skubber den lille dyvel ned som igen også skubber fjedrene ned.
Jeg endte med at skære cirka 3 cm fra den nederste del af det 12 cm x 4 cm stykke og limede yderligere to stykker på 4 cm på 1,5 cm til det, og dækkede det derefter med et 5,5 cm x 4 cm stykke karton. Og for at holde markøren lavede jeg en lille loop af elastikbånd og limede det til et lille stykke pap, så limede jeg det til det 4 cm x 2 cm stykke, som vil bevæge sig ned, når servoen starter. Disse tilføjelser forhindrede markøren i at bevæge sig fra side til side, når fjedrene kom op igen.
Trin 3: Tilføjelse af servomotor og papirrulle til basen
Jeg tilføjede yderligere to mursten til den ene side af basen for at understøtte servostykket, og jeg limede det på plads, og derefter tilføjede jeg hjulet til den yderste ende af basen.
Trin 4: Bygning af trinmotorrammen
Dette trin var lidt af en udfordring, fordi motoren ikke var designet til at passe perfekt til Lego. Jeg nåede dog at gøre det ved at bruge de to huller i motoren til at fastgøre det på plads. Derefter limede jeg et Lego -hjul til spidsen af motoren, og derefter lagde jeg det lige ved siden af basen på den side, som jeg lod stå åben i trin 1.
Trin 5: Efterbehandling
Jeg tilføjede to buestykker til at dække hjulet for at fastgøre papiret på plads. Og jeg tilføjede to mindre buestykker, en til at holde trinene i trinmotoren og en til at holde papiret. Endelig skiftede jeg trinmotorhjulet til et lidt større, der flyttede papiret bedre end det gamle hjul.
Trin 6: Elektronik
Endelig skal du slutte motorerne til Arduino og uploade koden.
Vi starter med servomotoren, slutter den brune ledning (jordledningen) til GND -stiften, derefter den røde ledning (strømkablet) til 5V -stiften og den orange ledning (signalkablet) til Dig #5 pin. Derefter tilsluttes trinmotoren 1N1 til Dig #11, 1N2 til Dig #10, 1N3 til Dig #9, 1N4 til Dig #8, 5V til den positive side af brødbrættet og jordstiften til den negative side af brødbræt. Og glem ikke at tilslutte strømforsyningsmodulet til brødbrættet, og sørg for, at dets positive og negative sider flugter korrekt med de tilsvarende sider på brødbrættet. Hvis du glemmer at gøre det, vil du vende strømmen til dit projekt, og du vil ikke gøre det.
Til koden skrev jeg fire metoder, en til at skrive en prik, en til at skrive et bindestreg og to til at efterlade mellemrum mellem hvert bogstav og hvert ord. På den måde kan jeg bare kalde disse metoder, når jeg har brug for dem i stedet for at skrive det igen for hvert bogstav. Derefter skrev jeg en for loop, der går gennem hvert bogstav i teksten og skriver den, inde i den skrev jeg en if -sætning for hvert bogstav, men du kan skrive den i en switch -sætning, hvis du foretrækker det. Selvfølgelig kan du tilføje til koden, så programmet kan læse numre. Når alle ledninger er klar, skal du bare kopiere og indsætte koden i din IDE. Glem ikke at installere stepper-, servo- og strengbibliotekerne. Derefter er du klar til at gå.
Hvordan det virker
Når Arduino starter, ser programmet på tekstens første bogstav., Og afhængigt af hvilken det er, kalder det de funktioner, der skriver det i morsekode. For eksempel, når punktfunktionen kaldes, er servomotoren indstillet til 160, som flytter pennen ned, derefter sættes den tilbage til 90, hvilket lader fjedrene komme tilbage og flytte pennen med dem. Og hvis stregfunktionen kaldes, flytter servoen pennen nedad, så roterer trinmotoren hjulet, der trækker papiret, hvilket får pennen til at skrive et bindestreg. Og hvis en af rumfunktionerne kaldes trinmotoren roterer, men med pennen opad, så det trækker papiret og danner et mellemrum mellem bogstaverne eller ordene. Når det er gjort, går det til det næste bogstav og gentager den samme proces. Jeg håber du kan lide det;)
Koden
#omfatte
#include #include #include const int stepsPerRevolution = 150; // Dette er variablen for stepper motor String sætning = "*hej"; // Skift denne variabel til at skrive forskellige ord, men skriv kun med små bogstaver, og start dit ord med "*" Stepper myStepper (stepsPerRevolution, 8, 10, 9, 11); Servo myServo; // Dette er den metode, der får robotten til at skrive en prik tomrum prik () {Serial.println ("prik start"); myServo.write (160); forsinkelse (1000); myServo.write (90); forsinkelse (1000); myStepper.step (stepsPerRevolution); forsinkelse (1000); Serial.println ("prik udført"); } // Dette er den metode, der får robotten til at skrive et bindestreg tomrumsstreg () {Serial.println ("bindestreg"); myServo.write (160); forsinkelse (1000); myStepper.step (stepsPerRevolution); forsinkelse (1000); myServo.write (90); forsinkelse (1000); myStepper.step (stepsPerRevolution); forsinkelse (1000); Serial.println ("bindestreg udført"); } // Dette er den metode, der får robotten til at efterlade et mellemrum mellem hvert bogstav tomrum () {Serial.println ("space start"); myServo.write (90); forsinkelse (1000); myStepper.step (200); forsinkelse (1000); Serial.println ("plads udført"); } // Dette er den metode, der får robotten til at efterlade et større mellemrum mellem hvert ord tomrum bigSpace () {myServo.write (90); myStepper.step (250); forsinkelse (1000); } ugyldig opsætning () {// sæt din opsætningskode her for at køre en gang: Serial.begin (9600); myStepper.setSpeed (100); myServo.attach (5); int først = sætning.indexOf ('*'); // dette for loop går gennem hvert bogstav i strengen og kalder derefter de rigtige metoder til at skrive det ned for (int i = 0; i <sætning.længde (); i ++) {hvis (sætning.charAt (første+i) == 'a') {Serial.print (".-"); prik (); bindestreg (); plads(); } ellers hvis (sætning.charAt (første + i) == 'b') {Serial.print ("-…"); bindestreg (); prik (); prik (); prik (); plads(); } ellers hvis (sætning.charAt (første + i) == 'c') {Serial.print ("-.-."); bindestreg (); prik (); bindestreg (); prik (); plads(); } ellers hvis (sætning.charAt (første + i) == 'd') {Serial.print ("-.."); bindestreg (); prik (); prik (); plads(); } ellers hvis (sætning.charAt (første + i) == 'e') {Serial.print ("."); prik (); plads(); } ellers hvis (sætning.charAt (første + i) == 'f') {Serial.print ("..-."); prik (); prik (); bindestreg (); prik (); plads(); } ellers hvis (sætning.charAt (første + i) == 'g') {Serial.print ("-."); bindestreg (); bindestreg (); prik (); plads(); } ellers hvis (sætning.charAt (første + i) == 'h') {Serial.print ("…."); prik (); prik (); prik (); prik (); plads(); } ellers hvis (sætning.charAt (første + i) == 'i') {Serial.print (".."); prik (); prik (); plads(); } ellers hvis (sætning.charAt (første + i) == 'j') {Serial.print (".---"); prik (); bindestreg (); bindestreg (); bindestreg (); plads(); } ellers hvis (sætning.charAt (første + i) == 'k') {Serial.print ("-.-"); bindestreg (); prik (); bindestreg (); plads(); } ellers hvis (sætning.charAt (første + i) == 'l') {Serial.print (".-.."); prik (); bindestreg (); prik (); prik (); plads(); } ellers hvis (sætning.charAt (første + i) == 'm') {Serial.print ("-"); bindestreg (); bindestreg (); plads(); } ellers hvis (sætning.charAt (første + i) == 'n') {Serial.print ("-."); bindestreg (); prik (); plads(); } ellers hvis (sætning.charAt (første + i) == 'o') {Serial.print ("---"); bindestreg (); bindestreg (); bindestreg (); plads(); } ellers hvis (sætning.charAt (første + i) == 'p') {Serial.print (".--."); prik (); bindestreg (); bindestreg (); prik (); plads(); } ellers hvis (sætning.charAt (første + i) == 'q') {Serial.print ("--.-"); bindestreg (); bindestreg (); prik (); bindestreg (); plads(); } ellers hvis (sætning.charAt (første + i) == 'r') {Serial.print (".-."); prik (); bindestreg (); prik (); plads(); } ellers hvis (sætning.charAt (første + i) == 's') {Serial.print ("…"); prik (); prik (); prik (); plads(); } ellers hvis (sætning.charAt (første + i) == 't') {Serial.print ("-"); bindestreg (); plads(); } ellers hvis (sætning.charAt (første + i) == 'u') {Serial.print ("..-"); prik (); prik (); bindestreg (); plads(); } ellers hvis (sætning.charAt (første + i) == 'v') {Serial.print ("…-"); prik (); prik (); prik (); bindestreg (); plads(); } ellers hvis (sætning.charAt (første + i) == 'w') {Serial.print (".--"); prik (); bindestreg (); bindestreg (); plads(); } ellers hvis (sætning.charAt (første + i) == 'x') {Serial.print ("-..-"); bindestreg (); prik (); prik (); bindestreg (); plads(); } ellers hvis (sætning.charAt (første + i) == 'y') {Serial.print ("-.--"); bindestreg (); prik (); bindestreg (); bindestreg (); plads(); } ellers hvis (sætning.charAt (første + i) == 'z') {Serial.print ("-.."); bindestreg (); bindestreg (); prik (); prik (); plads(); } ellers hvis (sætning.charAt (første + i) == '') {Serial.print ("/"); bigSpace (); }}} void loop () {// Skriv ikke noget her}
Trin 7: Fejlfinding
Hjulet bevæger sig ikke
Der kan være for stor friktion mellem hjulet og papiret. Prøv at løfte hjulet lidt eller ændre det.
Hjulet trækker i papiret, men så bliver det ved med at rotere uden at trække i papiret
Sørg for, at du har limet hjulet i midten af trinmotoren
Prikkerne og stregerne er forbundet
Kontroller, om prik-, bindestreg- og mellemrumsfunktionerne er skrevet korrekt, de skal være sådan:
// Dette er den metode, der får robotten til at skrive en dotvoid dot () {Serial.println ("dot start"); myServo.write (160); forsinkelse (1000); myServo.write (90); forsinkelse (1000); myStepper.step (stepsPerRevolution); forsinkelse (1000); Serial.println ("prik udført"); }
// Dette er den metode, der får robotten til at skrive et bindestreg
void dash () {Serial.println ("dash start"); myServo.write (160); forsinkelse (1000); myStepper.step (stepsPerRevolution); forsinkelse (1000); myServo.write (90); forsinkelse (1000); myStepper.step (stepsPerRevolution); forsinkelse (1000); Serial.println ("bindestreg udført"); }
// Dette er den metode, der får robotten til at efterlade et mellemrum mellem hvert bogstav
void space () {Serial.println ("space start"); myServo.write (90); forsinkelse (1000); myStepper.step (200); forsinkelse (1000); Serial.println ("plads udført"); }
Anbefalede:
USB Arduino Morse Code Key: 6 trin
USB Arduino Morse Code Key: Har du nogensinde ønsket at skrive på en computer med en morse kode nøgle eller lære/lære morse kode? Du er på den rigtige side! Tjek mit websted calvin.sh for mine andre projekter
Sådan laver du en Morse Code Translator med Arduino: 10 trin
Sådan laver du en Morse Code -oversætter med Arduino: Oversigt Kommunikation på en kodet måde har udover at være så fascinerende mange applikationer på forskellige områder. En af de mest almindelige metoder til kodekommunikation er morsekode. I denne vejledning lærer du, hvordan du laver en tolk til at sende og gen
Arduino Morse Code Transmitter: 11 trin
Arduino Morse Code Transmitter: I denne instrukser vil du bruge en Arduino Uno til at oprette en Morse Code transmitter og bruge den serielle monitor til at læse de meddelelser, du har sendt. Dele, du skal bruge: Arduino UnoBreadboardBuzzerButtonsJumperwires
Simple Braille Writer (tale til punktskrift): 8 trin (med billeder)
Simple Braille Writer (tale til braille): Hej alle sammen. Alt dette startede med at lave en simpel XY -plotter efter at have gennemført den med succes, jeg tænkte på at udvikle en simpel tale til braille tekstkonverter. Jeg begyndte at søge på den online og uventet var priserne for høje , det boostede mig
Morse Code Touch Keyer/Autocoder: 12 trin (med billeder)
Morse Code Touch Keyer/Autocoder: Jeg byggede faktisk dette projekt for nogen tid siden, men troede, at nogen måske kunne bruge ideen. Jeg er en skinkeradio -fyr og kom lidt ind i det sent i livet, da jeg gik på pension og havde tid. Jeg har min generelle licens nu og bruger telefon (vo