Arduino Programming ඉගෙන ගනිමු – Part 3 : Control Structures

You are here:
  • KB Home
  • Arduino
  • Arduino Programming ඉගෙන ගනිමු – Part 3 : Control Structures
Estimated reading time: 2 min

Arduino Programming වල මුලික වුව්‍යහය සහ variables ගැන හොඳ දැනුමක් ඇති කියල හිතනවා. මේ පාඩමෙන් කියල දෙන්න යන්නේ programming වලදී අනිවාර්යයෙන්ම අවශ්‍ය වෙන control structures ගැන. එහෙමත් නැත්තම් conditional statements ගැන.

if…

බොහෝ විට satement එකක් හරි හෝ වැරදි නම් වෙන්න අවශ්‍ය ක්‍රියාවකට අපි if condition පාවිච්චි කරනවා. මේකේ structure එක මෙන්න මේ වගේ ක්‍රම කිහිපයකට පාවිච්චි කරන්න පුළුවන්..

if( CONDITION ) Statement;

if( CONDITION )
    Statement;

if( CONDITION ){
    //Statements
}

මේකේ condition එක අනිවාර්යෙන් boolean එකක් වෙන්න ඕනෙ. ඒ කියන්නේ true or false වෙන්න ඕනෙ. condition එක check කරන ඒවාට අපි කියනවා comparison operators කියල. ඒවා ගැන ඉදිරි පාඩම් වලදී ඉගෙන ගමු.

if( x > 20 ){
    digitalWrite(13, HIGH);
}

if( name == "ARDUINO" ){
    Serial.println("Your Name is Arduino");
}

if( value != 10 ){
    digitalWrite(13, LOW);
}

 

if…..else

if condition එකෙන් හැම වෙලේම වෙන්නේ condition එක true නම් statements වැඩ කරන එක.  මේ condition එකම false වුනොත් වෙන්න ඕන දේ අපිට else එකක් ගෙන කරන්න පුළුවන්. else එකේ structure එක මේ වගේ.

if( CONDITION ){
    //statements if true
}else{
    //statements if false
}

ඒ වගේම අපිට ඕනෙනම් condition දෙක තුනක් check කරන්න else if පාවිච්චි කරන්න පුළුවන්.

if( CONDITION 1 ){
     // statements if condition 1 true
}else if( CONDITION 2 ){
     // statements if condition 2 true
}else if( CONDITION 3 ){
     // statements if condition 3 true
}else{
     // statements if all are false
}

මේකෙදි program එක compile වෙන්නේ උද ඉදල යටට. ඒ හින්ද මුලින්ම තියෙන condition එක true වුනොත් අනිත් ඒවා නොසලකා හරිනවා.

int value = 15;

if( value > 20 ){
    digitalWrite(10, HIGH);
}else if( value > 10 ){
    digitalWrite(11, HIGH);
}else if( value > 5 ){
    digitalWrite(12, HIGH);
}else{
    digitalWrite(13, HIGH);
}

 

for

for loop එක අපි පාවිච්චි කරන්නේ එකම දේ කීප වතාවක් කරන්න ඕන වුනාම. මේකෙදි loop එක වැඩකරන්න ඕන වාර ගණන අපිට හරියටම දෙන්න පුළුවන්. මුලින්ම for loop එකේ structure එක ගැන බලමු.

for (initialization; condition; increment) {

    //statements

}

initialization එකෙන් වෙන්නේ variable එකක් පටන් ගන්න ඕන අගය දෙන එක. අපි මෙතන පටන් ගන්න variable එක මේ loop එක ඇතුලේ ඕනෑම තැනක පාවිච්චි කරන්න පුළුවන්. උදාහරණයක් විදියට අපි int x = 1; කියල පටන් ගත්තොත්, x කියන variable එක අපිට loop එක ඇතුලේ පාවිච්චි කරන්න පුළුවන්.

condition එකෙන් වෙන්නේ ඒ condition එක true වෙලා තියෙනකන් loop එක වැඩ කරන එක. for loop එක වැඩකරන හැම වටයකදීම මේ condition එක check කරනවා.

increment එකෙන් කරන්නේ හැම වටයකදීම initialize කරපු variable එක නියත අගයකින් වෙනස් කරන එක.

for(int i=2; i<13; i++){
    digitalWrite(i,HIGH);
}

for(int i=100; i>10; i=i-5){
    Serial.println(i);
}

 

switch…case

switch  condition එකත් අපිට ගොඩක්ම උවමනාවෙන condition එකක්. එක variable එකක එක එක අගයන්ට අදාලව වෙන වෙන function ඕනෙනම් switch case එක පාවිච්චි කරන්න පුළුවන්. සරලවම කිව්වොත් if, else if වලින් කරන දේ ලේසියෙන් කරගන්න පුළුවන්. මුලින්ම මේකේ structure එක දිහා බලමු.

switch ( variable name ) {
    case 1: 
      // function when variable = 1
      break;
    case 2:
      // function when variable = 2
      break;
    case 3:
      // function when variable = 3
      break;
    default:
      // function if nothing above matches
      break;
}

මුලින්ම අපිට check කරන්න ඕන variable එක (variable name) කියන තැනට දාන්න ඕනෙ. මේකෙදි අපිට පාවිච්චි කරන්න පුළුවන් integer (int) හෝ character (char) කියන variable දෙක විතරයි. ඊට පස්සේ case එක ඉස්සරහින් variable එකට එන values දාල ඒකට අදාළ functions ලියන්න පුළුවන්. හැම case එකක් අවසානයේම break; කියල දාන්න ඕනෙ. නැත්තන් break; කියල එකක් හම්බවෙනකන් හැම function එකක්ම run වෙනවා. අන්තිමට දාන default: කියන case එකෙන් වෙන්නේ කලින් case එකක්වත් ගැලපෙන්නේ නැත්තන් මේ default case එක වැඩ කරන එක. හරියට if, else if වල අන්තිම else එකෙන් වෙනවා වගේ.

int led;
led = Serial.read();

switch ( led ) {
    case 2: 
      digitalWrite(2,HIGH);
      break;
    case 3:
      digitalWrite(3,HIGH);
      break;
    case 4:
      digitalWrite(4,HIGH);
      break;
    default:
      digitalWrite(2,LOW);
      digitalWrite(3,LOW);
      digitalWrite(4,LOW);
      break;
}

 

while

මේකත් loop function එකක්. මේකෙදි condition එක true වෙලා තියෙනකන් loop එක වැඩ කරනවා. loop එක ඉවර වෙන්නනම් condition එක false වෙන්නම ඕනෙ.

while( CONDITION ){
    //statements
}

මේකේ condition එක boolean වෙන්න ඕනෙ. ඒ කියන්නේ true false අගයක් වෙන්න ඕනෙ. සාමාන්යෙන් මේක අපි පාවිච්චි කරන්නේ input එකක් read කරද්දී. උදාහරණයක් විදියට හිතන්න button එකක් ඔන්බන් ඉන්නකන් LED එකක් පත්තු වෙන්න ඕනෙ කියල. එකට මේ විදියට while loop එක පාවිච්චි කරන්න පුළුවන්.

int led = digitalRead(2);

while(led==1){
   digitalWrite(13,HIGH);
   led = digitalRead(2);
}

digitalWrite(13,LOW);

ඒ වගේම for loop එක වෙනුවටත් මේක පාවිච්චි කරන්න පුළුවන්.

int value = 0;

while(value < 100){
   Serial.println(value);
   value++;
}

 

do…while

මේකත් while loop එක වගේමයි. නමුත් condition එක check කරන්නේ statements වැඩ කරාට පස්සේ. එකම condition එක දාල while loop එකයි do while loop එකයි run කලොත්, do while loop එක while loop එකට වඩා එක පාරක් වැඩිපුර run වෙනවා.

int value = 0;

do{
   Serial.println(value);
   value++;
}while(value < 100);

 

break

සමහර වෙලාවට අපිට අවශ්‍ය වෙනවා loop එකේ condition එක හැරුනම වෙන හේතුවක් හින්ද loop එක ඉවර කරන්න. ඒ වෙලාවට අපිට පුළුවන් break; පාවිච්චි කරන්න. මේක for loop, while loop, do while loop, switch case වගේ function වලදී පාවිච්චි කරන්න පුළුවන්.

මේක තවත් පැහැදිලි කරගන්න පුළුවන් මේ උදාහරණයෙන්. අපිට අවශ්‍ය වෙනවා 1 සිට 100 දක්වා display කරගන්න. නමුත් ඒ අතරේදී button එකක් press කලොත් එක නවතින්න ඕනෙ. මේකට අවශ්‍ය code එක අපිට for loop සහ break යොදාගෙන කරන්න පුළුවන්.

for(int i =1; i<101; i++){
    Serial.println(i);
    if(digitalRead(2)==1){
       break;
    }
}

 

continue

මේකෙන් වෙන්නේ loop එකකදී statements මගහැරලා යන එක. loop එක ඇතුලේ continue; කියන command එක හම්බුනොත් එතනින් පල්ලෙහට තියෙන දේවල් මග ඇරලා loop function එකේ මුලට යනවා.

මේකටත් කලින් උදහරනෙම ගමු. අපිට අවශ්‍යනම් 1 සිට 100 ට display කරන්න, නමුත් button එක press කරාම display වෙන එක විතරක් නවත්තල loop එක දිගටම ගෙනියන්න, අපිට පුළුවන් for loop එක සහ continue; පාවිච්චි කරන්න.

for(int i =1; i<101; i++){
    if(digitalRead(2)==1){
       continue;
    }
    Serial.println(i);
}

 

Arduino programming වලදී තවත් වැදගත්ම කොටසක් තමා මේ පාඩමෙන් කියල දුන්නේ. සාර්ථක program එකක් ලියන්න නම් මේ control structure ගැන දැනගෙන ඉන්නම ඕනෙ. මීළඟ පාඩම් වලදී අපි operators ගැන ඉගෙන ගමු. සුබ දවසක්.

 

 

Tags:
Was this article helpful?
Dislike 0
Views: 842

Leave a Reply

Your email address will not be published. Required fields are marked *