INHOUDSOPGAWE:

Arduino Morse Code Writer: 7 stappe (met foto's)
Arduino Morse Code Writer: 7 stappe (met foto's)

Video: Arduino Morse Code Writer: 7 stappe (met foto's)

Video: Arduino Morse Code Writer: 7 stappe (met foto's)
Video: Control Position and Speed of Stepper motor with L298N module using Arduino 2024, November
Anonim
Image
Image
Arduino Morse Code Writer
Arduino Morse Code Writer

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

Die bou van die basis
Die bou van die basis
Die bou van die basis
Die bou van die basis
Die bou van die basis
Die bou van 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

Die servostuk
Die servostuk
Die servostuk
Die servostuk
Die servostuk
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

Voeg die servomotor en die papierrol by die basis
Voeg die servomotor en die papierrol by die basis
Voeg die servomotor en die papierrol by die basis
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

Bou die stapmotorraam
Bou die stapmotorraam
Bou die stapmotorraam
Bou die stapmotorraam
Bou die stapmotorraam
Bou die stapmotorraam

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

Afwerking
Afwerking
Afwerking
Afwerking
Afwerking
Afwerking
Afwerking
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

Elektronika
Elektronika
Elektronika
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: