arduino pwm output
Arduino මගින් ලබා ගත
හැකි අනෙක් OUTPUT වර්ගය වන්නේ PWM OUTPUT වේ. PWM යනු කුමක්ද
යන්න පෙරදී පැහැදිලි කර ඇති බැවින් මෙහිදී Arduino යොදාගෙන PWM OUTPUT එකක් ලබාගන්නා ආකාරය
පමණක් විමසා බලනු ලැබේ.
PWM OUTPUT ලබා ගැනීම සදහා Arduino හී ඇති සෑම I/O පින් එකක්ම යොදාගත නොහැක.ඒ සදහා වෙනම පින් Arduino හී සටහන් කර ඇත.පහත දැක්වෙන්නේ Arduino
uno r3
හී එලෙස PWM OUTPUT ලබාගත හැකි පින් වේ.
Arduino මගින් PWM OUTPUT එකක් ලබාගන්නා ආකාරය
මෙහිදීද
PWM OUTPUT එකක් ලබා
ගැනීම සදහා යොදාගනු ලබන්නේ ද Arduino uno r3 පරිපථ පුවරුව වේ.ඉහත
දක්වා ඇති ආකාරයට මෙහි PWM OUTPUT ලබා ගත හැකි
පින් 6 ක් පවතී.ඒ අනුව මෙම පින් එකක් යොදාගෙන PWM
OUTPUT එකක් යොදාගන්නා ආකාරය විමසා බලමු.
PWM OUTPUT එකක වැදගත් මිනුම්
දෙක වන්නේ frequency (සංඛ්යතය)
එක සහ duty cycle එක වේ.මෙහි 3, 5, 6, 9, 10 හා11 පින් PWM OUTPUT ලබා ගත හැකි පින්
වේ.ඒ අනුව 3, 5, 6 හා 9 පින් මගින් 490
Hz පමණ
සංඛයතයකින් PWM
OUTPUT ලබා ගත හැකි අතර 10 හා11 පින් මගින් 1000Hz පමණ සංඛ්යතයකින් PWM
OUTPUT ලබා ගත හැක.
PWM OUTPUT එකක අනෙක් වැදගත් මිනුම වන duty cycle එක සකස් කිරීම සදහා Arduino IDE හී analog Write (pin, value) Function එක යොදාගනු ලබයි.මෙහි value එක සදහා සුදුසු අගයන් යෙදීමෙන් duty cycle එක සකස් කිරීම සිදු කරනු ලබයි.මේ සදහා 0 හා 255 අතර ඕනෑම අගයක් යෙදිය හැක.
ඒ අනුව 0
මගින් 0% duty cycle.
127
මගින් 50% duty cycle.
255 මගින්
100% duty cycle. එකද නිරූපණය කරනු ලබයි
PWM ක්රමය
යොදාගෙන LED එකක ආලෝකය
පාලනය කිරීම
int led_pin
= 6;
void setup() {
pinMode(led_pin, OUTPUT);
}
void loop() {
void setup() {
pinMode(led_pin, OUTPUT);
}
void loop() {
for(int i=0; i<255; i++){
analogWrite(led_pin, i);
delay(5);
}
for(int i=255; i>0; i--){
analogWrite(led_pin, i);
delay(5);
}
}
analogWrite(led_pin, i);
delay(5);
}
for(int i=255; i>0; i--){
analogWrite(led_pin, i);
delay(5);
}
}
PWM ක්රමය යොදාගෙන LED එකක ආලෝකය පාලනය කිරීම -2
මෙම
වැඩසටහන ඉහත වැඩසටහනම වැඩි දියුනුකර ඇති අවස්ථාවකි.එනම් මෙහිදී ආලෝකය පාලනය කිරීම
සදහා ස්විච දෙකක් යොදාගෙන ඇත.එහි 11 වන පින් එකට සම්බන්ද කර ඇති ස්ව්ච මගින් ආලොකය
වැඩිකරන අතර 12 වන පින් එකට සම්බන්ද කර ඇති ස්ව්ච මගින් ආලෝකය අඩුකරනු ලබයි.
int led_pin
= 6;
Const int
button_brighter = 11;
Const int
buttonPin_ darker =12;
void setup()
{
pinMode(button_brighter,
OUTPUT);
pinMode(buttonPin_
darker, OUTPUT);
pinMode(led_pin, OUTPUT);
}
void loop()
{
if (button_brighter == LOW) {
for(int i=0; i<255; i++){
analogWrite(led_pin, i);
delay(5);
}
}
if
(buttonPin_ darker == LOW) {
for(int i=255; i>0; i--){
analogWrite(led_pin, i);
delay(5);
}
}
}