Taula de continguts:

Arduino Penjat a Morse: 9 passos
Arduino Penjat a Morse: 9 passos

Vídeo: Arduino Penjat a Morse: 9 passos

Vídeo: Arduino Penjat a Morse: 9 passos
Vídeo: REAL RACING 3 LEAD FOOT EDITION 2024, Desembre
Anonim
Penjat Arduino a Morse
Penjat Arduino a Morse

En aquest tutorial us mostraré com configurar el vostre propi Arduino per jugar a Hangman enviant codi Morse amb una llanterna senzilla o la funció de la torxa des del telèfon.

Tot el que heu de seguir és: Una placa Arduino.10 llums LED Filferros per connectar-ho tot. Extra: un element piezoelèctric (per afegir so).

Pas 1: Configuració dels llums LED

Configuració dels llums LED
Configuració dels llums LED

Aquest joc de Morse farà ús de 4 llums per indicar les 4 lletres de la paraula que cal endevinar i 5 llums per indicar les vides amb què el jugador ha quedat endevinat, de manera que primer de tot hauràs de connectar 9 LED -il·lumina de la manera habitual, com es pot veure a la imatge.

Pas 2: afegiu un sensor de llum Makeshift

No podem anar tirant diners a les botigues d’electrònica, així que he decidit mantenir aquest projecte barat fent servir una simple llum LED com a sensor de llum improvisat.

Tot el que heu de fer és connectar el costat positiu de la llum LED a un dels vostres ports analògics (en el meu cas A0) i el costat menys a la vostra terra.

Pas 3: afegiu el vostre diccionari

Afegiu el vostre diccionari
Afegiu el vostre diccionari

Primer de tot, comencem afegint una mena de diccionari per traduir lletres als codis Morse corresponents. Per fer-ho, simplement fem una matriu de 26 per 5, amb la primera ranura de cada matriu secundària amb la lletra i les 4 ranures següents amb el codi Morse corresponent o un espai si no queda cap codi. Així, per exemple, amb la lletra s, la primera ranura té 's', la segona, la tercera i la quarta ranura tenen un '.' i la ranura final té ''.

Pas 4: feu que els llums s’encenguin per defecte

Feu que els llums s’encenguin per defecte
Feu que els llums s’encenguin per defecte
Feu que els llums s’encenguin per defecte
Feu que els llums s’encenguin per defecte

En aquest pas, ens assegurem que els llums s’encenguin un cop s’iniciï el programa i morsegi la lletra que representen un cop l’usuari els ha endevinat correctament (el codi per a això s’escriurà al pas 6). També ens assegurem que només hi hagi tantes llums enceses per a la vida com quedi al jugador.

Abans d'això, assegureu-vos que teniu una matriu amb els números de port i els enters definits a 0 per representar l'hora en què s'hauria d'encendre, apagar la llum i quina part del Morse mostra la llum LED.

Pas 5: afegir l'entrada

Addició de l'entrada
Addició de l'entrada

Ara escriurem el codi per comprovar si el reproductor fa brillar la llum LED connectada al nostre port analògic A0 i si el vol traduir a la lletra correcta.

Per assegurar-nos que la lectura és correcta, fem una mitjana de cada 20 lectures de la llum LED i fem servir aquest número per controlar si la llum està apagada o encesa. Per fer-ho, al començament del programa establim NUM_AVG en el nombre de vegades que volem que comprovi la llum abans de fer-ne una mitjana. Com més gran sigui aquest nombre, més precisa serà la lectura, però també pot provocar retards.

msBtnPush representa la quantitat de temps que la llum ha estat encesa. lastPressed és un booleà que fa un seguiment de si al bucle anterior la llum estava encesa.

Pas 6: Gestió de l'entrada

Gestió de l'entrada
Gestió de l'entrada
Gestió de l'entrada
Gestió de l'entrada

Per a aquest pas, analitzarem què fer un cop passat el temps suficient per suposar que no s’afegirà més Morse, i hem de comprovar si el Morse enviat forma una carta i si és una carta correcta.

Per fer-ho, hem de tenir la cadena wordToGuess ajustada a la paraula que volem que endevinin els nostres jugadors. Personalment, tinc un generador de números aleatoris per configurar-lo a una paraula aleatòria al principi, però també podeu definir-lo a una sola paraula.

També hem d’assegurar-nos que el comptador puja un per cada bucle, si no, tot el programa no faria res. A més, he afegit la funció de retard, per assegurar-me que hi ha un bucle cada mil·lisegon.

PD: Totes les funcions Serial.println són només per a proves. Es poden suprimir quan es completin.

El goodTimer i el badTimer són simplement valors per si teniu previst utilitzar un element Piezo per afegir so. Si voleu fer-ho, també heu d'afegir el codi a la segona imatge, que reprodueix els sons.

Pas 7: Morsing les cartes endevinades correctament

Morsing les cartes endevinades correctament
Morsing les cartes endevinades correctament

Com s’ha promès abans, en aquest pas farem que les llums que representin les lletres que s’han endevinat correctament siguin la seva lletra.

Per a això, he escrit dues funcions: morseThis i nextLetter. Utilitza els números que hem establert prèviament a la nostra matriu de temporitzadors i els canvia segons la part del codi Morse que brilli actualment.

Si el temporitzador arriba al moment en què s’ha d’encendre la llum, simplement encén la llum i executa el codi per configurar temporitzadors nous per apagar i tornar a encendre la llum. apagat, apaga la llum i, a continuació, estableix el codi per representar la següent part de la lletra. Si no hi ha cap part següent, la restablirà a la primera part.

Pas 8: revisió de la configuració i del restabliment

Revisant la nostra configuració i restabliment
Revisant la nostra configuració i restabliment

Per descomptat, el programa no s'executarà si els llums no estan configurats per a la sortida i l'entrada. També afegeixo un generador de números aleatoris per afegir una paraula d'una llista de paraules que he posat en una matriu anomenada wordsToGuess.

A més d’això, hauríem d’afegir la funció de restabliment i assegurar-nos que tots els valors es restableixin per defecte.

Pas 9: totes les variables d'una imatge

Totes les variables en una imatge
Totes les variables en una imatge

Finalment, podeu utilitzar-lo per comprovar si teniu totes les variables necessàries configurades correctament.

Ara gaudeix de tocar el penjat a Morse!

Recomanat: