ආඩුඊනෝ ප්‍රෝග්‍රෑමිං Part 09 – Real Knight Rider Pattern

අපි අද බලමු කොහොමද Orginal ම Knight Rider LED රටාවක් හදාගන්නෙ කියල.

ගොඩක් Knight Rider රටා කියල තියන ඒව නියම Knight Rider රටාව නෙවේ කියල ඔයාල දැකල ඇති. මොකද නියම Knight Rider රටාවෙ පිටිපස්සෙන් එළිය අඩුවීගෙන යන වලිගයක් වගේ කොටසක් තියනව ඔයාල දැකල ඇති. ඉතින් අපි අද බලමු කොහොමද ඒ වගේ original ම Knight Rider Circuit එකක් හදාගන්නෙ කියල.

මේ LED රටාව හදන්න කලින් මන් කියන්නම් මේක වෙන්නෙ කොහොමද කියල. ඔයාල දැකල ඇති මේ Knight Rider Circuit එකේ, එන්න එන්න එළිය අඩු වෙන විදිහට තියන LED සෙට් එකක් තමයි දෙපැත්තට ගමන් කරනව වගේ පේන්නෙ කියල. මේක කරන්නෙ voltage එක අඩු වැඩි කරල නම් නෙවෙයි. මේකෙදි භාවිතා කරන ක්‍රමයම පාවිච්චි කරල අපිට පුලුවන් motor එකක speed එක control කරන්න. Servo motor එකක් එක්ක communicate කරන්න. විවිධ communication systems හදන්න වගේ දේවල් කරන්න. මේක ඇතුලෙ වෙන දේට අපි කියන්නෙ PWM කියල. PWM එහෙමත් නැත්තම් Pulse Width Modulation කියන්නෙ මොකක්ද කියල අපි බලමු.

Arduino එකක voltage rRange එක තියෙන්නෙ 0V සිට 5V දක්වා පරාසයක. Arduino බෝඩ් එකක PWM කියල විශේෂ digital pin වර්ගයක් තියෙනව. Arduino Uno බෝඩ් එකක නම් මේ පින් 6ක් තියෙනව. Arduino Uno බෝඩ් එකක 3,5,6,9,10,11 කියන පින් 6 තමයි PWM පින් වෙන්නෙ. මේ PWM පින් එකක් හරහා Output කරන Voltage එක විවිධ අවස්ථාවල වෙනස් වෙන්නට පුලුවන්. මේ විදොහට වෙනස් වෙමින් යන Voltage එකකට අපි කියනව වේව් ෆෝම් එකක් කියල ( 2 රූපය ). මේ වේව් එකේ එකම විදිහෙ කොටස් රිපීට් වෙවී රිපීට් වෙවී යනව කියල ඔයාල දකින්න ඇති. මේ රිපීට් වෙවී යන එක කොටස් සමාන කාලවලින් බෙදුවහම එන එක කොටසකට අපි කියනව cycle එකක් කියල. ඔයාල අහල ඇති frequency එක කියල දෙයක්. මේ freequency එක කියන්නෙ තප්පරයකට මේ cycles කීයක් යනවද කියන එක. අපි භාවිතා කරන Uno බොඩ් එකට නම් 500Hz දක්වා freequency එකක් ලබා දෙන්න පුලුවන්.

(2 රූපය ඇසුරෙනි) මේ cycle එකක තියනවා states 2ක්. එකක් Off උන state එක. අනිත් එක Active අවස්ථාවේ තියන එක. මේ Active අවස්ථාව පවතින කාලයට අපි කියනව Duty Time එක කියල. මේ ඉස්සිලා තියන කොටසකට එහෙමත් Active State එකේ තියන කොටසකට අපි කියනව Pulse එකක් කියල. ඒ Pulse එකේ දිගට අපි කියනව Pulae Width එක කියල. දැන් අපි බලමු මේ Pulse Width එකේ වෙනස් වීම අනුව, එහෙමත් නැත්තම් Pulse Width එකේ Modulation එක අනුව කොහොමද අපිට ලැබෙන Output එක වෙනස් වෙන්නෙ කියල.

3 රූපයේ මුලින්ම තියෙන්නෙ මුලු කාලයම LED බල්බ් එකකට Voltage එක ලැබුනොත්. ඒ කියන්නෙ 5V ම ලැබුනොත් එයා එයාගෙ උපරිම දීප්තියෙන් දැල්වෙනව. ඊළගට සම්පූර්ණ කාලයම කිසිම Voltage එකක් නොලැබුනොත් මේ LED බල්බ් එක දැල්වෙන්නෙම නැහැ. ඊළගට තියන විදිහට 20%ක Duty Cycle එකක් LED එකට තිබුනොත් මේ LED එක එයාගෙ සම්පූර්ණ දීප්තියෙන් 20%ක දීප්තියකින් දැල්වෙනව. ඒ කියන්නෙ සම්පූර්ණ කාලයෙන් 20%ක කාලයක් මේ LED එකට voltage එක ලැබුනොත් 20%ක දීප්තියකින් මේ LED එක දැල්වෙනව කියන එක. ඉතින් මේ විදිහට මේ Duty Cycle එකේ ක්‍රියාකාරීත්වය මත මේ දේ කරන්න පුලුවන්. මේකෙදි සිදුවන්නේත් මේ LED බල්බය blink වීමක්. නමුත් ඒ blink වීම අපේ පියවි ඇහැට දකින්නට පුලුවන් කමක් නෑ… ඒ නිසා ඒ blink වීම අපිට පේන්නෙ එළිය අඩු වැඩි වීමක් විදිහට.

ඔයාල හැමෝම කරල ඇතිනෙ Arduino යොදාගෙන LED එකක් Fade කරන එක. Arduino software එකේ example එකක් විදිහටම ඒ fading code එක එනව. 4 රූපයේ විදිහට පරිපථය සකස් කරගෙන මේ කෝඩ් එක දාල බලන්න. මේක තමයි ඒ LED එක fade කරන code එක.

void setup(){
pinMode(3,OUTPUT);
}

void loop(){
for(int i=0; i<255; i++){
analogWrite(3,i);
delay(10);
}
for(int i=255; i>-1; i–){
analogWrite(3,i);
delay(10);
}
}

මොකක්ද මේ කෝඩ් එකෙන් කියන්නෙ.

මේකෙදි PWM පින් එකක් වෙන 3 වෙනි pin එක output එකක් බවට පත් කරල තියනව. ඊට පස්සෙ loop කොටසෙදි තමයි LED එකට PWM ආකාරයට output එක ලබාදීල තියෙන්නෙ. LED එකක brightness එක විචලනය වෙන හොදම පරාසය තමයි 0 සිට 255 දක්වා පරාසය. මේ 0 කියන්නෙ LED එක off අවස්ථාව. 255 කියන්නෙ උපරිම දීප්දියෙන් දැල්වෙන අවස්ථාව. loop එකේදී for loop එකක් ලියල for එක ඇතුලෙදි i කියල variable එකක් හදුන්වලා දීල ඒකට brightness එක විචලනය වෙන අගයන් පරාසය හදුන්වලා දීල තියනව. Digital signal එකක් නම් ඒකෙදි තියෙන්නෙ නිශ්චිත අගයන් දෙකක් විතරයි. මේකෙදි digital signal එකක් use කලොත් brightness control කරන්නට බැරි වෙනව. ඒ නිසා අපි මේකට analogWrite කියන function එක use කරනව. මේකෙදි 3 වෙනි පින් එකට i කියන value එක දීල තියනව. ඊට පස්සෙ මිලි සෙකන්ඩ්ස් 10ක delay එකක් දීල තියනව. මේ කෝඩ් කොටස විතරක් ලිව්වොත් LED එක Off අවස්ථාවේ සිට උපරිම දීප්තිය තෙක්ම ක්‍රමයෙන් brightness එක වැඩි වෙනව. එතනින් පස්සෙ තියන කෝඩ් කොටසෙන් මේ LED එක උපරිම දීප්තියේ සිට off අවස්ථාව දක්වා ක්‍රමයෙන් brightness එක අඩු වෙනව.

මේ ක්‍රමේම භාවිතා කරල තමයි මේ Knight Rider Circuit එක හදන්නෙත්. මේ තියෙන්නෙ ඒ කෝඩ් එක. 5 රූපයේ තියන විදිහට පරිපථය හදාගෙන මේ කෝඩ් එක දාල බලන්න.

int led1=3;
int led2=5;
int led3=6;
int led4=9;
int led5=10;
int led6=11;

int brightness1=255;
int brightness2=100;
int brightness3=10;
int brightness4=3;
int brightness5=1;
int brightness6=0;

int gap = 100;

void setup() {

pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
pinMode(led4, OUTPUT);
pinMode(led5, OUTPUT);
pinMode(led6, OUTPUT);
}

void loop() {
analogWrite(led1,brightness1);
delay(gap);

analogWrite(led1,brightness2);
analogWrite(led2,brightness1);
delay(gap);

analogWrite(led1,brightness3);
analogWrite(led2,brightness2);
analogWrite(led3,brightness1);
delay(gap);

analogWrite(led1,brightness4);
analogWrite(led2,brightness3);
analogWrite(led3,brightness2);
analogWrite(led4,brightness1);
delay(gap);

analogWrite(led1,brightness5);
analogWrite(led2,brightness4);
analogWrite(led3,brightness3);
analogWrite(led4,brightness2);
analogWrite(led5,brightness1);
delay(gap);

analogWrite(led1,brightness6);
analogWrite(led2,brightness5);
analogWrite(led3,brightness4);
analogWrite(led4,brightness3);
analogWrite(led5,brightness2);
analogWrite(led6,brightness1);
delay(200);

analogWrite(led2,brightness6);
analogWrite(led3,brightness5);
analogWrite(led4,brightness4);
analogWrite(led5,brightness1);
analogWrite(led6,brightness2);
delay(gap);

analogWrite(led3,brightness6);
analogWrite(led4,brightness1);
analogWrite(led5,brightness2);
analogWrite(led6,brightness3);
delay(gap);

analogWrite(led2,brightness1);
analogWrite(led3,brightness2);
analogWrite(led4,brightness3);
analogWrite(led5,brightness4);
analogWrite(led6,brightness5);
delay(gap);

analogWrite(led1,brightness1);
analogWrite(led2,brightness2);
analogWrite(led3,brightness3);
analogWrite(led4,brightness4);
analogWrite(led5,brightness5);
analogWrite(led6,brightness6);
delay(gap);

}

ඉතින් තව එක දෙයක් කියන්නම් මගෙන් ගොඩක් දෙනෙක් comment වලින් වගේම inbox ඇවිල්ලත් අහල තිබ්බ කොළඹින් පිට ඉන්න අයට මේ Arduino parts ගන්න තැනක් නැද්ද කියල. ඉතින් මන් හිතුව මන් බඩු ගන්න තැන ගැන ඔයාලට කිව්ව නම් ඒක ඔයගොල්ලන්ට පහසුවක් වෙයි කියල.

“Scion Electronics” ( සයන් ඉලෙක්ට්‍රොනික්ස් ) ඔයාලට Arduino සම්බන්ධ ඕනෙම item එකක් Warranty එකක් සහිතව ගන්න පුලුවන් මේ ශොප් එකෙන්. මාලබේ ස්ලිට් කැම්පස් එක ඉස්සරහ වගේම මොරටුව කැම්පස් එක ඉස්සරහත් මෙයාලගෙ shop තියනව. ඔයගොල්ලො පිට පලාතක ඉන්නව නම් ඔයාලට පුලුවන් ගෙදරටම මේ භාණ්ඩ ගෙන්න ගන්න. මෙයාලගෙ Web Site එකේ සියලුම Item ගැන විස්තර තියනව. ( https://scionelectronics.com/ ) වගකීමක් සහිතවම ඔයාලට ඕනෙ කරන Arduino Parts ගන්න පුලුවන්.

ආඩුඊනෝ ප්‍රෝග්‍රෑමිං Part 10 තුළින් නැවත හමු වෙමු.

Compiled by: Yasas Sadeepa

Leave a Reply

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