Cuprins:
- Provizii
- Pasul 1: Construirea bazei
- Pasul 2: Servo Piece
- Pasul 3: Adăugarea servomotorului și a rolei de hârtie la bază
- Pasul 4: Construirea cadrului motorului pas cu pas
- Pasul 5: Atingeri de finisare
- Pasul 6: Electronică
- Pasul 7: Depanare
Video: Arduino Morse Code Writer: 7 pași (cu imagini)
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-01-30 11:41
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
Î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
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ă
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
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
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ă
Î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:
Arborele binar Morse Decoder: 7 pași (cu imagini)
Binary Tree Morse Decoder: a.articles {font-size: 110,0%; font-weight: bold; stil font: italic; decor-text: nici unul; background-color: red;} a.articles: hover {background-color: black;} Acest instructiv explică modul de decodare a codului Morse folosind un Arduino Uno R3.T
Joc Crack the Code, casetă de puzzle bazată pe Arduino: 4 pași (cu imagini)
Crack the Code Game, Arduino Based Puzzle Box: În acest Instructable, îți voi arăta cum să-ți construiești propriul joc de cod crack în care folosești un disc rotativ cu codificator pentru a ghici codul generat aleatoriu în seif. Există 8 LED-uri pe partea din față a seifului pentru a vă spune câți dintre
Statuia Morse Moai: 4 pași (cu imagini)
Statuia Morse Moai: În copilărie, eram foarte interesat de codul Morse. Au existat câteva motive pentru acest lucru - tatăl meu a fost în Signal Corps în timpul celui de-al doilea război mondial și poveștile sale despre modul în care Morse a fost folosit în război au fost fascinante. Aveam o ureche destul de bună pentru ritmuri, așa că am învățat
Generator Arduino Yún Morse: 4 pași (cu imagini)
Arduino Yún Morse Generator: Ai fost vreodată într-un bar unde nu puteai vorbi cu prietenul tău pentru că muzica era prea tare? acum îi poți cere o bere în Codul Morse! Să începem
Codul Morse Altoid Tin Code: 6 pași
Cheia de practică a codului Morse din tablă Altoids: Am avut câteva cutii de tablouri Altoids în picioare și am decis să fac o cheie de practică a codului Morse. Este vorba despre cel mai simplu proiect de electronică pe care l-ați putea obține, dar rezultatul final este oarecum distractiv.Materiale: Altoids Tin - gol și șters curat Piezo Buzzer