Sisällysluettelo:

Arduino Morse Code Writer: 7 vaihetta (kuvilla)
Arduino Morse Code Writer: 7 vaihetta (kuvilla)

Video: Arduino Morse Code Writer: 7 vaihetta (kuvilla)

Video: Arduino Morse Code Writer: 7 vaihetta (kuvilla)
Video: Web Programming - Computer Science for Business Leaders 2016 2024, Marraskuu
Anonim
Image
Image
Arduino Morse Code Writer
Arduino Morse Code Writer

Tein robotin, joka voi muuntaa minkä tahansa tekstin Morse -koodiksi ja kirjoittaa sen sitten ylös !! Se on valmistettu pahvista ja Legosta, ja elektroniikassa käytin Arduinoa ja vain kahta moottoria.

Tarvikkeet

Arduino Uno -levy Askelmoottori Mikro-servo SG90ULN2003 askelmoottorin ohjainmoduuli Virtalähdemoduuli Leipälevy4 × Hyppyjohdot6 × Naaras-uros-dupontijohdot 9V1A-sovitinUSB-kaapeli Pahvi 2 × Puiset tapit 2 × Jouset Olki Valkoinen paperiLegoSuper-liima Kuuma liimapistooli Joustava nauha (kynäteline) Sakset

Vaihe 1: Pohjan rakentaminen

Tukikohdan rakentaminen
Tukikohdan rakentaminen
Tukikohdan rakentaminen
Tukikohdan rakentaminen
Tukikohdan rakentaminen
Tukikohdan rakentaminen

Aloita rakentamalla pohja. Minun on 4 nastaa leveä ja 20 nastaa pitkä, kun olen rakentanut yhden kerroksen näillä pituuksilla, rakensin sen ympärille yhden nastaisen leveän reunan jättäen raon toiselle puolelle, jotta jätän tilaa askelmoottorille, ja lisäsin laattapalat keskiosaan, johon paperinauha tulee. Legon avulla se oli erittäin tukeva ja helppo muokata. Paperirullan tekemiseksi leikkasin 1,2 cm leveitä A4 -paperinauhoja (valitsin tämän leveyden, koska se on sama leveys kuin käyttämäni Lego -pyörä, voit suurentaa tai pienentää pyörääsi riippuen) ja liimasin niiden päät yhteen muodostaen yhden erittäin pitkän nauhan, sitten käärin sen pyörän ympärille.

Vaihe 2: Servopala

Servo -pala
Servo -pala
Servo -pala
Servo -pala
Servo -pala
Servo -pala

Tätä vaihetta varten tarvitset:

  • kaksi 4 cm pitkää puista tappia
  • kaksi 2 cm pitkää jousta
  • yksi olki leikataan kahteen 2 cm pituiseen osaan
  • yksi 12 cm x 4 cm pahvi
  • kaksi 4 x 1,5 cm pahvia
  • yksi 4 x 2 cm pahvi

Liimaa tapit ensin yhteen 4 x 1,5 kappaleesta, työnnä sitten jouset ja oljet tappeihin ja liimaa sitten toinen pahvi toisella puolella pitääksesi kaikki paikoillaan.

Toiseksi liimaa 4 x 2 cm: n kappale olkien päälle.

Kolmanneksi, käännä koko kappale ympäri ja liimaa pieni tappi sen taakse, ei keskelle vaan hieman vasemmalle. (Unohdin lisätä pienen tapin ensimmäiseen kuvaan)

Leikkaa lopuksi isoon pahvipalaan reikä, joka on servomoottorin etuosan kokoinen, ja liimaa moottori sisään, liimaa sitten juuri tekemämme osa tapilla isoun kappaleeseen niin, että kun servo liikkuu, se työntää pieni tappi alas, joka puolestaan työntää myös jouset alas.

Lopulta leikkasin noin 3 cm 12 cm x 4 cm kappaleen alaosasta ja liimasin siihen vielä kaksi 4 cm x 1,5 cm kappaletta ja peitin sen sitten 5,5 x 4 cm pahvilla. elastisen nauhan silmukka ja liimasin sen pieneen pahvipalaan, sitten liimasin sen 4 x 2 cm: n kappaleeseen, joka liikkuu alas, kun servo käynnistyy. Nämä lisäykset estivät merkin liikkumisen sivulta toiselle, kun jouset tulevat takaisin ylös.

Vaihe 3: Servomoottorin ja paperirullan lisääminen alustaan

Servomoottorin ja paperirullan lisääminen alustaan
Servomoottorin ja paperirullan lisääminen alustaan
Servomoottorin ja paperirullan lisääminen alustaan
Servomoottorin ja paperirullan lisääminen alustaan

Lisäsin vielä kaksi tiiliä alustan toiselle puolelle tukemaan servokappaletta ja liimasin sen paikalleen. Sitten lisäsin pyörän pohjan ääripäähän.

Vaihe 4: Askelmoottorin rungon rakentaminen

Askelmoottorin rungon rakentaminen
Askelmoottorin rungon rakentaminen
Askelmoottorin rungon rakentaminen
Askelmoottorin rungon rakentaminen
Askelmoottorin rungon rakentaminen
Askelmoottorin rungon rakentaminen

Tämä vaihe oli hieman haasteellinen, koska moottoria ei tehty sopimaan täydellisesti Legon kanssa. Kuitenkin onnistuin tekemään sen käyttämällä moottorin kahta reikää sen kiinnittämiseksi paikalleen. Seuraavaksi liimasin Lego -pyörän moottorin kärkeen ja laitoin sen sitten alustan viereen sillä puolella, jonka jätin auki vaiheessa 1.

Vaihe 5: Viimeistely

Viimeistelyt
Viimeistelyt
Viimeistelyt
Viimeistelyt
Viimeistelyt
Viimeistelyt
Viimeistelyt
Viimeistelyt

Lisäsin kaksi kaariosaa pyörän peittämiseksi, jotta paperi kiinnittyy paikalleen. Ja lisäsin kaksi pienempää kaarikappaletta, joista toinen piteli askelmoottorin johtoja ja toinen paperia. Lopuksi vaihdoin askelmoottorin pyörän hieman isompaan, joka liikutti paperia paremmin kuin vanha pyörä.

Vaihe 6: Elektroniikka

Elektroniikka
Elektroniikka
Elektroniikka
Elektroniikka

Lopuksi sinun on kytkettävä moottorit Arduinoon ja ladattava koodi.

Aloitamme servomoottorilla, liitä ruskea johto (maadoitusjohto) GND -nastaan, sitten punainen johto (virtajohto) 5 V: n napaan ja oranssi johto (signaalijohto) Dig #5: een tappi. Seuraavaksi askelmoottori, liitä 1N1 kaivaimeen #11, 1N2 kaivoon #10, 1N3 kaivoon #9, 1N4 kaivaukseen #8, 5V leipälevyn positiiviseen puoleen ja maadoitustappi negatiiviseen puoleen leipälauta. Älä myöskään unohda kytkeä virtalähdemoduulia leipälevyyn varmistaen, että sen positiiviset ja negatiiviset puolet ovat kohdakkain leipälevyn vastaavien sivujen kanssa. Jos unohdat tehdä niin, käännät projektisi voiman etkä halua tehdä sitä.

Koodille kirjoitin neljä tapaa, yksi pisteiden kirjoittamiseen, yhdysviiva ja kaksi kirjaimen ja sanan väliin jättämiseen. Tällä tavalla voin vain soittaa näihin menetelmiin, kun tarvitsen niitä sen sijaan, että kirjoittaisin sen uudelleen jokaiselle kirjeelle. Sitten kirjoitin for -silmukan, joka kulkee tekstin jokaisen kirjaimen läpi ja kirjoittaa sen, sen sisällä kirjoitin if -lauseen jokaiselle kirjaimelle, mutta voit kirjoittaa sen kytkentälausekkeeseen, jos haluat. Voit tietysti lisätä koodin, jotta ohjelma voi lukea numeroita. Kun kaikki johdot on valmis, kopioi ja liitä koodi IDE -laitteeseesi. Älä unohda asentaa askel-, servo- ja merkkijonokirjastoja. Sen jälkeen on hyvä mennä.

Kuinka se toimii

Kun Arduino käynnistyy, ohjelma katsoo tekstin ensimmäistä kirjainta. Ja riippuen siitä, mikä se on, se kutsuu funktiot, jotka kirjoittavat sen Morse -koodilla. Esimerkiksi kun pistefunktiota kutsutaan, servomoottori on asetettu 160: een, joka siirtää kynää alaspäin, sitten se asetetaan takaisin 90: een, jolloin jouset tulevat takaisin ylös liikuttaen kynää mukanaan. Ja jos kojelautaustoimintoa kutsutaan, servo siirtää kynää alaspäin, askelmoottori pyörii pyörää, joka vetää paperia ja saa kynän kirjoittamaan viivan. Ja jos yhtä välilyönnin funktioista kutsutaan askelmoottoriksi, se pyörii kynän ollessa ylöspäin, joten se vetää paperia ja tekee välilyönnin kirjainten tai sanojen väliin. Kun se on tehty, se siirtyy seuraavaan kirjaimeen ja toistaa saman prosessin. Toivottavasti pidät siitä;)

Koodi

#sisältää

#include #include #include const int stepsPerRevolution = 150; // Tämä on askelmoottorin muuttuja String lause = "*hei"; // Muuta tämä muuttuja kirjoittamaan erilaisia sanoja, mutta vain pienillä kirjaimilla ja aloita sanasi "*" Stepper myStepper (stepsPerRevolution, 8, 10, 9, 11); Servo myServo; // Tämä on menetelmä, joka saa robotin kirjoittamaan pisteen tyhjä piste () {Serial.println ("dot start"); myServo.write (160); viive (1000); myServo.write (90); viive (1000); myStepper.step (stepsPerRevolution); viive (1000); Serial.println ("piste valmis"); } // Tämä on menetelmä, joka saa robotin kirjoittamaan viivan void dash () {Serial.println ("dash start"); myServo.write (160); viive (1000); myStepper.step (stepsPerRevolution); viive (1000); myServo.write (90); viive (1000); myStepper.step (stepsPerRevolution); viive (1000); Serial.println ("viiva valmis"); } // Tämä on menetelmä, joka saa robotin jättämään välilyönnin jokaisen kirjaimen väliin tyhjä tila () {Serial.println ("space start"); myServo.write (90); viive (1000); myStepper.step (200); viive (1000); Serial.println ("tilaa tehty"); } // Tämä on menetelmä, joka saa robotin jättämään suuremman välilyönnin jokaisen sanan väliin void bigSpace () {myServo.write (90); myStepper.step (250); viive (1000); } void setup () {// laita asennuskoodi tähän, jotta se suoritetaan kerran: Serial.begin (9600); myStepper.setSpeed (100); myServo.attach (5); int ensimmäinen = lause.indexOf ('*'); // tämä silmukalle käy läpi jokaisen merkkijonon kirjaimen ja kutsuu sitten oikeat menetelmät kirjoittaa se (int i = 0; i <lause.pituus (); i ++) {if (lause.charAt (ensimmäinen+i) == 'a') {Serial.print (".-"); piste(); viiva (); välilyönti (); } muu jos (lause.charAt (ensimmäinen + i) == 'b') {Sarjajälki ("-…"); viiva (); piste(); piste(); piste(); välilyönti (); } muu jos (lause.charAt (ensimmäinen + i) == 'c') {Sarjajälki ("-.-."); viiva (); piste(); viiva (); piste(); välilyönti (); } muu jos (lause.charAt (ensimmäinen + i) == 'd') {Sarjajälki ("-.."); viiva (); piste(); piste(); välilyönti (); } else if (lause.charAt (ensimmäinen + i) == 'e') {Sarjajälki ("."); piste(); välilyönti (); } muu jos (lause.charAt (ensimmäinen + i) == 'f') {Sarjajälki ("..-."); piste(); piste(); viiva (); piste(); välilyönti (); } else if (lause.charAt (ensimmäinen + i) == 'g') {Sarjajälki ("-."); viiva (); viiva (); piste(); välilyönti (); } muu jos (lause.charAt (ensimmäinen + i) == 'h') {Sarjajälki ("…."); piste(); piste(); piste(); piste(); välilyönti (); } else if (lause.charAt (ensimmäinen + i) == 'i') {Sarjajälki (".."); piste(); piste(); välilyönti (); } muu jos (lause.charAt (ensimmäinen + i) == 'j') {Sarjajälki (".---"); piste(); viiva (); viiva (); viiva (); välilyönti (); } muu jos (lause.charAt (ensimmäinen + i) == 'k') {Sarjajälki ("-.-"); viiva (); piste(); viiva (); välilyönti (); } muu jos (lause.charAt (ensimmäinen + i) == 'l') {Sarjajälki (".-.."); piste(); viiva (); piste(); piste(); välilyönti (); } else if (lause.charAt (ensimmäinen + i) == 'm') {Sarjajälki ("-"); viiva (); viiva (); välilyönti (); } muu jos (lause.charAt (ensimmäinen + i) == 'n') {Sarjajälki ("-."); viiva (); piste(); välilyönti (); } muu jos (lause.charAt (ensimmäinen + i) == 'o') {Sarjajälki ("---"); viiva (); viiva (); viiva (); välilyönti (); } muu jos (lause.charAt (ensimmäinen + i) == 'p') {Sarjajälki (".--."); piste(); viiva (); viiva (); piste(); välilyönti (); } muu jos (lause.charAt (ensimmäinen + i) == 'q') {Sarjajälki ("--.-"); viiva (); viiva (); piste(); viiva (); välilyönti (); } muu jos (lause.charAt (ensimmäinen + i) == 'r') {Sarjajälki (".-."); piste(); viiva (); piste(); välilyönti (); } muu jos (lause.charAt (ensimmäinen + i) == 's') {Sarjajälki ("…"); piste(); piste(); piste(); välilyönti (); } else if (lause.charAt (ensimmäinen + i) == 't') {Sarjajälki ("-"); viiva (); välilyönti (); } muu jos (lause.charAt (ensimmäinen + i) == 'u') {Sarjajälki ("..-"); piste(); piste(); viiva (); välilyönti (); } muu jos (lause.charAt (ensimmäinen + i) == 'v') {Sarjajälki ("…-"); piste(); piste(); piste(); viiva (); välilyönti (); } muu jos (lause.charAt (ensimmäinen + i) == 'w') {Sarjajälki (".--"); piste(); viiva (); viiva (); välilyönti (); } muu jos (lause.charAt (ensimmäinen + i) == 'x') {Sarjajälki ("-..-"); viiva (); piste(); piste(); viiva (); välilyönti (); } muu jos (lause.charAt (ensimmäinen + i) == 'y') {Sarjajälki ("-.--"); viiva (); piste(); viiva (); viiva (); välilyönti (); } else if (lause.charAt (ensimmäinen + i) == 'z') {Sarjajälki ("-.."); viiva (); viiva (); piste(); piste(); välilyönti (); } muu jos (lause.charAt (ensimmäinen + i) == '') {Sarja.jälki ("/"); bigSpace (); }}} void loop () {// Älä kirjoita tähän mitään}

Vaihe 7: Vianetsintä

Pyörä ei liiku

Pyörän ja paperin välillä saattaa olla liikaa kitkaa, yritä nostaa pyörää hieman tai vaihtaa sitä.

Pyörä vetää paperia, mutta sitten se jatkaa pyörimistä vetämättä paperia

Varmista, että olet liimaillut pyörän askelmoottorin keskelle

Pisteet ja viivat yhdistetään

Tarkista, onko piste-, viiva- ja välilyöntitoiminnot kirjoitettu oikein, niiden pitäisi olla seuraavanlaisia:

// Tämä on menetelmä, joka saa robotin kirjoittamaan pisteettömän pisteen () {Serial.println ("dot start"); myServo.write (160); viive (1000); myServo.write (90); viive (1000); myStepper.step (stepsPerRevolution); viive (1000); Serial.println ("piste valmis"); }

// Tämä on menetelmä, joka saa robotin kirjoittamaan viivan

void dash () {Serial.println ("viivan alku"); myServo.write (160); viive (1000); myStepper.step (stepsPerRevolution); viive (1000); myServo.write (90); viive (1000); myStepper.step (stepsPerRevolution); viive (1000); Serial.println ("viiva valmis"); }

// Tämä on menetelmä, joka saa robotin jättämään välilyönnin jokaisen kirjaimen väliin

tyhjä tila () {Serial.println ("välilyönti"); myServo.write (90); viive (1000); myStepper.step (200); viive (1000); Serial.println ("tilaa tehty"); }

Suositeltava: