[ux_video url=”https://youtu.be/fKuiEtiA3JM”]
මෙම පාඩමේදී අපි Push Button එකක් භාවිතයෙන් සිග්නල් එකක් ලබා දී LED එකක් හා කිහිපයක් අපට අවශ්යය ආකාරයට හසුරවන ආකාරය ඉගන ගනිමු. එමගින් ඔබට ඩිජිටල් සිග්නල් අදාන කරන ආකාරය පිලිබද මනා අවබෝධයක් ලබා ගත හැකිය.
Project 5.1 – Push Button එකක් මගින් LED එකක් පාලනය කිරීම.
Push button එකෙන් ලැබෙන දත්ත කියවීමට හා ඒවා යොදාගෙන LED එකක් පාලනය කර පෙන්වීමට මෙහිදී ආර්ඩුයිනෝ බෝර්ඩ් එකක් භාවිතා කරයි.
අවශ්යය උපාංග
[ux_products style=”vertical” type=”row” columns=”2″ depth=”1″ depth_hover=”2″ equalize_box=”true” ids=”423,4125,4134,4255,4155,4143,7697,4697″ image_width=”40″ image_hover=”grayscale” text_align=”left”]
පරිපථ සම්බන්ධ දැනුම
Push Button සම්බන්ධ කරන ආකාරය
අපි පළමු පාඩමේදී push button එක කෙලින්ම සම්භන්ධ කොට LED එකක් දල්වන හා නිවන ආකාරයට පරිපථයක් සකස් කර භාවිතා කරන ලදී. නමුත් ඩිජිටල් පරිපථයක push button එක අදාන සිග්නල්(Input Signal) එකක් විදිහට භාවිත කෙරේ. එයට පහත පරිදි පරිපථයක් සකස් කර භාවිතා කළ හැකිය.
[row]
[col span__sm=”12″ align=”center”]
[ux_image id=”4554″ width=”29″ margin=”0px 0px 0px 0px”]
[/col]
[/row]
ඉහත පරිපථයේ push button එක තද කර නොමැති විට ආර්ඩුයිනෝ බෝර්ඩ් එකට 5V(high level) ලැබේ, එසේම button එක තද කල විට එයට 0V(low level) ලැබේ. මෙහිදී R2 ප්රතිරෝධය යොදා ගැනීමට හේතුව වන්නේ බෝර්ඩ් එකේ පින් එකේ වෝල්ටීයතාව අහම්බෙන් ඉහල යාමට ඉඩ නොදීමයි. එසේම පහත පරිපථ සටහනද මේ සඳහා යොදා ගත හැකිය. නමුත් මෙහිදී push button එක තද කර හා නැති අවස්ථාවන්ගේ, බෝර්ඩ් එකේ පින් එකේ වෝල්ටීයතාවයන් ප්රතිවිරුද්ධ අගයන් වේ.
[row]
[col span__sm=”12″ align=”center”]
[ux_image id=”4555″ width=”29″ margin=”0px 0px 0px 0px”]
[/col]
[/row]
පරිපථ සැකැස්ම
එසේම පහත පරිපථ සටහනද මේ සඳහා යොදා ගත හැකිය. නමුත් මෙහිදී push button එක තද කර හා නැති අවස්ථාවන්ගේ, බෝර්ඩ් එකේ පින් එකේ වෝල්ටීයතාවයන් ප්රතිවිරුද්ධ අගයන් වේ. මෙම පරිපථයේ කොටස් දෙකක් ඇත. එනම් සිගනල් ආදාන කිරීමේ කොටස සහ සිග්නල් ප්රතිදාන කිරීමේ කොටසයි.
[divider width=”1000px” height=”2px”]
[row]
[col span=”6″ span__sm=”12″]
[section label=”Media Bottom” bg_color=”rgb(255, 255, 255)” bg_overlay=”rgba(255, 255, 255, 0.85)” padding=”0px”]
[row_inner style=”collapse” h_align=”center”]
[col_inner span=”6″ span__sm=”12″ padding=”50px 0px 50px 0px” align=”center”]
Schematic diagram
[/col_inner]
[col_inner]
[ux_image id=”4556″ margin=”0px 0px 0px 100px”]
[/col_inner]
[/row_inner]
[/section]
[/col]
[col span=”6″ span__sm=”12″]
[section label=”Media Bottom” bg_color=”rgb(255, 255, 255)” bg_overlay=”rgba(255, 255, 255, 0.85)” padding=”0px”]
[row_inner style=”collapse” h_align=”center”]
[col_inner span=”6″ span__sm=”12″ padding=”50px 0px 50px 0px” align=”center”]
[ux_text text_align=”left”]
Hardware Connection
[/ux_text]
[/col_inner]
[col_inner]
[ux_image id=”4557″ margin=”0px 100px 0px 0px”]
[/col_inner]
[/row_inner]
[/section]
[/col]
[/row]
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 එක දැල්වීම හා නිවීම සිදු කළ හැකිය.
[message_box bg_color=”rgb(221, 234, 255)” text_color=”light”]
[row v_align=”middle” h_align=”center”]
[col span=”11″ span__sm=”12″]
digitalRead(pin)
ආර්ඩුයිනෝ සොෆ්ට්වෙයාර් එක මගින් digitalRead(pin) ලෙස ෆන්ෂන් එකක් ලබා දී තිබේ. පින් ලෙස දක්වා තිබෙන්නෙ දත්ත ලබා ගන්නා පින් එකයි. ඒ අනුව එම ෆන්ෂන් return value එක HIGH නම් high level හා LOW නම් low level අර්ථ දැක්වේ. එනම් පින් එකේ HIGH හෝ LOW අවස්ථාවයි.
[/col]
[/row]
[/message_box]
[gap height=”40px”]
ප්රෝග්රෑම් එක නිවැරදිදැයි පරීක්ෂ කිරීමෙන් අප්ලෝඩ් කරන්න. ඉන් පසු push button එක තද කරන විට LED එක දැල්වීම හා අත්හැරිය විට LED එක නිවී යයි.
[row]
[col span__sm=”12″ align=”center”]
[ux_image id=”4558″ width=”49″ margin=”0px 0px 0px 0px”]
[/col]
[/row]
Project 4.2 – Change LED State by Push Button
අවශ්යය උපාංග
පෙර Project එකෙහිම භාවිතා කළ පරිදිම වේ.
පරිපථ සම්බන්ධ දැනුම
Debounce for push button
push buton එක තද කරන විට එහි විභවය එක් වරම එක් වෝල්ටීයතාවයක සිට වෙනස් වෝල්ටීයතාවයකට වෙනස් වන්නේ නැත. එනම් එක වරම එහි අවස්ථාව වෙනස් නොවේ. ඇත්තටම ගතහොත් එය ස්ථායි වීමට පෙර සුළු වෙනස් වීමක් සිදුවනු දැක ගත හැකිය.
[row]
[col span__sm=”12″ align=”center”]
[ux_image id=”4560″ width=”44″ margin=”0px 0px 0px 0px”]
[/col]
[/row]
එනම් එය පොඩි කාලයක් තුළ වෝල්ටීයතා විචලනයක් සිදු වේ. එක් තදකිරීම් ක්රියාවලියකදී, හෝ තදකිරීම සහ අතහැරීම නොකඩවා සිදු වන විට, මෙම අස්ථායි වෙනස් වීම් ඉවත් කිරීම අනිවාර්ය වේ.
මේ සඳහා ආර්ඩුයිනෝ බෝර්ඩ් එක මඟින් සිග්නල් එක මුලින් ලැබුණු විට වැඩසටහන ක්රියාත්මක නොකර යම් පොඩි වෙලාවක් රැඳී සිට සිග්නල් එක තහවුරු වූ පසුව වැඩසටහන ක්රියාත්මක වන ආකාරයට භාවිතා කළ යුතුයි.
පරිපථ සැකැස්ම
පෙර පාඩමේ පරිදිම වේ.
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/