Saturday, May 14, 2016

Blink Without Delay

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