Talaan ng mga Nilalaman:

Manunulat ng Arduino Morse Code: 7 Mga Hakbang (na may Mga Larawan)
Manunulat ng Arduino Morse Code: 7 Mga Hakbang (na may Mga Larawan)

Video: Manunulat ng Arduino Morse Code: 7 Mga Hakbang (na may Mga Larawan)

Video: Manunulat ng Arduino Morse Code: 7 Mga Hakbang (na may Mga Larawan)
Video: 📚 College Classes I Took at Cornell University (Ep. 7): Senior Year Fall 2024, Hulyo
Anonim
Image
Image
Arduino Morse Code Writer
Arduino Morse Code Writer

Gumawa ako ng isang robot na maaaring i-convert ang anumang naibigay na teksto sa Morse code at pagkatapos ay isulat ito !! Ginawa ito sa karton at Lego at para sa electronics ginamit ko ang Arduino at dalawang motor lamang.

Mga gamit

Arduino Uno board Stepper motor Micro servo SG90ULN2003 stepper motor driver module Module ng power supply Breadboard4 × Jumper wires6 × Babae-to-Lalaki dupont wires9V1A AdapterUSB cable Cardboard 2 × Wooden dowels 2 × Springs Straw White paperLegoSuper glue Hot glue gun Elastic band (upang makagawa ng may hawak ng panulat) Pamutol ng Gunting

Hakbang 1: Pagbuo ng Batayan

Pagbuo ng Batayan
Pagbuo ng Batayan
Pagbuo ng Batayan
Pagbuo ng Batayan
Pagbuo ng Batayan
Pagbuo ng Batayan

Magsimula sa pamamagitan ng pagbuo ng base. Ang mina ay 4 na studs ang lapad at 20 studs ang haba, pagkatapos ng pagbuo ng isang layer na may haba na iyon, nagtayo ako ng isang lapad na boarder sa paligid nito na nag-iiwan ng isang puwang sa isang gilid upang mag-iwan ng puwang para sa stepper motor, pagkatapos ay idinagdag ko mga piraso ng tile sa gitnang bahagi kung saan naroon ang strip ng papel. Ginamit ito ng Lego na napakalakas at madaling mabago. Upang magawa ang roll ng papel, pinutol ko ang mga piraso ng A4 na papel na 1.2cm ang lapad (pinili ko ang lapad na ito dahil pareho ang lapad ng ginamit kong Lego wheel, maaari mong gawing mas malaki o mas maliit ang sa iyo depende sa iyong gulong) at idinikit ko ang kanilang mga dulo upang bumuo ng isang napakahabang strip, pagkatapos ay ibinalot ko ito sa gulong.

Hakbang 2: Ang Servo Piece

Ang Servo Piece
Ang Servo Piece
Ang Servo Piece
Ang Servo Piece
Ang Servo Piece
Ang Servo Piece

Para sa hakbang na ito kailangan mo:

  • dalawang kahoy na dowels na 4cm ang haba
  • dalawang spring na 2cm ang haba
  • isang dayami gupitin sa dalawang piraso 2cm ang haba bawat isa
  • isang 12cm ng 4cm na piraso ng karton
  • dalawang 4cm ng 1.5cm na piraso ng karton
  • isang 4cm ng 2cm na piraso ng karton

Una, idikit ang mga dowel sa isa sa 4 na 1.5 piraso, pagkatapos ay ipasok ang mga bukal at dayami sa mga dowel, pagkatapos ay idikit ang iba pang piraso ng karton sa kabilang panig upang hawakan ang lahat sa lugar.

Pangalawa, kola ang 4cm ng 2cm na piraso sa tuktok ng mga dayami.

Pangatlo, i-flip ang buong piraso at idikit ang isang maliit na dowel sa likuran nito, hindi sa gitna ngunit bahagyang sa kaliwa. (Nakalimutan kong idagdag ang maliit na dowel sa unang larawan)

Sa wakas, gupitin ang isang butas sa malaking piraso ng karton na laki ng harap ng servo motor at idikit ang motor, pagkatapos ay idikit ang piraso na ginawa lamang namin sa mga dowel sa malaking piraso upang kapag gumalaw ang servo, itulak nito ang maliit na dowel pababa kung saan ay tulak din ang mga spring down.

Natapos ko ang pagputol ng tungkol sa 3cm mula sa ilalim na bahagi ng 12cm ng 4cm na piraso at pagdikit ng dalawa pang 4cm ng 1.5cm na mga piraso dito, pagkatapos ay takpan iyon ng isang 5.5cm ng 4cm na piraso ng karton. At upang hawakan ang marker gumawa ako ng isang maliit loop ng nababanat na banda at idinikit ito sa isang maliit na piraso ng karton at pagkatapos ay idinikit ko iyon sa 4cm ng 2cm na piraso na lilipat pababa kapag nagsimula ang servo. Ang mga pagdaragdag na ito ay tumigil sa marker mula sa paglipat mula sa isang gilid patungo sa gilid kapag ang mga bukal ay bumalik.

Hakbang 3: Pagdaragdag ng Servo Motor at ang Paper Roll sa Base

Pagdaragdag ng Servo Motor at ang Paper Roll sa Base
Pagdaragdag ng Servo Motor at ang Paper Roll sa Base
Pagdaragdag ng Servo Motor at ang Paper Roll sa Base
Pagdaragdag ng Servo Motor at ang Paper Roll sa Base

Nagdagdag ako ng dalawa pang brick sa isang bahagi ng base upang suportahan ang piraso ng servo at idinikit ko ito sa lugar. Pagkatapos ay idinagdag ko ang gulong sa pinakadulo ng base.

Hakbang 4: Pagbuo ng Stepper Motor Frame

Pagbuo ng Stepper Motor Frame
Pagbuo ng Stepper Motor Frame
Pagbuo ng Stepper Motor Frame
Pagbuo ng Stepper Motor Frame
Pagbuo ng Stepper Motor Frame
Pagbuo ng Stepper Motor Frame

Ang hakbang na ito ay medyo isang hamon, dahil ang motor ay hindi ginawa upang ganap na magkasya sa Lego. Gayunpaman, nagawa ko itong gawin sa pamamagitan ng paggamit ng dalawang butas sa motor upang ma-secure ito sa lugar. Susunod, idinikit ko ang isang gulong Lego sa dulo ng motor at pagkatapos ay inilagay ko ito sa tabi mismo ng base sa gilid na naiwan kong bukas sa hakbang 1.

Hakbang 5: Pagtatapos ng Mga Touch

Mga Pagtatapos ng Mga Touch
Mga Pagtatapos ng Mga Touch
Mga Pagtatapos ng Mga Touch
Mga Pagtatapos ng Mga Touch
Mga Pagtatapos ng Mga Touch
Mga Pagtatapos ng Mga Touch
Mga Pagtatapos ng Mga Touch
Mga Pagtatapos ng Mga Touch

Nagdagdag ako ng dalawang piraso ng arko upang takpan ang gulong upang maayos ang papel sa lugar. At nagdagdag ako ng dalawang mas maliit na mga piraso ng arko isa upang hawakan ang mga wire ng stepper motor at isa pa upang hawakan ang papel. Panghuli, binago ko ang stepper motor wheel sa isang bahagyang mas malaki na gumalaw ng papel nang mas mahusay kaysa sa dating gulong.

Hakbang 6: Elektronika

Elektronika
Elektronika
Elektronika
Elektronika

Sa wakas, kailangan mong ikonekta ang mga motor sa Arduino at i-upload ang code.

Magsisimula kami sa servo motor, ikonekta ang brown wire (ang ground wire) sa GND pin, pagkatapos ang pulang wire (ang power wire) sa 5V pin, at ang orange wire (ang signal wire) sa Dig # 5 pin Susunod, ang stepper motor, ikonekta ang 1N1 sa Dig # 11, 1N2 sa Dig # 10, 1N3 sa Dig # 9, 1N4 sa Dig # 8, ang 5V sa positibong bahagi ng breadboard at ang ground pin sa negatibong bahagi ng breadboard. At huwag kalimutan na ikonekta ang module ng supply ng kuryente sa breadboard na tinitiyak na ang positibo at negatibong panig nito ay nakahanay nang tama sa mga kaukulang panig sa breadboard. Kung nakalimutan mong gawin ito, ibabalik mo ang kapangyarihan sa iyong proyekto, at ayaw mong gawin iyon.

Para sa code, nagsulat ako ng apat na pamamaraan, isa upang sumulat ng isang tuldok, isa upang sumulat ng isang dash, at dalawa upang mag-iwan ng puwang sa pagitan ng bawat titik at bawat salita. Sa ganoong paraan, maaari ko lamang tawagan ang mga pamamaraang ito kapag kailangan ko sila sa halip na isulat ito muli para sa bawat liham. Pagkatapos ay nagsulat ako ng isang para sa loop na dumadaan sa bawat titik ng teksto at isulat ito, Sa loob nito, nagsulat ako ng isang pahayag kung para sa bawat titik ngunit maaari mo itong isulat sa isang pahayag ng switch kung nais mo. Siyempre maaari kang magdagdag sa code upang paganahin ang programa na mabasa ang mga numero. Kapag handa na ang lahat ng mga kable, kopyahin lamang at i-paste ang code sa iyong IDE. Huwag kalimutang i-install ang mga aklatan ng stepper, servo, at string. Pagkatapos nito, magaling kang pumunta.

Kung paano ito gumagana

Kapag sinimulan ng Arduino ang programa ay tumitingin sa unang titik ng teksto., At depende sa kung alin ito, tinawag nito ang mga pagpapaandar na nagsusulat nito sa Morse code. Halimbawa At kung tinawag ang pagpapaandar ng dash, igagalaw ng servo ang bolpen, pagkatapos ay iikot ng stepper motor ang gulong na hinihila ang papel na gumagawa ng panulat na magsulat ng isang dash. At kung ang isa sa mga pagpapaandar sa puwang ay tinatawag na stepper motor na umiikot ngunit sa panulat up kaya hinihila nito ang papel na gumagawa ng puwang sa pagitan ng mga titik o mga salita. Kapag tapos na ito, pupunta ito sa susunod na letra at inuulit ang parehong proseso. Sana magustuhan mo;)

Ang code

# isama

#include #include #include const int stepsPerRevolution = 150; // Ito ang variable para sa stepper motor String pangungusap = "* hello"; // Baguhin ang variable na ito upang sumulat ng iba't ibang mga salita ngunit isulat lamang sa maliliit na titik at simulan ang iyong salita sa "*" Stepper myStepper (stepsPerRevolution, 8, 10, 9, 11); Servo myServo; // Ito ang pamamaraan na gumagawa ng robot na magsulat ng isang dot void dot () {Serial.println ("dot start"); myServo.write (160); pagkaantala (1000); myServo.write (90); pagkaantala (1000); myStepper.step (stepsPerRevolution); pagkaantala (1000); Serial.println ("tuldok tapos na"); } // Ito ang pamamaraan na gumagawa ng robot na magsulat ng isang dash void dash () {Serial.println ("dash start"); myServo.write (160); pagkaantala (1000); myStepper.step (stepsPerRevolution); pagkaantala (1000); myServo.write (90); pagkaantala (1000); myStepper.step (stepsPerRevolution); pagkaantala (1000); Serial.println ("dash tapos na"); } // Ito ang pamamaraan na nag-iiwan ng robot ng puwang sa pagitan ng bawat titik na walang bisa () {Serial.println ("space start"); myServo.write (90); pagkaantala (1000); myStepper.step (200); pagkaantala (1000); Serial.println ("space tapos"); } // Ito ang pamamaraan na nag-iiwan ng robot ng mas malaking puwang sa pagitan ng bawat salitang walang bisa ng bigSpace () {myServo.write (90); myStepper.step (250); pagkaantala (1000); } void setup () {// ilagay ang iyong code sa pag-setup dito, upang tumakbo nang isang beses: Serial.begin (9600); myStepper.setSpeed (100); myServo.attach (5); int first = pangungusap.indexOf ('*'); // ito para sa loop ay dumaan sa bawat titik ng string at pagkatapos ay tatawag ng mga tamang pamamaraan upang isulat ito para sa (int i = 0; i <pangungusap.length (); i ++) {kung (pangungusap.charAt (una + i) == 'a') {Serial.print (".-"); tuldok (); dash (); space(); } iba pa kung (pangungusap.charAt (una + i) == 'b') {Serial.print ("-…"); dash (); tuldok (); tuldok (); tuldok (); space(); } iba pa kung (pangungusap.charAt (una + i) == 'c') {Serial.print ("-.-."); dash (); tuldok (); dash (); tuldok (); space(); } iba pa kung (pangungusap.charAt (una + i) == 'd') {Serial.print ("-.."); dash (); tuldok (); tuldok (); space(); } iba pa kung (pangungusap.charAt (una + i) == 'e') {Serial.print ("."); tuldok (); space(); } iba pa kung (pangungusap.charAt (una + i) == 'f') {Serial.print ("..-."); tuldok (); tuldok (); dash (); tuldok (); space(); } iba pa kung (pangungusap.charAt (una + i) == 'g') {Serial.print ("-."); dash (); dash (); tuldok (); space(); } iba pa kung (pangungusap.charAt (una + i) == 'h') {Serial.print ("…."); tuldok (); tuldok (); tuldok (); tuldok (); space(); } iba pa kung (pangungusap.charAt (una + i) == 'i') {Serial.print (".."); tuldok (); tuldok (); space(); } iba pa kung (pangungusap.charAt (una + i) == 'j') {Serial.print (".---"); tuldok (); dash (); dash (); dash (); space(); } iba pa kung (pangungusap.charAt (una + i) == 'k') {Serial.print ("-.-"); dash (); tuldok (); dash (); space(); } iba pa kung (pangungusap.charAt (una + i) == 'l') {Serial.print (".-.."); tuldok (); dash (); tuldok (); tuldok (); space(); } iba pa kung (pangungusap.charAt (una + i) == 'm') {Serial.print ("-"); dash (); dash (); space(); } iba pa kung (pangungusap.charAt (una + i) == 'n') {Serial.print ("-."); dash (); tuldok (); space(); } iba pa kung (pangungusap.charAt (una + i) == 'o') {Serial.print ("---"); dash (); dash (); dash (); space(); } iba pa kung (pangungusap.charAt (una + i) == 'p') {Serial.print (".--."); tuldok (); dash (); dash (); tuldok (); space(); } iba pa kung (pangungusap.charAt (una + i) == 'q') {Serial.print ("--.-"); dash (); dash (); tuldok (); dash (); space(); } iba pa kung (pangungusap.charAt (una + i) == 'r') {Serial.print (".-."); tuldok (); dash (); tuldok (); space(); } iba pa kung (pangungusap.charAt (una + i) == 's') {Serial.print ("…"); tuldok (); tuldok (); tuldok (); space(); } iba pa kung (pangungusap.charAt (una + i) == 't') {Serial.print ("-"); dash (); space(); } iba pa kung (pangungusap.charAt (una + i) == 'u') {Serial.print ("..-"); tuldok (); tuldok (); dash (); space(); } iba pa kung (pangungusap.charAt (una + i) == 'v') {Serial.print ("… -"); tuldok (); tuldok (); tuldok (); dash (); space(); } iba pa kung (pangungusap.charAt (una + i) == 'w') {Serial.print (".--"); tuldok (); dash (); dash (); space(); } iba pa kung (pangungusap.charAt (una + i) == 'x') {Serial.print ("-..-"); dash (); tuldok (); tuldok (); dash (); space(); } iba pa kung (pangungusap.charAt (una + i) == 'y') {Serial.print ("-.--"); dash (); tuldok (); dash (); dash (); space(); } iba pa kung (pangungusap.charAt (una + i) == 'z') {Serial.print ("-.."); dash (); dash (); tuldok (); tuldok (); space(); } iba pa kung (pangungusap.charAt (una + i) == '') {Serial.print ("/"); bigSpace (); }}} void loop () {// Huwag magsulat ng anuman dito}

Hakbang 7: Pag-troubleshoot

Hindi gumagalaw ang gulong

Maaaring mayroong labis na alitan sa pagitan ng gulong at papel, subukang itaas ang gulong ng kaunti o palitan ito.

Hinihila ng gulong ang papel ngunit patuloy itong umiikot nang hindi hinihila ang papel

Tiyaking nakadikit ka ng gulong sa gitna ng stepper motor

Ang mga tuldok at gitling ay konektado

Suriin kung tama ang pagkakasulat ng tuldok, dash at puwang, dapat ganito ang mga ito:

// Ito ang pamamaraan na gumagawa ng robot na magsulat ng isang dotvoid dot () {Serial.println ("dot start"); myServo.write (160); pagkaantala (1000); myServo.write (90); pagkaantala (1000); myStepper.step (stepsPerRevolution); pagkaantala (1000); Serial.println ("tuldok tapos na"); }

// Ito ang pamamaraan na gumagawa ng robot na sumulat ng isang dash

void dash () {Serial.println ("dash start"); myServo.write (160); pagkaantala (1000); myStepper.step (stepsPerRevolution); pagkaantala (1000); myServo.write (90); pagkaantala (1000); myStepper.step (stepsPerRevolution); pagkaantala (1000); Serial.println ("dash tapos na"); }

// Ito ang pamamaraan na nag-iiwan ng robot ng puwang sa pagitan ng bawat titik

void space () {Serial.println ("space start"); myServo.write (90); pagkaantala (1000); myStepper.step (200); pagkaantala (1000); Serial.println ("space tapos"); }

Inirerekumendang: