Turinys:

Arduino Morzės kodų rašytojas: 7 žingsniai (su paveikslėliais)
Arduino Morzės kodų rašytojas: 7 žingsniai (su paveikslėliais)

Video: Arduino Morzės kodų rašytojas: 7 žingsniai (su paveikslėliais)

Video: Arduino Morzės kodų rašytojas: 7 žingsniai (su paveikslėliais)
Video: Morse Code Converter with arduino 2024, Liepa
Anonim
Image
Image
Arduino Morzės kodo rašytojas
Arduino Morzės kodo rašytojas

Aš padariau robotą, kuris bet kurį tekstą gali paversti Morzės kodu ir tada jį užrašyti !! Jis pagamintas iš kartono ir „Lego“, o elektronikai naudojau „Arduino“ir tik du variklius.

Prekės

„Arduino Uno“plokštė Žingsninis variklis „Micro servo SG90ULN2003“žingsninio variklio tvarkyklės modulis Maitinimo blokas „Breadboard“4 × jungiamieji laidai 6 × moterų-vyrų dviviečiai laidai 9V1A adapteris USB kabelis Kartonas 2 × mediniai kaiščiai 2 × spyruoklės Šiaudai Baltas popierius „LegoSuper“klijai Karšto klijų pistoletas Elastinė juosta (padaryti rašiklio laikiklis) Žirklių pjaustytuvas

1 žingsnis: bazės kūrimas

Bazės kūrimas
Bazės kūrimas
Bazės kūrimas
Bazės kūrimas
Bazės kūrimas
Bazės kūrimas

Pradėkite nuo pagrindo kūrimo. Mano kaspinas yra 4 smeigių pločio ir 20 smeigių ilgio, pastačius vieną tokio ilgio sluoksnį, aplink jį pastatiau vieną smeigės pločio sieną, palikdamas tarpą vienoje pusėje, kad palikčiau vietos žingsniniam varikliui, tada pridėjau plytelių gabalus į vidurinę dalį, kurioje bus popieriaus juostelė. Naudojant „Lego“, jis tapo labai tvirtas ir lengvai modifikuojamas. Kad popierius susisuktų, nukirpau 1,2 cm pločio A4 formato popieriaus juosteles (pasirinkau tokį plotį, nes jis yra tokio paties pločio kaip mano naudojamas „Lego“ratas, priklausomai nuo jūsų rato, galite padaryti didesnį ar mažesnį) ir suklijavau jų galus suformuoti vieną labai ilgą juostelę, tada apvyniojau ją aplink ratą.

2 žingsnis: „Servo“gabalas

Servo gabalas
Servo gabalas
Servo gabalas
Servo gabalas
Servo gabalas
Servo gabalas

Šiam žingsniui jums reikia:

  • du 4 cm ilgio mediniai kaiščiai
  • dvi 2 cm ilgio spyruoklės
  • vienas šiaudas supjaustomas į dvi 2 cm ilgio dalis
  • vienas 12 x 4 cm kartono gabalas
  • du 4 cm x 1,5 cm kartono gabalėliai
  • vienas 4 x 2 cm kartono gabalas

Pirmiausia kaiščius priklijuokite prie vieno iš 4 x 1,5 gabalų, tada į kaiščius įstatykite spyruokles ir šiaudelius, tada iš kitos pusės klijuokite kitą kartoninę dalį, kad viskas laikytųsi vietoje.

Antra, klijuokite 4 cm x 2 cm gabalėlį ant šiaudelių.

Trečia, apverskite visą gabalą ir priklijuokite nedidelį kaištį prie jo galo, o ne viduryje, bet šiek tiek į kairę. (Pamiršau pridėti mažą kaištį pirmoje nuotraukoje)

Galiausiai išpjaukite skylę dideliame kartono gabale, kurio dydis yra servo variklio priekis, ir priklijuokite variklį, tada priklijuokite ką tik su kaiščiais pagamintą detalę prie didžiosios dalies, kad servo judant ji stumtų mažas kaištis žemyn, kuris savo ruožtu taip pat stumia spyruokles žemyn.

Pabaigiau maždaug 3 cm pjovimą nuo apatinės 12 cm x 4 cm gabalo dalies ir priklijavau prie jo dar du 4 cm x 1,5 cm gabalus, tada uždengiau 5,5 cm x 4 cm kartono gabalu. Ir laikydamas žymeklį padariau nedidelį elastinės juostos kilpą ir priklijavau prie mažo kartono gabalo, tada priklijavau prie 4 cm 2 cm gabalo, kuris pajudės žemyn, kai paleidžiamas servo. Šie papildymai sustabdė žymeklio judėjimą iš vienos pusės į kitą, kai spyruoklės vėl pakyla.

3 veiksmas: pridėkite servo variklį ir popieriaus ritinį prie pagrindo

Servo variklio ir popieriaus ritinio pridėjimas prie pagrindo
Servo variklio ir popieriaus ritinio pridėjimas prie pagrindo
Servo variklio ir popieriaus ritinio pridėjimas prie pagrindo
Servo variklio ir popieriaus ritinio pridėjimas prie pagrindo

Į vieną pagrindo pusę pridėjau dar dvi plytas, kad palaikyčiau servo detalę, ir priklijavau ją vietoje. Tada pridėjau ratą prie tolimiausio pagrindo galo.

4 žingsnis: žingsninio variklio rėmo sukūrimas

Žingsninio variklio rėmo kūrimas
Žingsninio variklio rėmo kūrimas
Žingsninio variklio rėmo kūrimas
Žingsninio variklio rėmo kūrimas
Žingsninio variklio rėmo kūrimas
Žingsninio variklio rėmo kūrimas

Šis žingsnis buvo šiek tiek iššūkis, nes variklis nebuvo visiškai pritaikytas „Lego“. Tačiau man pavyko tai padaryti naudojant dvi variklio skyles, kad jis būtų pritvirtintas. Tada prie variklio galiuko priklijavau „Lego“ratą ir padėjau jį šalia pagrindo toje pusėje, kurią palikau atvirą atlikdamas 1 veiksmą.

5 žingsnis: Apdailos darbai

Apdailos darbai
Apdailos darbai
Apdailos darbai
Apdailos darbai
Apdailos darbai
Apdailos darbai
Apdailos darbai
Apdailos darbai

Pridėjau dvi lanko dalis, kad padengčiau ratą, kad popierius būtų pritvirtintas. Ir aš pridėjau du mažesnius lanko gabalus, vieną - žingsninio variklio laidams laikyti, o kitą - popieriui. Galiausiai aš pakeičiau žingsninio variklio ratą į šiek tiek didesnį, kuris geriau judino popierių nei senasis ratas.

6 žingsnis: Elektronika

Elektronika
Elektronika
Elektronika
Elektronika

Galiausiai turite prijungti variklius prie „Arduino“ir įkelti kodą.

Mes pradėsime nuo servo variklio, prijunkite rudą laidą (įžeminimo laidą) prie GND kaiščio, tada raudoną laidą (maitinimo laidą) prie 5 V kaiščio, o oranžinį laidą (signalinį laidą) prie „Dig #5“smeigtukas. Tada žingsninį variklį prijunkite 1N1 prie kasimo Nr. 11, 1N2 prie kasimo #10, 1N3 prie kasimo Nr. 9, 1N4 prie kasimo Nr. 8, 5 V prie teigiamos duonos lentos pusės, o įžeminimo kaištį - prie neigiamos Bandomoji Lenta. Nepamirškite prijungti maitinimo modulio prie duonos lentos ir įsitikinti, kad jo teigiamos ir neigiamos pusės yra tinkamai suderintos su atitinkamomis duonos lentos pusėmis. Jei pamiršite tai padaryti, pakeisite savo galią savo projektui ir nenorite to daryti.

Dėl kodo parašiau keturis metodus: vieną - tašką, kitą - brūkšnį, o du - palikti tarpą tarp kiekvienos raidės ir žodžio. Tokiu būdu aš galiu tiesiog paskambinti šiais metodais, kai man jų reikia, užuot rašę tai dar kartą kiekvienai raidei. Tada aš parašiau ciklą, skirtą kiekvienai teksto raidei, ir parašiau jį. Viduje aš parašiau if teiginį kiekvienai raidei, bet jei norite, galite parašyti jį perjungimo sakinyje. Žinoma, galite pridėti kodą, kad programa galėtų skaityti skaičius. Kai visi laidai yra paruošti, tiesiog nukopijuokite ir įklijuokite kodą į savo IDE. Nepamirškite įdiegti žingsnių, servo ir stygų bibliotekų. Po to tau gera eiti.

Kaip tai veikia

Kai „Arduino“paleidžia, programa žiūri į pirmąją teksto raidę ir, priklausomai nuo to, kuri ji yra, ji iškviečia funkcijas, kurios jį rašo Morzės kodu. Pvz., Kai iškviečiama taškinė funkcija, servo variklis yra nustatytas į 160, kuris perkelia rašiklį žemyn, tada jis nustatomas atgal į 90, o tai leidžia spyruoklėms grįžti į viršų, judant rašiklį kartu. Ir jei iškviečiama brūkšnelio funkcija, servo sistema perkelia rašiklį žemyn, tada žingsninis variklis suka ratą, kuris traukia popierių, kad rašiklis rašytų brūkšnelį. Ir jei viena iš erdvės funkcijų vadinama žingsniniu varikliu, jis sukasi, bet pakėlęs rašiklį, traukia popierių, palikdamas tarpą tarp raidžių ar žodžių. Kai tai bus padaryta, ji pereis prie kitos raidės ir pakartos tą patį procesą. Tikiuosi, kad jums patiks;)

Kodas

#įtraukti

#include #include #include const int stepsPerRevolution = 150; // Tai yra žingsninio variklio kintamasis String sakinys = "*labas"; // Pakeiskite šį kintamąjį, kad rašytumėte skirtingus žodžius, bet rašykite tik mažomis raidėmis ir žodį pradėkite nuo „*“Stepper myStepper (stepsPerRevolution, 8, 10, 9, 11); Servo myServo; // Tai metodas, verčiantis robotą rašyti dot void dot () {Serial.println ("dot start"); myServo.write (160); vėlavimas (1000); myServo.write (90); vėlavimas (1000); myStepper.step (stepsPerRevolution); vėlavimas (1000); Serial.println („taškas padarytas“); } // Tai yra metodas, verčiantis robotą rašyti brūkšnį void dash () {Serial.println ("brūkšnio pradžia"); myServo.write (160); vėlavimas (1000); myStepper.step (stepsPerRevolution); vėlavimas (1000); myServo.write (90); vėlavimas (1000); myStepper.step (stepsPerRevolution); vėlavimas (1000); Serial.println („brūkšnys padaryta“); } // Tai yra metodas, dėl kurio robotas palieka tarpą tarp kiekvienos raidės void space () {Serial.println ("space start"); myServo.write (90); vėlavimas (1000); myStepper.step (200); vėlavimas (1000); Serial.println („erdvė padaryta“); } // Tai metodas, dėl kurio robotas palieka didesnį tarpą tarp kiekvieno žodžio void bigSpace () {myServo.write (90); myStepper.step (250); vėlavimas (1000); } void setup () {// įdėkite čia savo sąrankos kodą, kad paleistumėte vieną kartą: Serial.begin (9600); myStepper.setSpeed (100); myServo.attach (5); int pirmas = sakinys.indexOf ('*'); // tai ciklui eina per kiekvieną eilutės raidę ir tada iškviečia tinkamus metodus, kaip ją užrašyti (int i = 0; i <monde.length (); i ++) {if (sent.charAt (pirma+i) == 'a') {Serial.print (".-"); taškas (); brūkšnys (); tarpas (); } else if (sent.charAt (first + i) == 'b') {Serial.print ("-…"); brūkšnys (); taškas (); taškas (); taškas (); tarpas (); } else if (sent.charAt (first + i) == 'c') {Serial.print ("-.-."); brūkšnys (); taškas (); brūkšnys (); taškas (); tarpas (); } else if (sent.charAt (first + i) == 'd') {Serial.print ("-.."); brūkšnys (); taškas (); taškas (); tarpas (); } else if (sent.charAt (first + i) == 'e') {Serial.print ("."); taškas (); tarpas (); } else if (sent.charAt (first + i) == 'f') {Serial.print ("..-."); taškas (); taškas (); brūkšnys (); taškas (); tarpas (); } else if (sent.charAt (first + i) == 'g') {Serial.print ("-."); brūkšnys (); brūkšnys (); taškas (); tarpas (); } else if (sent.charAt (first + i) == 'h') {Serial.print ("…"); taškas (); taškas (); taškas (); taškas (); tarpas (); } else if (sent.charAt (first + i) == 'i') {Serial.print (".."); taškas (); taškas (); tarpas (); } else if (sent.charAt (first + i) == 'j') {Serial.print (".---"); taškas (); brūkšnys (); brūkšnys (); brūkšnys (); tarpas (); } else if (sent.charAt (first + i) == 'k') {Serial.print ("-.-"); brūkšnys (); taškas (); brūkšnys (); tarpas (); } else if (sent.charAt (first + i) == 'l') {Serial.print (".-.."); taškas (); brūkšnys (); taškas (); taškas (); tarpas (); } else if (sent.charAt (first + i) == 'm') {Serial.print ("-"); brūkšnys (); brūkšnys (); tarpas (); } else if (sent.charAt (first + i) == 'n') {Serial.print ("-."); brūkšnys (); taškas (); tarpas (); } else if (sent.charAt (first + i) == 'o') {Serial.print ("---"); brūkšnys (); brūkšnys (); brūkšnys (); tarpas (); } else if (sent.charAt (first + i) == 'p') {Serial.print (".--."); taškas (); brūkšnys (); brūkšnys (); taškas (); tarpas (); } else if (sent.charAt (first + i) == 'q') {Serial.print ("--.-"); brūkšnys (); brūkšnys (); taškas (); brūkšnys (); tarpas (); } else if (sent.charAt (first + i) == 'r') {Serial.print (".-."); taškas (); brūkšnys (); taškas (); tarpas (); } else if (sent.charAt (first + i) == 's') {Serial.print ("…"); taškas (); taškas (); taškas (); tarpas (); } else if (sent.charAt (first + i) == 't') {Serial.print ("-"); brūkšnys (); tarpas (); } else if (sent.charAt (first + i) == 'u') {Serial.print ("..-"); taškas (); taškas (); brūkšnys (); tarpas (); } else if (sent.charAt (first + i) == 'v') {Serial.print ("…-"); taškas (); taškas (); taškas (); brūkšnys (); tarpas (); } else if (sent.charAt (first + i) == 'w') {Serial.print (".--"); taškas (); brūkšnys (); brūkšnys (); tarpas (); } else if (sent.charAt (first + i) == 'x') {Serial.print ("-..-"); brūkšnys (); taškas (); taškas (); brūkšnys (); tarpas (); } else if (sent.charAt (first + i) == 'y') {Serial.print ("-.--"); brūkšnys (); taškas (); brūkšnys (); brūkšnys (); tarpas (); } else if (sent.charAt (first + i) == 'z') {Serial.print ("-.."); brūkšnys (); brūkšnys (); taškas (); taškas (); tarpas (); } else if (sent.charAt (first + i) == '') {Serial.print ("/"); bigSpace (); }}} void loop () {// Nieko čia nerašykite}

7 žingsnis: trikčių šalinimas

Ratas nejuda

Gali būti per daug trinties tarp rato ir popieriaus, pabandykite šiek tiek pakelti ratą arba jį pakeisti.

Ratas traukia popierių, bet tada jis sukasi, netraukdamas popieriaus

Įsitikinkite, kad ratą priklijavote žingsninio variklio centre

Taškai ir brūkšniai yra sujungti

Patikrinkite, ar taško, brūkšnio ir tarpo funkcijos parašytos teisingai, jos turėtų būti tokios:

// Tai metodas, verčiantis robotą rašyti taškinį tašką () {Serial.println ("dot start"); myServo.write (160); vėlavimas (1000); myServo.write (90); vėlavimas (1000); myStepper.step (stepsPerRevolution); vėlavimas (1000); Serial.println („taškas padarytas“); }

// Tai metodas, verčiantis robotą rašyti brūkšnį

void dash () {Serial.println ("brūkšnio pradžia"); myServo.write (160); vėlavimas (1000); myStepper.step (stepsPerRevolution); vėlavimas (1000); myServo.write (90); vėlavimas (1000); myStepper.step (stepsPerRevolution); vėlavimas (1000); Serial.println („brūkšnys padaryta“); }

// Tai metodas, leidžiantis robotui palikti tarpą tarp kiekvienos raidės

void space () {Serial.println ("tarpo pradžia"); myServo.write (90); vėlavimas (1000); myStepper.step (200); vėlavimas (1000); Serial.println („erdvė padaryta“); }

Rekomenduojamas: