INHOUDSOPGAWE:
- Voorrade
- Stap 1: Bou die basis
- Stap 2: Die servostuk
- Stap 3: Voeg die servomotor en die papierrol by die basis
- Stap 4: Bou die stappermotorraam
- Stap 5: afwerking
- Stap 6: Elektronika
- Stap 7: Probleemoplossing
Video: Arduino Morse Code Writer: 7 stappe (met foto's)
2024 Outeur: John Day | [email protected]. Laas verander: 2024-01-30 07:23
Ek het 'n robot gemaak wat enige gegewe teks in Morse -kode kan omskep en dit dan kan neerskryf !! Dit is gemaak van karton en Lego, en vir die elektronika gebruik ek Arduino en slegs twee motors.
Voorrade
Arduino Uno board Stappermotor Micro servo SG90ULN2003 stappermotor bestuurder module Kragtoevoer module Broodbord × Jumper drade 6 × Vrou-tot-man dupont drade 9V1A Adapter USB kabel Karton 2 × Hout plugs 2 × Springs Stro Wit papier Lego Super gom Warm gom geweer Elastiese band (om 'n penhouer) Skêrsnyer
Stap 1: Bou die basis
Begin met die bou van die basis. Myne is 4 studs breed en 20 studs long, nadat ek 'n laag met die lengtes gebou het, het ek 'n one stud wide boarder rondom dit gelaat om 'n gaping aan die een kant te laat om ruimte vir die stapmotor te laat, en toe voeg ek by teëlstukke na die middelste deel waar die papierstrook sal wees. Deur die gebruik van Lego was dit baie stewig en maklik om aan te pas. Om die papier te laat rol, sny ek stroke A4 -papier 1,2 cm breed (ek het hierdie breedte gekies, want dit is dieselfde breedte as die Lego -wiel wat ek gebruik het, u kan die uwe groter of kleiner maak, afhangende van u wiel) en ek het hul ente vasgeplak om 'n baie lang strook te vorm, dan draai ek dit om die wiel.
Stap 2: Die servostuk
Vir hierdie stap benodig u:
- twee houthakkies van 4 cm lank
- twee vere 2 cm lank
- een strooi in twee stukke van 2 cm lank elk gesny
- een karton van 12 x 4 cm
- twee stukke karton van 4 cm by 1,5 cm
- een stuk karton van 4 cm by 2 cm
Plak eers die dowels aan een van die 4 by 1.5 stukke, plaas dan die vere en die rietjies in die plugs, en plak dan die ander karton stuk aan die ander kant om alles op sy plek te hou.
Plak tweedens die stuk van 4 cm by 2 cm bo -op die strooitjies.
Draai dan die hele stuk om en plak 'n klein stokkie aan die agterkant, nie in die middel nie, maar effens links. (Ek het vergeet om die klein stokkie in die eerste prentjie by te voeg)
Ten slotte, sny 'n gaatjie in die groot karton stuk van die grootte van die voorkant van die servomotor en plak die motor vas, en plak die stuk wat ons pas gemaak het, met die stutte vas aan die groot stuk, sodat wanneer die servo beweeg, dit die 'n klein speldjie wat ook die vere na onder druk.
Ek het uiteindelik ongeveer 3 cm van die onderste deel van die 12 cm by 4 cm stuk gesny en nog twee stukke van 4 cm by 1,5 cm daaraan vasgeplak en dit dan bedek met 'n stuk karton van 5,5 x 4 cm. Om die merker vas te hou, het ek 'n klein stuk gemaak lus elastiese band en plak dit vas op 'n klein stukkie karton, dan plak ek dit vas aan die stuk van 4 cm by 2 cm wat afwaarts beweeg as die servo begin. Hierdie byvoegings het die merker verhinder om van kant tot kant te beweeg wanneer die vere terugkom.
Stap 3: Voeg die servomotor en die papierrol by die basis
Ek het nog twee stene aan die een kant van die basis aangebring om die servostuk te ondersteun, en ek het dit vasgeplak, en ek het die wiel aan die agterkant van die basis vasgemaak.
Stap 4: Bou die stappermotorraam
Hierdie stap was 'n bietjie uitdaging, omdat die motor nie perfek by Lego pas nie. Ek het dit egter reggekry deur die twee gate in die motor te gebruik om dit vas te maak. Daarna het ek 'n Lego -wiel aan die punt van die motor vasgeplak en dan langs die basis aan die kant wat ek in stap 1 oopgelaat het, neergesit.
Stap 5: afwerking
Ek het twee boogstukke bygevoeg om die wiel te bedek om die papier vas te maak. En ek het twee kleiner boogstukke bygevoeg, een om die drade van die stapmotor vas te hou en nog een om die papier vas te hou. Laastens het ek die stapmotorwiel verander na 'n effens groter een wat die papier beter beweeg as die ou wiel.
Stap 6: Elektronika
Uiteindelik moet u die motors aan die Arduino koppel en die kode oplaai.
Ons begin met die servomotor, verbind die bruin draad (die gronddraad) met die GND -pen, dan die rooi draad (die kragdraad) met die 5V -pen en die oranje draad (die seindraad) na die Dig #5 speld. Koppel dan die stapmotor 1N1 aan Dig #11, 1N2 na Dig #10, 1N3 na Dig #9, 1N4 na Dig #8, die 5V aan die positiewe kant van die broodbord en die grondpen aan die negatiewe kant van die broodbord. En moenie vergeet om die kragtoevoermodule aan die broodbord te koppel nie, en sorg dat die positiewe en negatiewe sye korrek pas by die ooreenstemmende sye op die broodbord. As u vergeet om dit te doen, keer u die projek se krag terug, en u wil dit nie doen nie.
Vir die kode het ek vier metodes geskryf, een om 'n kolletjie te skryf, een om 'n strepie te skryf en twee om spasie tussen elke letter en elke woord te laat. Op hierdie manier kan ek hierdie metodes noem as ek dit nodig het, in plaas daarvan om dit weer vir elke letter te skryf. Daarna het ek 'n for -lus geskryf wat deur elke letter van die teks gaan en dit geskryf, binne -in het ek 'n if -verklaring vir elke letter geskryf, maar u kan dit in 'n switch -verklaring skryf as u dit verkies. U kan natuurlik die kode byvoeg sodat die program getalle kan lees. As al die bedrading gereed is, kopieer en plak die kode op u IDE. Moenie vergeet om die stepper-, servo- en stringbiblioteke te installeer nie. Daarna is u klaar.
Hoe dit werk
As die Arduino begin, kyk die program na die eerste letter van die teks. Afhangend van watter een dit is, noem dit die funksies wat dit in Morse -kode skryf. Byvoorbeeld, as die puntfunksie genoem word, word die servomotor op 160 gestel wat die pen afskuif, dan word dit teruggestel na 90 waardeur die vere terugkom om die pen mee te laat beweeg. En as die streepfunksie genoem word, skuif die servo die pen af, dan draai die stapmotor die wiel wat die papier trek, sodat die pen 'n strepie skryf. En as een van die ruimtefunksies genoem word, draai die stapmotor, maar met die pen omhoog, trek dit die papier en maak 'n spasie tussen die letters of die woorde. As dit klaar is, gaan dit na die volgende letter en herhaal dieselfde proses. Ek hoop jy hou daarvan;)
Die kode
#insluit
#include #include #include const int stepsPerRevolution = 150; // Dit is die veranderlike vir die stepper motor String sin = "*hallo"; // Verander hierdie veranderlike om verskillende woorde te skryf, maar skryf slegs met klein letters en begin u woord met "*" Stepper myStepper (stepsPerRevolution, 8, 10, 9, 11); Servo myServo; // Dit is die metode wat die robot 'n dot leeg punt laat skryf () {Serial.println ("dot start"); myServo.write (160); vertraging (1000); myServo.write (90); vertraging (1000); myStepper.step (stepsPerRevolution); vertraging (1000); Serial.println ("dot done"); } // Dit is die metode wat die robot 'n streep leeg laat maak () {Serial.println ("dash start"); myServo.write (160); vertraging (1000); myStepper.step (stepsPerRevolution); vertraging (1000); myServo.write (90); vertraging (1000); myStepper.step (stepsPerRevolution); vertraging (1000); Serial.println ("streep klaar"); } // Dit is die metode waarmee die robot 'n spasie tussen elke letter leeg laat spasie () {Serial.println ("spasie begin"); myServo.write (90); vertraging (1000); myStepper.step (200); vertraging (1000); Serial.println ("spasie klaar"); } // Dit is die metode waarmee die robot 'n groter spasie tussen elke woord leeg laat bigSpace () {myServo.write (90); myStepper.step (250); vertraging (1000); } ongeldige opstelling () {// plaas u opstellingskode hier om een keer te werk: Serial.begin (9600); myStepper.setSpeed (100); myServo.attach (5); int eerste = sin.indexOf ('*'); // hierdie vir lus gaan deur elke letter van die string en noem dan die regte metodes om dit neer te skryf vir (int i = 0; i <sin.lengte (); i ++) {if (sin.charAt (eerste+i) == 'a') {Serial.print (".-"); kolletjie (); streep (); spasie (); } anders as (sin.charAt (eerste + i) == 'b') {Serial.print ("-…"); streep (); kolletjie (); kolletjie (); kolletjie (); spasie (); } anders as (sin.charAt (eerste + i) == 'c') {Serial.print ("-.-."); streep (); kolletjie (); streep (); kolletjie (); spasie (); } anders as (sin.charAt (eerste + i) == 'd') {Serial.print ("-.."); streep (); kolletjie (); kolletjie (); spasie (); } anders as (sin.charAt (eerste + i) == 'e') {Serial.print ("."); kolletjie (); spasie (); } anders as (sin.charAt (eerste + i) == 'f') {Serial.print ("..-."); kolletjie (); kolletjie (); streep (); kolletjie (); spasie (); } anders as (sin.charAt (eerste + i) == 'g') {Serial.print ("-."); streep (); streep (); kolletjie (); spasie (); } anders as (sin.charAt (eerste + i) == 'h') {Serial.print ("…")); kolletjie (); kolletjie (); kolletjie (); kolletjie (); spasie (); } anders as (sin.charAt (eerste + i) == 'i') {Serial.print (".."); kolletjie (); kolletjie (); spasie (); } anders as (sin.charAt (eerste + i) == 'j') {Serial.print (".---"); kolletjie (); streep (); streep (); streep (); spasie (); } anders as (sin.charAt (eerste + i) == 'k') {Serial.print ("-.-"); streep (); kolletjie (); streep (); spasie (); } anders as (sin.charAt (eerste + i) == 'l') {Serial.print (".-.."); kolletjie (); streep (); kolletjie (); kolletjie (); spasie (); } anders as (sin.charAt (eerste + i) == 'm') {Serial.print ("-"); streep (); streep (); spasie (); } anders as (sin.charAt (eerste + i) == 'n ') {Serial.print ("-."); streep (); kolletjie (); spasie (); } anders as (sin.charAt (eerste + i) == 'o') {Serial.print ("---"); streep (); streep (); streep (); spasie (); } anders as (sin.charAt (eerste + i) == 'p') {Serial.print (".--."); kolletjie (); streep (); streep (); kolletjie (); spasie (); } anders as (sin.charAt (eerste + i) == 'q') {Serial.print ("--.-"); streep (); streep (); kolletjie (); streep (); spasie (); } anders as (sin.charAt (eerste + i) == 'r') {Serial.print (".-."); kolletjie (); streep (); kolletjie (); spasie (); } anders as (sin.charAt (eerste + i) == 's') {Serial.print ("…"); kolletjie (); kolletjie (); kolletjie (); spasie (); } anders as (sin.charAt (eerste + i) == 't') {Serial.print ("-"); streep (); spasie (); } anders as (sin.charAt (eerste + i) == 'u') {Serial.print ("..-"); kolletjie (); kolletjie (); streep (); spasie (); } anders as (sin.charAt (eerste + i) == 'v') {Serial.print ("…-"); kolletjie (); kolletjie (); kolletjie (); streep (); spasie (); } anders as (sin.charAt (eerste + i) == 'w') {Serial.print (".--"); kolletjie (); streep (); streep (); spasie (); } anders as (sin.charAt (eerste + i) == 'x') {Serial.print ("-..-"); streep (); kolletjie (); kolletjie (); streep (); spasie (); } anders as (sin.charAt (eerste + i) == 'y') {Serial.print ("-.--"); streep (); kolletjie (); streep (); streep (); spasie (); } anders as (sin.charAt (eerste + i) == 'z') {Serial.print ("-.."); streep (); streep (); kolletjie (); kolletjie (); spasie (); } anders as (sin.charAt (eerste + i) == '') {Serial.print ("/"); bigSpace (); }}} void lus () {// Moenie hier iets skryf nie}
Stap 7: Probleemoplossing
Die wiel beweeg nie
Daar kan te veel wrywing tussen die wiel en die papier wees, probeer om die wiel effens te lig of dit te verander.
Die wiel trek die papier, maar dan bly dit draai sonder om aan die papier te trek
Maak seker dat u die wiel in die middel van die stapmotor vasgeplak het
Die kolletjies en strepies is verbind
Kontroleer of die punt-, streep- en spasie -funksies korrek geskryf is; dit moet so lyk:
// Dit is die metode wat die robot 'n dotvoid dot () {Serial.println ("dot start") laat skryf; myServo.write (160); vertraging (1000); myServo.write (90); vertraging (1000); myStepper.step (stepsPerRevolution); vertraging (1000); Serial.println ("dot done"); }
// Dit is die metode waarmee die robot 'n streep laat skryf
void dash () {Serial.println ("dash start"); myServo.write (160); vertraging (1000); myStepper.step (stepsPerRevolution); vertraging (1000); myServo.write (90); vertraging (1000); myStepper.step (stepsPerRevolution); vertraging (1000); Serial.println ("streep klaar"); }
// Dit is die metode waarmee die robot 'n spasie tussen elke letter laat
leemte spasie () {Serial.println ("spasie begin"); myServo.write (90); vertraging (1000); myStepper.step (200); vertraging (1000); Serial.println ("spasie klaar"); }
Aanbeveel:
Castle Planter (met Tinkercad Code Blocks): 25 stappe (met foto's)
Castle Planter (met Tinkercad Code Blocks): Hierdie ontwerp hier het my 'n hele rukkie geneem om te bereik, en omdat my koderingsvaardighede op die minste beperk is, hoop ek dat dit goed gegaan het :) Deur die instruksies te volg, moet u dit kan doen herskep elke aspek van hierdie ontwerp heeltemal sonder
Morse Code Station: 3 stappe
Morse Code Station: Dit-dit-dah-dah! Leer Morse -kode met hierdie maklike Arduino Uno -projek. Hierdie maklike Arduino -projek is 'n Morse Code -stasie. Morse Code is 'n kommunikasiemetode wat karakters as 'n reeks kolletjies en strepies kodeer. Hierdie kring gebruik 'n piëzo -zoemer om
USB Arduino Morse Code -sleutel: 6 stappe
USB Arduino Morse Code Key: wou u ooit op 'n rekenaar tik met 'n morse code sleutel of om morse code te leer/leer? U is op die regte bladsy! Kyk na my webwerf calvin.sh vir my ander projekte
Arduino Morse Code -sender: 11 stappe
Arduino Morse Code Transmitter: In hierdie instruksies gebruik u 'n Arduino Uno om 'n Morse Code sender te maak en gebruik die seriële monitor om die boodskappe wat u gestuur het, te lees. Onderdele wat u benodig: Arduino UnoBreadboardBuzzerButtonsJumper drade
Morse Code Touch Keyer/Autocoder: 12 stappe (met foto's)
Morse Code Touch Keyer/Autocoder: Ek het eintlik hierdie projek 'n geruime tyd gelede gebou, maar het gedink dat iemand dalk die idee kan gebruik. Ek is 'n hamradio -ou en het 'n bietjie laat in my lewe daarin geraak toe ek afgetree het en tyd gehad het. Ek het nou my algemene lisensie en gebruik telefoon (vo