Satura rādītājs:

Arduino Morzes koda autors: 7 soļi (ar attēliem)
Arduino Morzes koda autors: 7 soļi (ar attēliem)

Video: Arduino Morzes koda autors: 7 soļi (ar attēliem)

Video: Arduino Morzes koda autors: 7 soļi (ar attēliem)
Video: 35 видео со страшными призраками: мегасборник 2023 года [V1] 2024, Novembris
Anonim
Image
Image
Arduino Morzes kodu rakstnieks
Arduino Morzes kodu rakstnieks

Es izveidoju robotu, kas var pārvērst jebkuru tekstu Morzes kodā un pēc tam pierakstīt !! Tas ir izgatavots no kartona un Lego, un elektronikai es izmantoju Arduino un tikai divus motorus.

Piegādes

Arduino Uno dēlis Pakāpju motors Mikroservo SG90ULN2003 pakāpju motora draivera modulis Strāvas padeves modulis Maizes dēlis 4 × Jumper vadi 6 × Dupont vadi no sievietes līdz 9 V1A adapteris USB kabelis Kartons 2 × Koka dībeļi 2 × Atsperes Salmi Balts papīrs LegoSuper līme Karsta līmes pistole Elastīga josla (lai izveidotu pildspalvas turētājs) Šķēru griezējs

1. solis: bāzes izveide

Bāzes celtniecība
Bāzes celtniecība
Bāzes celtniecība
Bāzes celtniecība
Bāzes celtniecība
Bāzes celtniecība

Sāciet, veidojot pamatni. Raktuves ir 4 tapas platas un 20 tapas garas, pēc viena slāņa uzbūvēšanas ar šiem garumiem es izveidoju vienu radzi platu apmali ap to, atstājot atstarpi vienā pusē, lai atstātu vietu soļu motoram, tad es pievienoju flīžu gabalus līdz vidējai daļai, kur būs papīra sloksne. Izmantojot Lego, tas kļuva ļoti izturīgs un viegli modificējams. Lai izveidotu papīra rullīti, es izgriezu 1,2 cm platas A4 papīra sloksnes (es izvēlējos šo platumu, jo tas ir tāds pats platums kā manam Lego ritenim, atkarībā no jūsu riteņa jūs varat padarīt to lielāku vai mazāku), un es salīmēju to galus kopā lai izveidotu vienu ļoti garu sloksni, tad es to aptinu ap riteni.

2. solis: Servo gabals

Servo gabals
Servo gabals
Servo gabals
Servo gabals
Servo gabals
Servo gabals

Šim solim jums ir nepieciešams:

  • divi koka dībeļi 4 cm gari
  • divas atsperes 2 cm garas
  • vienu salmiņu sagriež divos gabalos, kuru garums ir 2 cm
  • viens 12x4 cm liels kartona gabals
  • divi kartona gabali no 4 cm līdz 1,5 cm
  • viens 4x2 cm liels kartona gabals

Vispirms pielīmējiet dībeļus pie viena no 4 x 1,5 gabaliem, pēc tam ievietojiet atsperes un salmiņus tapās, pēc tam pielīmējiet otru kartona gabalu otrā pusē, lai viss noturētos vietā.

Otrkārt, salmiņu virspusē pielīmējiet 4 x 2 cm gabalu.

Treškārt, apgrieziet visu gabalu un pielīmējiet nelielu dībeli tā aizmugurē, nevis vidū, bet nedaudz pa kreisi. (Es aizmirsu pievienot mazo dībeli pirmajā attēlā)

Visbeidzot, lielajā kartona gabalā izgrieziet servomotora priekšpuses izmēra caurumu un pielīmējiet motoru, tad pielīmējiet gabalu, ko tikko izgatavojām ar tapām, pie lielā gabala, lai servo kustoties tas spiestu mazs dībelis uz leju, kas savukārt nospiež arī atsperes.

Es galu galā nogriezu apmēram 3 cm no 12 cm līdz 4 cm gabala apakšējās daļas un pielīmēju vēl divus 4 cm x 1, 5 cm gabalus, pēc tam pārklājot to ar 5, 5 x 4 cm kartona gabalu. Un, lai turētu marķieri, es izveidoju nelielu elastīgās joslas cilpiņu un pielīmēju pie neliela kartona gabala, tad pielīmēju to pie 4 cm līdz 2 cm gabala, kas kustēsies lejup, kad servo ieslēgsies. Šie papildinājumi pārtrauca marķiera pārvietošanos no vienas puses uz otru, kad atsperes atgriežas augšup.

3. solis: Servo motora un papīra ruļļa pievienošana pamatnei

Servo motora un papīra ruļļa pievienošana pamatnei
Servo motora un papīra ruļļa pievienošana pamatnei
Servo motora un papīra ruļļa pievienošana pamatnei
Servo motora un papīra ruļļa pievienošana pamatnei

Es pievienoju vēl divus ķieģeļus vienai pamatnes pusei, lai atbalstītu servo gabalu, un es to pielīmēju vietā. Tad es pievienoju riteni pamatnes tālākajā galā.

4. solis: pakāpiena motora rāmja izveide

Pakāpju motora rāmja veidošana
Pakāpju motora rāmja veidošana
Pakāpju motora rāmja veidošana
Pakāpju motora rāmja veidošana
Pakāpju motora rāmja veidošana
Pakāpju motora rāmja veidošana

Šis solis bija neliels izaicinājums, jo motors nebija izgatavots tā, lai tas būtu perfekti piemērots Lego. Tomēr man izdevās to izdarīt, izmantojot divus motora caurumus, lai to nostiprinātu vietā. Tālāk es pielīmēju Lego riteni pie motora gala un tad noliku to tieši pie pamatnes tajā pusē, kuru atstāju atvērtu 1. darbībā.

5. solis: apdares darbi

Apdares darbi
Apdares darbi
Apdares darbi
Apdares darbi
Apdares darbi
Apdares darbi
Apdares darbi
Apdares darbi

Es pievienoju divus loka gabalus, lai pārklātu riteni, lai nostiprinātu papīru vietā. Un es pievienoju divus mazākus loka gabalus, vienu, lai turētu pakāpiena motora vadus, un otru, lai turētu papīru. Visbeidzot, es nomainīju soļu motora riteni uz nedaudz lielāku, kas pārvietoja papīru labāk nekā vecais ritenis.

6. darbība: elektronika

Elektronika
Elektronika
Elektronika
Elektronika

Visbeidzot, jums ir jāpievieno motori Arduino un augšupielādējiet kodu.

Mēs sāksim ar servomotoru, savienojiet brūno vadu (zemējuma vadu) ar GND tapu, pēc tam sarkano vadu (barošanas vadu) ar 5 V tapu un oranžo vadu (signāla vadu) ar Dig #5 pin. Tālāk, soļu motors, savienojiet 1N1 ar Dig #11, 1N2 ar Dig #10, 1N3 ar Dig #9, 1N4 līdz Dig #8, 5V ar rīvdēļa pozitīvo pusi un zemējuma tapu pie negatīvās puses maizes dēlis. Un neaizmirstiet pieslēgt barošanas moduli pie maizes dēļa, pārliecinoties, ka tā pozitīvās un negatīvās puses pareizi sakrīt ar atbilstošajām maizes dēļa malām. Ja esat aizmirsis to darīt, jūs mainīsit savu projektu, un jūs nevēlaties to darīt.

Attiecībā uz kodu es uzrakstīju četras metodes: vienu, lai rakstītu punktu, vienu - domuzīmi, un divas, lai atstātu atstarpi starp katru burtu un katru vārdu. Tādā veidā es varu vienkārši izsaukt šīs metodes, kad man tās ir vajadzīgas, nevis rakstīt vēlreiz katrai vēstulei. Pēc tam es uzrakstīju for for loop, kas iet cauri katram teksta burtam un to uzraksta. Inside it, es uzrakstīju if paziņojumu par katru burtu, bet, ja vēlaties, varat to ierakstīt komutācijas paziņojumā. Protams, jūs varat pievienot kodu, lai programma varētu lasīt ciparus. Kad visa elektroinstalācija ir gatava, vienkārši nokopējiet un ielīmējiet kodu savā IDE. Neaizmirstiet instalēt stepper, servo un stīgu bibliotēkas. Pēc tam jums ir labi iet.

Kā tas strādā

Kad Arduino sāk darboties, programma aplūko teksta pirmo burtu un atkarībā no tā, kura tā ir, tā izsauc funkcijas, kas to raksta Morzes kodā. Piemēram, ja tiek izsaukta punktu funkcija, servomotors ir iestatīts uz 160, kas pārvieto pildspalvu uz leju, tad tas tiek iestatīts atpakaļ uz 90, kas ļauj atsperēm atgriezties augšup, pārvietojot pildspalvu kopā ar tām. Un, ja tiek izsaukta domuzīme, servo pārceļ pildspalvu uz leju, tad pakāpiena motors rotē riteni, kas velk papīru, liekot pildspalvai rakstīt domuzīmi. Un, ja vienu no atstarpes funkcijām sauc par pakāpju motoru, tas griežas, bet ar pildspalvu uz augšu tā velk papīru, atstājot atstarpi starp burtiem vai vārdiem. Kad tas ir izdarīts, tas pāriet uz nākamo burtu un atkārto to pašu procesu. Es ceru, ka jums patīk;)

Kods

#iekļaut

#include #include #include const int stepsPerRevolution = 150; // Šis ir soļu motora mainīgais String teikums = "*sveiki"; // Mainiet šo mainīgo, lai rakstītu dažādus vārdus, bet rakstiet tikai ar mazajiem burtiem un sāciet vārdu ar "*" Stepper myStepper (stepsPerRevolution, 8, 10, 9, 11); Servo myServo; // Šī ir metode, kas liek robotam rakstīt dot void dot () {Serial.println ("dot start"); myServo.write (160); kavēšanās (1000); myServo.write (90); kavēšanās (1000); myStepper.step (stepsPerRevolution); kavēšanās (1000); Serial.println ("punkts darīts"); } // Šī ir metode, kas liek robotam rakstīt domuzīmi void dash () {Serial.println ("domuzīme sākums"); myServo.write (160); kavēšanās (1000); myStepper.step (stepsPerRevolution); kavēšanās (1000); myServo.write (90); kavēšanās (1000); myStepper.step (stepsPerRevolution); kavēšanās (1000); Serial.println ("domuzīme izdarīta"); } // Šī ir metode, kas liek robotam atstāt atstarpi starp katru burtu tukšu atstarpi () {Serial.println ("space start"); myServo.write (90); kavēšanās (1000); myStepper.step (200); kavēšanās (1000); Serial.println ("vieta pabeigta"); } // Šī ir metode, kas liek robotam atstāt lielāku atstarpi starp katru vārdu void bigSpace () {myServo.write (90); myStepper.step (250); kavēšanās (1000); } void setup () {// ievietojiet šeit savu iestatīšanas kodu, lai palaistu vienu reizi: Serial.begin (9600); myStepper.setSpeed (100); myServo.attach (5); int pirmais = teikums.indexOf ('*'); // šī cilpa iet caur katru virknes burtu un pēc tam izsauc pareizās metodes, lai to pierakstītu (int i = 0; i <teikums.garums (); i ++) {if (teikums.charAt (pirmais+i) == 'a') {Serial.print (".-"); punkts (); domuzīme (); atstarpe (); } cits if (teikums.charAt (pirmais + i) == 'b') {Sērijas nospiedums ("-…"); domuzīme (); punkts (); punkts (); punkts (); atstarpe (); } cits if (teikums.charAt (pirmais + i) == 'c') {Sērijas nospiedums ("-.-."); domuzīme (); punkts (); domuzīme (); punkts (); atstarpe (); } cits if (teikums.charAt (pirmais + i) == 'd') {Sērijas nospiedums ("-.."); domuzīme (); punkts (); punkts (); atstarpe (); } cits if (teikums.charAt (pirmais + i) == 'e') {Sērijas nospiedums ("."); punkts (); atstarpe (); } cits if (teikums.charAt (pirmais + i) == 'f') {Sērijas nospiedums ("..-."); punkts (); punkts (); domuzīme (); punkts (); atstarpe (); } cits if (teikums.charAt (pirmais + i) == 'g') {Sērijas nospiedums ("-."); domuzīme (); domuzīme (); punkts (); atstarpe (); } cits if (teikums.charAt (pirmais + i) == 'h') {Sērijas nospiedums ("…."); punkts (); punkts (); punkts (); punkts (); atstarpe (); } cits if (teikums.charAt (pirmais + i) == 'i') {Sērijas nospiedums (".."); punkts (); punkts (); atstarpe (); } cits if (teikums.charAt (pirmais + i) == 'j') {Sērijas nospiedums (".---"); punkts (); domuzīme (); domuzīme (); domuzīme (); atstarpe (); } cits if (teikums.charAt (pirmais + i) == 'k') {Sērijas nospiedums ("-.-"); domuzīme (); punkts (); domuzīme (); atstarpe (); } cits if (teikums.charAt (pirmais + i) == 'l') {Sērijas nospiedums (".-.."); punkts (); domuzīme (); punkts (); punkts (); atstarpe (); } cits if (teikums.charAt (pirmais + i) == 'm') {Serial.print ("-"); domuzīme (); domuzīme (); atstarpe (); } cits if (teikums.charAt (pirmais + i) == 'n') {Sērijas nospiedums ("-."); domuzīme (); punkts (); atstarpe (); } cits if (teikums.charAt (pirmais + i) == 'o') {Sērijas nospiedums ("---"); domuzīme (); domuzīme (); domuzīme (); atstarpe (); } cits if (teikums.charAt (pirmais + i) == 'p') {Sērijas nospiedums (".--."); punkts (); domuzīme (); domuzīme (); punkts (); atstarpe (); } cits if (teikums.charAt (pirmais + i) == 'q') {Sērijas nospiedums ("--.-"); domuzīme (); domuzīme (); punkts (); domuzīme (); atstarpe (); } cits if (teikums.charAt (pirmais + i) == 'r') {Sērijas nospiedums (".-."); punkts (); domuzīme (); punkts (); atstarpe (); } cits if (teikums.charAt (pirmais + i) == 's') {Serial.print ("…"); punkts (); punkts (); punkts (); atstarpe (); } cits if (teikums.charAt (pirmais + i) == 't') {Serial.print ("-"); domuzīme (); atstarpe (); } cits if (teikums.charAt (pirmais + i) == 'u') {Serial.print ("..-"); punkts (); punkts (); domuzīme (); atstarpe (); } cits if (teikums.charAt (pirmais + i) == 'v') {Sērijas.print ("…-"); punkts (); punkts (); punkts (); domuzīme (); atstarpe (); } cits if (teikums.charAt (pirmais + i) == 'w') {Sērijas nospiedums (".--"); punkts (); domuzīme (); domuzīme (); atstarpe (); } cits if (teikums.charAt (pirmais + i) == 'x') {Sērijas nospiedums ("-..-"); domuzīme (); punkts (); punkts (); domuzīme (); atstarpe (); } cits if (teikums.charAt (pirmais + i) == 'y') {Sērijas nospiedums ("-.--"); domuzīme (); punkts (); domuzīme (); domuzīme (); atstarpe (); } cits if (teikums.charAt (pirmais + i) == 'z') {Serial.print ("-.."); domuzīme (); domuzīme (); punkts (); punkts (); atstarpe (); } cits if (teikums.charAt (pirmais + i) == '') {Sērijas.print ("/"); bigSpace (); }}} void loop () {// Šeit neko nerakstiet}

7. darbība: problēmu novēršana

Ritenis nekustās

Starp riteni un papīru var būt pārāk liela berze, mēģiniet nedaudz pacelt riteni vai nomainīt to.

Ritenis velk papīru, bet tad tas turpina griezties, nevelkot papīru

Pārliecinieties, vai esat pielīmējis riteni pakāpiena motora centrā

Punkti un domuzīmes ir savienotas

Pārbaudiet, vai punktu, domuzīme un atstarpes funkcijas ir uzrakstītas pareizi, tām jābūt šādām:

// Šī ir metode, kas liek robotam rakstīt punktveida punktu () {Serial.println ("dot start"); myServo.write (160); kavēšanās (1000); myServo.write (90); kavēšanās (1000); myStepper.step (stepsPerRevolution); kavēšanās (1000); Serial.println ("punkts darīts"); }

// Šī ir metode, kas liek robotam rakstīt domuzīmi

void dash () {Serial.println ("domuzīmes sākums"); myServo.write (160); kavēšanās (1000); myStepper.step (stepsPerRevolution); kavēšanās (1000); myServo.write (90); kavēšanās (1000); myStepper.step (stepsPerRevolution); kavēšanās (1000); Serial.println ("domuzīme izdarīta"); }

// Šī ir metode, kas liek robotam atstāt atstarpi starp katru burtu

void space () {Serial.println ("atstarpes sākums"); myServo.write (90); kavēšanās (1000); myStepper.step (200); kavēšanās (1000); Serial.println ("vieta pabeigta"); }

Ieteicams: