4. Analog Write
Analog Write භාවිතයෙන් දීප්තිය වෙනස් වන LED එකක්
Components Required
හැඳින්වීම
මෙම පාඩමේ දී අපි LED එකක දීප්තිය වෙනස් කරන්නේ කෙසේදැයි ඉගෙන ගනිමු. මීට අමතරව bulb, හා motor වැනි උපාංග analog output මගින් පාලනය කළ හැක.
පාඩම් අරමුණ
මෙම උදාහරණයෙන්, ඔබට පහත දෑ පිළිබඳ වැටහීමක් ලැබෙනු ඇත,
- Pulse Width Modulation භාවිතය ඉගෙන ගැනීම.
- Analog Write භාවිතය ඉගෙන ගැනීම.
සිද්ධාන්තය
LED එකක දීප්තිය වෙනස් කිරීම සඳහා LED එක සඳහා සපයන වෝල්ටීයතාවය වෙනස් කළ හැක. නමුත් Microcontroller මගින් වෝල්ටීයතා වෙනස් කිරිමේ හැකියාව සිමාසහිතය. එමනිසා, PWM (Pulse Width Modulation) නම් වූ කර්මයක් භාවිතා කෙරෙයි. මෙම ක්රමයේදී අදාන Pin එකට ලබාතෙන සැපයුම අධික වේගයෙන් On හා Off කිරීමක් සිදුකරයි. එමගින් LED එකක ආලෝකය අවශ්ය පරිදි වෙනස් කිරීමට හැක.
Duty Cycle යනු ක්රියාත්මක(On) සහ අක්රිය(Off) වේලාවන් අතර අනුපාතය විස්තර කිරීමට භාවිතා කරන යෙදුමකි.
මෙම උදාහරණයේදී High Duty Cycle අගයන් වැඩි ආලෝකයක් ලබාදෙන අතර Low Duty Cycle අගයන් අඩු ආලෝකයක් ලබා දෙයි
ක්රමවේදය
මෙම උදාහරණය සඳහා කොළ LED එකක් D16 පින් එකට සම්බන්ධ කර ඇත. මෙහිදී PWM signal එකක් නිර්මාණය කිරීමට for loop යොදා ගනියි.
#include <ESP32Servo.h> int greenLED = 16; //The greenLED is used for pin D16 void setup(){ pinMode(greenLED,OUTPUT); } void loop(){ for(int i = 0; i < 256; i++){ analogWrite(greenLED, i); delay(10); }
පැහැදිලි කිරීම
for loop එකක් භාවිතා කිරීමේ දී පරාමිතීන්(parameters) තුනක් යොදා ගනී. මෙහි int i යනු විචල්යයකි(variable). i සඳහා ලබාදෙන අගයන් මෙම විචල්යයට සමාන කෙරේ. for loop එක ක්රියාත්මක වීමට අවශ්ය වන කොන්දේසිය(condition) දෙවන පරාමිතිය එක මගින් ලබාදෙයි. මෙම පරාමිතිය සත්යය වන තෙක් for loop එක නොනැවතී ධාවනය වේ. මෙම loop එක ධාවනය වන සෑම වාරයක් පාසා සිදුකරන වෙනස්කම්ක් තෙවන පරාමිතිය වශයෙන් ලබා දෙයි. ඒ සඳහා, මෙම උදාහරණයේදී i අගයට එකක් එකතු කිරීම සිදු කෙරේ.
මෙම i variable එක සඳහා ලබාදෙන අගය analogWrite විධානය ඔස්සේ LED එක සඳහා සැපයීමෙන් විවිධ ආලෝක රටාවන් නිර්මාණය කළ හැක. මෙම උදාහරණයේදී අප යොදාගත් for loop එක LED එකේ ආලෝකය ක්රමයෙන් වැඩි වීමට සකසා ඇත.
මෙහිදී 0 සිට 255 දක්වා(i සඳහා ලබාදෙන) අගයන් V 0 සිට V 5 දක්වා සිතියම්ගත කිරීම(Mapping) කෙරේ. එම නිසා 255, V 5 සමාන වන අතර 0, V 0 ට සමාන වේ. i හි අගය 0 සිට 255 දක්වා හා 255 සිට 0 දක්වා ඕනෑම ආකාරයකින් වෙනස් කිරීම්ට හැකිය අතර එම් අගයන් analogWrite ක්රමවේදය ඔස්සේ LED එකට ලබා දීමෙන් ඉතා අලංකාර ආලෝක රටා නිර්මාණය කළ හැක.