Cuprins:

Arduino Morse Code Writer: 7 pași (cu imagini)
Arduino Morse Code Writer: 7 pași (cu imagini)

Video: Arduino Morse Code Writer: 7 pași (cu imagini)

Video: Arduino Morse Code Writer: 7 pași (cu imagini)
Video: Decoding Japanese Morse Part 1 of 7 2024, Iulie
Anonim
Image
Image
Arduino Morse Code Writer
Arduino Morse Code Writer

Am creat un robot care poate converti orice text dat în cod Morse și apoi să-l notez !! Este realizat din carton și Lego și pentru electronice am folosit Arduino și doar două motoare.

Provizii

Placă Arduino Uno Motor pas cu pas Micro servo SG90ULN2003 Modul driver motor pas cu pas Modulul de alimentare cu energie Pană de pană 4 × fire jumper 6 × fire dupont de la mamă la mascul 9V1A Adaptor Cablu USB Carton 2 × dibluri din lemn 2 × Arcuri Paie Hârtie albă LegoSuper lipici Pistol de lipici fierbinte Bandă elastică suport stilou) Foarfece tăietor

Pasul 1: Construirea bazei

Construirea bazei
Construirea bazei
Construirea bazei
Construirea bazei
Construirea bazei
Construirea bazei

Începeți prin construirea bazei. Al meu are 4 știfturi lățime și 20 de știfturi lungi, după ce am construit un strat cu acele lungimi, am construit o bordură lată cu un știft în jurul acestuia, lăsând un spațiu pe o parte pentru a lăsa spațiu pentru motorul pas cu pas, apoi am adăugat bucăți de țiglă până la partea de mijloc unde va fi banda de hârtie. Folosirea Lego a făcut-o foarte robustă și ușor de modificat. Pentru a face rola de hârtie, am tăiat fâșii de hârtie A4 de 1,2 cm lățime (am ales această lățime pentru că este aceeași lățime cu roata Lego pe care am folosit-o, poți să o faci mai mare sau mai mică în funcție de roata ta) și le-am lipit capetele împreună pentru a forma o bandă foarte lungă, apoi am înfășurat-o în jurul roții.

Pasul 2: Servo Piece

Piesa Servo
Piesa Servo
Piesa Servo
Piesa Servo
Piesa Servo
Piesa Servo

Pentru acest pas aveți nevoie de:

  • două dibluri din lemn lungi de 4cm
  • două arcuri lungi de 2cm
  • o paie tăiată în două bucăți de 2cm lungime fiecare
  • o bucată de carton de 12cm pe 4cm
  • două bucăți de carton de 4cm pe 1,5cm
  • o bucată de carton de 4cm pe 2cm

Mai întâi, lipiți diblurile pe una dintre cele 4 cu 1,5 bucăți, apoi introduceți arcurile și paiul în dibluri, apoi lipiți cealaltă bucată de carton de pe cealaltă parte pentru a ține totul în poziție.

În al doilea rând, lipiți bucata de 4cm pe 2cm deasupra paielor.

În al treilea rând, răsturnați întreaga piesă și lipiți o diblă mică în spatele acesteia, nu în mijloc, ci ușor în stânga. (Am uitat să adaug diblura mică în prima poză)

În cele din urmă, tăiați o gaură în bucata mare de carton de dimensiunea din față a servomotorului și lipiți motorul, apoi lipiți bucata pe care tocmai am făcut-o cu diblurile pe bucata mare, astfel încât, atunci când servo se mișcă, să împingă diblă mică în jos, care la rândul său împinge și arcurile în jos.

Am ajuns să tai aproximativ 3cm din partea de jos a piesei de 12cm pe 4cm și am lipit încă două bucăți de 4cm pe 1,5cm, apoi am acoperit-o cu o bucată de carton de 5,5cm cu 4cm. Și pentru a ține marcatorul am făcut o mică bucla de bandă elastică și am lipit-o de o bucată mică de carton, apoi am lipit-o de bucata de 4 cm cu 2 cm care se va deplasa în jos când pornește servo. Aceste adăugiri au oprit marcajul să se deplaseze dintr-o parte în alta când arcurile revin în sus.

Pasul 3: Adăugarea servomotorului și a rolei de hârtie la bază

Adăugarea servomotorului și a rolei de hârtie la bază
Adăugarea servomotorului și a rolei de hârtie la bază
Adăugarea servomotorului și a rolei de hârtie la bază
Adăugarea servomotorului și a rolei de hârtie la bază

Am adăugat încă două cărămizi pe o parte a bazei pentru a sprijini piesa servo și am lipit-o în poziție. Apoi am adăugat roata la capătul îndepărtat al bazei.

Pasul 4: Construirea cadrului motorului pas cu pas

Construirea cadrului motorului pas cu pas
Construirea cadrului motorului pas cu pas
Construirea cadrului motorului pas cu pas
Construirea cadrului motorului pas cu pas
Construirea cadrului motorului pas cu pas
Construirea cadrului motorului pas cu pas

Acest pas a fost o provocare, deoarece motorul nu a fost conceput pentru a se potrivi perfect cu Lego. Cu toate acestea, am reușit să o fac folosind cele două găuri din motor pentru a-l fixa în poziție. Apoi, am lipit o roată Lego de vârful motorului și apoi am pus-o chiar lângă baza de pe partea pe care am lăsat-o deschisă la pasul 1.

Pasul 5: Atingeri de finisare

Finisaje
Finisaje
Finisaje
Finisaje
Finisaje
Finisaje
Finisaje
Finisaje

Am adăugat două bucăți de arc pentru a acoperi roata pentru a fixa hârtia în loc. Și am adăugat două piese de arc mai mici, una pentru a ține firele motorului pas cu pas și alta pentru a ține hârtia. În cele din urmă, am schimbat roata motorului pas cu pas cu una ușor mai mare, care mișca hârtia mai bine decât roata veche.

Pasul 6: Electronică

Electronică
Electronică
Electronică
Electronică

În cele din urmă, trebuie să conectați motoarele la Arduino și să încărcați codul.

Vom începe cu servomotorul, vom conecta firul maro (firul de masă) la pinul GND, apoi firul roșu (firul de alimentare) la pinul de 5V și firul portocaliu (firul de semnal) la Dig # 5 pin. Apoi, motorul pas cu pas, conectați 1N1 la Dig # 11, 1N2 la Dig # 10, 1N3 la Dig # 9, 1N4 la Dig # 8, 5V la partea pozitivă a panoului și pinul de masă la partea negativă a panou de masă. Și nu uitați să conectați modulul de alimentare la panoul de asigurare, asigurându-vă că laturile sale pozitive și negative se aliniază corect la laturile corespunzătoare de pe panou. Dacă uitați să faceți acest lucru, veți inversa puterea proiectului dvs. și nu doriți să faceți acest lucru.

Pentru cod, am scris patru metode, una pentru a scrie un punct, una pentru a scrie o liniuță și două pentru a lăsa spațiu între fiecare literă și fiecare cuvânt. În acest fel, pot apela aceste metode atunci când am nevoie de ele în loc să le scriu din nou pentru fiecare literă. Apoi am scris o buclă for care trece prin fiecare literă a textului și o scriu, în interiorul ei am scris o instrucțiune if pentru fiecare literă, dar o puteți scrie într-o declarație switch, dacă preferați. Desigur, puteți adăuga la cod pentru a permite programului să citească numerele. Când toate cablurile sunt gata, copiați și lipiți codul în IDE. Nu uitați să instalați bibliotecile stepper, servo și șir. După aceea, ești bine să pleci.

Cum functioneaza

Când Arduino pornește, programul se uită la prima literă a textului și, în funcție de care este, apelează funcțiile care îl scriu în cod Morse. De exemplu, când se apelează funcția punct, servomotorul este setat la 160, care mută stiloul în jos, apoi este setat înapoi la 90, ceea ce permite arcurilor să revină în mișcare stiloul cu ele. Și dacă se apelează funcția liniuță, servo mută stiloul în jos, apoi motorul pas cu pas roteste roata care trage hârtia făcând stiloul să scrie o liniuță. Și dacă una dintre funcțiile spațiale este numită, motorul pas cu pas se rotește, dar cu stiloul în sus, astfel încât trage hârtia făcând un spațiu între litere sau cuvinte. Când se termină, trece la următoarea literă și repetă același proces. Sper că îți place;)

Codul

#include

#include #include #include const int stepsPerRevolution = 150; // Aceasta este variabila pentru motorul pas cu pas String sentence = "* hello"; // Schimbați această variabilă pentru a scrie cuvinte diferite, dar scrieți doar cu litere mici și începeți-vă cuvântul cu „*” Stepper myStepper (stepsPerRevolution, 8, 10, 9, 11); Servo myServo; // Aceasta este metoda care face ca robotul să scrie un punct gol () {Serial.println ("punct de pornire"); myServo.write (160); întârziere (1000); myServo.write (90); întârziere (1000); myStepper.step (stepsPerRevolution); întârziere (1000); Serial.println („punct terminat”); } // Aceasta este metoda care face ca robotul să scrie o liniuță void dash () {Serial.println ("startul liniei"); myServo.write (160); întârziere (1000); myStepper.step (stepsPerRevolution); întârziere (1000); myServo.write (90); întârziere (1000); myStepper.step (stepsPerRevolution); întârziere (1000); Serial.println („liniuță făcută”); } // Aceasta este metoda care face ca robotul să lase un spațiu între fiecare literă fără spațiu () {Serial.println ("spațiu start"); myServo.write (90); întârziere (1000); myStepper.step (200); întârziere (1000); Serial.println („spațiu făcut”); } // Aceasta este metoda care face ca robotul să lase un spațiu mai mare între fiecare cuvânt void bigSpace () {myServo.write (90); myStepper.step (250); întârziere (1000); } void setup () {// puneți codul de configurare aici, pentru a rula o dată: Serial.begin (9600); myStepper.setSpeed (100); myServo.attach (5); int first = sentence.indexOf ('*'); // această buclă for trece prin fiecare literă a șirului și apoi apelează metodele potrivite pentru a o scrie pentru (int i = 0; i <propoziție.lungime (); i ++) {if (propoziție.charAt (primul + i) == 'a') {Serial.print (".-"); punct(); dash (); spaţiu(); } else if (sentence.charAt (first + i) == 'b') {Serial.print ("- …"); dash (); punct(); punct(); punct(); spaţiu(); } else if (sentence.charAt (first + i) == 'c') {Serial.print ("-.-."); dash (); punct(); dash (); punct(); spaţiu(); } else if (sentence.charAt (first + i) == 'd') {Serial.print ("-.."); dash (); punct(); punct(); spaţiu(); } else if (sentence.charAt (first + i) == 'e') {Serial.print ("."); punct(); spaţiu(); } else if (sentence.charAt (first + i) == 'f') {Serial.print ("..-."); punct(); punct(); dash (); punct(); spaţiu(); } else if (sentence.charAt (first + i) == 'g') {Serial.print ("-."); dash (); dash (); punct(); spaţiu(); } else if (sentence.charAt (first + i) == 'h') {Serial.print ("…."); punct(); punct(); punct(); punct(); spaţiu(); } else if (sentence.charAt (first + i) == 'i') {Serial.print (".."); punct(); punct(); spaţiu(); } else if (sentence.charAt (first + i) == 'j') {Serial.print (".---"); punct(); dash (); dash (); dash (); spaţiu(); } else if (sentence.charAt (first + i) == 'k') {Serial.print ("-.-"); dash (); punct(); dash (); spaţiu(); } else if (sentence.charAt (first + i) == 'l') {Serial.print (".-.."); punct(); dash (); punct(); punct(); spaţiu(); } else if (sentence.charAt (first + i) == 'm') {Serial.print ("-"); dash (); dash (); spaţiu(); } else if (sentence.charAt (first + i) == 'n') {Serial.print ("-."); dash (); punct(); spaţiu(); } else if (sentence.charAt (first + i) == 'o') {Serial.print ("---"); dash (); dash (); dash (); spaţiu(); } else if (sentence.charAt (first + i) == 'p') {Serial.print (".--."); punct(); dash (); dash (); punct(); spaţiu(); } else if (sentence.charAt (first + i) == 'q') {Serial.print ("--.-"); dash (); dash (); punct(); dash (); spaţiu(); } else if (sentence.charAt (first + i) == 'r') {Serial.print (".-."); punct(); dash (); punct(); spaţiu(); } else if (sentence.charAt (first + i) == 's') {Serial.print ("…"); punct(); punct(); punct(); spaţiu(); } else if (sentence.charAt (first + i) == 't') {Serial.print ("-"); dash (); spaţiu(); } else if (sentence.charAt (first + i) == 'u') {Serial.print ("..-"); punct(); punct(); dash (); spaţiu(); } else if (sentence.charAt (first + i) == 'v') {Serial.print ("… -"); punct(); punct(); punct(); dash (); spaţiu(); } else if (sentence.charAt (first + i) == 'w') {Serial.print (".--"); punct(); dash (); dash (); spaţiu(); } else if (sentence.charAt (first + i) == 'x') {Serial.print ("-..-"); dash (); punct(); punct(); dash (); spaţiu(); } else if (sentence.charAt (first + i) == 'y') {Serial.print ("-.--"); dash (); punct(); dash (); dash (); spaţiu(); } else if (sentence.charAt (first + i) == 'z') {Serial.print ("-.."); dash (); dash (); punct(); punct(); spaţiu(); } else if (sentence.charAt (first + i) == '') {Serial.print ("/"); bigSpace (); }}} void loop () {// Nu scrie nimic aici}

Pasul 7: Depanare

Roata nu se mișcă

S-ar putea să existe prea multe fricțiuni între roată și hârtie, încercați să ridicați puțin roata sau să o schimbați.

Roata trage hârtia, dar apoi se rotește fără a trage hârtia

Asigurați-vă că ați lipit roata în centrul motorului pas cu pas

Punctele și cratimele sunt conectate

Verificați dacă funcțiile punct, liniuță și spațiu sunt scrise corect, ar trebui să fie astfel:

// Aceasta este metoda care face ca robotul să scrie un punct dotvoid () {Serial.println ("start start"); myServo.write (160); întârziere (1000); myServo.write (90); întârziere (1000); myStepper.step (stepsPerRevolution); întârziere (1000); Serial.println ("punct terminat"); }

// Aceasta este metoda care face ca robotul să scrie o liniuță

void dash () {Serial.println ("start dash"); myServo.write (160); întârziere (1000); myStepper.step (stepsPerRevolution); întârziere (1000); myServo.write (90); întârziere (1000); myStepper.step (stepsPerRevolution); întârziere (1000); Serial.println („liniuță făcută”); }

// Aceasta este metoda care face ca robotul să lase un spațiu între fiecare literă

void space () {Serial.println ("spațiu start"); myServo.write (90); întârziere (1000); myStepper.step (200); întârziere (1000); Serial.println („spațiu făcut”); }

Recomandat: