Showing posts with label arduino Sinhala Tutorials. Show all posts

arduino syntax sinhala tutorials part 1 | ආඩිනෝ රීති ක්‍රම පළමු කොටස




Structure / ව්‍යුහය 

අඩිනෝහි මූලික ව්‍යුහහය හරිම සරල එකකි එය අවම වෂයෙන් කොටස් දෙකකි.
උදා:

void setup(){
  // put your setup code here, to run once:
}

void loop()
{
  // put your main code here, to run             repeatedly:
}

එනම් void setup() හා void loop() වේ . අපගේ ආඩිනෝ ක්‍රමලේඛය (program) සම්පුර්න විමට අවම වෂයෙන් මෙම function දෙකම අත්‍යවශ්‍ය වේ.ආඩිනෝ  ක්‍රමලේඛය (program) ක්‍රියාත්මක විමට පටන් ගැනිමෙදී පළමුව ක්‍රියත්මක වෙන්නේ setup()  function එකයි, මෙය ක්‍රියාත්මක වන්නේ එක් වතාවක් පමණි
                       loop() function එක ඉලගට ක්‍රියාත්මක වෙන  කොටසයි,මෙම function එක දිගින් දිගටම ක්‍රියත්මක වෙන infinite loop()  ගනයට අයත් වේ.එනම් අනන්ත වාර සංඛ්‍යාවක් ක්‍රියාකරයි.
( ආඩිනෝ පුවරුව වෙත බල සපයුම ලබා දෙනතුරු ක්‍රියාත්මක වේ.) මෙය ආඩිනෝ ක්‍රමලේඛයේ හරය ලෙසත් හදුන්වයි (core of all arduino program) එනම් ප්‍රදාන හා ප්‍රතිදාන (inputs & outputs) ක්‍රියාත්මක වෙන කොටසයි

setup()

ආඩිනෝ ක්‍රමලේඛය ක්‍රියත්මක විමෙදි එනම් ආඩිනෝ පුවරුව වෙත ජව සැපයුම ලබාදුන් පසු පළමු වරට ක්‍රියාත්මක වන්නේ මෙම මෙම setup() function එකයි. කලින් පැවසු පරිදි මෙම setup() function එක ක්‍රියාත්මක වන්නේ එක් වතාවක් පමණි, ඕනැම ක්ෂුද්‍ර පාලක ඒකකයක් (මයික්‍රොක්නට්‍රෝල microcontroller) බෝහෝ අග්‍ර ප්‍රදාන හෝ ප්‍රතිදාන(inputs or outputs) ලෙස බාවිතා කල හැකි. (මේ පිළිබද වැඩිදුර විස්තර pin mode යටතේ ඉගනගනිමු)  මෙම ක්‍රියාවලිය එනම්  එම අග්‍රය ප්‍රදාන හෝ ප්‍රතිදාන(inputs or outputs) එකක් ලෙස ක්‍රියා කරවීමට අදාල විධානය setup() funtion තුල සිදුකරයි.
තවද begin commands (විධන) 

serial.begin
lcd.begin
wire.begin
spi.begin
sd.begin

වැනි begin commands (විධාන) ද මෙම setup() function තුල සිදුකරයි.
තවද ඉතා වැදගත් දත්තය්න්ද උදා: PID algorism හි KP,KI,KD , last error වැනි වැදගත් දත්තයන් ද , එක් වරක් පමණක් ක්‍රියත්මක වීමට අවශ්‍ය ක්‍රමලේඛය(program) ද සටහන් කරයි
උදා :

void setup(){
  Serial.begin(115200);

  pinMode(ENA, OUTPUT);

  pinMode(ENB, OUTPUT);
  pinMode(LN1, OUTPUT);
  pinMode(LN2, OUTPUT);
  pinMode(LN3, OUTPUT);
  pinMode(LN4, OUTPUT);

  pinMode(S1, INPUT);

  pinMode(S2, INPUT);


  Kp = 30;
  kI = 10;
  Kd = 8;

  last_error = 0;

  last_error1 = 0;

  S1_flg = 0; S2_flg = 0; 


  lcd.begin(16, 2);


}


ඉතා වැදගත් කාරනව වන්නේ setup() function තුල දැමීමට කිසිවක් නොමැති වුවත්  හිස් ව හෝ එය තැබිය යුතුයි
 එසේ නොමැතිනම් ක්‍රමලේඛය සකස් කිරිමේදි සංග්‍රාහක වැරදි (compile errors) ඇතිවිය හැක.
උදා:

void setup(){

}


loop()

loop() function එක ඉලගට ක්‍රියාත්මක වෙන  කොටසයි,මෙම function එක දිගින් දිගටම ක්‍රියත්මක වෙන infinite loop()  ගනයට අයත් වේ.
එනම් අනන්ත වාර සංඛ්‍යාවක් ක්‍රියාකරයි. ( ආඩිනෝ පුවරුව වෙත බල සපයුම ලබා දෙනතුරු ක්‍රියාත්මක වේ. )
මෙය ආඩිනෝ ක්‍රමලේඛයේ හරය ලෙසත් හදුන්වයි (core of all arduino program) එනම් ප්‍රදාන හා ප්‍රතිදාන (inputs & outputs)
ක්‍රියාෂ්ත්මක වෙන කොටසයි එනම් සියලු වැඩ ක්‍රියාත්මක වෙන ස්ථාන වන්නේද මෙම loop() function  එකේය.
උදා


void loop(){
digitalWrite(13,HIGH); // 13 වන අග්‍රයෙන් 5V පිට                                 //  වේ එනම් logic HIGH   
delay(1000); // තත්පරයක  ප්‍රමාදයක්
digitalWrite(13,LOW); //13 වන අග්‍රයෙන් 0V පිට                                 //වේ එනම් logic LOW
delay(1000); // තත්පරයක  ප්‍රමාදයක්                                   // (1000ms)
}

මෙය ඉත සරල ක්‍රමලේඛයකි program එකකි එනම් 13 වන අග්‍රය 5V පිටවෙනවා තත්පරයක විරාමයක් 13 වන අග්‍රය 0V පිටවෙනවා නැවතතත්පරයක විරාමයක්
මෙය කලින් සදහන් කල පරිදි ආඩිනෝ පුවරුවට ජව සැපයුම ලබාදෙනතුරු දිගටම සිදුවෙනවා,මෙම ක්‍රමලේඛයකි පිළිබද වැඩිදුර විස්තර පසුවට.

functions

function එකක් යනු යම්කිසි නමක් තිබෙන උපදෙස්/ විධාන කාන්ඩයකී

උදා

void PropotionalLineFollow() {

int P = S1_flg * -18 + S2_flg * -15 + S3_flg                   * -6 + S4_flg * 0 + S5_flg * 6
          +S6_flg *15 + S7_flg * 18;

  PropVal = Kp * P;

int SPEEDR = 230 - PropVal;
  int SPEEDL = 230 + PropVal;

  if (SPEEDL > 255)SPEEDL = 255;
if (SPEEDR > 255)SPEEDR = 255;

MotorControl(SPEEDR, SPEEDL);

}

මෙහි PropotionalLineFollow()  යනු පෙර කී පරිදි function එකකිfunction name එක නැතිනම් උපදෙස්/ විධාන කාන්ඩයකි
මෙම function නැවත නැවත බාවිතා කිරිමේ හැකියාව ඇති නිසා අනවශ්‍ය ලෙස ක්‍රමලේඛයකය program දික් වීම වලක්වාගත හැක.
funcion එකක මූලි ආකෘතිය පහත අයුරින් වේ.පහත රූපය බලන්න 


මුලින්ම type එක එනම් function  එකේ වර්ගය. එනම් අප function එකේ මුලින්ම එහි වර්ගය සදහන් කලයුතුවේ.එනම් එම function එක තුල return විදානයක් අන්තර්ගත වී ඇත්නම් ,  return statement එකක් ඇත්නම් එම function එක "int" නැතිනම් නිඛිල Integer  ගනයට අයත්වේ,

උදා:

int dalayVal(){
  float v;                               //v ලෙසතාවකලික අගයක් සදාගනිම
  v =analogRead(A0);     //A0 හි අගය v විච්ල්‍යහි (variable)                                                                   //save කිරිම
    v /=4;                                   //0-1023 අතර සංඛ්‍යාව 0-255 ට                                                                       //හැරවිම එය නැවත v විච්ල්‍යහි                                                                       //(variable)  save කිරිම
  return v; //අවසන පිළිතුර return  කිරීම
}

අප දැන් return විධානය පිළිබද අවදානය යොමු කරමු

return ප්‍රකාශනයක (Statement) එකක් මගින් function එකක් ක්‍රියාත්මක වීම නතරකරන අතර function එකක් call කිරීම පාලනය සදහා නැවත නැවත ක්‍රියත්මකවේ.විධානය ක්‍රියාත්මක වීම ඇරබීම සිදුවන්නේ
එය call කරන ස්ථානයේදීය.ඒසදහා අගයක් පුනර්වර්ථනය කළ හැක.

return syntax කාරක රීති පැහැදිලි කිරීම

යම්කිසි function  එකක් තුල return විධානය නොමැතිනම් එම function එක void ගනයට අයත් වේ
උදා:

void SensorTest() {
Serial.print(S1_flg); Serial.print("    ");
Serial.print(S2_flg); Serial.print("    "); 
Serial.print(S3_flg); Serial.print("    ");
Serial.print(S4_flg); Serial.print("    "); 
Serial.print(S5_flg); Serial.print("    "); 

}


funtion type පසු function එකේ නම මෙහිදී නම වෂයෙන් ඕනෑම නමක් බවිතා කල හැකිවේ න්මුත් එ සදහා අර්තවත් නමක් බාවිතාකර යුතුවේ.
උදා:

int count()
void PID()
void LineFollow()
void LeftArm()

නමුත් කිසි අයුරින්වත් මෙවැනි නම් බවිතා නොකරන්න මක් නිසද යත් එය ඉතා දුර්වල ක්‍රමලේඛ පුහුණුවකි ( program practice). එමගින්  දෝෂ ඇතිවීමේ සම්බාවිතාව අදිකවේ
උදා:

int sdsdfws()
void aaaaa()

ඉන්පසු  pranthesis එනම් වරහන් () මෙම වරහන් ඇතුලත පරාමිතිය (parameters) එනම් එම function එක වැඩකරන තත්ව conditions  සදහන් කල යුතුය.

උදා:

int maxNumber(int num1, int num2){
  int result;
  if (num1 > num2)
  result = num1;
  else
  result = num2;
  return result;
}

එසේ තත්වයන් නොමැතිනම් වරහන් හිස්ව තැබිය යුතුයි.

{} curly braces/breckets

curly braces බාවිතා කරනුයේ යම්කිසි function එකක ආරම්බය හා අවසානය සනි‍ටුහන් කිරීමටය යම් හෙයකින් curly braces ඇරියොත් (open) කලොත් එය අනිවාරයෙන්ම
වැසිය (close) කලයුතුවේ.මෙය braces balance යනුවෙන් හැදින්වේ.යම් හෙයකින් අතපසුවීමක් මගින් braces balance කිරීම නොහැකිවීම මගින් අත්භූත සොයාගත නොහැකි 
compil errors  ඇතිවේ.එමනිසා braces balance  සිතේ තබගතයුතු වැදගත් කාරනවකි.

; semicolon

යම් ප්‍රකාශනයක් (statement) එකක් ඉවරයැයි පවසීමට ; semicolon එක බාවිතා කරයි.යම් හෙයකින් අතපසුවීමක් මගින් semicolon දැමීම නොහැකිවීම මගින් අත්භූත සොයාගත නොහැකි 
compil errors  ඇතිවේ.එමනිසා semicolon වැසීම සිතේ තාබා ගතයුතු වැදගත් කාරනවක් වේ.




අවසරයකින් තොරව මෙම බ්ලොගයේ පාඩම් මුද්‍රිත හෝ ඩිජිටල් ආකාරයෙන් පිටපත් කිරීම, නැවත පළ කිරීම තහනම්ය. සියලුම හිමිකම් ඇවිරිණි.

Copying, reposting of lessons from this blog in printed or digital form without permission is prohibited. All rights reserved. written by Rangana Tennakoon.© 2015
2015/02/13
Posted by arduino srilanka

Popular Post

Labels

  • arduino Sinhala Tutorials

Copyright © arduino sri lanka