Arduino වෙසක් සැරසිලි

සුභ දවසක් යාලුවනේ ඊයෙ ලිපියෙ පෙන්වපු Arduino වෙසක් සැරසිලි සඳහා Arduino එකට උපාංග සම්බන්ධ කරගන්නා ආකාරයත් එහි අන්තර්ගත කේතය පිලිබඳ අවබෝධයක් මෙම ලිපිය හරහා දෙන්නම් යාලුවනේ. මෙම පරිපථය කුඩා DC විදුලියකින් මෙන්ම 230V විදුලි බුබුලු සදහාද භාවිතා කරන ආකාරය මෙහි පෙන්වා දී ඇත.

අපිට මේ වැඩේට අවශ්‍ය වෙනවා

  • Arduino UNO (වෙනත් Board එකක්නම් Code එකේ Output Pin වෙනස් කරගන්න)
  • 2N2222 හෝ C828 Transistor 6ක්
  • 1K හෝ 2.2K Resistor 6ක්
  • 9V - 12V බල සැපයුමක්
  • අවසාන Output එක සඳහා එක් Output එකට LED 10 ට අඩු ප්‍රමාණයක්.
  • එම LED ප්‍රමාණයට සමානව 1K  Resistor
මෙහි Arduino එකේ Output ලෙස

  • Digital Pin 2
  • Digital Pin 3
  • Digital Pin 4
  • Digital Pin 5
  • Digital Pin 6
  • Digital Pin 7
භාවිතා කර ඇත.
එක් එක් Pin එක සඳහා පහත ආකාරයට Transistor පරිපථ 6ක් සාදා සම්බන්ධ කරගන්න.
මෙහි Arduino +5V එක බල සැපයුමේ + වයරයට අමුණාගන්න, නොඑසේනම් අධික Load එක නිසා Arduino එකේ Regulator එකට හානි විය හැක. එනිසා LED වලට සිදුවන හානිය අවම කරගැනීමට 330 Ohm වෙනුවට 1K Resistor යොදා ඇත. 12 වෙනුවට 9V ලබාදෙන්නේ නම් 470 Ohm භාවිතා කළ හැක. 

Arduino digital Out කොටස ඉහත සඳහන් කළ 2 සිට 7 දක්වා Arduino Pin වලට මෙම transistor පරිපථ අමුණාගන්න.

Arduino GND එක බල සැපයුමෙහි - වයරයට අමුනාගන්න.

Code එක ගත්තු නැති අය මෙතනින් ගන්න. Code


LED සම්බන්ධ කරන ලද වෙසක් සැරසිලි.

පරිපථයේ ක්‍රියාකාරීත්වය.
230V බල්බ දැල්වීමට නම් Transistor පරිපථය වෙනුවට Relay භාවිතා කරන්න - Relay Tutorial
දැන් යාලුවනේ අපි භාවිතා කරන Code එක බලමු.

int pinArray[] = {2, 3, 4, 5, 6, 7};
මෙහි තිබෙන්නෙ Output Pins.
int count = 0;
int timer = 70;
Knight Rider ආලෝක රටාවේ විචල්‍ය වැඩි විස්තර මෙතනින් - Link
long rand1;
Random Numbers (අහඹු සංඛ්‍යා) සඳහා විචල්‍ය
void setup() {
  randomSeed(analogRead(0)); //Random Numbers කේතය ඇරඹුම
  pinMode(2, OUTPUT); // Pin Output කිරීම
  pinMode(3, OUTPUT);
  pinMode(4, OUTPUT);
  pinMode(5, OUTPUT);
  pinMode(6, OUTPUT);
  pinMode(7, OUTPUT);
}
පහතින් තිබෙන්නේ Knight Rider Pattern එක.
for (int thisPin = 2; thisPin < 40; thisPin++)  { //knight rider
for (count=0;count<5;count++) {
   digitalWrite(pinArray[count], HIGH);
   delay(timer);
   digitalWrite(pinArray[count + 1], HIGH);
   delay(timer);
   digitalWrite(pinArray[count], LOW);
   delay(timer*2);
  }
  for (count=5;count>0;count--) {
   digitalWrite(pinArray[count], HIGH);
   delay(timer);
   digitalWrite(pinArray[count - 1], HIGH);
   delay(timer);
   digitalWrite(pinArray[count], LOW);
   delay(timer*2);
  }    
   timer=timer-1; //මෙම කොටසින් රටාවේ වේගය වැඩි වේ
 }   
timer = 70;
එම කේතය මදක් වෙනස් කර අඳුරු තිතක් ගමන් කරන් රටාව

for (int thisPin = 2; thisPin < 60; thisPin++)  { //knight rider
for (count=0;count<5;count++) {
   digitalWrite(pinArray[count], LOW);
   delay(timer);
   digitalWrite(pinArray[count + 1], LOW);
   delay(timer);
   digitalWrite(pinArray[count], HIGH);
   delay(timer*2);
  }
  for (count=5;count>0;count--) {
   digitalWrite(pinArray[count], LOW);
   delay(timer);
   digitalWrite(pinArray[count - 1],LOW);
   delay(timer);
   digitalWrite(pinArray[count], HIGH);
   delay(timer*2);
  }    
   timer=timer-1;
 }   
timer = 70;
ආරම්භයේ ක්‍රියාත්මක වන Pattern එක, මෙය Blink උදාහරණයේ ආකාරයට තනා ඇත.

 digitalWrite(2, HIGH);   
  delay(500);    
  digitalWrite(3, HIGH);   
  delay(500);     
  digitalWrite(4, HIGH);   
  delay(500);      
  digitalWrite(4, LOW);  
  delay(500);     
  digitalWrite(4, HIGH);   
  delay(500);       
  digitalWrite(5, HIGH);   
  delay(500);     
  digitalWrite(6, HIGH);   
  delay(500);      
  digitalWrite(7, HIGH);    
  delay(2000);  

එය මදක් වෙනස් කර එක දිගට ගමන් කරන ආලෝක රටාව මෙසේය
void pt11()
  delay(100); 
 digitalWrite(2, HIGH);   
  delay(100);    
  digitalWrite(3, HIGH);   
  delay(100);     
  digitalWrite(4, HIGH);   
  delay(100);   
  digitalWrite(5, HIGH);   
  delay(100);     
  digitalWrite(6, HIGH);   
  delay(100);      
  digitalWrite(7, HIGH);    
  delay(100);    
  digitalWrite(2, LOW);   
  delay(100);    
  digitalWrite(3, LOW);   
  delay(100);     
  digitalWrite(4, LOW);   
  delay(100);   
  digitalWrite(5, LOW);   
  delay(100);     
  digitalWrite(6, LOW);   
  delay(100);      
  digitalWrite(7, LOW);    
  delay(100);  

සියලුම බල්බ දැල්විමට
void pt3()
digitalWrite(2, HIGH);  
  digitalWrite(3, HIGH); 
  digitalWrite(4, HIGH); 
  digitalWrite(5, HIGH); 
  digitalWrite(6, HIGH); 
  digitalWrite(7, HIGH);   
  delay(500);  

අහඹු ලෙස බල්බයක් නිවීම
void pt5()
  rand1 = random(2, 8);
  pt3();
  digitalWrite(rand1, LOW);    
  delay(500);  

අහඹු ලෙස බල්බ කිහිපයක් දැල්වීම
void pt6()
  rand1 = random(1,100);
  if(rand1%0==0)
  {    
digitalWrite(2, HIGH); 
  }
  if(rand1%1==0)
  {    
digitalWrite(3, HIGH); 
  }if(rand1%2==0)
  {    
digitalWrite(4, HIGH); 
  }if(rand1%3==0)
  {    
digitalWrite(5, HIGH); 
  }if(rand1%4==0)
  {    
digitalWrite(6, HIGH); 
  }if(rand1%5==0)
  {    
digitalWrite(7, HIGH); 
  }   
  delay(500);  

සියලුම බල්බ නිවීම 
void reset()

digitalWrite(2, LOW);  
  digitalWrite(3, LOW); 
  digitalWrite(4, LOW); 
  digitalWrite(5, LOW); 
  digitalWrite(6, LOW); 
  digitalWrite(7, LOW); 

එකම කේතය නැවත් නැවත ක්‍රියාත්මක කිරීමට මෙසේ Loop භාවිතා කරන්න

for (int thisPin = 1; thisPin < 20; thisPin++) 
{
වරහන් දෙක මැද කේතය 20 වතාවක් ක්‍රියාත්මක වේ, ඉහත අගය වෙනස් කර එය රිසි සේ සාදාගන්න.
}

වෙනත් ස්ථානයක ලියූ Function එකක් (කෙත කොටසක්) මෙහි reset නමින් එක නම් කර ඇත, Void කොටස අනිවාර්ය වේ.
void reset()
{           
  digitalWrite(2, LOW);  
  digitalWrite(3, LOW); 
  digitalWrite(4, LOW); 
  digitalWrite(5, LOW); 
  digitalWrite(6, LOW); 
  digitalWrite(7, LOW); 
}
වරහන් දෙක තුල ඇති කේත ක්‍රියාත්මක කිරීමට එහි නම සහ (); කොටස ඇතුලත් කරන. උදා :- reset();
Functions සහ Loop පිලිබද වැඩි අවබෝධයක් නැති අය ගැන හිතලා Blink Code එකම වෙනස් කරලා රටා දැම්මෙ, Knight Rider එක අඑරුණම. යාලුවන්ට ඒ විදියට Delay වෙනස් කරලා ලස්සන රටා හදන්න පුලුවන්. Relay භාවිතා කරන අය වේගවත් රටා (තත්පරයට එක් වතාවට වඩා එක් Relay එකක් ක්‍රියාත්මක වීම) භාවිතා කිරීමෙන් Relay එකෙහි ආයු කාලය අඩු වේ.
Functions සහ Random අහඹු සංඛ්‍යා කොටස ගැන ගැටලු තිබේ නම් මෙතනින් දැනගන්න :-

13 comments:

  1. Poyata sathiyakata kalin me post eka danna thibune

    ReplyDelete
    Replies
    1. mata meke code aka mail kranawada mskumararsu@gmail.com

      Delete
  2. Poyata sathiyakata kalin me post eka danna thibune

    ReplyDelete
  3. මමත් ඔන්න ebay වලින් arduino එකක් order කලා.

    ReplyDelete
  4. mama meka heguwa , hebei poyata passase , puluwannam elaga post ekmanata danna, digatama karagena yanna!!!!!!!!

    ReplyDelete
  5. ස්ත්තියි යාලුවනේ ඔයාලා හැමෝටම, Code එක දාලා ඔය Pattern ටික දැම්මට පස්සෙ Computer එකේ පොඩි අවුලක් ගියා ඒකයි ලිපිය දාන්න බැරි උනේ යාලුවනේ.

    ReplyDelete
  6. 230v bulb walata meka komda karanne?

    ReplyDelete
  7. ela ahh aniwa hadanna try karanna oni

    ReplyDelete
  8. thiyana thorathuru tika nam ela

    ReplyDelete
  9. මෙකේ code aka මට mail karannako saho

    ReplyDelete
  10. Code eka advertising link ekakin hak karala haki nam auudawatta3@gmail.com ekata mail karanna

    ReplyDelete
  11. Is it possible to make Vesak pPandal using Arduino? I'm living in abroad and we hope to build it for coming Vesak festival celebration.

    Really appreciate if anyone help us to get this project done.
    email : shamera82@gmail.com

    ReplyDelete
  12. Mama transistor walata wenama power dumna 12v board ekata usb cable ekakin dunne. LED paththu wenne nahane ai ehema wenne. LED 4k series karala connect kale D400 transistor ekata

    ReplyDelete