Archive for February 2015
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);
නියත අගයක් ගන්නා 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);
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 එකට පමණි
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 කරනු ලැබේ.මෙම ක්රමය මගින් වඩා වැඩි නිරවද්ය තාවෙන් යුක්ත වූ ක්රමලේඛ සදාගත හැකි.
එකම නමින් 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
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 වැසීම සිතේ තාබා ගතයුතු වැදගත් කාරනවක් වේ.
arduino Srilanka පෙරවදන
බොහෝ විට මිනිසුන් විශාල ප්රමාණයක් සිතනුයේ 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 වලිනුත් ඔබ්බට දිවුනු වෙමින් පවති .
මෙය නිවැරදිව හැඳින්වෙනුයේ මෙය 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 දී ආරම්භ කරන ලදී. බොහෝදෙනාට මෙම බ්ලොගය වැදගත් වුන් ඇත්යි මා සිතමි !
මම රංගන තෙන්නකෝන්