Skip to content
This repository was archived by the owner on Aug 5, 2021. It is now read-only.
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion .vscode/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,5 +6,6 @@
"arduino.additionalUrls": "",
"arduino.logLevel": "info",
"arduino.enableUSBDetection": true,
"C_Cpp.intelliSenseEngine": "Default"
"C_Cpp.intelliSenseEngine": "Default",
"C_Cpp.clang_format_fallbackStyle": "{ BasedOnStyle: Google, IndentWidth: 4, ColumnLimit: 0}"
}
3 changes: 2 additions & 1 deletion MorsDuino.code-workspace
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,8 @@
"files.associations": {
"vector": "cpp",
"iosfwd": "cpp",
"iterator": "cpp"
"iterator": "cpp",
"__locale": "cpp"
}
}
}
20 changes: 1 addition & 19 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,22 +2,4 @@

The lightweight Arduino Library for generating Morse code on LEDs, light strips, and speakers. Every Arduino board is supported(library uses standart Wiring functions).

## What it can do

## Usage

``` C++
#include "MorsDuino.h"

MorsDuinoLed led(13); // Make new instance of MarsDuinoLed class with name 'led'

void setup() {
Serial.begin(9600); // Start serial on 9600 baud rate
}

void loop() {
while(!Serial.available()); // Wait until serial has some data
char data = Serial.read(); // Read data
led.displayChar(data); // Draw morse on 13 LED
}
```
To see tutorials about using MorsDuino, visit Wiki.
Empty file added examples/Led/RgbSosBlink.ino
Empty file.
Empty file added examples/Led/SosBlick.ino
Empty file.
2 changes: 1 addition & 1 deletion library.properties
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
name=MorseDuino
version=1.0
version=2.0-beta2
author=GGorAA
maintainer=GGorAA
sentence=Arduino library for generation morse code and displaying it on LEDs
Expand Down
240 changes: 240 additions & 0 deletions src/Led.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,240 @@
#include "Arduino.h"
#include "MorsDuino.h"

void MorsDuinoLed::_dot(int count = 1) {
int num = 1;
do {
digitalWrite(_pin, HIGH);
delay(125);
digitalWrite(_pin, LOW);
delay(125);
num++;
} while (num <= count);
}

void MorsDuinoLed::_dash(int count = 1) {
int num = 1;
do {
digitalWrite(_pin, HIGH);
delay(500);
digitalWrite(_pin, LOW);
delay(125);
num++;
} while (num <= count);
}

void MorsDuinoLed::_delaySeparator(int type) {
if (type == 1) {
delay(_letterSeparatorDelay);
} else if (type == 2) {
delay(_wordSeparatorDelay);
}
}

void MorsDuinoLed::displayString(String text) {
size_t numberOfElements = sizeof(text) / sizeof(text[0]);
for (int i = 0; i <= numberOfElements; i++) {
MorsDuinoLed::displayChar(text[i]);
}
}

void MorsDuinoLed::displayChar(char character) {
switch (character) {
// Numbers
case '1':
_dot();
_dash(4);
_delaySeparator(1);
break;
case '2':
_dot(2);
_dash(3);
_delaySeparator(1);
break;
case '3':
_dot(3);
_dash(2);
_delaySeparator(1);
break;
case '4':
_dot(4);
_dash(1);
_delaySeparator(1);
break;
case '5':
_dot(5);
_delaySeparator(1);
break;
case '6':
_dash(1);
_dot(4);
_delaySeparator(1);
break;
case '7':
_dash(2);
_dot(3);
_delaySeparator(1);
break;
case '8':
_dash(3);
_dot(2);
_delaySeparator(1);
break;
case '9':
_dash(4);
_dot(1);
_delaySeparator(1);
break;
case '0':
_dash(5);
_delaySeparator(1);
break;
// English alphabet
case 'a':
_dot();
_dash();
_delaySeparator(1);
break;
case 'b':
_dash();
_dot(3);
_delaySeparator(1);
break;
case 'c':
_dash();
_dot();
_dash();
_dot();
_delaySeparator(1);
break;
case 'd':
_dash();
_dot(2);
_delaySeparator(1);
break;
case 'e':
_dot();
_delaySeparator(1);
break;
case 'f':
_dot(2);
_dash();
_dot();
_delaySeparator(1);
break;
case 'g':
_dash(2);
_dot();
_delaySeparator(1);
break;
case 'h':
_dot(4);
_delaySeparator(1);
break;
case 'i':
_dot(2);
_delaySeparator(1);
break;
case 'j':
_dot();
_dash(3);
_delaySeparator(1);
break;
case 'k':
_dash();
_dot();
_dash();
_delaySeparator(1);
break;
case 'l':
_dot();
_dash();
_dot(2);
_delaySeparator(1);
break;
case 'm':
_dash(2);
_delaySeparator(1);
break;
case 'n':
_dash();
_dot();
_delaySeparator(1);
break;
case 'o':
_dash(3);
_delaySeparator(1);
break;
case 'p':
_dot();
_dash(2);
_dot();
_delaySeparator(1);
break;
case 'q':
_dash(2);
_dot();
_dash();
_delaySeparator(1);
break;
case 'r':
_dot();
_dash();
_dot();
_delaySeparator(1);
break;
case 's':
_dot(3);
_delaySeparator(1);
break;
case 't':
_dash();
_delaySeparator(1);
break;
case 'u':
_dot(2);
_dash();
_delaySeparator(1);
break;
case 'v':
_dot(3);
_dash();
_delaySeparator(1);
break;
case 'w':
_dot();
_dash(2);
_delaySeparator(1);
break;
case 'x':
_dash();
_dot(2);
_dash();
_delaySeparator(1);
break;
case 'y':
_dash();
_dot();
_dash(2);
_delaySeparator(1);
break;
case 'z':
_dash(2);
_dot(2);
_delaySeparator(1);
break;
case ' ':
_delaySeparator(2);
break;
default:
break;
}
}

void MorsDuinoLed::displayInt(int number) {
String numbers = String(number);
size_t numberOfElements = sizeof(numbers) / sizeof(numbers[0]);
for (int i = 0; i <= numberOfElements; i++) {
MorsDuinoLed::displayChar(numbers[i]);
}
}
Loading