Sommario:
- Forniture
- Passaggio 1: costruire la base
- Passaggio 2: il pezzo del servo
- Passaggio 3: aggiunta del servomotore e del rotolo di carta alla base
- Passaggio 4: costruire il telaio del motore passo-passo
- Passaggio 5: ritocchi finali
- Passaggio 6: elettronica
- Passaggio 7: risoluzione dei problemi
Video: Arduino Morse Code Writer: 7 passaggi (con immagini)
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 10:00
Ho creato un robot che può convertire qualsiasi testo in codice Morse e poi scriverlo!! È fatto di cartone e Lego e per l'elettronica ho usato Arduino e solo due motori.
Forniture
Scheda Arduino Uno Motore passo-passo Micro servo SG90ULN2003 Modulo driver motore passo-passo Modulo di alimentazione Breadboard4× Fili jumper6× Fili dupont femmina-maschio Adattatore 9V1ACavo USB Cartone 2× Tasselli in legno 2× Molle Paglia Carta bianca Colla LEGO Super Pistola per colla a caldo Fascia elastica (per fare un portapenne) Forbici Cutter
Passaggio 1: costruire la base
Inizia costruendo la base. Il mio è largo 4 perni e lungo 20, dopo aver costruito uno strato con quelle lunghezze, ho costruito un bordo largo uno perno attorno ad esso lasciando uno spazio su un lato per lasciare spazio al motore passo-passo, quindi ho aggiunto pezzi di piastrelle nella parte centrale dove sarà la striscia di carta. L'uso di Lego lo ha reso molto robusto e facile da modificare. Per realizzare il rotolo di carta, ho tagliato delle strisce di carta A4 larghe 1,2 cm (ho scelto questa larghezza perché è della stessa larghezza della ruota Lego che ho usato, puoi farla più grande o più piccola a seconda della tua ruota) e ho incollato le loro estremità insieme per formare una striscia molto lunga, poi l'ho avvolto intorno alla ruota.
Passaggio 2: il pezzo del servo
Per questo passaggio è necessario:
- due tasselli in legno lunghi 4 cm
- due molle lunghe 2cm
- una cannuccia tagliata in due pezzi lunghi 2 cm ciascuno
- un pezzo di cartone da 12 cm per 4 cm
- due pezzi di cartone da 4 cm per 1,5 cm
- un pezzo di cartone da 4 cm per 2 cm
Per prima cosa, incolla i tasselli su uno dei 4 pezzi per 1,5, quindi inserisci le molle e le cannucce nei tasselli, quindi incolla l'altro pezzo di cartone dall'altra parte per tenere tutto in posizione.
In secondo luogo, incolla il pezzo di 4 cm per 2 cm sopra le cannucce.
Terzo, capovolgi l'intero pezzo e incolla un piccolo tassello sul retro, non al centro ma leggermente a sinistra. (ho dimenticato di aggiungere il tassello piccolo nella prima foto)
Infine, pratica un foro nel pezzo di cartone grande delle dimensioni della parte anteriore del servomotore e incolla il motore, quindi incolla il pezzo appena fatto con i tasselli al pezzo grande in modo che quando il servo si muove, spinge il piccolo tassello in basso che a sua volta spinge verso il basso anche le molle.
Ho finito per tagliare circa 3 cm dalla parte inferiore del pezzo da 12 cm per 4 cm e incollarvi altri due pezzi da 4 cm per 1,5 cm, quindi ricoprirlo con un pezzo di cartone da 5,5 cm per 4 cm. E per tenere il pennarello ho fatto un piccolo anello di elastico e l'ho incollato su un piccolo pezzo di cartone, quindi l'ho incollato al pezzo di 4 cm per 2 cm che si sposterà verso il basso quando il servo si avvia. Queste aggiunte hanno impedito al marcatore di spostarsi da un lato all'altro quando le molle tornano su.
Passaggio 3: aggiunta del servomotore e del rotolo di carta alla base
Ho aggiunto altri due mattoncini su un lato della base per supportare il pezzo del servo e l'ho incollato in posizione. Poi ho aggiunto la ruota all'estremità della base.
Passaggio 4: costruire il telaio del motore passo-passo
Questo passaggio è stato un po' una sfida, perché il motore non era fatto per adattarsi perfettamente ai Lego. Tuttavia, sono riuscito a farlo usando i due fori nel motore per fissarlo in posizione. Successivamente, ho incollato una ruota Lego sulla punta del motore e poi l'ho posizionata proprio accanto alla base sul lato che ho lasciato aperto nel passaggio 1.
Passaggio 5: ritocchi finali
Ho aggiunto due pezzi di arco per coprire la ruota per fissare la carta in posizione. E ho aggiunto due pezzi di arco più piccoli uno per tenere i fili del motore passo-passo e un altro per tenere la carta. Infine, ho cambiato la ruota del motore passo-passo con una leggermente più grande che spostasse la carta meglio della vecchia ruota.
Passaggio 6: elettronica
Infine, devi collegare i motori ad Arduino e caricare il codice.
Inizieremo con il servomotore, collegheremo il filo marrone (il filo di terra) al pin GND, quindi il filo rosso (il filo di alimentazione) al pin 5V e il filo arancione (il filo di segnale) al Dig #5 spillo. Successivamente, il motore passo-passo, collega 1N1 a Dig # 11, 1N2 a Dig # 10, 1N3 a Dig # 9, 1N4 a Dig # 8, 5V al lato positivo della breadboard e il pin di terra al lato negativo del tagliere. E non dimenticare di collegare il modulo di alimentazione alla breadboard assicurandoti che i suoi lati positivo e negativo si allineino correttamente ai lati corrispondenti sulla breadboard. Se dimentichi di farlo, invertirai il potere al tuo progetto e non vorrai farlo.
Per il codice, ho scritto quattro metodi, uno per scrivere un punto, uno per scrivere un trattino e due per lasciare uno spazio tra ogni lettera e ogni parola. In questo modo, posso chiamare questi metodi quando ne ho bisogno invece di scriverlo di nuovo per ogni lettera. Quindi ho scritto un ciclo for che attraversa ogni lettera del testo e lo scrivo, al suo interno ho scritto un'istruzione if per ogni lettera ma puoi scriverla in un'istruzione switch se preferisci. Naturalmente è possibile aggiungere al codice per consentire al programma di leggere i numeri. Quando tutto il cablaggio è pronto, copia e incolla il codice nel tuo IDE. Non dimenticare di installare le librerie stepper, servo e string. Dopodiché, sei a posto.
Come funziona
All'avvio di Arduino, il programma guarda la prima lettera del testo e, a seconda di quale è, chiama le funzioni che la scrivono in codice Morse. Ad esempio, quando viene chiamata la funzione punto, il servomotore è impostato su 160 che sposta la penna verso il basso, quindi viene riportato su 90 che consente alle molle di risalire spostando la penna con loro. E se viene chiamata la funzione trattino, il servomotore sposta la penna verso il basso, quindi il motore passo-passo fa girare la rotella che tira la carta facendo scrivere alla penna un trattino. E se una delle funzioni spaziali viene chiamata il motore passo-passo ruota ma con la penna in alto in modo da tirare la carta creando uno spazio tra le lettere o le parole. Al termine, passa alla lettera successiva e ripete lo stesso processo. Spero vi piaccia;)
Il codice
#includere
#include #include #include const int stepsPerRevolution = 150; // Questa è la variabile per il motore passo-passo Stringa frase = "*ciao"; //Cambia questa variabile per scrivere parole diverse ma scrivi solo in lettere minuscole e inizia la tua parola con "*" Stepper myStepper(stepsPerRevolution, 8, 10, 9, 11); Servo myServo; // Questo è il metodo che fa scrivere al robot un punto void dot() { Serial.println("dot start"); myServo.write(160); ritardo(1000); myServo.write(90); ritardo(1000); myStepper.step(stepsPerRevolution); ritardo(1000); Serial.println("punto fatto"); } // Questo è il metodo che fa scrivere al robot un trattino void dash() { Serial.println("dash start"); myServo.write(160); ritardo(1000); myStepper.step(stepsPerRevolution); ritardo(1000); myServo.write(90); ritardo(1000); myStepper.step(stepsPerRevolution); ritardo(1000); Serial.println("trattino terminato"); } // Questo è il metodo che fa in modo che il robot lasci uno spazio tra ogni lettera void space() { Serial.println("space start"); myServo.write(90); ritardo(1000); mioStepper.step(200); ritardo(1000); Serial.println("spazio fatto"); } // Questo è il metodo che fa in modo che il robot lasci uno spazio maggiore tra ogni parola void bigSpace() { myServo.write(90); mioStepper.step(250); ritardo(1000); } void setup() { // inserisci qui il tuo codice di installazione, da eseguire una volta: Serial.begin(9600); myStepper.setSpeed(100); myServo.attach(5); int prima = frase.indexOf('*'); // questo ciclo for passa attraverso ogni lettera della stringa e quindi chiama i metodi giusti per scriverla for (int i = 0; i <phrase.length(); i++) { if (sentence.charAt(first + i) == 'a') { Serial.print(".- "); punto(); trattino(); spazio(); } else if (frase.charAt(first + i) == 'b') { Serial.print("-… "); trattino(); punto(); punto(); punto(); spazio(); } else if (frase.charAt(first + i) == 'c') { Serial.print("-.-. "); trattino(); punto(); trattino(); punto(); spazio(); } else if (frase.charAt(first + i) == 'd') { Serial.print("-.. "); trattino(); punto(); punto(); spazio(); } else if (frase.charAt(first + i) == 'e') { Serial.print(". "); punto(); spazio(); } else if (frase.charAt(first + i) == 'f') { Serial.print("..-. "); punto(); punto(); trattino(); punto(); spazio(); } else if (frase.charAt(first + i) == 'g') { Serial.print("--. "); trattino(); trattino(); punto(); spazio(); } else if (frase.charAt(first + i) == 'h') { Serial.print("…. "); punto(); punto(); punto(); punto(); spazio(); } else if (frase.charAt(first + i) == 'i') { Serial.print(".. "); punto(); punto(); spazio(); } else if (frase.charAt(first + i) == 'j') { Serial.print(".--- "); punto(); trattino(); trattino(); trattino(); spazio(); } else if (frase.charAt(first + i) == 'k') { Serial.print("-.- "); trattino(); punto(); trattino(); spazio(); } else if (frase.charAt(first + i) == 'l') { Serial.print(".-.. "); punto(); trattino(); punto(); punto(); spazio(); } else if (frase.charAt(first + i) == 'm') { Serial.print("-- "); trattino(); trattino(); spazio(); } else if (frase.charAt(first + i) == 'n') { Serial.print("-. "); trattino(); punto(); spazio(); } else if (frase.charAt(first + i) == 'o') { Serial.print("--- "); trattino(); trattino(); trattino(); spazio(); } else if (frase.charAt(first + i) == 'p') { Serial.print(".--. "); punto(); trattino(); trattino(); punto(); spazio(); } else if (frase.charAt(first + i) == 'q') { Serial.print("--.- "); trattino(); trattino(); punto(); trattino(); spazio(); } else if (frase.charAt(first + i) == 'r') { Serial.print(".-. "); punto(); trattino(); punto(); spazio(); } else if (frase.charAt(first + i) == 's') { Serial.print("… "); punto(); punto(); punto(); spazio(); } else if (frase.charAt(first + i) == 't') { Serial.print("- "); trattino(); spazio(); } else if (frase.charAt(first + i) == 'u') { Serial.print("..- "); punto(); punto(); trattino(); spazio(); } else if (frase.charAt(first + i) == 'v') { Serial.print("…- "); punto(); punto(); punto(); trattino(); spazio(); } else if (frase.charAt(first + i) == 'w') { Serial.print(".-- "); punto(); trattino(); trattino(); spazio(); } else if (frase.charAt(first + i) == 'x') { Serial.print("-..- "); trattino(); punto(); punto(); trattino(); spazio(); } else if (frase.charAt(first + i) == 'y') { Serial.print("-.-- "); trattino(); punto(); trattino(); trattino(); spazio(); } else if (frase.charAt(first + i) == 'z') { Serial.print("--.. "); trattino(); trattino(); punto(); punto(); spazio(); } else if (frase.charAt(first + i) == ' ') { Serial.print("/ "); spazio grande(); } } } void loop() { // Non scrivere nulla qui }
Passaggio 7: risoluzione dei problemi
La ruota non si muove
Potrebbe esserci troppo attrito tra la ruota e la carta, prova ad alzare un po' la ruota o a cambiarla.
La ruota tira la carta ma poi continua a ruotare senza tirare la carta
Assicurati di aver incollato la ruota al centro del motore passo-passo
I punti e i trattini sono collegati
Controlla se le funzioni punto, trattino e spazio sono scritte correttamente, dovrebbero essere così:
// Questo è il metodo che fa scrivere al robot un dotvoid dot() { Serial.println("dot start"); myServo.write(160); ritardo(1000); myServo.write(90); ritardo(1000); myStepper.step(stepsPerRevolution); ritardo(1000); Serial.println("punto fatto"); }
// Questo è il metodo che fa scrivere al robot un trattino
void trattino() { Serial.println("inizio trattino"); myServo.write(160); ritardo(1000); myStepper.step(stepsPerRevolution); ritardo(1000); myServo.write(90); ritardo(1000); mioStepper.step(stepsPerRevolution); ritardo(1000); Serial.println("trattino terminato"); }
// Questo è il metodo che fa sì che il robot lasci uno spazio tra ogni lettera
void space() { Serial.println("spazio iniziale"); myServo.write(90); ritardo(1000); mioStepper.step(200); ritardo(1000); Serial.println("spazio fatto"); }
Consigliato:
Decodificatore Morse ad albero binario: 7 passaggi (con immagini)
Binary Tree Morse Decoder: a.articles {font-size: 110.0%; font-weight: grassetto; stile del carattere: corsivo; decorazione del testo: nessuna; background-color: red;} a.articles:hover {background-color: black;} Questa istruzione spiega come decodificare il codice Morse usando un Arduino Uno R3.T
Crack the Code Game, Puzzle Box basato su Arduino: 4 passaggi (con immagini)
Crack the Code Game, Puzzle Box basato su Arduino: in questo Instructable, ti mostrerò come costruire il tuo gioco di cracking del codice in cui usi un quadrante del codificatore rotante per indovinare il codice generato casualmente nella cassaforte. Ci sono 8 LED sulla parte anteriore della cassaforte per dirti quanti di
Come smontare un computer con semplici passaggi e immagini: 13 passaggi (con immagini)
Come smontare un computer con semplici passaggi e immagini: questa è un'istruzione su come smontare un PC. La maggior parte dei componenti di base sono modulari e facilmente smontabili. Tuttavia è importante che tu sia organizzato al riguardo. Questo ti aiuterà a non perdere parti e anche a rendere più facile il rimontaggio
Generatore Arduino Yún Morse: 4 passaggi (con immagini)
Arduino Yún Morse Generator: Sei mai stato in un bar dove non potevi parlare con il tuo amico perché la musica era troppo alta? bene ora puoi chiedergli una birra in codice Morse! Iniziamo
Simple Braille Writer (discorso in Braille): 8 passaggi (con immagini)
Simple Braille Writer (Speech to Braille): Ciao a tutti, Tutto questo è iniziato facendo un semplice plotter XY dopo averlo completato con successo, ho pensato di sviluppare un semplice convertitore da discorso a testo braille. Ho iniziato a cercarlo online e inaspettatamente i prezzi erano troppo alti ,questo mi ha dato una carica