Archive for 2015

arduino syntax sinhala tutorials part 3 | ආඩිනෝ රීති ක්‍රම තෙවන කොටස



byte

මෙහි බිට් 8 (8 bit)  සංඛ්‍යාත්මක අගයක් (දශම සංඛ්‍යා හැර)  ගබඩා කිරීමේ හැකියාව පවතී. එනම් දෙකේ පාදයෙන් ගත් විට එහි අගය 256(2^8) එනම් 0 සිට 255 කි. යම් variable එකක් වෙත අගයක් ලබාදිමට අවශ්‍ය යැයි සිතමු එය මෙසේ සිදුකල හැක.

උදා:
byte SL=200;

නමුත්  byte SL=260;  ලෙස සඳහන් කල නොහැක.මක් නිසද යත් එහි ගබඩා කලහැකි උපරිම අගය 0 ත් 255 අතර සංඛ්‍යාවක් පමණි.

int හා short

මෙහි බිට් 16 (16 bit)  සංඛ්‍යාත්මක අගයක් (දශම සංඛ්‍යා හැර) ගබඩා කිරීමේ හැකියාව පවතී. එනම් දෙකේ පාදයෙන් ගත් විට එහි අගය 65536 (2^16) .එහි පරසය -32,768 ත් 32,767 වෙ එනම්  .-32,768 සිට 32,767 අතර සංඛ්‍යාත්මක අගයක් ගබඩා කල හැක. ඉහත සඳන් ලෙසම  යම් variable එකක් වෙත අගයක් ලබාදිමට අවශ්‍ය යැයි සිතමු එය මෙසේ සිදුකල හැක.

උදා:
int SL=25000;
int SL=-25000;

නමුත්  byte SL=32,768;  ලෙස සඳහන් කල නොහැක.මක් නිසද යත් එහි ගබඩා කලහැකි උපරිම අගය -32,767 ත් 32,767 අතර සංඛ්‍යාවක් පමණි. 

unsigned int හා unsigned short

unsigned  අරුත වනුයේ සෘණ ,දශම  නොමැති සංඛ්‍යාවක් යන්නයි පෙර සේම int හා short හි ධරිතාවය 16 (16 bit) කි.නමුත් සෘණ සංඛ්‍යාවක් නොවන නිසා එහි පරාසය 0 ත්  65535 එනම් 0 සිට  65535 අතර සංඛ්‍යාත්මක අගයක් ගබඩා කල හැක

උදා:
unsigned int count= 65535;  
unsigned short count= 65535;  

word

මෙහි බිට් 16 (16 bit)  සංඛ්‍යාත්මක අගයක් (දශම සංඛ්‍යා හැර) ගබඩා කිරීමේ හැකියාව පවතී.මෙය unsigned int ලෙසම ක්‍රියාකරයි. එහි පරාසය 0 ත්  65535 එනම් 0 සිට  65535 අතර සංඛ්‍යාත්මක අගයක් ගබඩා කල හැක

උදා:
word count= 65535; 

long

මෙහි බිට් 32 (32 bit)  සංඛ්‍යාත්මක අගයක් (දශම සංඛ්‍යා හැර) ගබඩා කිරීමේ හැකියාව පවතී. එනම් දෙකේ පාදයෙන් ගත් විට එහි අගය 4294967296  (2^32) .එහි පරසය  -2,147,483,648 ත් 2,147,483,647. වෙ එනම්  . -2,147,483,648 අතර 2,147,483,647. අතර සංඛ්‍යාත්මක අගයක් ගබඩා කල හැක. ඉහත සඳන් ලෙසම  යම් variable එකක් වෙත අගයක් ලබාදිමට අවශ්‍ය යැයි සිතමු එය මෙසේ සිදුකල හැක.
උදා:

long speedOfLight = 186000L;

unsigned long

unsigned  අරුත වනුයේ සෘණ ,දශම  නොමැති සංඛ්‍යාවක් යන්නයි long හි ධරිතාවය 32 (32 bit) කි.නමුත් සෘණ සංඛ්‍යාවක් නොවන නිසා එහි පරාසය 0 ත් 4294967296 එනම් 0 සිට 4294967296 අතර සංඛ්‍යාත්මක අගයක් ගබඩා කල හැක
උදා:
unsigned long volum = 4094567000;

double

මෙහි බිට් 64 (64 bit)  සංඛ්‍යාත්මක අගයක් (දශම සංඛ්‍යා සමග) ගබඩා කිරීමේ හැකියාව පවතී. එනම් දෙකේ පාදයෙන් ගත් විට එහි අගය 18446744073709551616  (2^64) .එහි පරසය  0 ත් 18446744073709551616. වෙ එනම්  . 0 අතර 18446744073709551616. අතර සංඛ්‍යාත්මක අගයක් ගබඩා කල හැක.නමුත් මෙහි ඇති විශේෂත්වය වනේ දශම සංඛ්‍යා ගබඩා කිරීමේ හැකියාවයි නමුත් දශම සංඛ්‍යා ගබඩා කරනේ නම් පමනක් digit 15 ක  
සංඛ්‍යාවක් ගබඩා කලහකි .ඉහත සඳන් ලෙසම  යම් variable එකක් වෙත අගයක් ලබාදිමට අවශ්‍ය යැයි සිතමු එය මෙසේ සිදුකල හැක.

උදා:
double counterVal=18446744073709551610;
double ErrorVal=11.0215542125154

float

මෙහි බිට් 32 (32 bit)  සංඛ්‍යාත්මක අගයක් (දශම සංඛ්‍යා සමග ) ගබඩා කිරීමේ හැකියාව පවතී. එනම් දෙකේ පාදයෙන් ගත් විට එහි අගය 4294967296 (2^32) .එහි පරසය  -3.4028235E+38 ත් 3.4028235E+38. නමුත් මෙහි ඇති විශේෂත්වය වනේ දශම සංඛ්‍යා ගබඩා කිරීමේ හැකියාවයි නමුත් දශම සංඛ්‍යා ගබඩා කරනේ නම් පමනක් digit 7 ක  සංඛ්‍යාවක් ගබඩා කලහකි .ඉහත සඳන් ලෙසම  යම් variable එකක් වෙත අගයක් ලබාදිමට අවශ්‍ය යැයි සිතමු එය මෙසේ සිදුකල හැක.

උදා:
float myfloat;
float sensorCalbrate = 1.117;





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

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/06/12
Posted by arduino srilanka

arduino syntax sinhala tutorials part 2 | ආඩිනෝ රීති ක්‍රම දෙවන කොටස


/*             */ Block comments

block comments යනු අප විසින් ලියනලද ක්‍රමලේඛයේ (program)  ඇති ප්‍රකාශන (statement)   හදුනාගනීම පහසුවීම සදහා සකසා සකසා ක්‍රමයයි. line comments හා සන්සන්දනය කලවිට මෙහි ඇති විශේෂත්වය වන්නේ /** සලකුනේ සිට */ සලකුන දක්වා සියළු ප්‍රකශන සහ වක්‍ය ක්‍රමලේඛයේ (program) කේතයට අයත් නෝවීමයි එනම් එය Comment එකක් ලෙස සලකුනු කරනු ලබේ.මේමගින් ඛේත, statement හදුනාගනීම පහසු කරයි.
උදා:

/*      
 by http://www.arduinosrilanka.blogspot.com 
 
 PWMA=255, AIN1=1 , AIN2=0  > clockwise
 PWMA=255, AIN1=0 , AIN2=1  > anticlockwise     
 PWMA=0, AIN1= 0, AIN2= dont carestop                  
*/

coments කොතරම් දික්වුවද එය program memory මත සටහන් නොවේ. 

// Line Coments

මෙය bolock Coments සමග සැසදූකළ ප්‍රධානතම වෙනස්කම වනුයේ // සලකුනෙන් ඉදිරියේ ඇති ප්‍රකාශ, ඛේතයන් සියළු දෑ coment ලෙස සලකුනු වීමයි මෙයද program memory මත සටහන් නොවේ.

variable විචල්‍ය

variable විචල්‍යක් යනු යම්කිසි සංඛයාත්මක අගයකට නමක් දී එය ගබඩා කිරීමයි.variable විචල්‍ය වල අගයන් එහි නමේ අරුත මෙන් වෙනස් විය හැකිය,තවත් කොටසක් වෙනස් නොවි නියත අගයක් පවතිය හැකිය. variable විචල්‍ය call කිරීමෙන් එය බාවිතයට ගත හැකිය.පහත උදාහරණ අවදානය යොමු කරන්න  විචල්‍ය අගයක් ගන්නා variables (නියත නොවූ)
උදා:

int sensorValue = 0;   // නියත නොවූ  variable එක එහි නම  sensorValue                

void setup() {
  pinMode(ledPin, OUTPUT); 
  Serial.begin(9600);
}

void loop()
 sensorValue = analogRead(A0); /A0 ප්‍රතිසම ප්‍රදනයෙන් ලැබෙන අගය 
                                                                        //sensorValue , variable තුල save කිරිම
Serial.print(sensorValue);         // එම් අගය serial monitor හි මත පෙන්වීම (print) කිරිම.

}


නියත අගයක් ගන්නා variables 
උදා:

int DelayTime =2000; // නියත වූ  variable එක එහි නම DelayTime 

void setup() {
  pinMode(led, OUTPUT);
}
void loop() {
  digitalWrite(led, 13);   
  delay(DelayTime);   // ප්‍රමාදය DelayTime එහිඅගය  2000ms          
  digitalWrite(led, 13);    
  delay(2000);              
}

සෑම විටම variables ඉහත උදාහරණයේ පරිදි සදහා විස්තරත්මක නමක් දිය යුතුයි, කිසිවිටකත් sss , aaa, ksjsns  අදී තෙරුමක් / හරයක් නැති නමක් යෙදීම නොකලයුතුයි.එමගින් ක්‍රමලේඛයේ (program) නිරවද්‍ය තාවටත් බෙහෙවින් බලපන කාරනාවකි තවත නැවත යම් කලක ක්‍රමලේඛයේ (program) දියුනු කිරීමට අවශ්‍ය වූ විටදී එය සිදුකිරීමට වඩා පහසු වේ.  

Variable declaration 

සෑම variable එකක්ම ආමන්ත්‍රනය (call) කර තිබිය යුතුය.එසේ නොමතිනම් එය ක්‍රියත්මක වන්නේ නැත.සෑම variable එකක එහි නමට (variable name) පෙර එහි වර්ගය variable type) සදහන් කල යුතුයි ඉන්පසු අගය සදන් කිරීම කල යුතුයි.
උදා:

int delayVal=1500;
float LightLevel =15933.21;
byte delay=12;
long count =1551521154545;
short Blackcount=0;
unsigned int CurrentNodeX=2000;
unsigned short CurrentNodeY=2;


varible Scope

variable එකක් නම් කිරීම/ස්ථානගත කිරීම void setup() එකට පෙර සිදුකල හැක එය "global variable" ලෙස හදුන්වනු ලැබේ.තවද function එකක් තුලවුවද variable එකක් නම් කිරීම/ස්ථානගත කිරීම කල හැක එය "local variable" ලෙස හදුන්වයි.variable එකක් නම් කරන ස්ථානය ක්‍රමලේඛයේ තත්ව අනූව වෙනස් වේ.කලින් සදහන් කල පරිදි globa variablel  එකක්void setup() ට පෙර නම් කල යුතුය.එය ක්‍රමලේඛයේ (program)  සියළුම function  වලට දෘශමාන (visible) වේ.එනම් ක්‍රමලේඛයේ (program) ඇති සියළු function වලට පොදු  වේ
උදා:

int sensorValue;

void setup() {
  pinMode(13,OUTPUT);
  Serial.begin(9600);
}

void loop() {
 sensorValue = analogRead(A0);
 
delay(1);
 if(sensorValue==1023){
 digitalWrite(13,HIGH);
 Serial.println(sensorValue);
 
}

 else{
 digitalWrite(13,LOW);
 Serial.println(sensorValue);
 } 
}

ඉහත උදාහරණයේ sensorValue ලෙස නම්කර ඇති global variable එක සෑම function එකකට පොදු වේ තව තවත් ක්‍රමලේඛයේ function තිබුනහොත් එම සියළු function වලට දෘශමාන (visible) වේ.
global variable සමග සන්සන්දනය කලවිට local variable හාත්පසින්ම ප්‍රතිවිරුද්දව ක්‍රියාකරයි
                     එනම් local variables  බවිතා වනුයේ function  තුල පමණි. local variables  දෘශමාන වනුයේ එම variable එක ඇති function එක තුල ඇති staments  වලට පමණි.මෙම ක්‍රමය for loop වලට වැඩි වෂයෙන් බාවිතාවේ.
උදා:

int value;// ඕනෑම function එකකට දෘශමාන වේ එනම් එය global variable  
                               //එකකි 

void setup(){
}


void loop() {
  for (int i=0;i<20;){  // i දෘශමාන වන්නේ  for loop එකට පමණි 
                                                     //එනම්  local variable  එකකි 
  i++;   
  }
float f;  //  f දෘශමාන වන්නේ void loop එකටයි. එය for loop එකටත් දෘශමාන වේ නමුත්
                      //මෙය global variable  එකකි 
}

එකම නමින් local variables ඕනැම ප්‍රමනයක් විවිද function තුල තිබිය හැක.( එක function එකක් තිබියහැක්කේ  එක නමකින් එක variable  එකක් පමණි. ) උදාහරණයක් ලෙස උෂ්නත්ව මාන තුනක් සැහිත ක්‍රමලේඛයක් වෙත අවධානය යොමු කරමු.
උදා:

// Lm35 3TEMPRATURE METER EXAMPLE
// BY ARDUINO SRILANKA

void setup()
{
  Serial.begin(9600);
}


void TempM1()
{
  float temp;
  temp = analogRead(A0);
  temp = temp * 0.48828125;
  Serial.print("TEMPRATURE METER 1:");
  Serial.print(temp);
  Serial.print("*C");
  Serial.println();
}

void TempM2()
{
  float temp;
  temp = analogRead(A0);
  temp = temp * 0.48828125;
  Serial.print("TEMPRATURE METER 2:");
  Serial.print(temp);
  Serial.print("*C");
  Serial.println();

}

void TempM3()
{
  float temp;
  temp = analogRead(A0);
  temp = temp * 0.48828125;
  Serial.print("TEMPRATURE METER 3:");
  Serial.print(temp);
  Serial.print("*C");
  Serial.println();

}

void loop()
{
  TempM1;
  TempM2;
  TempM3;
  delay(1000);

}


මෙහි void TempM1(), void TempM2() , void TempM3() යනු function  තුනකි එහි temp  යනු උෂ්නත්වය සැහිත දත්වය ගබඩා කරගනු ලබන variable එකයි function තුනටම එකම නමින් temp variable තිබුනත් එහි විවිධ අගයන් ගනී උෂ්නත්වමාන තුනේ අගයන් වෙනවෙනම මතකයේ තබගනී.අනතුරුව void loop() හි TempM1(), TempM1(), TempM1() function call කරනු ලැබේ.මෙම ක්‍රමය මගින්  වඩා වැඩි නිරවද්‍ය තාවෙන් යුක්ත වූ ක්‍රමලේඛ සදාගත හැකි. 




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

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

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
Posted by arduino srilanka

arduino Srilanka පෙරවදන



2005 වසරේ ආරම්භ කරන ලද  arduino environment එක එතැන් පටන් ක්‍රමයෙන් පරිණාමය වී තිබේ. මක්නිසාද arduino environment යනු දෘඩාංග හා මෘදුකාංග යන දෙකෙහිම ඉතා හොඳ එකතුවකි. එය ලොකේ වඩාත් ප්‍රචලිත වෙමිනින් පවතී. arduino අද වන විට ප්‍රවේශ වී සිටින ක්ෂේත්‍රයන් හා ඉක්මවා ගොස් ඇත එම අප සීමාවන් හඳුනා ගැනීම ඉතා වැදගත් වේ.
                  බොහෝ විට මිනිසුන් විශාල ප්‍රමාණයක්  සිතනුයේ  arduino යනු කුඩා නිල් පැහැති මුද්‍රිත පරිපථ පුවරුවක් (PCB) ලෙසටයි.
මෙය නිවැරදිව හැඳින්වෙනුයේ  මෙය environment එකකි. තාක්ෂණික ව්‍යවහාරයේදී  arduino යන යෙදුම මෘදුකාංගය දෘඩාංගය සමඟ මෙන්ම මෙම මෘදුකාංගය දියුණු කරන  ලද පද්දතියකි, අද වන විට මෙය 8bit microcontroller  සිට high performance 32 bit arm cortex M0,M0,M2,M4 microcontrollers වලින් ඔබ්බොට ගිහින් FPGA, CPLD ,x86 microprocessors, Atom 2-Core processors, 
6 core microcontrollers  වලිනුත් ඔබ්බට දිවුනු වෙමින් පවති . 
වැදගත්ම කාරනාව වනුයෙ මෙය open source වීමය. එමගින් තවත් සමාගම් විසින් තව තවත් මෙම  environment එක දිවුනු  කරමින් පවතී. උදාහරණ ලෙස UDOO, Intel ,Google, Sony, NXP, Samsung, Microsoft, MicroChip, St micro, espressif, Nordic Semiconductors, national instruments,raspberry pi, espressif systems වැනි ලොව ප්‍රමුඛ පෙළෙ සමාගම් එක්ව සිටි ඉදිරියෙදි මෙම environment එක බොහෝසෙයින් දිවුනු වනු ඇතැයි මා විස්වාස කරමි.  arduino හි මුල්ම ආරම්භය සනිටුහන් වන්නේ ඉතාලියේ ඉවුරියා නුවරින්. වර්තමානයේ පවා සමරනු ලබන Arduino of Ivrea ඉතාලියේ රජ කෙනෙකි. එබැවින් arduino යනු ඉතාලියේ ඉතා බලවත් නමකි.  එහි අර්ථය වන්නේ ශක්තිමත් මිතුරා යන්නයි. ඒ අනුව බලන කල arduino එහි නිවැරදි නමින් ම වාසි ලබා ඇති බව පැහැදිලි කරුණකි. 
මෙම බ්ලොගයට arduinoSrilanka  යන නම දැමීමට ප්‍රධාන හේතුව වනුයේ මා පුත්ගලිකවම ඇති කැමැත්ත නිසාවෙනි , නමුත් මෙහි අරමුණු වන්නේය. Embedded systems Electronics,  Applied electronics, Power electronics, High frequency electronics  සහ High frequency/ high speed PCB designing , Simulation theories ,IOT, Algorithms,  Automations,  3D printing, CNC CNC milling, laser cutting  ආදී තවත් බොහෝ දැනුම ද Solidworks, Labview, ANSYS, Protius , NI multisum , ORCAD,  Autodesk Innovation ,  Autodesk fution360 , KiCAD, Altium Designer ,solidworks CST , Xilinx ISE වැනි මෘදුකාංග දැනුම සමාජ ගත කරන අදහසින්  මෙම බ්ලොගය 2015 දී ආරම්භ කරන ලදී. බොහෝදෙනාට මෙම බ්ලොගය වැදගත් වුන් ඇත්යි මා සිතමි ! 
මම රංගන තෙන්නකෝන්









2015/02/05
Posted by arduino srilanka

Popular Post

Copyright © arduino sri lanka