Përmbajtje:

Arduino Morse Code Writer: 7 hapa (me fotografi)
Arduino Morse Code Writer: 7 hapa (me fotografi)

Video: Arduino Morse Code Writer: 7 hapa (me fotografi)

Video: Arduino Morse Code Writer: 7 hapa (me fotografi)
Video: Lesson 02 Arduino IDE Software | Robojax Arduino Step By Step Course 2024, Nëntor
Anonim
Image
Image
Arduino Morse Code Writer
Arduino Morse Code Writer

Kam krijuar një robot që mund të konvertojë çdo tekst të dhënë në kodin Morse dhe pastaj ta shkruajë !! Madeshtë bërë nga kartoni dhe Lego dhe për pajisjet elektronike kam përdorur Arduino dhe vetëm dy motorë.

Furnizimet

Arduino Uno bord Stepper motor Micro servo SG90ULN2003 stepper motor modul shoferi Moduli i furnizimit me energji Moduli i furnizimit me energji Breadboard4 w Telat e kërcyesit 6 ires Tela dupont femrash nga meshkujt 9V1A Përshtatës Kabllo USB USB 2 d Dowels prej druri 2 × Springs Letër e bardhë Letër ngjitës Ngjitës mbajtëse stilolapsi) Prerës gërshërë

Hapi 1: Ndërtimi i Bazës

Ndërtimi i Bazës
Ndërtimi i Bazës
Ndërtimi i Bazës
Ndërtimi i Bazës
Ndërtimi i Bazës
Ndërtimi i Bazës

Filloni duke ndërtuar bazën. Miniera është 4 kunja e gjerë dhe 20 kunja e gjatë, pasi ndërtova një shtresë me ato gjatësi, ndërtova një bordurë me një kunj të gjerë rreth saj duke lënë një boshllëk në njërën anë për të lënë hapësirë për motorin stepper, pastaj shtova copat e pllakave në pjesën e mesme ku do të jetë shiriti i letrës. Përdorimi i Lego e bëri atë shumë të fortë dhe të lehtë për tu modifikuar. Për ta bërë letrën të rrotullohet, unë kam prerë shirita letre A4 1,2 cm të gjerë (e zgjodha këtë gjerësi sepse është e njëjta gjerësi me rrotën Lego që kam përdorur, ju mund ta bëni tuajin më të madh ose më të vogël në varësi të timonit tuaj) dhe i ngjita skajet e tyre së bashku për të formuar një shirit shumë të gjatë, pastaj e mbështolla atë rreth timonit.

Hapi 2: Pjesa Servo

Pjesa Servo
Pjesa Servo
Pjesa Servo
Pjesa Servo
Pjesa Servo
Pjesa Servo

Për këtë hap ju nevojiten:

  • dy kunja druri 4 cm të gjatë
  • dy burime 2 cm të gjatë
  • një kashtë të prerë në dy pjesë 2 cm të gjata secila
  • një copë kartoni 12cm me 4cm
  • dy copa kartoni 4cm me 1.5cm
  • një copë kartoni 4cm me 2cm

Së pari, ngjitni kunjat në njërën prej 4 me 1.5 copë, pastaj futni burimet dhe kashtat në kunjat, pastaj ngjiteni pjesën tjetër të kartonit në anën tjetër për të mbajtur gjithçka në vend.

Së dyti, ngjiteni pjesën 4cm me 2cm në majë të kashtave.

Së treti, rrokullisni të gjithë pjesën dhe ngjitni një kunj të vogël në pjesën e pasme të tij, jo në mes, por pak në të majtë. (Kam harruar të shtoj kunj të vogël në foton e parë)

Së fundi, prerë një vrimë në copën e madhe të kartonit me madhësinë e pjesës së përparme të motorit servo dhe ngjiteni motorin, pastaj ngjiteni copën që sapo kemi bërë me dowels në pjesën e madhe në mënyrë që kur servo të lëvizë, të shtyjë kunj i vogël poshtë i cili nga ana tjetër i shtyn edhe burimet poshtë.

Përfundova duke prerë rreth 3 cm nga pjesa e poshtme e pjesës 12cm me 4cm dhe ngjitja dy pjesë të tjera 4cm me 1.5cm në të, pastaj e mbulova atë me një copë kartoni 5.5cm me 4cm. Dhe për të mbajtur shënuesin bëra një të vogël lak të brezit elastik dhe e ngjita në një copë të vogël kartoni, pastaj e ngjita atë në copën 4cm me 2cm e cila do të lëvizë poshtë kur të fillojë servo. Këto shtesa ndaluan shënuesin të lëvizte nga njëra anë në tjetrën kur burimet të kthehen përsëri.

Hapi 3: Shtimi i Servo Motor dhe Paper Roll në Bazë

Shtimi i Servo Motor dhe Paper Roll në Bazë
Shtimi i Servo Motor dhe Paper Roll në Bazë
Shtimi i Servo Motor dhe Paper Roll në Bazë
Shtimi i Servo Motor dhe Paper Roll në Bazë

Shtova dy tulla të tjera në njërën anë të bazës për të mbështetur copën servo dhe e ngjita në vend. Pastaj shtova timonin në skajin më të largët të bazës.

Hapi 4: Ndërtimi i Kornizës së Motorit Stepper

Ndërtimi i kornizës së motorit Stepper
Ndërtimi i kornizës së motorit Stepper
Ndërtimi i kornizës së motorit Stepper
Ndërtimi i kornizës së motorit Stepper
Ndërtimi i kornizës së motorit Stepper
Ndërtimi i kornizës së motorit Stepper

Ky hap ishte pak sfidë, sepse motori nuk ishte bërë për t'u përshtatur me Lego në mënyrë perfekte. Sidoqoftë, unë arrita ta bëj duke përdorur dy vrimat në motor për ta siguruar atë në vend. Tjetra, unë ngjita një rrotë Lego në majë të motorit dhe pastaj e vendosa atë pranë bazës në anën që e lashë hapur në hapin 1.

Hapi 5: Përfundimi i Prekjeve

Prekjet përfundimtare
Prekjet përfundimtare
Prekjet përfundimtare
Prekjet përfundimtare
Prekjet përfundimtare
Prekjet përfundimtare
Prekjet përfundimtare
Prekjet përfundimtare

Shtova dy copa harku për të mbuluar timonin për të rregulluar letrën në vend. Dhe shtova dy copa më të vogla të harkut një për të mbajtur telat e motorit stepper dhe një tjetër për të mbajtur letrën. Së fundmi, unë ndryshova rrotën e motorit stepper në një pak më të madh që lëvizte letrën më mirë se rrota e vjetër.

Hapi 6: Elektronikë

Elektronikë
Elektronikë
Elektronikë
Elektronikë

Së fundi, duhet të lidhni motorët me Arduino dhe të ngarkoni kodin.

Ne do të fillojmë me motorin servo, lidhim tela ngjyrë kafe (teli i tokëzimit) në kunjin GND, pastaj tela e kuqe (tela e energjisë) në kunjin 5V, dhe tela portokalli (tela sinjali) në Dig #5 gjilpere. Tjetra, motori stepper, lidhni 1N1 me gërmimin #11, 1N2 me gërmimin #10, 1N3 me gërmimin #9, 1N4 me gërmimin #8, 5V në anën pozitive të dërrasës së bukës dhe kunjin e tokëzimit në anën negative të dërrasë buke. Dhe mos harroni të lidhni modulin e furnizimit me energji elektrike në pjatën e bukës duke u siguruar që anët e tij pozitive dhe negative të përafrohen saktë me anët përkatëse në tabelën e bukës. Nëse harroni ta bëni këtë, do ta ktheni fuqinë në projektin tuaj dhe nuk doni ta bëni këtë.

Për kodin, unë shkrova katër metoda, një për të shkruar një pikë, një për të shkruar një vizë dhe dy për të lënë hapësirë midis secilës shkronjë dhe secilës fjalë. Në atë mënyrë, unë thjesht mund t'i quaj këto metoda kur më duhen, në vend që t'i shkruaj përsëri për çdo shkronjë. Pastaj shkrova një lak për që kalon nëpër secilën shkronjë të tekstit dhe shkruajeni atë, Brenda tij, kam shkruar një deklaratë if për secilën shkronjë, por ju mund ta shkruani atë në një deklaratë switch nëse preferoni. Sigurisht që mund t'i shtoni kodit për t'i mundësuar programit të lexojë numra. Kur të gjitha instalimet elektrike të jenë gati, thjesht kopjoni dhe ngjisni kodin në IDE tuaj. Mos harroni të instaloni bibliotekat stepper, servo dhe string. Pas kësaj, jeni mirë të shkoni.

Si punon

Kur fillon Arduino programi shikon shkronjën e parë të tekstit., Dhe në varësi të cilës është, ai thërret funksionet që e shkruajnë atë në kodin Morse. Për shembull, kur thirret funksioni dot, servo motori vendoset në 160 i cili e zhvendos stilolapsin poshtë, pastaj kthehet në 90 i cili lejon që burimet të kthehen lart duke lëvizur stilolapsin me ta. Dhe nëse thirret funksioni dash, servo e zhvendos stilolapsin poshtë, atëherë motori stepper rrotullon timonin i cili tërheq letrën duke e bërë stilolapsin të shkruajë një dash. Dhe nëse një nga funksionet e hapësirës quhet motori stepper rrotullohet, por me stilolaps lart ai tërheq letrën duke bërë një hapësirë midis shkronjave ose fjalëve. Kur të përfundojë, shkon në shkronjën tjetër dhe përsërit të njëjtin proces. Unë shpresoj se ju pëlqen;)

Kodi

#përfshi

#include #include #includ const const stepsPerRevolution = 150; // Kjo është variabla për motorin stepper Fjalia e vargut = "*përshëndetje"; // Ndryshoni këtë ndryshore për të shkruar fjalë të ndryshme, por shkruani vetëm me shkronja të vogla dhe filloni fjalën tuaj me "*" Stepper myStepper (hapatPerRevolution, 8, 10, 9, 11); Servo myServo; // Kjo është metoda që e bën robotin të shkruajë një pikë të zbrazët pike () {Serial.println ("fillimi i pikës"); myServo.shkruaj (160); vonesa (1000); myServo.shkruaj (90); vonesa (1000); myStepper.step (hapatPerRevolution); vonesa (1000); Serial.println ("pika e kryer"); } // Kjo është metoda që e bën robotin të shkruajë një dash void dash () {Serial.println ("dash dash start"); myServo.shkruaj (160); vonesa (1000); myStepper.step (hapatPerRevolution); vonesa (1000); myServo.shkruaj (90); vonesa (1000); myStepper.step (hapatPerRevolution); vonesa (1000); Serial.println ("dash është bërë"); } // Kjo është metoda që e bën robotin të lërë një hapësirë midis secilës shkronjë void hapësirë () {Serial.println ("fillimi i hapësirës"); myServo.shkruaj (90); vonesa (1000); myStepper.step (200); vonesa (1000); Serial.println ("hapësira e kryer"); } // Kjo është metoda që e bën robotin të lërë një hapësirë më të madhe midis secilës fjalë void bigSpace () {myServo.write (90); myStepper.step (250); vonesa (1000); } void setup () {// vendosni kodin tuaj të konfigurimit këtu, për të ekzekutuar një herë: Serial.begin (9600); myStepper.setSpeed (100); myServo.tash (5); int e parë = fjali.indexOf ('*'); // ky për lak kalon nëpër secilën shkronjë të vargut dhe më pas thërret metodat e duhura për ta shkruar për (int i = 0; i <fjalia.length (); i ++) {if (fjalia.charAt (e para+i) == 'a') {Serial.print (".-"); pikë (); dash (); hapësirë(); } else if (fjalia.charAt (e para + i) == 'b') {Serial.print ("-…"); dash (); pikë (); pikë (); pikë (); hapësirë(); } tjetër if (fjalia.charAt (e para + i) == 'c') {Serial.print ("-.-."); dash (); pikë (); dash (); pikë (); hapësirë(); } else if (fjalia.charAt (e para + i) == 'd') {Serial.print ("-.."); dash (); pikë (); pikë (); hapësirë(); } else if (fjalia.charAt (e para + i) == 'e') {Serial.print ("."); pikë (); hapësirë(); } else if (fjalia.charAt (e para + i) == 'f') {Serial.print ("..-."); pikë (); pikë (); dash (); pikë (); hapësirë(); } else if (fjalia.charAt (e para + i) == 'g') {Serial.print ("-."); dash (); dash (); pikë (); hapësirë(); } else if (fjalia.charAt (e para + i) == 'h') {Serial.print ("…."); pikë (); pikë (); pikë (); pikë (); hapësirë(); } else if (fjalia.charAt (e para + i) == 'i') {Serial.print (".."); pikë (); pikë (); hapësirë(); } else if (fjalia.charAt (e para + i) == 'j') {Serial.print (".---"); pikë (); dash (); dash (); dash (); hapësirë(); } else if (fjalia.charAt (e para + i) == 'k') {Serial.print ("-.-"); dash (); pikë (); dash (); hapësirë(); } tjetër if (fjalia.charAt (e para + i) == 'l') {Serial.print (".-.."); pikë (); dash (); pikë (); pikë (); hapësirë(); } else if (fjalia.charAt (e para + i) == 'm') {Serial.print ("-"); dash (); dash (); hapësirë(); } else if (fjalia.charAt (e para + i) == 'n') {Serial.print ("-."); dash (); pikë (); hapësirë(); } else if (fjalia.charAt (e para + i) == 'o') {Serial.print ("---"); dash (); dash (); dash (); hapësirë(); } else if (fjalia.charAt (e para + i) == 'p') {Serial.print (".--."); pikë (); dash (); dash (); pikë (); hapësirë(); } tjetër if (fjalia.charAt (e para + i) == 'q') {Serial.print ("--.-"); dash (); dash (); pikë (); dash (); hapësirë(); } else if (fjalia.charAt (e para + i) == 'r') {Serial.print (".-."); pikë (); dash (); pikë (); hapësirë(); } else if (fjalia.charAt (e para + i) == 's') {Serial.print ("…"); pikë (); pikë (); pikë (); hapësirë(); } else if (fjalia.charAt (e para + i) == 't') {Serial.print ("-"); dash (); hapësirë(); } else if (fjalia.charAt (e para + i) == 'u') {Serial.print ("..-"); pikë (); pikë (); dash (); hapësirë(); } else if (fjalia.charAt (e para + i) == 'v') {Serial.print ("…-"); pikë (); pikë (); pikë (); dash (); hapësirë(); } else if (fjalia.charAt (e para + i) == 'w') {Serial.print (".--"); pikë (); dash (); dash (); hapësirë(); } else if (fjalia.charAt (e para + i) == 'x') {Serial.print ("-..-"); dash (); pikë (); pikë (); dash (); hapësirë(); } tjetër if (fjalia.charAt (e para + i) == 'y') {Serial.print ("-.--"); dash (); pikë (); dash (); dash (); hapësirë(); } else if (fjalia.charAt (e para + i) == 'z') {Serial.print ("-.."); dash (); dash (); pikë (); pikë (); hapësirë(); } else if (fjalia.charAt (e para + i) == '') {Serial.print ("/"); bigSpace (); }}} void loop () {// Mos shkruaj asgjë këtu}

Hapi 7: Zgjidhja e problemeve

Rrota nuk lëviz

Mund të ketë shumë fërkime midis timonit dhe letrës, provoni ta ngrini pak rrotën ose ta ndryshoni.

Rrota e tërheq letrën por më pas ajo vazhdon të rrotullohet pa e tërhequr letrën

Sigurohuni që të keni ngjitur timonin në qendër të motorit stepper

Pikat dhe pikat janë të lidhura

Kontrolloni nëse funksionet e pikës, dashit dhe hapësirës janë shkruar saktë, ato duhet të jenë kështu:

// Kjo është metoda që e bën robotin të shkruajë një pikë dotvoid () {Serial.println ("fillimi i pikës"); myServo.shkruaj (160); vonesa (1000); myServo.shkruaj (90); vonesa (1000); myStepper.step (hapatPerRevolution); vonesa (1000); Serial.println ("pika e kryer"); }

// Kjo është metoda që e bën robotin të shkruajë një dash

void dash () {Serial.println ("dash dash start"); myServo.shkruaj (160); vonesa (1000); myStepper.step (hapatPerRevolution); vonesa (1000); myServo.shkruaj (90); vonesa (1000); myStepper.step (hapatPerRevolution); vonesa (1000); Serial.println ("dash është bërë"); }

// Kjo është metoda që e bën robotin të lërë një hapësirë midis secilës shkronjë

void space () {Serial.println ("fillimi i hapësirës"); myServo.shkruaj (90); vonesa (1000); myStepper.step (200); vonesa (1000); Serial.println ("hapësira e kryer"); }

Recommended: