Blink Without Delay
සමහර විට ඔයාට වෙන අවස්තාවල, එම අවස්ථාවේ දී LED දැල්විම (හෝ වෙනත් කාල සංවේදී ) වැනි ක්රියාවලදි delay ක්රියාව බාවිතා නොකර code එක ගහන විදිහ ගැන අද කතාකරන්නේ.මෙහිදි පෙර ආකරයටම LED බල්බයක් arduino board එකට සම්බන්ද කරගන්න.code
int ledPin = 13; // LED connected to digital pin 13
int value = LOW; // previous value of the LED
long previousMillis = 0; // will store last time LED was updated
long interval = 1000; // interval at which to blink (milliseconds)
void setup()
{
pinMode(ledPin, OUTPUT); // sets the digital pin as output
}
void loop()
{
// here is where you'd put code that needs to be running all the time.
// check to see if it's time to blink the LED; that is, is the difference
// between the current time and last time we blinked the LED bigger than
// the interval at which we want to blink the LED.
if (millis() - previousMillis > interval) {
previousMillis = millis(); // remember the last time we blinked the LED
// if the LED is off turn it on and vice-versa.
if (value == LOW)
value = HIGH;
else
value = LOW;
digitalWrite(ledPin, value);
}
}
මෙහි ledpin යනු 13 වන pin එක වේ.value යනු මෙහි 13 වැනි පින් එකෙ voltage එක high ද,low ද කියලා තිරනය කරන variable සාදකය වේ. previousMillis යනු පෙරකාලය මතක තබාගැනිමෙ variable යි.මුලින් මෙහි අගය 0 වේ.
interval යනු විවේක(delay අගය) කාලයයි.
void setup() යන කොටසෙන් වෙන්නෙ ledpin එක OUTPUT එකක් ලෙස සකස් කිරිම.
void loop() කොටසේ දි ,
(millis() - previousMillis > interval) කොටසේ millis() යනුfunction එකක් වේ. මෙහිදීවන්නේ arduino එක on වුනු වෙලාවෙ සිට කොපමණ කාලය ගතවූවද වේ.දැන් if(millis() - previousMillis > interval) නම් previousMillis = millis(); වියයුතුය.තවද if(value == LOW) නම් value = HIGH; බවට හැරිය යුතුය.else නැත්නම් value = LOW; ලෙසටම තිබිය යුතුයි.ඉහත ක්රියා 2න් කුමක්s සිදුවූ වත් ඉන් පසු digitalWrite(ledPin, value); වියයුතුයි.මෙය loop එකක් ලෙස දිගින් දිගට සිදුවේ.
ex:-
1වටය,
value=low;
long previousMillis = 0;
long interval = 1000;
mills() අගය 1000.1නම් ,
(1000.1-0) >1000වේ,එවිට previousMillis = 1000.1;වේ.value=low;නිසා
value=high; වේ.එවිට බල්බය දැල්වේ.ඉන්පසු ඊලග වටයේ දී නැවත
value=low;වේ.එමනිසා මිලිතත්පර 1000 න් 1000ට නිවිනිවිදැල්වේ.
No comments:
Post a Comment