Orodha ya maudhui:

Mwandishi wa Msimbo wa Mordu wa Arduino: Hatua 7 (na Picha)
Mwandishi wa Msimbo wa Mordu wa Arduino: Hatua 7 (na Picha)

Video: Mwandishi wa Msimbo wa Mordu wa Arduino: Hatua 7 (na Picha)

Video: Mwandishi wa Msimbo wa Mordu wa Arduino: Hatua 7 (na Picha)
Video: uWebPodcast #39 — Node.js + io.js и HTML6 2024, Julai
Anonim
Image
Image
Mwandishi wa Msimbo wa Arduino Morse
Mwandishi wa Msimbo wa Arduino Morse

Nilitengeneza roboti ambayo inaweza kubadilisha maandishi yoyote kuwa Morse code na kisha kuiandika !! Imetengenezwa kwa kadibodi na Lego na kwa elektroniki nilitumia Arduino na motors mbili tu.

Vifaa

Arduino Uno bodi Stepper motor Micro servo SG90ULN2003 stepper motor driver moduli moduli ya kusambaza umeme Breadboard 4 × Jumper waya 6 × Kike-kwa-kiume dupont waya9V1A AdapterUSB Kadi ya Kadi 2 x Dowel za mbao 2 × Chemchem Nyasi Nyeupe karatasiLegoSuper gundi Moto gundi bunduki Elastic band (kutengeneza mwenye kalamu) Mkataji wa mkasi

Hatua ya 1: Kujenga Base

Kujenga Msingi
Kujenga Msingi
Kujenga Msingi
Kujenga Msingi
Kujenga Msingi
Kujenga Msingi

Anza kwa kujenga msingi. Migodi ina studio 4 kwa upana na studs 20 kwa urefu, baada ya kujenga safu moja na urefu huo, niliunda bodi moja pana ya kuzunguka ikiacha pengo upande mmoja kuacha nafasi ya motor stepper, kisha nikaongeza vipande vya tile kwenye sehemu ya kati ambapo ukanda wa karatasi utakuwa. Kutumia Lego kulifanya iwe ngumu na rahisi kurekebisha. Ili kutengeneza roll ya karatasi, nilikata vipande vya karatasi ya A4 1.2cm kwa upana (nilichagua upana huu kwa sababu ni upana sawa na gurudumu la Lego nililotumia, unaweza kuifanya yako iwe kubwa au ndogo kulingana na gurudumu lako) na nikaunganisha ncha zao pamoja kuunda ukanda mmoja mrefu sana, kisha nikaifunga kwenye gurudumu.

Hatua ya 2: Kipande cha Servo

Kipande cha Servo
Kipande cha Servo
Kipande cha Servo
Kipande cha Servo
Kipande cha Servo
Kipande cha Servo

Kwa hatua hii unahitaji:

  • dowels mbili za mbao urefu wa 4cm
  • chemchemi mbili urefu wa 2cm
  • majani moja hukatwa vipande viwili urefu wa 2cm kila moja
  • kipande cha kadibodi 12cm kwa 4cm
  • vipande viwili vya 4cm na 1.5cm ya kadibodi
  • kipande kimoja cha 4cm na 2cm ya kadibodi

Kwanza, gundisha dowels kwa moja ya vipande 4 kwa 1.5, kisha ingiza chemchemi na majani kwenye viti, kisha gundi kipande kingine cha kadibodi upande wa pili kushikilia kila mahali.

Pili, gundi kipande cha 4cm na 2cm juu ya majani.

Tatu, pindua kipande chote juu na gundisha kidole kidogo nyuma yake, sio katikati lakini kidogo kushoto. (Nimesahau kuongeza doa ndogo kwenye picha ya kwanza)

Mwishowe, kata shimo kwenye kipande kikubwa cha kadibodi saizi ya mbele ya servo motor na gundi motor ndani, kisha gundi kipande ambacho tumetengeneza tu na dowels kwenye kipande kikubwa ili wakati servo inasonga, inasukuma dowel ndogo chini ambayo inasukuma chemchemi chini pia.

Niliishia kukata karibu 3cm kutoka sehemu ya chini ya kipenyo cha 12cm na 4cm na kushikamana na vipande vingine 4cm kwa vipande 1.5cm, kisha kuifunika kwa kipande cha kadibodi 5.5cm na 4cm. kitanzi cha bendi ya kunyooka na kuiweka kwenye kipande kidogo cha kadibodi kisha nikaiunganisha kwenye kipande cha 4cm kwa 2cm ambayo itashuka chini wakati servo inapoanza. Nyongeza hizi zilisimamisha alama kutoka kwa kuhama kutoka upande hadi upande chemchemi zinaporudi.

Hatua ya 3: Kuongeza Servo Motor na Roll ya Karatasi kwa Msingi

Kuongeza Servo Motor na Roll ya Karatasi kwa Msingi
Kuongeza Servo Motor na Roll ya Karatasi kwa Msingi
Kuongeza Servo Motor na Roll ya Karatasi kwa Msingi
Kuongeza Servo Motor na Roll ya Karatasi kwa Msingi

Niliongeza matofali mengine mawili kwa upande mmoja wa msingi ili kuunga mkono kipande cha servo na nikakiunganisha mahali hapo. Kisha nikaongeza gurudumu hadi mwisho wa msingi.

Hatua ya 4: Kuunda Fremu ya Magari ya Stepper

Kuunda Fremu ya Magari ya Stepper
Kuunda Fremu ya Magari ya Stepper
Kuunda Fremu ya Magari ya Stepper
Kuunda Fremu ya Magari ya Stepper
Kuunda Fremu ya Magari ya Stepper
Kuunda Fremu ya Magari ya Stepper

Hatua hii ilikuwa changamoto kidogo, kwa sababu motor haikutengenezwa kutoshea Lego kikamilifu. Walakini, niliweza kuifanya kwa kutumia mashimo mawili kwenye gari ili kuiweka mahali pake. Ifuatayo, niliunganisha gurudumu la Lego kwenye ncha ya gari kisha nikaiweka karibu kabisa na msingi upande ambao niliacha wazi katika hatua ya 1.

Hatua ya 5: Kumaliza Kugusa

Kumaliza Kugusa
Kumaliza Kugusa
Kumaliza Kugusa
Kumaliza Kugusa
Kumaliza Kugusa
Kumaliza Kugusa
Kumaliza Kugusa
Kumaliza Kugusa

Niliongeza vipande viwili vya arc kufunika gurudumu kurekebisha karatasi mahali pake. Nami nikaongeza vipande viwili vidogo vya arc moja kushikilia waya za motor stepper na nyingine kushikilia karatasi. Mwishowe, nilibadilisha gurudumu la mwendo wa kasi kuwa kubwa kidogo ambalo lilisogeza karatasi vizuri kuliko gurudumu la zamani.

Hatua ya 6: Elektroniki

Umeme
Umeme
Umeme
Umeme

Mwishowe, lazima uunganishe motors na Arduino na upakie nambari.

Tutaanza na servo motor, unganisha waya wa kahawia (waya wa chini) kwenye pini ya GND, halafu waya mwekundu (waya wa nguvu) kwenye pini ya 5V, na waya wa rangi ya machungwa (waya wa ishara) kwenye Chimba # 5 pini. Ifuatayo, motor ya stepper, unganisha 1N1 ili Uchimbe # 11, 1N2 ili Uchimbe # 10, 1N3 kuchimba # 9, 1N4 ili Uchimbe # 8, 5V kwa upande mzuri wa ubao wa mkate na pini ya ardhi upande mbaya wa ubao wa mkate. Na usisahau kuunganisha moduli ya usambazaji wa umeme kwenye ubao wa mkate kuhakikisha kuwa pande zake chanya na hasi zinalingana sawa na pande zinazofanana kwenye ubao wa mkate. Ukisahau kufanya hivyo, utarudisha nguvu kwa mradi wako, na hautaki kufanya hivyo.

Kwa nambari, niliandika njia nne, moja kuandika nukta, moja kuandika dashi, na mbili kuacha nafasi kati ya kila herufi na kila neno. Kwa njia hiyo, ninaweza kupiga njia hizi wakati ninazihitaji badala ya kuiandika tena kwa kila herufi. Kisha nikaandika kitanzi kinachopitia kila herufi ya maandishi na kuiandika, Ndani yake, niliandika taarifa ikiwa kwa kila herufi lakini unaweza kuiandika kwa taarifa ya kubadili ukipenda. Kwa kweli unaweza kuongeza kwenye nambari ili kuwezesha programu kusoma nambari. Wakati wiring yote iko tayari, nakala tu na ubandike nambari kwenye IDE yako. Usisahau kufunga stepper, servo, na maktaba ya kamba. Baada ya hapo, uko vizuri kwenda.

Inavyofanya kazi

Wakati Arduino inapoanza programu inaangalia herufi ya kwanza ya maandishi., Na kulingana na ni ipi, inaita kazi zinazoiandika kwa msimbo wa Morse. Kwa mfano, wakati kazi ya nukta inaitwa, servo motor imewekwa hadi 160 ambayo inasonga kalamu chini, kisha imerudishwa nyuma hadi 90 ambayo inaruhusu chemchem kurudi kurudi kusonga kalamu nao. Na ikiwa kazi ya dash inaitwa, servo inasonga kalamu chini, basi motor ya kukanyaga huzungusha gurudumu ambalo huvuta karatasi inayofanya kalamu iandike dash. Na ikiwa moja ya kazi za nafasi huitwa stepper motor inazunguka lakini kwa kalamu juu kwa hivyo inavuta karatasi kutengeneza nafasi kati ya herufi au maneno. Inapomalizika, huenda kwa barua inayofuata na kurudia mchakato huo huo. Natumai unaipenda;)

Nambari

# pamoja

# pamoja na # pamoja na # pamoja na hatua za intProRevolution = 150; // Hii ni tofauti kwa stepper motor String sentence = "* hello"; // Badilisha mabadiliko haya kuandika maneno tofauti lakini andika tu kwa herufi ndogo na anza neno lako na "*" Stepper myStepper (stepPerRevolution, 8, 10, 9, 11); Servo myServo; // Hii ndiyo njia inayofanya roboti iandike nukta batili dot () {Serial.println ("dot start"); andika (160); kuchelewesha (1000); andika (90); kuchelewesha (1000); myStepper.step (hatuaPerRevolution); kuchelewesha (1000); Serial.println ("dot done"); } // Hii ndiyo njia inayomfanya roboti aandike dashi tupu () {Serial.println ("dash start"); andika (160); kuchelewesha (1000); myStepper.step (hatuaPerRevolution); kuchelewesha (1000); andika (90); kuchelewesha (1000); myStepper.step (hatuaPerRevolution); kuchelewesha (1000); Serial.println ("kumaliza kumaliza"); } // Hii ndiyo njia inayofanya roboti iachie nafasi kati ya kila herufi batili nafasi () {Serial.println ("nafasi ya kuanza"); andika (90); kuchelewesha (1000); hatua yangu (200); kuchelewesha (1000); Serial.println ("nafasi imefanywa"); } // Hii ndiyo njia inayofanya roboti iachie nafasi kubwa kati ya kila neno batili kubwaSpace () {myServo.write (90); hatua yangu (250); kuchelewesha (1000); } usanidi batili () {// weka msimbo wako wa kusanidi hapa, ili uendeshe mara moja: Serial.begin (9600); kasi ya myStepper.setSpeed (100); ambatisha myServo (5); int kwanza = sentensi.indexOf ('*'); // hii kwa kitanzi hupitia kila herufi ya kamba kisha inaita njia sahihi za kuiandikia (int i = 0; i <sentensi. urefu (); i ++) {ikiwa (sentensi.charAt (kwanza + i) == 'a') {Serial.print (".-"); nukta (); dash (); nafasi (); } vingine ikiwa (sentensi.charAt (kwanza + i) == 'b') {Serial.print ("-…"); dash (); nukta (); nukta (); nukta (); nafasi (); } vingine ikiwa (sentensi.charAt (kwanza + i) == 'c') {Serial.print ("-.-."); dash (); nukta (); dash (); nukta (); nafasi (); } vingine ikiwa (sentensi.charAt (kwanza + i) == 'd') {Serial.print ("-.."); dash (); nukta (); nukta (); nafasi (); } vingine ikiwa (sentensi.charAt (kwanza + i) == 'e') {Serial.print ("."); nukta (); nafasi (); } vingine ikiwa (sentensi.charAt (kwanza + i) == 'f') {Serial.print ("..-."); nukta (); nukta (); dash (); nukta (); nafasi (); } vingine ikiwa (sentensi.charAt (kwanza + i) == 'g') {Serial.print ("-."); dash (); dash (); nukta (); nafasi (); } vingine ikiwa (sentensi.charAt (kwanza + i) == 'h') {Serial.print ("…."); nukta (); nukta (); nukta (); nukta (); nafasi (); } vingine ikiwa (sentensi.charAt (kwanza + i) == 'i') {Serial.print (".."); nukta (); nukta (); nafasi (); } vingine ikiwa (sentensi.charAt (kwanza + i) == 'j') {Serial.print (".---"); nukta (); dash (); dash (); dash (); nafasi (); } vingine ikiwa (sentensi.charAt (kwanza + i) == 'k') {Serial.print ("-.-"); dash (); nukta (); dash (); nafasi (); } vingine ikiwa (sentensi.charAt (kwanza + i) == 'l') {Serial.print (".-.."); nukta (); dash (); nukta (); nukta (); nafasi (); } mwingine ikiwa (sentensi.charAt (kwanza + i) == 'm') {Serial.print ("-"); dash (); dash (); nafasi (); } vingine ikiwa (sentensi.charAt (kwanza + i) == 'n') {Serial.print ("-."); dash (); nukta (); nafasi (); } vingine ikiwa (sentensi.charAt (kwanza + i) == 'o') {Serial.print ("---"); dash (); dash (); dash (); nafasi (); } vingine ikiwa (sentensi.charAt (kwanza + i) == 'p') {Serial.print ("-."); nukta (); dash (); dash (); nukta (); nafasi (); } vingine ikiwa (sentensi.charAt (kwanza + i) == 'q') {Serial.print ("--.-"); dash (); dash (); nukta (); dash (); nafasi (); } vingine ikiwa (sentensi.charAt (kwanza + i) == 'r') {Serial.print (".-."); nukta (); dash (); nukta (); nafasi (); } vingine ikiwa (sentensi.charAt (kwanza + i) == 's') {Serial.print ("…"); nukta (); nukta (); nukta (); nafasi (); } vingine ikiwa (sentensi.charAt (kwanza + i) == 't') {Serial.print ("-"); dash (); nafasi (); } vingine ikiwa (sentensi.charAt (kwanza + i) == 'u') {Serial.print ("..-"); nukta (); nukta (); dash (); nafasi (); } vingine ikiwa (sentensi.charAt (kwanza + i) == 'v') {Serial.print ("… -"); nukta (); nukta (); nukta (); dash (); nafasi (); } vingine ikiwa (sentensi.charAt (kwanza + i) == 'w') {Serial.print ("-"); nukta (); dash (); dash (); nafasi (); } vingine ikiwa (sentensi.charAt (kwanza + i) == 'x') {Serial.print ("-..-"); dash (); nukta (); nukta (); dash (); nafasi (); } vingine ikiwa (sentensi.charAt (kwanza + i) == 'y') {Serial.print ("-.--"); dash (); nukta (); dash (); dash (); nafasi (); } vingine ikiwa (sentensi.charAt (kwanza + i) == 'z') {Serial.print ("-.."); dash (); dash (); nukta (); nukta (); nafasi (); } mwingine ikiwa (sentensi.charAt (kwanza + i) == '') {Serial.print ("/"); nafasi kubwa (); }}}} kitanzi batili () {// Usiandike chochote hapa}

Hatua ya 7: Utatuzi wa matatizo

Gurudumu halitembei

Kunaweza kuwa na msuguano mwingi kati ya gurudumu na karatasi, jaribu kuinua gurudumu kidogo au kuibadilisha.

Gurudumu huvuta karatasi lakini kisha inaendelea kuzunguka bila kuvuta karatasi

Hakikisha umeunganisha gurudumu katikati ya motor stepper

Dots na dashes zimeunganishwa

Angalia ikiwa nukta, dashi na nafasi za nafasi zimeandikwa kwa usahihi, zinapaswa kuwa kama hii:

// Hii ndiyo njia inayomfanya roboti aandike dotvoid dot () {Serial.println ("dot start"); andika (160); kuchelewesha (1000); andika (90); kuchelewesha (1000); myStepper.step (hatuaPerRevolution); kuchelewesha (1000); Serial.println ("dot done"); }

// Hii ndio njia inayomfanya roboti aandike dash

dash batili () {Serial.println ("dash start"); andika (160); kuchelewesha (1000); myStepper.step (hatuaPerRevolution); kuchelewesha (1000); andika (90); kuchelewesha (1000); myStepper.step (hatuaPerRevolution); kuchelewesha (1000); Serial.println ("kumaliza kumaliza"); }

// Hii ndiyo njia inayofanya roboti iachie nafasi kati ya kila herufi

nafasi tupu () {Serial.println ("nafasi ya kuanza"); andika (90); kuchelewesha (1000); hatua yangu (200); kuchelewesha (1000); Serial.println ("nafasi imefanywa"); }

Ilipendekeza: