මෙම කේතයේදී ඔබ රේඛීය මොනිටරයෙන් ලබාදෙන ඉංග්රීසි වදන් මෝස් සංකේතවලට හරවා ප්රතිදානය කරයි.


//විචල්ය
int ledPin = 12; // බල්බය 12 අග්රය
//A-Z අකුරු මෝස් කේත letter අරාවට
char* letters[] = {
".-", "-...", "-.-.", "-..", ".", "..-.", "--.", "....", "..", // A-I
".---", "-.-", ".-..", "--", "-.", "---", ".--.", "--.-", ".-.", // J-R
"...", "-", "..-", "...-", ".--", "-..-", "-.--", "--.." // S-Z
};
// 0 - 9 අංක සඳහා මෝස් කේත numbers අරාවට
char* numbers[] = {"-----", ".----", "..---", "...--", "....-", ".....", "-....",
"--...", "---..", "----."};
int dotDelay = 200;// dot සංඥා විරාමය
void setup() {
pinMode(ledPin, OUTPUT); //ledPin ප්රතිදානය ලෙස
Serial.begin(9600); // රේඛීය සන්නිවේදනය ආරම්භය
}
void loop() {
char ch; // අකුරකි
if (Serial.available()) {// දත්තයක් ලැබී ඇතිනම්
ch = Serial.read(); // එක අකුරක් කියවන්න
//ch අනුව letters අරාවේ කේත ගන්න
if (ch >= 'a' && ch <= 'z') {
//a - z අකුරක් නම් සංඥා කරන්න
flashSequence(letters[ch - 'a']);
} else if (ch >= 'A' && ch <= 'Z') {
//A - Z අකුරක් නම් සංඥා කරන්න
flashSequence(letters[ch - 'A']);
} else if (ch >= '0' && ch <= '9') {
//0 - 9 නම් සංඥා කරන්න
flashSequence(numbers[ch - '0']);
} else if (ch == ' ') { //හිස් තැනක් නම්
delay(dotDelay * 4); // විරාමය 4 ගුණයක්
}
}
}
void flashSequence(char * sequence) {
int i = 0;
while (sequence[i] != NULL) { //රටාව අවසාන වනතුරු
//ඩොට් හෝ ඩෑෂ් රටාව යවන්න
// a යන්න තිත සමග ඉර (".-") වේ.
flashDotOrDash(sequence[i]);
i++; //ඊ ලඟ කේතය
}
delay(dotDelay * 3); // අකුරු අතර විරාමය 3 ගුණයක්
}
void flashDotOrDash(char dotOrDash) {
digitalWrite(ledPin, HIGH);
if (dotOrDash == '.') { // තිතක් නම්
delay(dotDelay); //එක විරාමයක්
} else // ඉරක් නම්
{
delay(dotDelay * 3); // විරාම 3 ක්
}
digitalWrite(ledPin, LOW); //බල්බය නිවන්න
delay(dotDelay); // අකුරකට එක විරාමයක්
}
ශිල්ප 64