- Back to Home »
- arduino Sinhala Tutorials »
- arduino syntax sinhala tutorials part 1 | ආඩිනෝ රීති ක්රම පළමු කොටස
Posted by : arduino srilanka
2015/02/13
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 වැසීම සිතේ තාබා ගතයුතු වැදගත් කාරනවක් වේ.
patta keet it up bro
ReplyDeleteShaaa niyamaine..........best of luck.
ReplyDeleteNice.......good
ReplyDeletepatta machan thanks.
ReplyDeleteThanks for the lesson
ReplyDeleteSupiriyi ayiye
ReplyDeletegood
ReplyDeletegood job
ReplyDeleteGreat and I have a super offer: Where Do You Get The Money To Renovate A House home interior renovation
ReplyDelete