අපිට මෙීකට ඔීන කරනව
- Arduino or Genuino Board එකක්
- LED එකක්
- 220 ohm resistor එකක් (1K එකක් වුනත් අවුලක් නෑ)
13 වෙනි Pin එකට තමයි LED එක සම්බන්ද වෙන්නෙ. හැබැයි CODE එක දෙන්න එපා. මොකද පහල තියෙන code එක තමයි අපි upload කරන්න ඔීන.
Software code source:- FILE -- 02.Digital -- BlinkWithoutDelay
CODE
--------------------------------------------------------------------------------
// constants කවදාවත් වෙනස් වෙන්නෙ නෑ. මෙතන LED pin එක Const කරල තියෙන්නෙ. ඉතින් 13 කියන අගය ආයෙ වෙනස් වෙන්නෙ නෑ.
const int ledPin = 13; // 13 වන Pin එක ledpin එක
int ledState = LOW; // මෙී තියෙන ledState කියන variable එක const කරල නෑ. ඉතින් LOW කියන අගය ඔීනෑම වෙලාවක අපිට වෙනස් කරන්න පුළුවන්
// සාමාන්යයෙන් වෙලාවක් (time) store කරන්න අපි unsigned long කියන variable එක පාචිච්චි කරනවා. *පහල තියෙන වගුවෙ දාල තියෙනවා int, char, long වැනි ගොඩක් Data types වල sizes.
unsigned long previousMillis = 0; //මෙීකෙදි LED එක අන්තිම වතාවට update වුන වෙලාව store කර ගන්නවා
const long interval = 1000; // blink වෙන්න කාල පරාසය (milliseconds වලින් තියෙන්නෙ මෙතන)
void setup()
{
pinMode(ledPin, OUTPUT); //අර උඩදි දීපු ledPin (13 වන pin එක) දැන් digital output pin එක ලෙස දෙනවා.}
void loop()
{
//දැන් වෙලාව (currentMillis ) අන්තිමට UPDATE වූ වෙලාව (previousMillis) වලින් අඩු කරාම ලැබෙන පිලිතුර අර අපි උඩදි interval කියල දීපු milliseconds 1000ට (තත්පර නම් 1යි) වඩා විශාල හෝ සමාන නම් previousMillis එක සමාන කරනව currentMillis කියන එකට. **තේරුනෙ නැත්තම් පහලින් ගාන හදල දාල තියෙනවා
unsigned long currentMillis = millis(); //millis(); කියන්නෙ අපි code එක run කරපු වෙලාවෙ ඉදන් මිලිතත්පර වලින් ගනන් කරන්න පටන් ගන්නවා. ඒක තමයි currentMillis කියල අරන් තියෙන්නෙ.
if (currentMillis - previousMillis >= interval)
{
previousMillis = currentMillis; // කලින් තිබුන වෙලාව දැන් තිබුන වෙලාව ලෙස වෙනස් කරන්න. ***
if (ledState == LOW) // බල්බ් එක නිවිලද තිබෙන්නෙ කියා check කරනවා. එය සත්ය නම් පහත දේ කරන්න
{
ledState = HIGH; //බල්බය දල්වන්න
}
else //එය අසත්ය නම් පහත දේ කරන්න
{
ledState = LOW; // බල්බය නිවන්න
}
ledState = HIGH; //බල්බය දල්වන්න
}
else //එය අසත්ය නම් පහත දේ කරන්න
{
ledState = LOW; // බල්බය නිවන්න
}
digitalWrite(ledPin, ledState); //ledPin කියන 13 වන චසබ එකට ledState කියන කලින් කලට වෙනස් වෙන variable එකට එක යවන්න
}
}
}
}
---------------------------------------------------------------------------------
*වගුව
int
|
-32,768 to 32,767
or
-2,147,483,648 to 2,147,483,647
|
unsigned int
|
0 to 65,535
or
0 to 4,294,967,295
|
long
|
-2,147,483,648 to 2,147,483,647
|
unsigned long
|
0 to 4,294,967,295
|
short
|
-32,768 to 32,767
|
unsigned short
|
0 to 65,535
|
char
|
-128 to 127
or
0 to 255
|
signed char
|
-128 to 127
|
unsigned char
|
0 to 255
|
code එක run කරල දැනට තත්පර 2 ක් ගිහින් (2000 milliseconds). එතකොට millis(); කියන syntax එකේ දැන් 2000යි කියල තියෙනවා. අපි ඒ අගය සමාන කරල තියෙනව currentMillis කියන එකට. අපි උඩින්ම assign කරල තියෙනව previousMillis = 0 කියල. තව interval කියල එකක් දීල තියෙනව 1000යි කියල (milliseconds 1000, තත්පර නම් 1යි)ග ඊට පස්සෙ ඔය යටින් තියෙන if කියන තැනදි අපි check කරනවා,
දැන් ගනන් වෙලා තියෙන තත්පර ගානෙන්, කලින් තිබුන වෙලාව අඩුකරාම ලැබෙන අගය අර interval කියන තත්පර ගානට විශාල හො සමානද කියල.
currentMillis - previousMillis >= interval
2000 - 0 >=1000 කියල තමයි බලන්නෙ.
තත්පර 2 - තත්පර 0 >= තත්පර 1ට
මෙීක සත්යයිනෙ. 2000 කියන අගය 1000 කියන අගයට වඩා විශාලයි නෙ. ඒක නිසා if එක ඇතුලෙ තියෙන code එක run වෙනවා.
***ඒ code එකේදි previousMillis = currentMillis; කියල දාල තියෙනව නේද. ඒ කියන්නෙ දැන් කලින් තිබුන වෙලාව(previousMillis ) කියන එක දැන වෙලාව කරන්න කියන (currentMillis). ඒ කියන්නෙ 0 කියල තිබුන අගය දැන් 2000 වෙලා. හැබැයි current mills කියන එක හැම මිලිතත්පරයකදිම වෙනස් වෙන ඔය ඉහත සමාන වීම වෙලා ක්ෂනයකින් currentMillis කියන එකේ අගය වෙනස් වෙනවා. ඒ කියන්නෙ ඊට තත්පරේකට පස්සෙ අගය 3000 වෙනව කියන එක.
ඔය (currentMillis - previousMillis) අගය interval කියන අගය ට වඩා කුඩාවට තියෙන තුරාවටම else කියන code එක තමයි run වෙන්නෙ. ඒ කියන්නෙ බල්බ් එක නිවිල තියෙන්නෙ.
millis(); - කියන්නෙ
අපි code එක run කරපු
වෙලාවෙ ඉදන් මිලිතත්පර වලින් ගනන් කරන්න පටන් ගන්නවා. සාමාන්යයෙන් දවස් 50ක් විතර මෙීකෙන් ගනන් කරන්න පුළුවන්.
ඊට පස්සෙ ඒක 0 බවට පත් වෙලා මුල ඉදන් යනවා.
මෙීකෙ return value එක නිතරම unsigned long වලින් තමයි ලැබෙන්නෙ. මෙීකට int වගේ data type එකක් දුන්නොත් code එකේ error දෙන්න ගන්නවා.
සැ.යු. - මෙම code එකෙහි // වලින් පටන්ගෙන ඇති දේවල් ඔබ code කරන විට ලිවීම අවශ්ය නොවෙී. අප මෙීවා හදුන්වන්නේ comments ලෙසටය. ඒවා අපගේ පහසුව වෙනුවෙන් අපි දමා ගන්නා කුඩා note එකක් වැනි දෙයකි.
එහෙනම් යාළුවනේ තවත් වැඩ කෑල්ලකින් හම්බවෙමු
මතක ඇතුව ඔයාලගෙ අදහස් යටින් දාන්න යාළුවනේ. ඊලග ලිපියෙන් හමුවෙමු. මෙී ලිපියෙ තියෙන වැරදි අඩුපාඩු මතක ඇතුව පහතින් සදහන් කරන්න.
සැ.යු. - මෙම code එකෙහි // වලින් පටන්ගෙන ඇති දේවල් ඔබ code කරන විට ලිවීම අවශ්ය නොවෙී. අප මෙීවා හදුන්වන්නේ comments ලෙසටය. ඒවා අපගේ පහසුව වෙනුවෙන් අපි දමා ගන්නා කුඩා note එකක් වැනි දෙයකි.
එහෙනම් යාළුවනේ තවත් වැඩ කෑල්ලකින් හම්බවෙමු
මතක ඇතුව ඔයාලගෙ අදහස් යටින් දාන්න යාළුවනේ. ඊලග ලිපියෙන් හමුවෙමු. මෙී ලිපියෙ තියෙන වැරදි අඩුපාඩු මතක ඇතුව පහතින් සදහන් කරන්න.
No comments:
Post a Comment