Code: Select all
#include
#include
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
#define dot 0xE916FF00 // Button 0
#define line 0xF30CFF00 // Button 1
#define space 0xE718FF00 // Button 2
#define del 0xBB44FF00 // Rewind button
#define play 0xBF40FF00 // Play/pause button
String morse = "";
String morse2 = "";
const int buzzer = 6;
bool dotA = false;
bool lineA = false;
bool spaceA = false;
bool delA = false;
bool playA = false;
void dotF();
void lineF();
void spaceF();
void delF();
void playF();
void setup() {
pinMode(buzzer, OUTPUT);
lcd.begin(16, 2);
IrReceiver.begin(10, ENABLE_LED_FEEDBACK);
Serial.begin(9600);
}
void loop() {
lcd.setCursor(0, 0);
if(morse.length() >= 16) {
lcd.print(morse);
lcd.setCursor(0, 1);
lcd.print(morse2);
} else if (morse.length() < 16) {
lcd.print(morse);
}
if (IrReceiver.decode()) {
switch (IrReceiver.decodedIRData.command) {
case dot:
dotF();
break;
case line:
lineF();
break;
case space:
spaceF();
break;
case del:
delF();
break;
case play:
playF();
break;
}
}
}
void dotF() {
if (!dotA) {
lcd.clear();
if (morse.length() < 16) {
morse = morse + ".";
} else {
morse2 = morse2 + "."
}
dotA = true;
} else {
dotA = false;
}
delay(50);
}
void lineF() {
if (!lineA) {
lcd.clear();
if (morse.length() < 16) {
morse = morse + "-";
} else {
morse2 = morse2 + "-";
}
lineA = true;
} else {
lineA = false;
}
delay(50);
}
void spaceF() {
if (!spaceA) {
lcd.clear();
if (morse.length() < 16) {
morse = morse + " ";
} else {
morse2 = morse2 + " ";
}
spaceA = true;
} else {
spaceA = false;
}
delay(50);
}
void delF() {
if (!delA) {
lcd.clear();
if (morse.length() < 16) {
morse.remove(morse.length());
} else {
morse2.remove(morse2.length());
}
delA = true;
} else {
delA = false;
}
}
void playF() {
String fullMorse = morse + morse2;
for (int i = 0; i < fullMorse.length(); i++) {
if (fullMorse.charAt(i) == '.') {
digitalWrite(buzzer, HIGH);
delay(100);
digitalWrite(buzzer, LOW);
delay(50);
} else if (fullMorse.charAt(i) == '-') {
digitalWrite(buzzer, HIGH);
delay(250);
digitalWrite(buzzer, LOW);
delay(50);
} else if (fullMorse.charAt(i) == ' ') {
delay(500);
}
}
}
Mobile version