කලින් පාඩම් ටික බැලුවෙ නැත්නම් මෙතනින් ගිහින් බලන්න
VOID නිර්මාණය සහ භාවිතය.
void/function මේ දෙකම එකම වගේ පෙනුනත් මේ දෙක තරමක් වෙනස්. void එක භාවිත වෙන්නේ නැවත නැවත භාවිත කලයුතු කේත පේළි කිහිපයක් වෙනුවට ආදේශයක් ලෙසයි.උදාහරණයක් විදිහට මෙහෙම හිතන්නකො, අපි මොකක් හරි ප්රෝග්රෑම් එකක් ලියන කොට අපිට ඕනෙ වෙනවා warning led එකක් 3න් පාරක් blink (නිවි නිවි පත්තු වෙන්න). මේ LED එක blink වෙන්නේ serial data වල 3, 5, 7, 25 වගේ අගයක් ලැබුනොත් විතරයි කියලා හිතන්නකො.
අපි සාමාන්ය විදිහට මේක කරනවන්ම් අපි කරන්නේ if හරි case එක හරි යොදාගෙන 3,5,7,25 කියන හැම තැන කටම led එක blink කරන්න ඕනෙ කෝඩ් එක ලියනවා, එතකොට කෝeඩ් එක දික් වෙනවා විතරක් නෙමෙයි blink code එකෙ මොකක් හරි වෙනසක් කරන්නෙ ඕනෙ උනොත් ඒ හැම තැනම වෙනස් කරන්න ඕනෙ නමුත් මේ විදිහට void එකක් යොදා ගත්තනම් වැඩේ ලේසියි. කෝඩ් එකත් කොටයි. වෙනසක් කරන්නෙ ඕනෙ උනොත් void එකේ විතරක් ඒ වෙනස කරා නම් ඇති. අපි මුලින්ම බලමු කොහොමද void එකක් හදන්නේ කියලා.
පහලින් තියෙන්නේ void එකක සරල අකෘතිය
void nameofvoid(datatype value1,datatype value2){
\\ Your code here
}
nameofvoid කියන තැන void එක හදුනා ගැනීමට අදාලව නමක් දෙන්න, ඊට පස්සේ ඒකට ඉස්සරහින් තියෙන වරහන් දෙක ඇතුලේ අපි void එක use කරනකොට void එක ඇතුලෙ තියෙන කෝඩ් එක පොඩිපොඩි වෙනස් කම් කරලා භාවිතා කරන්න ඕනෙ අවස්ථා තියෙනවා ඒ වගේ අවස්තා වලදී ඒ වෙනස් කරන්න ඕනේ value එකේ datatype එකයි, value එකට නමකුයි දෙන්න ඕනේ ඒ විදිහට වෙනස් කරන්න ඕනේ values ගොඩක් තියෙනවනම් උඩ example එකේ විදිහට කොමාව දාල ලියන් යන්න ඕනේ එහෙම වෙනස් කරන්න කෝඩ් එකේ මුකුත් නැත්නම් වරහන හිස්ව තියන්න. මේක තේරුම් ගන්න අපි කෝඩ් එකක් ලියලම බලමු.
පහල විදිහට circuit එක හදාගන්න
මම මෙතනදී කරන්න හදන්නේ Serial communication හරහා එන 1, 2, 3, 4 කියන ඉලක්කම් හතරට අදාලව LED 4 ක් blink කරන එක.
void setup() {
Serial.begin(9600);
pinMode(9,OUTPUT);
pinMode(10,OUTPUT);
pinMode(11,OUTPUT);
pinMode(12,OUTPUT);
}
void loop() {
if(Serial.available()>0){
int code=Serial.parseInt();
switch(code){
case 1:
OffAllLED();
LEDblink(9);
break;
case 2:
OffAllLED();
LEDblink(10);
break;
case 3:
OffAllLED();
LEDblink(11);
break;
case 4:
OffAllLED();
LEDblink(12);
break;
}
}
}
void LEDblink(int LEDPin){
digitalWrite(LEDPin,HIGH);
delay(100);
digitalWrite(LEDPin,LOW);
delay(100);
digitalWrite(LEDPin,HIGH);
delay(100);
digitalWrite(LEDPin,LOW);
delay(100);
digitalWrite(LEDPin,HIGH);
delay(100);
digitalWrite(LEDPin,LOW);
delay(100);
}
void OffAllLED(){
digitalWrite(9,LOW);
digitalWrite(10,LOW);
digitalWrite(11,LOW);
digitalWrite(12,LOW);
}
මෙතනදී මම setup, loop ඇතුලේ තියෙන කෝඩ් එක පැහැදිලි කරන්නේ නෑ, මොකද මම ඒවා කලින් පාඩමෙන් පැහැදිලි කරලා හියෙනව (බලපු නැති අය මෙතනින් ගිහින් බලන්න).
මම කෝඩ් කරලා තියෙන්නේ serial monitor එකේදී 1 හරි, 2 හරි, 3හරි, 4 හරි කියලා type කරලා send කලොත් ඊට අනුරූපව 9, 10, 11, 12 කියන digital pin වලට හයි කරපු LED බ්ලින්ක් වෙන්න.
මෙතන්දී මම LEDblink හා OffAllLED කියලා void 2 ක් හදාගෙන තියෙනවා LEDblink කියන void එකෙදී මට blink වෙන්න ඕනේ LED එක හයි කරපු pin එක වෙනස් කරන්න ඕනෙ නිසා මම වරහන් ඇතුලෙදී LEDPin කියලා int datatype එකෙන් හදාගෙන තියෙනවා (data types ගැන කලින් පාඩමෙන් පැහැදිලි කරලා හියෙනව බලපු නැති අය මෙතනින් ගිහින් බලන්න).
Function නිර්මාණය හා භාවිතය.
Function එකත් Void එක වගේම වැදගත් දෙයක්. Function එකේදී අපි Function ඇතුලේදී කරන මොකක් හරි ක්රියාවලියකට පස්සේ මොකක් හරි ප්රතිඵලයක් ලබාගන්න භාවිතා කරන්න පුලුවන්.
පහල තියෙන්නේ Function එකක් පොදු අකෘතියයි.
DataType FunctionName(datatype value1,datatype value2){
//Your code here
return resault;
}
මේක තේරුම් ගන්න පහලතියෙන code එක try කරලා බලන්න.
මම මෙතනදී කරලා තියෙන්නේ Serial monitor එක හරහා අපි ලබාදෙන මොකක් හරි අගයන් දෙකක් ගුණ කරලා ප්රතිඵලය Serial Print කරන එකයි.
void setup() {
Serial.begin(9600);
}
void loop() {
if (Serial.available()>0) {
int a=Serial.parseInt();
int b=Serial.parseInt();
Serial.println(GetValue(a,b));
}
}
int GetValue(int num1, int num2){
int val;
val=num1*num2;
return val;
}
මම මෙතනදී මුලින්ම මම හදාගත්ත function එක විස්තර කරන්නම්. මම මෙතනදී GetValue කියන නමින් int data type එකේ function එකක් හදාගෙන තියෙනවා. ඒ වගේම function එකට අගයන් ඇතුලු කරන්න පුලුවන් විදිහට num1, num2 කියලා int data type එකේ variable 2 කුත් හදාගෙන තියෙනවා.
function එක ඇතුලෙදී val කියන නමින් int වර්ගයේ variable එකක් හදාගෙන තියෙනවා. ඊළඟ පියවරේදී num1, num2 ගුණ කරලා එන අගය val variable එකට යොමුකරලා තියෙනවා.
අන්තිම පියවරේදී return val; කියන පේලියෙන් කරන්නේ function එකේ result එකවිදිහට val variable එකේ තියෙන අගය සකස් කරන එකයි. මෙතනදී කියන්න ඕනේ වැදගත් දෙයක් තියෙනවා, ඒ තමයි function එකේ data type එකත් return කියන කොටසට ඉස්සරහින් ලියන කොටසේ data type එකත් සමාන වෙන්න ඕනේ.
දැන් අපි loop එක ඇතුලේ කරලා තියෙන්නේ මොකක් කියලා බලමු, මෙතනදී මම මුලින්ම කරලා තියෙන්නේ if condition එක දාලා serial monitor එක හරහා data ලැබෙනවද කියලා බලලා තියෙනවා data ලැබෙනවනම් ඒ එන data a හා b කියලා හදාගත්ත int variable 2 කට වෙන වෙනම යොමු කරලා තියෙනවා.
Serial.println(GetValue(a,b)) පේලියෙන් කරන්නේ Serial monitor එකේදී GetValue කියන අපි කලින් හදාගත්ත function එකෙන් ලැබෙන result එක print කරන එකයි. ඒ වගේම function එකේ සංඛ්යා 2 ක a හා b කියලත් ලබාදීලා හියෙනව.
දැන් code එක arduino එකට upload කරලා Serial monitor එක open කරලා ඔයාට ගුණ කරන්න ඕනේ සංඛ්යා දෙක කොමාවක් දාල type කරලා send කරන්න. ඔයා කොමාවට මුලින් ලියපු සංඛ්යාව a variable එක විදිහටත් කොමාවට පස්සේ ලියපු සංඛ්යාව b variable එක විදිහටත් හදුනගෙන ඒ දෙකේ ගුණිතය Serial monitor එකේ print වෙයි.
මේවිදිහට Void සහ Function යොදගෙන coding වැඩ ලේසි කරගන්න පුලුවන්. comment එකක් දාගෙනම යන්න. අයෙත් අපි ඉක්මනටම හම්බවෙමු.
article එක හොදයි නම් තව කෙනෙකුට බලන්න share කරගෙනම යන්න .
EmoticonEmoticon