Een Morse Code vertaler (licht-> tekst & tekst-> licht) (4 / 5 stap)

Stap 4: Code: Arduino


de definitieve code kan hier gevonden worden (zorg ervoor dat BinaryTree en knooppunt klassen toevoegen aan MorseCode.ino bestand)

Morse Code

de code is onderverdeeld in 3 stappen:

1 - schakelen tussen lezen staat en de schrijven staat door middel van een drukknop

2 - (schrijven staat) tekst invoer via het toetsenbord en omzetten in een reeks puntjes en streepjes uitgedrukt als LED-licht

3-(lezing staat) volgen de LDR lichte invoerfilter, onderscheid maken tussen stip, streepje en de afstand tussen letters en woorden, zodra ik heb een wachtrij van mijn stip en dash sequentie die ik wil gebruiken een binaire boom te achterhalen van de vertegenwoordiging van de brief.

 #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 {int gegevens = analogRead(A0); als (gegevens < 100 & &! lightOn) {//the moment het licht ging op elapsedTimeOff = millis() - previousTimeOff; previousTime = millis(); lightOn = true; als (elapsedTimeOff > (7 - 1) * dotDelay) {words.push('*'); /*else if (elapsedTimeOff >(3-1)*dotDelay) { anders als (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('.'); } } 
Als (VerstrekenTijd > (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() { else if (text.charAt(i) == '-') {digitalWrite (LedPin, hoge); delay(dotDelay * 3); digitalWrite (LedPin, laag); 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 {char brief = focus -> get_Key(); Serial.println(letter); focus = boom -> wortel; 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; 
 }; 

BinaryTree klasse

 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() { 

Knooppunt klasse

 return key; } 
 #endif 
publiek: knooppunt (char _key); Knooppunt * recht; Knooppunt * links; char get_Key(); privé: char sleutel; Knooppunt kind; 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 () { 
terug toets; if (!isReading) { readImage.sprite = onSprite; writeImage.sprite = offSprite; 
 } 

Gerelateerde Artikelen

Morse Code vertaler

Morse Code vertaler

heb je ooit nodig om het signaal van een daling van de heimelijke levering, of deelgenomen aan een clandestiene spion missie?  Zo ja, wellicht hebt u Morse Code gebruikt.  Echter, voor degenen onder ons die nog steeds hou van een avontuur en een uitd
Bouwen van een Morse Code draagbaar

Bouwen van een Morse Code draagbaar

Codes worden gebruikt om geheime berichten te verzenden. Maar ze worden gebruikt voor tal van andere redenen: efficiëntie, nauwkeurigheid, betrouwbaarheid en identiteit. Internet-protocollen zijn een soort code. De beelden en de muziek u kijken, en d
Scout Project: Hoe maak je een Morse Code Oscillator / Telegraph Machine

Scout Project: Hoe maak je een Morse Code Oscillator / Telegraph Machine

ik heb geschreven dit Instructable, zodat u kunt zien hoe de bouw van bovenstaande hout in plaats van kartonnen kladjes (gek genoeg, de kaart is mijn gebruikelijke I'ble medium... Ga en kijk op mijn andere I'bles, het ook aansluiten op mijn I'ble voo
Hoe maak je een armband van de Morse-Code op een Bead Loom

Hoe maak je een armband van de Morse-Code op een Bead Loom

Ik hou van geheime boodschap sieraden, dus toen ik brainstormen projecten voor mijn nieuwe kraal weefgetouw, ik wist dat ik moest nemen een of andere manier een geheime boodschap. Mijn oplossing? Combineer loom beading met Morse Code.Ik heb ook zowel
Morse Code Encoder/Decoder met LinkIt One

Morse Code Encoder/Decoder met LinkIt One

Dit is het tweede project met behulp van de LinkIt een boord in de vorige instructable toonde ik u hoe te bouwen van een afstand meetlint.In deze tutorial ga ik om u te tonen hoe maak je een Morse Code Decoder/Encoder met de LinkIt One. De output kan
Worden Morse Code zender

Worden Morse Code zender

Pieta huis biedt een gratis, therapeutische aanpak voor mensen die aan suïcidale nood- en degenen die deelnemen aan zelfbeschadiging. Als u of iemand dicht bij je hulp nodig heeft kunt u contact met hen op: http://www.pieta.ie/index.php/contact-us.Ma
Morse code lamp

Morse code lamp

een fundamentele lamp. Ik gebruik het voor morse code.Stap 1: u nodig hebt om het te maken.1. batterijen compartiment.2. flits lamp3. draden metalen geleiders4. aangesloten op uit-schakelaaralligator clipStap 2: Om er draden te zetten op het klepje v
USB-Arduino Morse Code sleutel

USB-Arduino Morse Code sleutel

Ooit wilde om te typen op een computer met een morse code sleutel of te leren/leren van morse code? U bent op de juiste pagina!Voor mijn andere projecten, check out calvinliang.meStap 1: Verzamel materialen• 1 × Arduino/waar Micro• 1 × 3v zoemer• 1 ×
Draadloze deurbel Morse Code zender en printer

Draadloze deurbel Morse Code zender en printer

In dit instructable, ik zal u tonen hoe te wijzigen van een draadloze deurbel in een Morse code zender en ontvanger. Ook, zal ik u tonen hoe te maken van een real-time morsecode printer met behulp van eenvoudige onderdelen.Achtergrondinformatie:Morse
Morse Code Messenger

Morse Code Messenger

We hebben allemaal gezien het in spion films: Morse code. Een collectie van lange en korte gonst die in letters en woorden vertalen. Dit instructable leert u om een Morse code communicator.Stap 1: materialen ZoemerBreadboardJumper dradenLinkIT een10
Arduino tekst naar Morse code

Arduino tekst naar Morse code

Hallo!Dit is mijn eerste instractableIk heb geschreven onder leiding van een klein programma in tekst omzetten in Morse code en weergeven met behulp van ArduinoZoemer kan ook vrij gemakkelijk worden toegevoegd
Throwduino Basic - licht-Sensing knippert Throwie met 1 deel van de toegevoegde - nu met Morse Code

Throwduino Basic - licht-Sensing knippert Throwie met 1 deel van de toegevoegde - nu met Morse Code

Throwies zijn geweldig.  Ze hebben een minimale delen graaf - 2 of 3 afhankelijk van of u een magneet - en produceren een groot effect.  Ze zijn erg goedkoop en gemakkelijk maar niet zeer efficiënt:1) ze zijn op de hele tijd, dus gemiddeld ze afval d
WeggUp - een slaapgedeelte cyclus en licht wekker

WeggUp - een slaapgedeelte cyclus en licht wekker

Ik heb vaak het probleem, dat ik problemen ondervindt bij het opstaan in de ochtend, terwijl op hetzelfde moment, ik heb problemen met in slaap vallen in de nacht.Ik heb verschillende mogelijkheden om zowel gemakkelijker gecontroleerd.Opstaan in de o
Hoe maak je een HEXBUG nano door licht worden geactiveerd.

Hoe maak je een HEXBUG nano door licht worden geactiveerd.

Deze instructie is om een HEXBUG nano door licht worden geactiveerd.HEXBUG nano is een leuk speeltje welke bewegingen als een echt insect. Ik wil gebruiken om te verras iemand die open het bevatten van een dozijn van de HEXBUG nano. Maar de HEXBUG he