Satura rādītājs:
- Piegādes
- 1. solis: bāzes izveide
- 2. solis: Servo gabals
- 3. solis: Servo motora un papīra ruļļa pievienošana pamatnei
- 4. solis: pakāpiena motora rāmja izveide
- 5. solis: apdares darbi
- 6. darbība: elektronika
- 7. darbība: problēmu novēršana
Video: Arduino Morzes koda autors: 7 soļi (ar attēliem)
2024 Autors: John Day | [email protected]. Pēdējoreiz modificēts: 2024-01-30 10:51
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
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
Š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
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
Š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
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
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:
Morzes koda stacija: 3 soļi
Morzes koda stacija: Dit-dit-dah-dah! Uzziniet Morzes kodu ar šo vienkāršo Arduino Uno projektu. Šis vienkāršais Arduino projekts ir Morzes kodeksa stacija. Morzes kods ir saziņas metode, kas kodē rakstzīmes kā punktu un domuzīmju sēriju. Šī shēma izmanto pjezo skaņas signālu, lai
USB Arduino Morzes koda atslēga: 6 soļi
USB Arduino Morzes koda atslēga: Vai esat kādreiz gribējis rakstīt datorā ar morzes koda atslēgu vai iemācīties/iemācīt morzes kodu? Jūs atrodaties pareizajā lapā! Maniem citiem projektiem apmeklējiet manu vietni calvin.sh
Kā izveidot Morzes koda tulkotāju, izmantojot Arduino: 10 soļi
Kā izveidot Morzes koda tulkotāju, izmantojot Arduino: Pārskats Saziņai kodētā veidā, turklāt tā ir tik aizraujoša, tai ir daudz pielietojumu dažādās jomās. Viena no visizplatītākajām koda saziņas metodēm ir Morzes kods. Šajā apmācībā jūs uzzināsit, kā padarīt tulku nosūtīšanai un atkārtotai
Arduino Morzes koda raidītājs: 11 soļi
Arduino Morzes koda raidītājs: Šajā pamācībā jūs izmantosit Arduino Uno, lai izveidotu Morzes kodu raidītāju, un izmantojiet sērijas monitoru, lai lasītu pārraidītos ziņojumus. Nepieciešamās detaļas: Arduino UnoBreadboardBuzzerButtonsJumper vadi
Morzes koda pieskāriena taustiņš/automātiskais kodētājs: 12 soļi (ar attēliem)
Morzes kods Touch Keyer/Autocoder: Es faktiski izveidoju šo projektu pirms kāda laika, bet domāju, ka kāds varētu šo ideju izmantot. Es esmu šķiņķa radio puisis, un tajā nonācu nedaudz vēlu, kad aizgāju pensijā un man bija laiks. Man tagad ir vispārējā licence un es izmantoju tālruni (vo