Arduino IO Pin සමග ගනු දෙනු - Part 2
සුබ දවසක් හැමෝටම. ඔයාලට මතක ඇති අපි කලින් ලිපියකදි කතා කලා ආඩුයිනෝ එකේ digital pin එකක් On / Off කරන ආකාරය සහ digital pin එකකට පිටතින් input එකක් දෙන විදිය. ඒ ලිපිය බලපු නැති අය මෙතනින් ගිහින් ඒක බලලා ඉන්න.
අද කියලා දෙන්න යන්නෙ Arduino එකෙන් PWM ආකාරයට analog output එකක් ලබාගන්නෙ කොහොමද සහ ආඩුයිනෝ එකට පිටතින් ලබාදෙන analog signal එකක් read කරගන්නෙ කොහොමද කියන එක ගැන.
3 - කොහොමද arduino එකෙන් PWM විදියට Analog output එකක් ගන්නෙ
සාමන්යයෙන් Digital උපකරණයකින් analog output එකක් ගන්න භාවිතා කරන්නෙ DAC (Digital to Analog Converter) කියන සැකැස්ම. නමුත් ආඩුයිනෝ එකේ මේ DAC අන්තර්ගත වෙන්නෙ නෑ. ඒ වෙනුවට PWM (Pulse Width Modulation) කියන ක්රමයට තමයි මේ වැඩේ කරගන්නෙ.
මෙතනදි වෙන්නෙ Arduino එකේ PWM pin වලින් 490Hz පමන සංඛ්යාතයක් සහිත කොටු තරංග (square wave) නිපදවනවා. ඒ තරංගයේ On time සහ off time වෙනස් කිරීමෙන්, ඒ කියන්නෙ duty cycle එක වෙනස් කිරීමෙන් තමයි මේ PWM frequency එක හදාගන්නෙ. මේ PWM ක්රමය ගොඩක්ම සාර්තකව වැඩ කරන්නෙ resistive load වලට. ඒත් LED වලටත් මේ ක්රමය යොදාගෙන ඒවායේ brightness අඩු වැඩි කරගන්න පුලුවන්. මෝටර් වල වේගය පාලනය කරන්නත් මේ ක්රමය යොදාගන්න පුලුවන්.
ආඩුයිනෝ UNO එකේ PWM pins 6ක් දැකගන්න පුලුවන්. ඒ pin වලට ලගින් (~) මේ සලකුණ මුද්රණය කරලා තියනවා පහසුවෙන්ම හදුනාගන්න හැකි වෙන්න
analogWrite(pin, value);
මේ විදියට තමයි code එකේ function එක ලියාගන්නේ.
මෙතනදි pin කියන්නෙ arduino එකෙන් analog output එක පිටතට ලබාදෙන PWM pin එක. value කියන්නෙ අපි ලබා දෙන analog value එකට සමානුපාතිකව ගන්න අගය. මේක 8-bit අගයක්. ඒ කියන්නෙ 0 සිට 255 දක්වා අගයක් තමයි භාවිතා කරන්න පුලුවන්. උදාහරණයක් විදියට duty cycle එක 100% ක PWM signal එකක් ඕනෙ නම් මේ විදියට තමයි ලියන්නෙ.
analogWrite(9, 255);
මෙතනදි මම අරන් තියෙන්නෙ D9 pin එක. මේ 255 කියන අගයට 5V කියන voltage එක අනුරූප වෙනවා. 2.5V PWM voltage එකක් ගන්න ඕනෙ නම් value එක විදියට 127 ට ආසන්න අගයක් දුන්නා නම් හරි.
මේක ආදර්ශනය කරන්න පහත දැක්වෙන උපාංග අවශ්ය වෙනවා.
1x Arduino UNO
1x LED
1x 220 Ohm Resistor
2x Jumper Wire
1x Breadboard
අපි මේක test කරන්න පහතින් දැක්වෙන ආකාරයේ පරිපතයක් අටවගමු.
මෙතන් download කරගන්න code එක. මේතනදි වෙන්නෙ arduino එකේ D9 කියන PWM pin එකට සම්බන්ද කල LED එකේ Brightness එක අවමයේ සිට උපරිමයටත් නැවත උපරිමයේ සිට අවමයටත් ගමන් කිරීම.
4 - කොහොමද arduino එකේ analog input pin වලින් අපි පිටතින් ලබා දෙන analog signal එකක් read කරන්නෙ
Analog signal එකක් කියන්නේ දෙන ලද වෝල්ටීයතා මට්ටම් දෙකක් අතරේ විචලනය වෙන වෝල්ටීයතාවයකට. Arduino එකට හැකියාවක් තියනවා 0V සිට 5V දක්වා ඕනෑම voltage එකක් read කරලා ඊට අනුරූපව යම් කිසි අගයකින් එය දක්වන්න. ඒ සදහා Arduino UNO එකේ නම් වෙනම Analog Input pins 6ක් තියෙනවා. මේවා නම් කරලා තියෙන්නෙ A0 සිට A5 දක්වා සලකුනු වලින්.
Arduino Analog Input Pin විසින් අපි ලබාදෙන වෝල්ටීයතාවය කියවන්නේ 10 bit resolution එකකට. ඒ කියන්නේ 2^10 වන බලයක පරාසයක් තමයි අදාල ඇනලොග් වෝල්ටීයතාවය නිරූපනය කරන්නෙ. වඩා සරලව කියනවා නම් මේ analog pin වලට පුලුවන් අපි ලබා දෙන 0-5V voltage එකට අනුරූප 0-1023 අතරේ අගයක් දෙන්න. ඒක සිදු වෙන්නෙ arduino analog input pin වල තියන 10-bit ADC (Analog to Digital Converter) වලින්.
උදාහරණයක් විදියට අපි 0V දුන්නොත් value එක වෙන්නෙ 0
5V -> 1023
2.5V -> 511
ඔන්න ඔය වගේ අගයක් ලබා දෙනවා. ඒ අගය අපේ coding වලට ගන්න වෙනම function එකක් තියනවා. ඒ තමයි,
analogRead(pin);
මෙතනදි pin කියන්නෙ අපි analog voltage එක arduino එකට ලබා දෙන pin එක.
උදාහරණයක් විදියට A0 කියන pin එක භාවිතා කරනවා නම් අපිට පුලුවන් පහත විදියට code එක ලියන්න.
int val = analogRead(A0);
මෙතන val කියන්නෙ int වර්ගයේ විචල්යයක්. අපි int එකක් භාවිතා කරන්න හේතුව තමයි analogRead() වලින් ලබා දෙන අගය පූර්ණ සංඛ්යාවක් නිසා.
ආඩුයිනෝ එකට analog input එකක් දෙන්න අවශ්ය නම් අපිට ඒ සදහා potentiometer එකක් භාවිතා කරන්න පුලුවන්. Potentiometer එකක් කියන්නෙ විචල්යය ප්රතිරෝධයක්. ඒ හරහා 5V සැපයුවොත් potentiometer එකේ මැද pin එකෙන් අපිට පුලුවන් අපි potentiometer එක කරකවන ප්රමාණයට අනුරූපව voltage එකක් ලබාගන්න. මේකට 1K, 10K, 100K වගේ ඕනම potentiometer එකක් ගන්න පුලුවන්.
වැඩේට අවශ්ය උපාංග ටික තමයි මේ.
1x Arduino UNO
1x Potentiometer
3x Jumper Wire
1x Breadboard
මේ විදියට පරිපතය අටවාගන්න.
මෙතනින් download කරගන්න සම්පූර්ණ code එක. මම ඒකෙ කරලා තියෙන්නෙ arduino analog pin එකකින් read කරගත්ත value එක serial monitor එකේ print කරපු එක.
එහෙනම් යාලුවනේ අදට ලිපිය ඉවරයි. සුබ දවසක් හැමෝටම.
Comments
Post a Comment