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




//විචල්‍ය
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); // අකුරකට එක විරාමයක්
}
(c) Shilpa Sayura Foundation 2006-2017