Morsealfabetet översättare (Light-> Text & Text-> ljus) (4 / 5 steg)

Steg 4: Kod: Arduino



den final koden hittar du här (se till att lägga till BinaryTree och noden klasser i MorseCode.ino fil)

Morse Code

koden är indelad i 3 steg:

1 - växla mellan läsa staten och skriva staten genom en tryckknapp

2 - (skrift staten) ta textinmatning från knappsatsen och konvertera till en sekvens av prickar och streck uttryckt som LED-ljus

3-(behandlingen state) övervaka LDR för ljus input, skilja mellan Dot, Dash och avstånd mellan bokstäver och ord, när jag har en kö av min dot och dash sekvens jag vill använda ett binärt träd för att ta reda på den skrivelse framställningen.

#include < Keypad.h >
#include "BinaryTree.h"
#include "Node.h"
#include

CONST byte rader = 4;
CONST byte kolumner = 4;
CONST int LedPin = 4;
int holdDelay = 500. Hur länge varje lastrum räcker
int dotDelay = 1000;
int n = 2; Hur många bokstäver vill vi varje nyckel representerar
int state = 0; används för att ange om håll uppstod och hur länge, statligt = 0 ingen is, statliga = 1 kort håll, staten = 2 långa håll
char nyckel = 0;
String text = "";
Sträng Array [26] = {".-", "-...", "-.-.", "-..",".",".. -.", "--.", "....", "..", ".---", "-.-", ".-..", "--",
"-.", "---", ".--.", "--.-", ".-.", "...", "-", ".. -", "...-", ".--", "-.. -", "-.--", "--.."
};

Vi kommer definne nyckel karta som på tangentbordet: * meddelande varje bokstav är fördelade i 3 som våra n
char nycklar [rader] [kolumner] =
{
{'a', 'c', 'e', 'g'},
{'i', 'k', 'm', 'o'},
{'q', 's', 'u', 'w'},
{'y', ' ', '#', '#'}
};

byte rowPins [rader] = {12 11, 10, 9};
byte columnPins [kolumner] = {8, 7, 6, 5};

Tangentbordet knappsatsen = Keypad(makeKeymap(keys), rowPins, columnPins, rader, kolumner);

CONST int ButtonPIN = 3;
bool isReading = false;

QueueList ord;
bool sendData = false;
bool lightOn = false;
osignerade långa elapsedTime = 0;
osignerade långa elapsedTimeOff = 0;
osignerade långa previousTime = 0;
osignerade långa previousTimeOff = 0;
röding data.
BinaryTree * träd.
void setup() {
sätta din installation kod här, om du vill köra en gång:
Serial.BEGIN(9600);
pinMode (ButtonPIN, indata);
pinMode (LedPin, OUTPUT);
digitalWrite (ButtonPIN, hög);

träd = NULL;
träd = nya BinaryTree();
}

void loop() {
sätta din huvudsakliga kod här, för att köra flera gånger:
om (digitalRead(ButtonPIN) == låg) {
isReading =! isReading;
Serial.println("0");
Delay(500);
}

om (isReading) {
char temp = keypad.getKey();

om ((int)keypad.getState() == PRESSED) {

om (temp! = 0) {
nyckel = härda;
}
}
om ((int)keypad.getState() == HOLD) {
statliga ++;
State = begränsa (staten, 1, n - 1);
Delay(holdDelay);
}

om ((int)keypad.getState() == RELEASED) {

om (nyckel == "#") {
textToLight(text);
text = "";
Serial.println("#");
}
annars om (nyckel == "") {
text + = "";
Serial.println("");
}
annat {

+ nyckel = staten.
heltal index = nyckel - 97.
text + = Array [index];
Serial.println(Key);
}
State = 0;

}

}
annat {
int data = analogRead(A0);

om (data < 100 & &! lightOn) {//the ögonblick ljuset gick på
elapsedTimeOff = millis() - previousTimeOff;
previousTime = millis();
lightOn = sant;
om (elapsedTimeOff > (7 - 1) * dotDelay) {
Words.push('*');
}
annars om (elapsedTimeOff > 3 * dotDelay) {
Words.push(' ');
}

/ * annars om (elapsedTimeOff >(3-1) * dotDelay) {

}*/
}

om (Benny) {//while är tänd

om (data > 70) {//the ögonblick ljuset gick bort
lightOn = false;
previousTimeOff = millis();
elapsedTime = millis() - previousTime;

om (elapsedTime > (7 - 1) * dotDelay) {
readData();
}
annars om (elapsedTime > (3 - 1) * dotDelay) {
Words.push('-');

}
annat {
Words.push('.');
}
}

}

}

Delay(100);

}
void textToLight(String text) {

för (int jag = 0; jag < text.length(); i ++) {
om (text.charAt(i) == ".") {
digitalWrite (LedPin, hög);
Delay(dotDelay);
digitalWrite (LedPin, låg);
Delay(dotDelay * 3);

}
annat if (text.charAt(i) == '-') {
digitalWrite (LedPin, hög);
Delay(dotDelay * 3);
digitalWrite (LedPin, låg);
Delay(dotDelay * 3);
}
annat {
Delay(dotDelay * 3);

}
}

}

void readData() {

Nod * fokus = träd -> root;
medan (! words.isEmpty()) {
char bokstav = words.pop();
om (brev == ".") {
fokus = fokus -> höger;

}
annars om (brev == '-') {
fokus = fokus -> vänster;

}
annars om (brev == "") {
char bokstav = fokus -> get_Key();
Serial.println(Letter);
fokus = träd -> root;

}
annat {
char bokstav = fokus -> get_Key();
Serial.println(Letter);
fokus = träd -> root;
Serial.println("");
}
}
char bokstav = fokus -> get_Key();
Serial.println(Letter);

}

BinaryTree klass

#include "arduino.h"
#include "Node.h"
#include

klass BinaryTree {

offentlig:
BinaryTree();
void initialize();

char bokstäver [32] = {"", "e", 't ","i","a", 'n", är ', 's', "u", "r", "w", hade ","k","g"," o "h", "v", "f",
' ', 'l', ' ', 'p', 'j', 'b', 'x', 'c', 'y', 'z', 'q', ' ', ' '
};

QueueList ord;
Nod * rot.

};

BinaryTree::BinaryTree() {

rot = NULL;

rot = nya Node(letters[0]);
Initialize();

}

void BinaryTree::initialize() {

QueueList noder.
int counter = 0;

Nodes.push(root);

för (int jag = 0; jag < 15; i ++) {
Nod * fokus = nodes.pop();

fokus -> höger = ny nod (bokstäver [jag + 1 + counter]);
fokus -> vänster = ny nod (bokstäver [jag + 2 + counter]);

Nodes.push (fokus -> höger).
Nodes.push (fokus -> vänster).

räknaren ++;

}
}

Node klass

#ifndef Node_h
#define Node_h

#include "arduino.h"
klass-nod.
klass nod {

offentlig:
Nod (char _key);

Nod * rättighet.
Nod * vänster;
char get_Key();
privat:
char nyckel;
Nod barn;
};

Node::Node (char _key) {
nyckel = _key;}

char nod:: get_Key() {

returnera nyckel;
}

#endif

Se Steg
Relaterade Ämnen

Morsealfabetet översättare

har du någonsin behövs att signalera en förtäckt leverans droppe eller deltagit i en hemlig spion uppdrag? Om så är fallet, kanske du har använt morsekod. Men för dem av oss som älskar fortfarande ett äventyr och en utmaning, utan att behöva lära sig...

Hur: Skicka Audio/Your röst över en stråle av ljus

har du någonsin sett de musik-synkroniserad tänder innan? De är ganska snyggt. Denna intructable visar dig hur man gör en enhet som skickar din röst eller någon annan form av ljud över en ljusstråle. Bilden nedan är den färdiga produkten. Jag tyckte...

Baserade Arduino remote översättare

Det finns 3 fjärrkontrollen är bara att titta på min TV, för TV, sätta topp låda och sound bar. Förfarande för att titta på TV är byta på TV att sätta sin källa till A / V, inkoppling ljudsystem och sätta dess källa för aux och inkoppling sätta topp...

LEGO LED LIGHT (ficklampa, led-ljus)

detta instructable visar dig hur man gör en cool och mycket användbar mini LED blixt ljus som kommer att vara mycket användbar.Jag vet inte om detta har gjorts innan. Jag bestämde mig att göra en eftersom jag ville göra något själv eftersom jag tycke...

Light Cube med ljus remsa

1-) polykarbonat glas turkos halvtransparent2-) strip LED lampa vit färg (http://www.signal.com.tr/arananurun.php?urun=SELS-3528W30-12&&id=147671 )3-) tråd & lödkolv4-) polykarbonat glas lim (bästa lösningen är kloroform vätska via spruta)...

Teckenspråk översättare

pågår...

Hur man gör en morsekod armband på en pärla vävstol

Jag älskar hemligt meddelande smycken, så när jag var brainstorming projekt för min nya pärla vävstol, jag visste att jag var tvungen att införliva ett hemligt meddelande på något sätt. Min lösning? Kombinera vävstol beading med morsekod.Jag har tagi...

Tinkercad: Lätt att skapa kurva Text

Uppskattar särskilt verkligen Nicola Hoelzl (som är en översättare) skickade bra feedback och modifierade tutorials för att göra det bättre. Nu artikeln uppdateras med Nicolas bra förslag, Vänligen njuta av behandlingen. Tack så mycket, Nicola!Tinker...

Lätt Texta Gas pistol

för dig som gillar projektiler och kanoner. Jag ska visa dig hur man gör en ganska cool texta pistolen ur en texta och en deoderant flaska.Detta är faktiskt och gamla idé tagen från en vän och delvis förbättras.Steg 1: Få delar Så, i princip du behöv...

Java programmering Part2(Text and running)

I din java.java bör du ha koden-allmän klass java {offentliga statisk void main (String args[]) {}}Så om vi ska göra Javaprogram behöver vi är text och koden för en enkel textrad-System.out.println ("Hej Java programmering");I konsolen visas ord...

Inkscape skakis Text handledning

enkla handledning för inkscape på att göra skakis text.Inkscape vektor grafikprogrammet är gratis och tillgänglig för Win, Mac, Linux.Det liknar Adobe Illustrator.Vektorgrafik kan blåsas till storleken av en ladugårdsdörr utan att få ojämn.Men ibland...

IPad ljus målning

händighet av iPad med pekskärmen och alla apps kan göra det en killer enhet för e-post och arga fåglar, men det är också ganska söt för ljus målning. Måla meddelanden och bilder i luften av svepande iPad framför en kamera med en sloooow slutartid.Låt...

5 watts LED Table Light

Här gjordes för min mammas symaskin men kan anpassas för alla typer av bord. De mått som används i detta var för symaskinen tabellen, alltså du måste justera den efter dina behov.Lite bakgrund om detta projekt, Känn dig fri att hoppa över den, om du...

Candle hantverk: Hur man gör vackra ljus

ljus Craft blev min besatthet när jag såg några vackert utformad ljus och jag längtade så mycket att lära sig konsten av ljustillverkning. Bristande faciliteter fick mig att beställa en inlärares ljustillverkning kit online. Startpaket tillhandahålls...

Hur man gör en energi effektiv mångsidig ljus gjorda av återvunnet glas

om du är en av dessa konstiga människor som mig som har en massa rester av glas om huset så är det ett stort projekt att göra något vackert och åtminstone delvis användbart.(Genom att detta projekt är antingen en LED (Light Emitting Diode) ljus inneh...

Hur man skapar en ljus Stop Motion Video

TITTA PÅ DENNA VIDEO FÖRST!!! Detta är den faktiska filmen och är grunden för hela instructable! NJUT!Klicka på denna länk om videon inte laddas för dig! Jag tyckte att den inte skulle alltid laddas, och Tja måste du se videon för att verkligen se pr...

DIY Video ljus från en gammal fluorescerande ljus

Vi har arbetat med att uppdatera vår hemmastudio och beslutat att arbeta på belysning. Vi valde att arbeta på fyllning belysningen (hjälp att minska skuggorna från några huvudsakliga lampor) och bli av med den fluorescerande armatur installerat av de...

Leaf Light: En inomhus trädgård Monitor

Har du någonsin kämpat för att hålla liv i en växt? Önskat din anläggning skulle kunna berätta om det behövs ska vattnas eller lite närmade sig fönstret? Bygga en Leaf lampa för dina krukväxter för att hjälpa dig att berätta om de får tillräckligt me...

LED uteplats paraply Jar ljus

denna sommar har varit ganska bra här på den engelska sydkusten. Fick gräset skära, föll förstörelse på några ohyggligt övervuxen växter, trädgården såg ut mer som en trädgård och mindre som en liten wildlife bevara. Mer Alan Titchmarsh och mindre Bi...