Sadržaj:
- Pribor
- Korak 1: Izgradnja baze
- Korak 2: Servo komad
- Korak 3: Dodavanje servo motora i role papira u bazu
- Korak 4: Izrada okvira koračnog motora
- Korak 5: Završni dodiri
- Korak 6: Elektronika
- Korak 7: Rješavanje problema
Video: Pisac Arduino Morseovog koda: 7 koraka (sa slikama)
2024 Autor: John Day | [email protected]. Zadnja promjena: 2024-01-30 09:32
Napravio sam robota koji može pretvoriti bilo koji zadani tekst u Morzeovu azbuku, a zatim ga zapisati !! Napravljen je od kartona i Lega, a za elektroniku sam koristio Arduino i samo dva motora.
Pribor
Arduino Uno ploča Stepper motor Mikro servo SG90ULN2003 Modul pogonskog sklopa koračnog motora Modul napajanja Breadboard 4 × Žice kratkospojnika 6 × Dupont žice ženski na muški9V1A AdapterUSB kabel Karton 2 × Drveni klinovi 2 × Opruge Slama Bijeli papirLegoSuper ljepilo Pištolj za vruće ljepilo Elastična traka (za izradu držač za olovku) Rezač škara
Korak 1: Izgradnja baze
Počnite s izgradnjom baze. Moj je širok 4 vijka i dugačak 20, nakon što sam izgradio jedan sloj s tim duljinama, sagradio sam jedan široki graničnik oko njega ostavljajući prostor s jedne strane kako bih ostavio prostor za koračni motor, a zatim sam dodao komada pločica do srednjeg dijela gdje će biti papirna traka. Korištenje Lega učinilo ga je vrlo čvrstim i lakim za izmjenu. Kako bih napravio rolu papira, izrezao sam trake papira A4 širine 1,2 cm (odabrao sam ovu širinu jer je iste širine kao Lego kotačić koji sam koristio, svoje možete povećati ili smanjiti ovisno o kotaču) i zalijepio sam im krajeve da formiram jednu vrlo dugu traku, zatim sam je omotao oko kotača.
Korak 2: Servo komad
Za ovaj korak potrebno vam je:
- dva drvena tipla duga 4 cm
- dvije opruge duge 2 cm
- jedna slama izrezana na dva komada svaki po 2 cm
- jedan komad kartona dimenzija 12 x 4 cm
- dva komada kartona 4 x 1,5 cm
- jedan komad kartona 4 x 2 cm
Najprije zalijepite tiple na jedan od 4 do 1,5 komada, zatim umetnite opruge i slamke u tiple, a zatim zalijepite drugi kartonski komad s druge strane kako bi sve držalo na mjestu.
Drugo, zalijepite komad 4 cm po 2 cm na slamke.
Treće, preokrenite cijeli komad i zalijepite mali klin na njegovu stražnju stranu, ne u sredini, već malo ulijevo. (Zaboravio sam dodati mali klin na prvoj slici)
Konačno, izrežite rupu u velikom komadu kartona veličine prednje strane servo motora i zalijepite motor, a zatim komad koji smo upravo napravili pomoću tipla zalijepite na veliki komad tako da, kad se servo pomakne, gurne mali klin dolje koji opet gura opruge prema dolje.
Na kraju sam izrezao oko 3 cm od donjeg dijela komada 12 cm po 4 cm i zalijepio na njega još dva komada 4 cm po 1,5 cm, a zatim sam to prekrio komadom kartona 5,5 cm x 4 cm. I da držim marker napravio sam mali omču elastične trake i zalijepio je na mali komad kartona, a zatim sam to zalijepio na komad 4 cm po 2 cm koji će se pomaknuti prema dolje kad se pokrene servo. Ti su dodaci spriječili pomicanje markera s jedne na drugu stranu kad se opruge podignu.
Korak 3: Dodavanje servo motora i role papira u bazu
Dodao sam još dvije cigle na jednu stranu baze kako bih podržao servo komad i zalijepio sam je na mjesto. Zatim sam dodao kotač na krajnji kraj baze.
Korak 4: Izrada okvira koračnog motora
Ovaj korak bio je mali izazov, jer motor nije napravljen tako da savršeno pristaje Lego -u. Međutim, uspio sam to učiniti pomoću dvije rupe u motoru kako bih ga učvrstio na mjestu. Zatim sam zalijepio Lego kotač na vrh motora, a zatim sam ga stavio tik uz podnožje sa strane koju sam ostavio otvorenom u 1. koraku.
Korak 5: Završni dodiri
Dodao sam dva lučna komada kako bih pokrio kotač kako bih fiksirao papir na mjestu. Dodao sam dva manja lučna dijela jedan za držanje žica koračnog motora i drugi za držanje papira. Na kraju sam promijenio kotač koračnog motora na nešto veći koji je pomaknuo papir bolje od starog kotača.
Korak 6: Elektronika
Konačno, morate povezati motore s Arduinom i učitati kôd.
Počet ćemo sa servo motorom, spojiti smeđu žicu (žica za uzemljenje) na pin GND, zatim crvenu žicu (žicu za napajanje) na pin 5V, a narančastu žicu (signalnu žicu) na Dig #5 pribadača. Zatim koračni motor spojite 1N1 na Dig #11, 1N2 na Dig #10, 1N3 na Dig #9, 1N4 na Dig #8, 5V na pozitivnu stranu matične ploče, a iglu za uzemljenje na negativnu stranu matična ploča. I ne zaboravite spojiti modul napajanja na ploču, pazeći da se njegove pozitivne i negativne strane pravilno poravnaju s odgovarajućim stranama na ploči. Ako to zaboravite, promijenit ćete snagu svog projekta, a to ne želite učiniti.
Za kôd sam napisao četiri metode, jednu za ispisivanje točke, jednu za crtu i dvije za ostavljanje razmaka između svakog slova i svake riječi. Na taj način mogu jednostavno nazvati ove metode kad mi zatrebaju umjesto da ih ponovno napišem za svako slovo. Zatim sam napisao for petlju koja prolazi kroz svako slovo teksta i zapisao je. Unutar nje sam napisao if naredbu za svako slovo, ali možete je upisati u switch naredbu ako želite. Naravno, možete dodati kodu kako biste omogućili programu čitanje brojeva. Kad sve ožičenje bude spremno, samo kopirajte i zalijepite kôd u svoj IDE. Ne zaboravite instalirati knjižnice koraka, servo i nizova. Nakon toga, možete krenuti.
Kako radi
Kada se Arduino pokrene, program gleda prvo slovo teksta., A ovisno o kojem se radi, poziva funkcije koje ga zapisuju Morzeovim kodom. Na primjer, kada se pozove točkasta funkcija, servo motor je postavljen na 160 koji pomiče olovku prema dolje, zatim se vraća na 90 što omogućuje oprugama da se vrate gore pomičući olovku s njima. A ako se pozove funkcija crtice, servo pomakne olovku prema dolje, a koračni motor rotira kotačić koji povlači papir pa olovka piše crticu. A ako se jedna od funkcija razmaka naziva koračni motor se okreće, ali s olovkom prema gore pa povlači papir stvarajući razmak između slova ili riječi. Kad završi, prelazi se na sljedeće slovo i ponavlja isti postupak. Nadam se da ti se sviđa;)
Kod
#uključi
#include #include #include const int stepsPerRevolution = 150; // Ovo je varijabla za stepper motor String rečenica = "*zdravo"; // Promijenite ovu varijablu za pisanje različitih riječi, ali pišite samo malim slovima i započnite riječ s "*" Stepper myStepper (stepsPerRevolution, 8, 10, 9, 11); Servo myServo; // Ovo je metoda koja tjera robota da napiše dot void dot () {Serial.println ("početak točke"); myServo.write (160); kašnjenje (1000); myServo.write (90); kašnjenje (1000); myStepper.step (stepsPerRevolution); kašnjenje (1000); Serial.println ("dot done"); } // Ovo je metoda koja tjera robota da napiše crticu void dash () {Serial.println ("dash start"); myServo.write (160); kašnjenje (1000); myStepper.step (stepsPerRevolution); kašnjenje (1000); myServo.write (90); kašnjenje (1000); myStepper.step (stepsPerRevolution); kašnjenje (1000); Serial.println ("crtica gotova"); } // Ovo je metoda koja tjera robota da ostavi razmak između svakog slova void space () {Serial.println ("space start"); myServo.write (90); kašnjenje (1000); myStepper.step (200); kašnjenje (1000); Serial.println ("prostor gotov"); } // Ovo je metoda koja tjera robota da ostavi veći razmak između svake riječi void bigSpace () {myServo.write (90); myStepper.step (250); kašnjenje (1000); } void setup () {// ovdje postavite svoj kôd za postavljanje, da biste ga jednom pokrenuli: Serial.begin (9600); myStepper.setSpeed (100); myServo.attach (5); int prva = rečenica.indexOf ('*'); // ova petlja for prolazi kroz svako slovo niza, a zatim poziva prave metode da to zapiše za (int i = 0; i <rečenica.length (); i ++) {if (rečenica.charAt (prvo+i) == 'a') {Serial.print (".-"); točka(); crtica(); prostor(); } else if (sentences.charAt (first + i) == 'b') {Serial.print ("-…"); crtica(); točka(); točka(); točka(); prostor(); } else if (sentences.charAt (first + i) == 'c') {Serial.print ("-.-."); crtica(); točka(); crtica(); točka(); prostor(); } else if (sentences.charAt (first + i) == 'd') {Serial.print ("-.."); crtica(); točka(); točka(); prostor(); } else if (sentences.charAt (first + i) == 'e') {Serial.print ("."); točka(); prostor(); } else if (sentences.charAt (first + i) == 'f') {Serial.print ("..-."); točka(); točka(); crtica(); točka(); prostor(); } else if (sentences.charAt (first + i) == 'g') {Serial.print ("-."); crtica(); crtica(); točka(); prostor(); } else if (sentences.charAt (first + i) == 'h') {Serial.print ("…."); točka(); točka(); točka(); točka(); prostor(); } else if (sentences.charAt (first + i) == 'i') {Serial.print (".."); točka(); točka(); prostor(); } else if (sentences.charAt (first + i) == 'j') {Serial.print (".---"); točka(); crtica(); crtica(); crtica(); prostor(); } else if (sentences.charAt (first + i) == 'k') {Serial.print ("-.-"); crtica(); točka(); crtica(); prostor(); } else if (sentences.charAt (first + i) == 'l') {Serial.print (".-.."); točka(); crtica(); točka(); točka(); prostor(); } else if (sentences.charAt (first + i) == 'm') {Serial.print ("-"); crtica(); crtica(); prostor(); } else if (sentences.charAt (first + i) == 'n') {Serial.print ("-."); crtica(); točka(); prostor(); } else if (sentences.charAt (first + i) == 'o') {Serial.print ("---"); crtica(); crtica(); crtica(); prostor(); } else if (sentences.charAt (first + i) == 'p') {Serial.print (".--."); točka(); crtica(); crtica(); točka(); prostor(); } else if (sentences.charAt (first + i) == 'q') {Serial.print ("--.-"); crtica(); crtica(); točka(); crtica(); prostor(); } else if (sentences.charAt (first + i) == 'r') {Serial.print (".-."); točka(); crtica(); točka(); prostor(); } else if (sentences.charAt (first + i) == 's') {Serial.print ("…"); točka(); točka(); točka(); prostor(); } else if (sentences.charAt (first + i) == 't') {Serial.print ("-"); crtica(); prostor(); } else if (sentences.charAt (first + i) == 'u') {Serial.print ("..-"); točka(); točka(); crtica(); prostor(); } else if (sentences.charAt (first + i) == 'v') {Serial.print ("…-"); točka(); točka(); točka(); crtica(); prostor(); } else if (sentences.charAt (first + i) == 'w') {Serial.print (".--"); točka(); crtica(); crtica(); prostor(); } else if (sentences.charAt (first + i) == 'x') {Serial.print ("-..-"); crtica(); točka(); točka(); crtica(); prostor(); } else if (sentences.charAt (first + i) == 'y') {Serial.print ("-.--"); crtica(); točka(); crtica(); crtica(); prostor(); } else if (sentences.charAt (first + i) == 'z') {Serial.print ("-.."); crtica(); crtica(); točka(); točka(); prostor(); } else if (sentences.charAt (first + i) == '') {Serial.print ("/"); bigSpace (); }}} void loop () {// Ne piši ništa ovdje}
Korak 7: Rješavanje problema
Kotač se ne pomiče
Možda postoji previše trenja između kotačića i papira, pokušajte malo podići kotač ili ga promijeniti.
Kotač povlači papir, ali se onda nastavlja okretati bez povlačenja papira
Provjerite jeste li zalijepili kotač u središte koračnog motora
Točke i crtice su povezane
Provjerite jesu li točke, crtica i razmak ispravno napisane, trebale bi biti ovakve:
// Ovo je metoda koja tjera robota da napiše dotvoid dot () {Serial.println ("početak točke"); myServo.write (160); kašnjenje (1000); myServo.write (90); kašnjenje (1000); myStepper.step (stepsPerRevolution); kašnjenje (1000); Serial.println ("dot done"); }
// Ovo je metoda koja tjera robota da napiše crticu
void crtica () {Serial.println ("početak crtice"); myServo.write (160); kašnjenje (1000); myStepper.step (stepsPerRevolution); kašnjenje (1000); myServo.write (90); kašnjenje (1000); myStepper.step (stepsPerRevolution); kašnjenje (1000); Serial.println ("crtica gotova"); }
// Ovo je metoda koja tjera robota da ostavi razmak između svakog slova
void space () {Serial.println ("početak prostora"); myServo.write (90); kašnjenje (1000); myStepper.step (200); kašnjenje (1000); Serial.println ("prostor gotov"); }
Preporučeni:
Veseli džemper Grinchmas, termalni pisač + GemmaM0: 5 koraka (sa slikama)
Džemper Merry Grinchmas, termalni pisač + GemmaM0: Džemper Merry Grinchmas interaktivan je odjevni predmet koji nudi širok raspon personaliziranih ispisanih poruka kao prigovor kad god netko dotakne Grinchov šešir. Poruke protiv Božića stižu putem termalnog pisača kojim upravlja
MOSTER FET - Dvostruki 500Amp 40 V MOSFET 3D pisač, upravljački programi s grijanim krevetima: 7 koraka (sa slikama)
MOSTER FET - Dvostruki pokretači s grijanim krevetom od 500 volti i 40 volti MOSFET za 3D pisač: Vjerojatno ste kliknuli na ovu svetu kravu koja razmišlja, 500 AMPS !!!!!. Da budem iskren, MOSFET ploča koju sam dizajnirao neće moći sigurno raditi 500Apera. Mogao bi nakratko, neposredno prije nego što je uzbuđeno buknuo u plamen. Ovo nije zamišljeno da bude pametan
Kako napraviti prevoditelj Morseovog koda s Arduinom: 10 koraka
Kako napraviti prevoditelja Morseovog koda s Arduinom: PregledKomuniciranje na šifriran način, osim što je tako fascinantno, ima mnoge primjene na raznim poljima. Jedna od najčešćih metoda komuniciranja koda je Morzeov kod. U ovom ćete vodiču naučiti kako napraviti tumača za slanje i ponovno
Alexa pisač - Unaprijeđeni pisač računa: 7 koraka (sa slikama)
Alexa pisač | Upcycled Receipt Printer: Obožavam reciklirati staru tehnologiju i učiniti je ponovno korisnom. Prije nekog vremena nabavio sam stari, jeftini termalni pisač računa i htio sam koristan način da ga ponovno namjestim. Zatim sam, za vrijeme praznika, dobio na dar Amazon Echo Dot, i jedan od podviga
Arduino odašiljač Morseovog koda: 11 koraka
Arduino odašiljač Morseovog koda: U ovom uputstvu ćete koristiti Arduino Uno za stvaranje odašiljača Morseovog koda i koristiti serijski monitor za čitanje poruka koje ste prenijeli. Dijelovi koji će vam trebati: Arduino UnoBreadboardBuzzerButtonsJamper žice