Arduino Lesson 05 – Push Button මගින් LED බල්බ පාලනය.

මෙම පාඩමේදී අපි Push Button එකක් භාවිතයෙන් සිග්නල් එකක් ලබා දී LED එකක් හා කිහිපයක් අපට අවශ්‍යය ආකාරයට හසුරවන ආකාරය ඉගන ගනිමු. එමගින් ඔබට ඩිජිටල් සිග්නල් අදාන කරන ආකාරය පිලිබද මනා අවබෝධයක් ලබා ගත හැකිය.

Project 5.1 – Push Button එකක් මගින් LED එකක් පාලනය කිරීම.

Push button එකෙන් ලැබෙන දත්ත කියවීමට හා ඒවා යොදාගෙන LED එකක් පාලනය කර පෙන්වීමට මෙහිදී ආර්ඩුයිනෝ බෝර්ඩ් එකක් භාවිතා කරයි.

අවශ්‍යය උපාංග

පරිපථ සම්බන්ධ දැනුම

Push Button සම්බන්ධ කරන ආකාරය

අපි පළමු පාඩමේදී push button එක කෙලින්ම සම්භන්ධ කොට LED එකක් දල්වන හා නිවන ආකාරයට පරිපථයක් සකස් කර භාවිතා කරන ලදී. නමුත් ඩිජිටල් පරිපථයක push button එක අදාන සිග්නල්(Input Signal)  එකක් විදිහට භාවිත කෙරේ. එයට පහත පරිදි පරිපථයක් සකස් කර භාවිතා කළ හැකිය.

ඉහත පරිපථයේ push button එක තද කර නොමැති විට ආර්ඩුයිනෝ බෝර්ඩ් එකට 5V(high level) ලැබේ, එසේම button එක තද කල විට එයට 0V(low level) ලැබේ. මෙහිදී R2 ප්‍රතිරෝධය යොදා ගැනීමට හේතුව වන්නේ බෝර්ඩ් එකේ පින් එකේ වෝල්ටීයතාව අහම්බෙන් ඉහල යාමට ඉඩ නොදීමයි. එසේම පහත පරිපථ සටහනද මේ සඳහා යොදා ගත හැකිය. නමුත් මෙහිදී push button එක තද කර හා නැති අවස්ථාවන්ගේ, බෝර්ඩ් එකේ පින් එකේ වෝල්ටීයතාවයන් ප්‍රතිවිරුද්ධ අගයන් වේ.

පරිපථ සැකැස්ම

එසේම පහත පරිපථ සටහනද මේ සඳහා යොදා ගත හැකිය. නමුත් මෙහිදී push button එක තද කර හා නැති අවස්ථාවන්ගේ, බෝර්ඩ් එකේ පින් එකේ වෝල්ටීයතාවයන් ප්‍රතිවිරුද්ධ අගයන් වේ. මෙම පරිපථයේ කොටස් දෙකක් ඇත. එනම් සිගනල් ආදාන කිරීමේ කොටස සහ සිග්නල් ප්‍රතිදාන කිරීමේ කොටසයි.

Schematic diagram

Hardware Connection

Sketch 5.1.1

අපි දැන් push button එකේන් සිග්නල් ලබා ගැනීමට හා එය LED එක මගින් පෙන්වීමට ප්‍රෝග්‍රෑම් එකක් ලියමු.

int buttonPin = 12; // the number of the push button pin 
int ledPin = 9;    // the number of the LED pin 

void setup() { 
  pinMode(buttonPin, INPUT); // set push button pin into input mode 
  pinMode(ledPin, OUTPUT);   // set LED pin into output mode  
} 

void loop() { 
  if (digitalRead(buttonPin) == HIGH) // if the button is not pressed 
    digitalWrite(ledPin, LOW);	// switch off LED 
  else	// if the button is pressed 
    digitalWrite(ledPin, HIGH);	// switch on LED 
}

පින් හඳුනා දීමෙන් පසු , push button එකෙන් ලැබෙන දත්ත අනුව LED එක දැල්වීම හා නිවීම සිදු කළ  හැකිය.

digitalRead(pin)

ආර්ඩුයිනෝ සොෆ්ට්වෙයාර් එක මගින් digitalRead(pin) ලෙස ෆන්ෂන් එකක් ලබා දී තිබේ. පින් ලෙස දක්වා තිබෙන්නෙ දත්ත ලබා ගන්නා පින් එකයි. ඒ අනුව එම ෆන්ෂන් return value එක HIGH නම් high level හා LOW නම් low level අර්ථ දැක්වේ. එනම් පින් එකේ HIGH හෝ  LOW අවස්ථාවයි.

ප්‍රෝග්‍රෑම් එක නිවැරදිදැයි පරීක්ෂ කිරීමෙන් අප්ලෝඩ්  කරන්න. ඉන් පසු push button එක තද කරන විට LED එක දැල්වීම හා අත්හැරිය විට LED එක නිවී යයි.

Project 4.2 –  Change LED State by Push Button

අවශ්‍යය උපාංග

පෙර Project එකෙහිම භාවිතා කළ පරිදිම වේ.

පරිපථ සම්බන්ධ දැනුම

Debounce for push button

push buton එක තද කරන විට එහි විභවය එක් වරම එක් වෝල්ටීයතාවයක සිට වෙනස් වෝල්ටීයතාවයකට වෙනස් වන්නේ නැත. එනම් එක වරම එහි අවස්ථාව වෙනස් නොවේ. ඇත්තටම ගතහොත් එය ස්ථායි වීමට පෙර සුළු වෙනස් වීමක් සිදුවනු දැක ගත හැකිය.

එනම් එය පොඩි කාලයක් තුළ වෝල්ටීයතා විචලනයක් සිදු වේ. එක් තදකිරීම් ක්‍රියාවලියකදී, හෝ තදකිරීම සහ අතහැරීම නොකඩවා සිදු වන විට, මෙම අස්ථායි වෙනස් වීම් ඉවත් කිරීම අනිවාර්ය වේ.

මේ සඳහා ආර්ඩුයිනෝ බෝර්ඩ් එක මඟින් සිග්නල් එක මුලින් ලැබුණු විට වැඩසටහන ක්‍රියාත්මක නොකර යම් පොඩි වෙලාවක් රැඳී සිට සිග්නල් එක තහවුරු වූ පසුව වැඩසටහන ක්‍රියාත්මක වන ආකාරයට භාවිතා කළ යුතුයි.

පරිපථ සැකැස්ම

පෙර පාඩමේ පරිදිම වේ.

Sketch 4.2.1

දැන් අපි push button එකේ අදාල වෙනස්විම හඳුනා ගැනීමට ප්‍රෝග්‍රෑම් එකක් නිර්මාණය කරන ආකාරය විමසා බලමු.

මෙහිදී push button එක තද කරන සෑම විටම LED එක දැල්වීම හෝ නිවීම සිදු වේ.

int buttonPin = 12; // the number of the push button pin 
int ledPin = 9;     // the number of the LED pin 
boolean isLighting = false; // define a variable to save state of LED 

void setup() { 
  pinMode(buttonPin, INPUT); // set push button pin into input mode 
  pinMode(ledPin, OUTPUT);   // set LED pin into output mode 
} 

void loop() { 
  if (digitalRead(buttonPin) == LOW) {	// if the button is pressed 
    delay(10);   // delay for a certain time to skip the bounce 
    if (digitalRead(buttonPin) == LOW) {	// confirm again if the                 button is pressed 
 reverseLED();	// reverse LED 
 while (digitalRead(buttonPin) == LOW); // wait for releasing 
 delay(10); // delay for a certain time to skip bounce when the button is released 
    } 
  } 
} 

void reverseLED() { 
  if (isLighting) {	        // if LED is lighting, 
    digitalWrite(ledPin, LOW);  // switch off LED 
    isLighting = false;	        // store the state of LED 
  } 
  else {	                    // if LED is off, 
    digitalWrite(ledPin, HIGH); // switch LED 
    isLighting = true;	        // store the state of LED 
  } 
}

මෙහිදී අපි බටන් එකේ පවතින තත්ත්වය වෙනස් කර ගැනීමට reverseLED() කියන ෆන්ෂන් එක භාවිතා කරනු ලැබේ. මෙහි තත්ත්වය ලෙස අදහස් කරේ ON සහ OFF අවස්ථා දෙකයි.

push බටන් එකක පවතින තත්ත්වය හඳුනා ගැනීමේදී, එය තද කරන විට යම් කිසි කාලයක් බලා සිට තහවුරු කර ගන්නා අතර එය අතහැරිමේදි ද නැවත කාලයක් බලා සිට තහවුරු කර ගනී.

කේතනය නිවැරදිදැයි පරික්ෂා කර අප්ලෝඩ් කිරීමෙන් පසු, button එක තද කරන සෑම විටම LED එකේ පවතින තත්ත්වය  එයට අනුව වෙනස් වීම ඔබට දැක ගත හැකිය. එනම් ON සහ OFF වේ.

Sketch 4.2.2

int button = 12;
int led = 9;
int status = false;

void setup(){
pinMode(led, OUTPUT);
pinMode(button, INPUT_PULLUP); 
}

void loop(){

if (digitalRead(button) == true) {
status = !status;
digitalWrite(led, status);
} while(digitalRead(button) == true);
delay(50);
}

Reference

  • https://www.arduino.cc/reference/en/language/variables/data-types/bool/
  • https://www.arduino.cc/reference/en/language/variables/constants/inputoutputpullup/

Leave a Reply

Your email address will not be published. Required fields are marked *

Index