Un traducteur de Code Morse (lumière-> texte & texte-> lumière) (4 / 5 étapes)

Étape 4: Code : Arduino

le code final peut être trouvé ici (veillez à ajouter des classes BinaryTree et nœud au fichier MorseCode.ino)

Code Morse

le code est divisé en 3 grandes étapes :

1 - basculer entre l’état de lecture et d’écriture état grâce à un bouton poussoir

2 - (écriture état) prendre une saisie de texte à partir du tableau et convertir une séquence de points et de tirets exprimées en lumière LED

3-(état de la lecture) surveiller la LDR pour entrée de lumière, faire la distinction entre point, tiret et l’espacement entre les lettres et les mots, une fois que j’ai une file d’attente de ma séquence de dot et tableau de bord que je veux utiliser un arbre binaire, à savoir la représentation de la lettre.

 #include <Keypad.h>#include "BinaryTree.h" #include "Node.h" #include 
 const byte rows = 4; const byte columns = 4; const int LedPin = 4; int holdDelay = 500; //how long each hold will last int dotDelay = 1000; int n = 2; // how many letters we want each key to represent int state = 0; //used to indicate if hold occured and for how long, state =0 no hold ,state =1 short hold , state = 2 long hold char key = 0; String text = ""; String Array[26] = {".-", "-...", "-.-.", "-..", ".", "..-.", "--.", "....", "..", ".---", "-.-", ".-..", "--", "-.", "---", ".--.", "--.-", ".-.", "...", "-", "..-", "...-", ".--", "-..-", "-.--", "--.." }; 
 //we will definne the key map as on the key pad: * notice each letter is spaced by 3 which our n char keys[rows][columns] = { {'a', 'c', 'e', 'g'}, {'i', 'k', 'm', 'o'}, {'q', 's', 'u', 'w'}, {'y', ' ', '#', '#'} }; 
 byte rowPins[rows] = {12, 11, 10, 9}; byte columnPins[columns] = {8, 7, 6, 5}; 
 Keypad keypad = Keypad(makeKeymap(keys), rowPins, columnPins, rows, columns); 
 const int ButtonPIN = 3; bool isReading = false; 
 QueueList words; bool sendData = false; bool lightOn = false; unsigned long elapsedTime = 0; unsigned long elapsedTimeOff = 0; unsigned long previousTime = 0; unsigned long previousTimeOff = 0; char data; BinaryTree* tree; void setup() { // put your setup code here, to run once: Serial.begin(9600); pinMode(ButtonPIN, INPUT); pinMode(LedPin, OUTPUT); digitalWrite(ButtonPIN, HIGH); 
 tree = NULL; tree = new BinaryTree(); } 
 void loop() { // put your main code here, to run repeatedly: if (digitalRead(ButtonPIN) == LOW) { isReading = !isReading; Serial.println("0"); delay(500); } 
 if (isReading) { char temp = keypad.getKey(); 
 if ((int)keypad.getState() == PRESSED) { 
 if (temp != 0) { key = temp; } } if ((int)keypad.getState() == HOLD) { state++; state = constrain(state, 1, n - 1); delay(holdDelay); } 
 if ((int)keypad.getState() == RELEASED) { 
 if (key == '#') { textToLight(text); text = ""; Serial.println("#"); } else if (key == ' ') { text += " "; Serial.println(" "); } else { 
 key += state; int index = key - 97; text += Array[index]; Serial.println(key); } state = 0; 
 } 
 } else { int data = analogRead(A0); if ( data < 100 && !lightOn) {//the moment the light went On elapsedTimeOff = millis() - previousTimeOff; previousTime = millis(); lightOn = true; if ( elapsedTimeOff > (7 - 1) * dotDelay ) { words.push('*'); } else if (elapsedTimeOff > 3 * dotDelay) { words.push(' '); } else {données int = analogRead(A0) ; if (données < 100 & &! lightOn) {//the moment la lumière passait elapsedTimeOff = millis() - previousTimeOff ; previousTime = millis() ; lightOn = true ; if (elapsedTimeOff > (7 - 1) * dotDelay) {words.push('*') ; /*else if (elapsedTimeOff >(3-1)*dotDelay) { ElseIf (elapsedTimeOff > 3 * dotDelay) {words.push(' ') ; }*/ } 
 if (lightOn) {//while light is On 
}*/ if (data > 70) {//the moment the light went off lightOn = false; previousTimeOff = millis(); elapsedTime = millis() - previousTime; 
 if (elapsedTime > (7 - 1)*dotDelay) { readData(); } else if (elapsedTime > (3 - 1)*dotDelay) { words.push('-'); 
 } else { words.push('.'); } } 
Si (elapsedTime > (7 - 1) * dotDelay) {readData() ; } 
 } else {words.push('.') ; delay(100); 
 } void textToLight(String text) { 
 for (int i = 0; i < text.length(); i++) { if (text.charAt(i) == '.') { digitalWrite(LedPin, HIGH); delay(dotDelay); digitalWrite(LedPin, LOW); delay(dotDelay * 3); 
 } else if ( text.charAt(i) == '-') { digitalWrite(LedPin, HIGH); delay(dotDelay * 3); digitalWrite(LedPin, LOW); delay(dotDelay * 3); } else { delay(dotDelay * 3); 
 } } 
 } 
 void readData() { ElseIf (text.charAt(i) == '-') {digitalWrite (LedPin, HIGH); delay(dotDelay * 3) ; digitalWrite (LedPin, LOW); delay(dotDelay * 3) ; Node* focus = tree->root; while (!words.isEmpty()) { char letter = words.pop(); if (letter == '.') { focus = focus->right; 
 } else if (letter == '-') { focus = focus->left; 
 } else if (letter == ' ') { char letter = focus->get_Key(); Serial.println(letter); focus = tree->root; 
 } else { char letter = focus->get_Key(); Serial.println(letter); focus = tree->root; Serial.println(" "); } } char letter = focus->get_Key(); Serial.println(letter); 
 } 
 #include "arduino.h"#include "Node.h" #include 
 class BinaryTree { 
 public: BinaryTree(); void initialize(); else {lettre char = focus -> get_Key() ; Serial.println(letter) ; mise au point = arbre -> racine ; Serial.println("") ; char letters[32] = {' ', 'e', 't', 'i', 'a', 'n', 'm', 's', 'u', 'r', 'w', 'd', 'k', 'g', 'o', 'h', 'v', 'f', ' ', 'l', ' ', 'p', 'j', 'b', 'x', 'c', 'y', 'z', 'q', ' ', ' ' }; QueueList words; Node* root; 
 }; 

Classe BinaryTree

 BinaryTree::BinaryTree() { 
 root =NULL; root = new Node(letters[0]); initialize(); 
 } 
 void BinaryTree::initialize() { QueueList nodes ; int counter = 0; nodes.push(root); 
 for (int i = 0; i < 15; i++) { Node* focus = nodes.pop(); focus->right =new Node(letters[i + 1 + counter]); focus->left =new Node(letters[i + 2 + counter]); 
 nodes.push(focus->right); nodes.push(focus->left); 
 counter++; 
 } } 
 #ifndef Node_h#define Node_h 
 #include "arduino.h" class Node; class Node { 
 public: Node(char _key); Node* right; Node* left; char get_Key(); private: char key; //Node child; }; 
 Node::Node(char _key) { key = _key;} 
 char Node::get_Key() { 

Classe de nœud

 return key; } 
 #endif 
public : nœud (char _key) ; Noeud * droite ; Noeud * gauche ; char get_Key() ; privé : clé de char ; Enfant du nœud ; using UnityEngine;using System.Collections; using UnityEngine.UI; using System.IO.Ports; public class Controller : MonoBehaviour { 
 public Sprite onSprite, offSprite; public Image readImage, writeImage; public Text lcd; 
 private SerialPort port = new SerialPort( + "COM11", 9600); private bool isReading = false; // Use this for initialization void Start () { port.Open(); port.ReadTimeout = 25; StartCoroutine(readString()); } // Update is called once per frame void Update () { 
retourner la clé ; if (!isReading) { readImage.sprite = onSprite; writeImage.sprite = offSprite; 
 } 

Articles Liés

Traducteur de Code Morse

Traducteur de Code Morse

avez-vous déjà nécessaire pour signaler une baisse d'approvisionnement secrètes, ou pris part à une mission d'espionnage clandestin ?  Dans l'affirmative, vous pourriez avoir utilisé le Code Morse.  Cependant, pour ceux d'entre nous qui aiment encore
Comment faire un Bracelet de Code Morse sur un métier à tisser perles

Comment faire un Bracelet de Code Morse sur un métier à tisser perles

J'aime les bijoux message secret, donc quand j'avais des projets de remue-méninges pour ma nouvelle perle à tisser, je savais que je devais intégrer un message secret en quelque sorte. Ma solution ? Combiner le métier à tisser perles avec le Code Mor
Programme un chapelet de lumières de Noël à clignoter le code morse avec Arduino & Snap Circuits

Programme un chapelet de lumières de Noël à clignoter le code morse avec Arduino & Snap Circuits

c'est un projet de mon fils Dylan (9) et j'ai mis ensemble en utilisant une platine Arduino, un ensemble de Circuit Snap et un chapelet de lumières de Noël.Ce que vous devez :Un Arduino : Un Arduino est un ordinateur sur un circuit unique que vous po
Throwduino Basic - détection de lumière clignotant Throwie avec 1 partie ajoutée - maintenant avec le Code Morse

Throwduino Basic - détection de lumière clignotant Throwie avec 1 partie ajoutée - maintenant avec le Code Morse

Throwies sont grands.  Ils ont un nombre de pièces minimum - 2 ou 3 selon que vous utilisiez un aimant - et de produisent un grand effet.  Ils sont très bon marché et facile, mais pas très efficace :1) ils sont tout le temps, donc en moyenne, ils per
Le Code Morse encodeur/décodeur en utilisant un LinkIt

Le Code Morse encodeur/décodeur en utilisant un LinkIt

Il s'agit du deuxième projet à l'aide de LinkIt une planche dans le précédent instructable que je vous ai montré comment construire une ruban de mesure de distance.Dans ce tutoriel je vais vous montrer comment faire un Code Morse décodeur/encodeur ut
Code Morse Arduino

Code Morse Arduino

Quand j'étais plus jeune j'ai commencé à pratiquer pour ma licence radioamateur mais ne se colle pas avec ce assez longtemps pour maîtriser le code morse. Avec ce projet, vous pouvez convertir n'importe quel texte en code morse. Ce projet vous montre
Construire un Code Morse portable

Construire un Code Morse portable

Codes sont utilisés pour envoyer des messages secrets. Mais, ils sont utilisés pour de nombreuses autres raisons : efficacité, précision, fiabilité et identité. Les protocoles Internet sont un type de code. Les images et la musique vous regarder, et
Arduino Code Morse bouclier

Arduino Code Morse bouclier

code Morse a été la percée qui a rendu possible sur de longues distancescommunication à l'ère du télégraphe. Le code représentecaractères alphanumériques par intervalles courts et longs du signal--cesles familiers points et tirets. Pendant de nombreu
Apprendre le Code Morse...

Apprendre le Code Morse...

Jamais des quoi d'étonnant que bip sonore entendu dans un sous-marin au cinéma ? Eh bien vous venez d'entendre le code Morse est dirigé vers un autre décodeur. Le code Morse a été si populaire (à l'armée) depuis la seconde guerre mondiale, mais de no
Émetteur de Code Morse de Emergancy

Émetteur de Code Morse de Emergancy

Pieta House fournit une approche libre, thérapeutique aux personnes qui sont en détresse suicidaire et ceux qui se livrent à l'automutilation. Si vous ou un proche a besoin d'aide vous pouvez les contacter au : http://www.pieta.ie/index.php/contact-u
Expérience pour le plaisir : Encrypter le Code Morse en utilisant Arduino et Smartphone!!!

Expérience pour le plaisir : Encrypter le Code Morse en utilisant Arduino et Smartphone!!!

Eh bien, Bonjour à tout le monde!! Comment allez-vous, les gars ? J'espère que tout le monde est ok et de bonne humeur. Aujourd'hui, je voudrais partager avec vous sur une expérience simple que j'ai fait pendant mon temps libre. On l'appelle l'encryp
Code Morse avec tactile capacitif !

Code Morse avec tactile capacitif !

Hejo ! Aujourd'hui, je vais vous montrer comment faire un thingamajigger de code morse tactile capacitif ! Ses très cool et amusant pour un projet de base arduino. Il est assez facile et l'apprentissage sur les commutateurs tactiles capacitives est u
Lampe code Morse

Lampe code Morse

une lampe base. Je l'utilise pour le code morse.Étape 1 : Faire vous avez besoin.1 bac à piles.2. flash ampoule3. fils conducteurs en métal4. joint sur interrupteurpince crocodileÉtape 2 : Faire mettre des fils sur le compartiment. Fixez le dessus au
Code morse simple jouet (fonctionne avec les câbles de téléphone rj11)

Code morse simple jouet (fonctionne avec les câbles de téléphone rj11)

cette instructable vous montrera comment faire un jouet simple code morse pour jouer avec. Il existe des 2 boîtes avec un bouton et une lumière.Etape 1: le circuit le circuit est vraiment simple.C'est 2 circuits avec interrupteur et batterie + lumièr