Rss Feed
  1. මීට කලින් පළවුනු ලිපි...

    #1 - Introduction
    #2 - Config & IDE
    #3 - Blink!
    #4 - Basic Electronics

    දැන් මේ වෙනකොට ඔයගොල්ලෝ හැමෝම සාර්ථකව තමන්ගේ ප්‍රථම ප්‍රෝග්‍රෑම් එක එහෙම ලියලා ඉන්නවා කියලා මම හිතනවා. අද මේ Tutorial එකෙන් මම බලාපොරොත්තු වෙන්නේ for loop එක හඳුන්වා දීම හා ඒ හරහා නයිට් රයිඩර් පරිපථයක් නිර්මාණය කිරීමයි. වැඩිය කතා නැතුව අපි කෙළින්ම වැඩට බහිමු.

    Project #2 - Knight Rider Circuit!

       #Hardware

    මේක project එක කළින් එකෙන් වෙනස් වෙන ප්‍රධානම හේතුව තමයි මේකට එළියෙන් පරිපථයක් නිර්මාණය කිරීමට අවශ්‍ය වීම. මෙතනදී නම් අපට LED 7ක් සහ ඒ LED වලට 220ohm ප්‍රතිරෝධක 7ක් අවශ්‍ය වෙනවා. මේ LED ටික අපි Arduino Board එකේ Digital I/O 2 සිට 8 දක්වා pins වලට සවි කරන්න ඕන. මෙතනදී අපි හදන පරිපථය පේන්නේ මෙහෙමයි.


    Breadboard View

    මේ තියෙන්නේ ඒකට අදාල Schematic එක.

    Schematic View


    මේ ටික සවිකරාම ඇත්ත ලෝකයේදී පේන්නේ මෙන්න මේ විදියට...




       #Software

    දැන් අපි ප්‍රෝග්‍රෑම් එක ලියන්න පටන්ගමු. ඉස්සෙල්ලාම අපි මේ පරිපථයේ නිවෙන පත්තුවෙන වේගය define කරන්න ඕන. ඒ නිසා ඉස්සෙල්ලාම ඒ වේගය Int එකක් විදියට Define කරන්න.

    int Speed = 100;
    

    ඊළඟට අපි අපේ LED තියෙන පින්ස් හතම Outputs විදියට නම් කරන්න ඕන. ඒ සඳහා ක්‍රම දෙකක් තියෙනවා. පළවෙනි ක්‍රමය නම් නිකම්ම ඔක්කොම පින්ස් ටික මේ වගේ වෙන වෙනම Outputs විදියට නම් කරන එකයි.

    pinMode(2, OUTPUT);
    pinMode(3, OUTPUT);
    .      .        . ;
    .      .        . ;
    pinMode(8, OUTPUT);
    

    ඒවුනාට මේ වගේ දෙයක් කරන්න අපිට for loop එක භාවිතා කරන්න පුලුවන්. for loop එක කියන්නේ Arduino language වල තියෙන තවත් Control Structure එකක්. මේ loop එක භාවිතා කරන්නේ එකම ප්‍රකාශනයක් ( Statement එකක් ) නැවත නැවතත් Repeat කරන්න. for loop එකේ සැකැස්ම මෙහෙමයි.


    ------------------------------------------------------------------


    Image Courtesy arduino.cc

    දැන් මේ loop එක වැඩකරන්නේ මෙහෙමයි.

    ඔය initialize කියල තියෙන කොටස (int x = 0; කියන කොටස) ක්‍රියාත්මක වෙන්නේ හරියටම එක පාරයි. ඒ loop එක ආරම්භයේදී විතරයි.

    ඊටපස්සේ ඕකේ test කියල තියෙන කොටස මඟින් අපි දෙන condition එක පරීක්ෂා කෙරෙනවා (මෙතනදී නම් condition එක වෙන්නේ x < 100)

    ඒ Condition එක True නම් (මෙතනදී නම් x, 100ට වඩා අඩු නම්) loop එකේ Statement block එක ක්‍රියාත්මක වෙනවා (මෙතනදී නම් println(x); කියන කොටස, එකෙන් x = 0 කියලා print වෙනවා).

    ඒක ක්‍රියාත්මක වෙලා අවසාන වුනාට පස්සේ increment or decrement වෙලා අපි define කරපු variable එකේ අගය වෙනස් වෙනවා (මෙතනදී නම් x වල අගය 0වේ සිට 1ට වැඩි වෙනවා).

    ඊට පස්සේ නැවතත් test එක වෙලා Statement Block එකට යනවා (දැන් ආපහු පාරක් initialize වෙන්නේ නෑ ) නමුත් දැන් තියෙන වෙනස නම් x වල අගය 1ක් වීමයි. (ඒ නිසා print වෙන්නේ x = 1 කියලයි).

    මේක මේ විදියට දිගින් දිගටම condition එක false වෙනකන් (මෙතනදී නම් x වල අගය 99ට වැඩි වෙනකම්) ක්‍රියාත්මක වෙනවා. ඊට පස්සේ loop එක අවසාන වෙලා ඊළඟ function එකට යනවා.


    -------------------------------------------------------------

    දැන් අපි ඕක ගැන වැඩිය හිතන්නේ නැතුව අපි දැන් for loop එක භාවිතා කරලා 2 සිට 8 දක්වා Digital Pins outputs බවට පත් කර ගමු. ඒක කරන්නේ මෙහෙමයි.


    void setup() {
      for(int ledPins = 2; ledPins < 9; ledPins++) {
        pinMode(ledPins, OUTPUT);
      }
    }
    
    
    දැන් Programme එකේ ප්‍රධාන කොටස වෙන LED නිවීම හා දැල්වීම කරන්න ඕනේ. අපිට මේ ටික කරගන්න for loop දෙකක් අවශ්‍ය වෙනවා. මේ loops දෙක ක්‍රියාත්මක වෙන්නේ මෙහෙමයි.




    පළවෙනි loop එකෙන් LED 1 සිට 6 දක්වා දැල්වෙනවා. දෙවැනි loop එකෙන් LED 7 සිට 2 දක්වා අනිත් පැත්තට දැල්වෙනවා. මේ ටික නැවත නැවතත් Repeat වෙනකොට අපිට ඕන කරන effect එක ලබාගන්න පුලුවන්. මේ සඳහා අවශ්‍ය කරන loops දෙකේ කේත සටහන් මෙහෙමයි.


    void loop() {
      
      for(int ledPins = 2; ledPins < 8; ledPins++) {
        digitalWrite(ledPins, HIGH);
        delay(Speed);
        digitalWrite(ledPins, LOW);
      }
      
      for(int ledPins = 8; ledPins > 2; ledPins--) {
        digitalWrite(ledPins, HIGH);
        delay(Speed);
        digitalWrite(ledPins, LOW);
      }
    }
    
    
    ඔය කේත ටික හැමෝටම දැන් තේරුම්ගන්න පුලුවන් ඇති කියලා මම හිතනවා. කලින් ප්‍රෝග්‍රෑම් එකට වඩා මේකේ තියෙන එකම වෙනස අපි digitalWrite function එක ඇතුලට කෙලින්ම pin number එක දාන්නේ නැතුව ඒ සඳහා for loop එක ඇතුලේ define කරපු variable එක යොදාගෙන තිබීම විතරයි.මේ දැක්වෙන්නේ අපේ සම්පූර්ණ ප්‍රෝග්‍රෑම් එක..


    int Speed = 100;
    
    void setup() {
      for(int ledPins = 2; ledPins < 9; ledPins++) {
        pinMode(ledPins, OUTPUT);
      }
    }
    
    void loop() {
      
      for(int ledPins = 2; ledPins < 8; ledPins++) {
        digitalWrite(ledPins, HIGH);
        delay(Speed);
        digitalWrite(ledPins, LOW);
      }
      
      for(int ledPins = 8; ledPins > 2; ledPins--) {
        digitalWrite(ledPins, HIGH);
        delay(Speed);
        digitalWrite(ledPins, LOW);
      }
    }
    
    
    දැන් ඉතින් දෙයියනේ කියලා Arduino බෝඩ් එක කොම්පීතරේට හයි කරලා හරියට කෝඩ් එක ටයිප් කරලා Upload button එක ඔබන්න. මේ තියෙන්නේ මම හදපු Circuit එකේ වීඩීයෝ එකක්. මගේ කැමරාවේ පොඩි අව්ලක් නිසා Audio රෙකෝඩ් වෙන්නේ නෑ :'(  :'( ඒ වුනාට ඉතින් බලන්න පුලුවන්... 



    අදට පෝස්ට් එක ඉවරයි. මේකේ මම දීලා තියෙන ප්‍රෝග්‍රෑම් එක විතරක් Test කරන්නේ නැතුව ඔයගොල්ලොත් මේ කෝඩ් වෙනස් කරලා එක එක අත්හදාබැලීම් කරලා බලන්න. කොහොමත් වැඩිපුර තේරුම් ගන්න පුලුවන් තමන්ම කරන දේ මිසක් කොහෙන්වත් කියවන දේවල් නෙවෙයි. :) ඕනම ජාතියක අව්ලක් ගියොත් යටින් කොමෙන්ට් එකක් දාලා අහන්න.. එහෙනම් කස්ටියටම ගුඩ්බායි... 
    |


  2. 20 comments:

    1. Anonymous said...

      niyamai.. ela ela.. ohoma yan ohoma yan... nawaththanna epa..

    2. Hit Man said...

      adai machan me post set tika baluwe,,,,,,,,,
      mamath bord ekak aran ehema wadeta set wenamkoooo :D
      machan meka digatama karagena yanna hode,,,,,,,,,,,,,,,,,,,,,,,

      isarahata hoda Circuit ehema hadamuuu

    3. Anonymous said...

      එලම තමා යාලුවා... දිගටම ලියමු... අපි ඔබ සමගයි,.....
      මම හෑමදාමත් හොය හොයා හිටපු දෙයක් .. thanks මචන්

      [indunil]

    4. ඉක්මනට වැඩගන්න පුළුවන් වගේ. අපි වගේ programmer ලට ඉක්මනින් සිතේ තියෙන නිර්මාණ එලියට දාන්න පුළුවන් වගේ. මේ tutorial සෙට් එක ඉදිරියටම ගෙනියන්න. 230V-5W බල්බ වැලක් දැල්වීමට මෙය වෙනස් කරන විදිය කියලා දෙන්න පුලුවන්ද. loop එක වෙනස් කරලා රටා හදාගන්න නම් මට පුළුවන්.
      Arduino Board වල ලංකාවේ මිල සහ ගන්න පුළුවන් තැන් මොනවාද? (කිරිබත්ගොඩට ළඟ තැන් දන්නවා නම් අගෙයි)

    5. Anonymous said...

      Dear Aditha,
      Thanks a lot for sharing your knowledge. Hope in future you will teach us how to integrate this arduino module with GSM modem to send receive SMS, then we can use it for real practical projects

    6. @ Hit Man, Anons - එල එල.. දිගටම කියවන්න..

      @ විශ්ව රංගනාත් - කිරිබත්ගොඩ නම් තැනක් හරියට දන්නේ නෑ. Unity එකේ වගේ නම් තියේ.. මිල කිව්වොත් නම් Clone එකක් 2000ක් වගේ තමයි වෙන්නේ. Original එකක් නම් 5000ක් විතර වෙනවා. :P

    7. ස්තුත්යි අදීත
      මම තැනක් හොයාගත්තා shop.techkatha.com මෙතන රු 1500.

    8. @ විශ්ව රංගනාත් - මම ටෙක්කතා Shop එක ගැන මගේ පළවෙනි ලිපියෙන් කිව්වානේ... :P

    9. ඔව් මම කියවනවිට ඒ ටික මගහැරිලා මම දැන් තමයි එක දැක්කේ.

    10. Anonymous said...

      for loop eka gena thawa tikak kiyadenna puluwanna, example eka ?

    11. chamara said...

      ලිපි ඔක්කොම කියෙව්ව මේ සම්බන්ද...බොහොම ස්තුතියි!!!!දිගටම ලියන්න වාසනාව ලබේවා!!!!

    12. එල මචෝ අපි දිගටම බලනව

    13. වැඩේ දිගටම කරගෙන යන්න අපේ අයගෙ බ්ලොග් ව්ල අඩු වෙල තියෙන්නෙ පටන් ගත්ත ගමන් නවත්වන නිසා. නියමයි ඔය වැඩේ දිගටම කරගෙන යන්න ශක්තිය ලැබේවා !!!!!!!

    14. LankaTronics eke siyalu varga vala Arduino thiyenava.
      1. Arduino Original boards (Made in Italy)
      2. Arduino Compatibles (100% same as Arduino but Made in China)
      3. Lakduino Arduino UNO Clone

      Have a look at http://www.lankatronics.com

    15. Kamal Perera said...

      LankaTronics eke okkoma thiyenava (www.lankatronics.com) balanna. Online purchase karahama gedaratama evanva. LankaTronics Trading (Pvt) Ltd. kiyala company ekakin thamayi karanne. Egollonge Boralesgamuwe store ekata gihin aragannath puluvan.

    16. දැනුම දුන්නාට ස්තුතියි..
      අපි දිගටම බලාගෙන ඉන්නවා...
      දිගටම කරගෙන යන්න..
      2013 වසරේ මුල සිටම ඔබේ අලුත් ලිපියක් බලාපොරොත්තුවෙන් ඉන්නවා..

    17. Anonymous said...

      Hі, I do thіnk thіs is a great ωeb sіtе.

      I stumbledupon іt ;) I'm going to come back once again since I bookmarked it. Money and freedom is the best way to change, may you be rich and continue to guide other people.

      Here is my blog post ... wire Wound resistor

    18. Anonymous said...

      අපි දිගටම බලනව.........නියමයි ඔය වැඩේ දිගටම කරගෙන යන්න.......

      ### THARUNA EKAMUTHUWA ###

    19. Anonymous said...

      Ні therе! Thіs іs kіnԁ
      of off toρіс but I neеd ѕome аdvісe from an eѕtаbliѕhed blog.

      Iѕ it verу diffiсult to sеt up your own blοg?

      I'm not very techincal but I can figure things out pretty fast. I'm
      thinking about crеating my oωn but I'm not sure where to begin. Do you have any points or suggestions? Appreciate it

      my web-site :: Resistor resistance

    20. Anonymous said...

      Fаntastic bеat ! Ι wish to appгentice ωhile
      yοu amend уоuг webѕite,
      how cаn i subsсribe for a blog ѕite?
      Thе aсcount hеlped mе a acceptable dеal.
      I hаd beеn а lіttle bit acquainteԁ οf this уour brοaԁсast provided bгight
      cleaг cоncept

      Heгe iѕ my ѕitе resistance of a resistor

    Post a Comment