ආඩියුනෝවේ සවිකල ඔබන බොත්තම් යතුරක් මගින් ලබාදෙන මෝස් සංඥා , විකේතනය (decode)කර පරිගණකයේ රේඛීය මොනිටරයේ පෙන්වීම අපගේ අදහසයි. ඒ සඳහා පහත කේතය භාවිතා කරමු.
unsigned long signal_len; // සංඥා කාලය unsigned long t1; // යතුර එබූ වේලාව unsigned long t2; // යතුර නිදහස් කල වේලාව int inputPin = 2; //2 අග්රය යතුරේ ආදානයට int ledPin = 4; //4 අග්රය LED බල්බයට String code = ""; //ඉංග්රීසි හෝඩියේ අකුරු සඳහා void setup() { Serial.begin(9600); //රේඛීය සන්නිවේදනය අරඹන්න pinMode(inputPin, INPUT_PULLUP); //pullup ආදානය pinMode(ledPin,OUTPUT); //ledPin ප්රතිදානය ලෙස } void loop() { NextDotDash: while (digitalRead(inputPin) == HIGH) {} t1 = millis(); //එබු වේලාව digitalWrite(ledPin, HIGH); //බොත්තම ඔබා ඇතිවිට LED දල්වන්න while (digitalRead(inputPin) == LOW) {} t2 = millis(); //යතුර නිදහස් කල වේලාව digitalWrite(ledPin, LOW); //LED නිවන්න signal_len = t2 - t1; //සංඥාවට ගතවූ කාලය if (signal_len > 50) // debouncing නොසලකා හැරීම { code += readio(); //dot හෝ dash පරීක්ෂා කරන ශ්රිතය } //කාලය තත් 0.5 වඩා වැඩ්නම් ඊ ලඟ අකුර ගන්න while ((millis() - t2) < 500) { //යතුර නිදහස් නම් if (digitalRead(inputPin) == LOW) { goto NextDotDash; //ඊ ලඟ Dot හෝ Dash } } convertor(); // සංකේතයට අදාල අකුර දෙන්න } char readio() { if (signal_len < 600 && signal_len > 50) { return '.'; //තත්පර 0.6 වඩා අඩුනම් dot } else if (signal_len > 600) { return '-'; //තත්පර 0.6ට වඩා නම් dash } } void convertor() { //කේත ආරාව A-Z static String letters[] = {".-", "-...", "-.-.", "-..", ".", "..-.", "--.", "....", "..", ".---", "-.-", ".-..", "--", "-.", "---", ".--.", "--.-",".-.", "...", "-", "..-", "...-", ".--", "-..-", "-.--", "--..", "E"}; int i = 0; if (code == ".-.-.-") { Serial.print("."); //බ්ඳීම සඳහා } else { while (letters[i] != "E") //කේතය සොයා සංසන්දනය { if (letters[i] == code) { //කේතය හමුවීම Serial.print(char('A' + i)); //අදාල අකුර දෙන්න break; //චක්රයෙන් මිදෙන්න } i++; } if (letters[i] == "E") { //අවසාන කේතය හමුනම් Serial.println(""); //ආදානය වැරදි } } code = ""; //කේතය හිස් කරන්න }