Sadržaj:
- Supplies
- Korak 1: Izgradnja baze
- Korak 2: Servo komad
- Korak 3: Dodavanje servo motora i rolne papira u bazu
- Korak 4: Izgradnja okvira koračnog motora
- Korak 5: Završni dodiri
- Korak 6: Elektronika
- Korak 7: Rješavanje problema
Video: Arduino pisac Morseovog koda: 7 koraka (sa slikama)
2024 Autor: John Day | [email protected]. Zadnja izmjena: 2024-01-30 08:04
Napravio sam robota koji može pretvoriti bilo koji tekst u Morzeovu azbuku, a zatim ga zapisati !! Napravljen je od kartona i Lega, a za elektroniku sam koristio Arduino i samo dva motora.
Supplies
Arduino Uno ploča Stepper motor Mikro servo SG90ULN2003 modul pogonskog sklopa koračnog motora Modul napajanja Breadboard4 × Žice kratkospojnika6 × Dupont žice ženski na muški9V1A AdapterUSB kabel Karton 2 × Drveni tipli 2 × Opruge Slama Bijeli papirLegoSuper ljepilo Pištolj za vruće ljepilo Elastična traka (za izradu držač za olovku) Rezač makaza
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 dužinama, 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 komade pločica do srednjeg dijela gdje će biti papirna traka. Korištenje Lego -a učinilo ga je vrlo čvrstim i lakim za izmjenu. Da 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, možete povećati ili smanjiti svoje ovisno o kotaču) i zalijepio sam im krajeve da formiram jednu vrlo dugu traku, zatim sam je omotao oko točka.
Korak 2: Servo komad
Za ovaj korak potrebno vam je:
- dva drvena tipla duga 4 cm
- dvije opruge dugačke 2 cm
- jedna slamka izrezana na dva komada svaki dužine 2 cm
- jedan komad kartona dimenzija 12 x 4 cm
- dva kartona dimenzija 4 x 1,5 cm
- jedan komad kartona 4 cm po 2 cm
Najprije zalijepite klinove na jedan od komada 4 x 1,5, zatim umetnite opruge i slamke u klinove, a zatim zalijepite drugi kartonski komad s druge strane da sve drži 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 sredinu, ali 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 kada se servo pomakne gurne mali klin dolje koji zauzvrat gura i 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 petlju 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 kada se pokrene servo. Ovi dodaci spriječili su kretanje markera s jedne na drugu stranu kada se opruge podignu.
Korak 3: Dodavanje servo motora i rolne 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 točak na krajnji kraj baze.
Korak 4: Izgradnja okvira koračnog motora
Ovaj korak je bio 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 koraku 1.
Korak 5: Završni dodiri
Dodao sam dva lučna komada kako bih pokrio točak kako bih fiksirao papir. Dodao sam dva manja lučna komada jedan za držanje žica koračnog motora i drugi za držanje papira. Na kraju, promijenio sam kotač koračnog motora u malo veći koji je pomaknuo papir bolje od starog kotača.
Korak 6: Elektronika
Na kraju, morate povezati motore s Arduinom i učitati kôd.
Počet ćemo sa servo motorom, spojiti smeđu žicu (žica za uzemljenje) na GND pin, zatim crvenu žicu (žicu za napajanje) na pin 5V, a narančastu žicu (signalnu žicu) na Dig #5 pin. Zatim koračni motor spojite 1N1 na Dig #11, 1N2 na Dig #10, 1N3 na Dig #9, 1N4 na Dig #9, 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 matičnu ploču pazeći da se njene pozitivne i negativne strane pravilno poravnaju sa odgovarajućim stranama na matičnoj 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 tačke, jednu za crtu i dvije za ostavljanje razmaka između svakog slova i svake riječi. Na taj način mogu jednostavno pozvati ove metode kad mi zatrebaju, umjesto da ih ponovo 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 napisati u switch naredbi 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 stepper, servo i biblioteke 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 dot 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 zatim koračni motor okreće kotač 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 voliš ga;)
Kod
#include
#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 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 tačku void tačku () {Serial.println ("početak tač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 tera 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 čini da robot ostavi veći prostor 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 first = sentences.indexOf ('*'); // ova for petlja prolazi kroz svako slovo niza, a zatim poziva prave metode da to zapiše za (int i = 0; i <statement.length (); i ++) {if (sentences.charAt (first+i) == 'a') {Serial.print (".-"); tačka (); crtica (); svemir(); } else if (sentences.charAt (first + i) == 'b') {Serial.print ("-…"); crtica (); tačka (); tačka (); tačka (); svemir(); } else if (sentences.charAt (first + i) == 'c') {Serial.print ("-.-."); crtica (); tačka (); crtica (); tačka (); svemir(); } else if (sentences.charAt (first + i) == 'd') {Serial.print ("-.."); crtica (); tačka (); tačka (); svemir(); } else if (sentences.charAt (first + i) == 'e') {Serial.print ("."); tačka (); svemir(); } else if (sentences.charAt (first + i) == 'f') {Serial.print ("..-."); tačka (); tačka (); crtica (); tačka (); svemir(); } else if (sentences.charAt (first + i) == 'g') {Serial.print ("-."); crtica (); crtica (); tačka (); svemir(); } else if (sentences.charAt (first + i) == 'h') {Serial.print ("…."); tačka (); tačka (); tačka (); tačka (); svemir(); } else if (sentences.charAt (first + i) == 'i') {Serial.print (".."); tačka (); tačka (); svemir(); } else if (sentences.charAt (first + i) == 'j') {Serial.print (".---"); tačka (); crtica (); crtica (); crtica (); svemir(); } else if (sentences.charAt (first + i) == 'k') {Serial.print ("-.-"); crtica (); tačka (); crtica (); svemir(); } else if (sentences.charAt (first + i) == 'l') {Serial.print (".-.."); tačka (); crtica (); tačka (); tačka (); svemir(); } else if (sentences.charAt (first + i) == 'm') {Serial.print ("-"); crtica (); crtica (); svemir(); } else if (sentences.charAt (first + i) == 'n') {Serial.print ("-."); crtica (); tačka (); svemir(); } else if (sentences.charAt (first + i) == 'o') {Serial.print ("---"); crtica (); crtica (); crtica (); svemir(); } else if (sentences.charAt (first + i) == 'p') {Serial.print (".--."); tačka (); crtica (); crtica (); tačka (); svemir(); } else if (sentences.charAt (first + i) == 'q') {Serial.print ("--.-"); crtica (); crtica (); tačka (); crtica (); svemir(); } else if (sentences.charAt (first + i) == 'r') {Serial.print (".-."); tačka (); crtica (); tačka (); svemir(); } else if (sentences.charAt (first + i) == 's') {Serial.print ("…"); tačka (); tačka (); tačka (); svemir(); } else if (sentences.charAt (first + i) == 't') {Serial.print ("-"); crtica (); svemir(); } else if (sentences.charAt (first + i) == 'u') {Serial.print ("..-"); tačka (); tačka (); crtica (); svemir(); } else if (sentences.charAt (first + i) == 'v') {Serial.print ("…-"); tačka (); tačka (); tačka (); crtica (); svemir(); } else if (sentences.charAt (first + i) == 'w') {Serial.print (".--"); tačka (); crtica (); crtica (); svemir(); } else if (sentences.charAt (first + i) == 'x') {Serial.print ("-..-"); crtica (); tačka (); tačka (); crtica (); svemir(); } else if (sentences.charAt (first + i) == 'y') {Serial.print ("-.--"); crtica (); tačka (); crtica (); crtica (); svemir(); } else if (sentences.charAt (first + i) == 'z') {Serial.print ("-.."); crtica (); crtica (); tačka (); tačka (); svemir(); } else if (sentences.charAt (first + i) == '') {Serial.print ("/"); bigSpace (); }}} void loop () {// Ne pišite ništa ovdje}
Korak 7: Rješavanje problema
Točak se ne pomera
Možda postoji previše trenja između kotačića i papira, pokušajte malo podići kotač ili ga promijeniti.
Točak povlači papir, ali se onda nastavlja rotirati bez povlačenja papira
Provjerite jeste li zalijepili kotač u središte koračnog motora
Tač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 ("dot start"); 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 ("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čuje se:
Veseli Grinchmas džemper, termalni pisač + GemmaM0: 5 koraka (sa slikama)
Džemper Merry Grinchmas, termalni pisač + GemmaM0: Džemper Merry Grinchmas interaktivni je odjevni predmet koji nudi širok spektar personaliziranih ispisanih poruka za žalbu kad god netko dodirne Grinchov šešir. Poruke protiv Božića stižu putem termalnog štampača kojim upravlja
ScanUp NFC čitač/pisac i audio snimač za slijepe, slabovidne i sve ostale: 4 koraka (sa slikama)
ScanUp NFC čitač/pisac i audio snimač za slijepe, slabovidne i sve ostale: Studiram industrijski dizajn i projekat je rad mog semestra. Cilj je podržati osobe sa oštećenim vidom i slijepe osobe pomoću uređaja koji omogućava snimanje zvuka u. WAV formatu na SD kartici i pozivanje tih podataka pomoću NFC oznake. Tako u
Alexa Printer - Upciklirani pisač računa: 7 koraka (sa slikama)
Alexa Printer | Upcycled Receipt Printer: Ljubitelj sam recikliranja stare tehnologije i njene ponovne upotrebe. Nedavno sam nabavio stari, jeftini termalni štampač računa i htio sam koristan način da ga ponovo namjenim. Tada sam, tokom praznika, dobio na poklon Amazon Echo Dot, i jedan od podviga
3D pisač za bojice: 7 koraka (sa slikama)
3D Crayon štampač: Jako želim 3D štampač, ali nemam novca. I ja imam 13 godina i ne mogu se zaposliti, pa šta da radim? Ja pravim jedan od Lego kockica. Nažalost, nemam Lego Mindstorms (350 USD), pa sam se morao snaći. Ovo nije zamišljeno da bude precizno ili tačno
Jednostavan pisac na Brajevom pismu (govor na Brajevom pismu): 8 koraka (sa slikama)
Jednostavni pisac na Brajevom pismu (Govor na Brajevom pismu): Pozdrav svima, Sve je ovo počelo s izvođenjem jednostavnog XY plotera nakon što sam ga uspješno završio, mislio sam razviti jednostavan pretvarač teksta u govor na brajici. Počeo sam ga pretraživati na internetu i neočekivano su cijene bile previsoke , to me je ojačalo