არდუინოს დაპროგრამება 01 – დაფის შუქდიოდის ციმციმი


ამ ჩანაწერში ვისწავლით არდუინოს დაფაზე დასმული შუქდიოდის (LED) მართვას და ციმციმს.

შუქდიოდის ანთება არის ყველაზე მარტივი რამ, რაც შეიძლება ააწყო მიკროკონტროლერის (მკკ) საშუალებით. ეს არის ნებისმიერი მკკ-ს “Hello World!” პროექტი. მისი დანიშნულებაა ადამიანს გააცნოს პლატფორმის პირველადი ცნებები, თვისებები და საშუალებები.

პროექტის შესრულებისთვის დაგვჭირდება:

  1. არდუინოს რომელიმე დაფა (მე ვიყენებ Nano-ს)
  2. სათანადო USB სადენი

მაშასადამე, არდუინოს ოჯახის ყველა დაფას გააჩნია ჩადგმული შუქდიოდი სახელით “L“. მისი ამუშავებისთვის ზედმეტი ნაწილები არ არის საჭირო – საკმარისია ჩაიტვირთოს სათანადო კოდი და შუქდიოდი გაანათებს!

ყველა დაფაზე ის სხავადასხვა ადგილასაა დასმული, მაგ. Uno, Leonardo, Nano:

arduino_01_L_leds

“ციმციმი” მაგალითის ჩატვირთვა

IDE სამუშაო გარემოს მოყვება ბევრი სამაგალითო ჩანახატი. ჩვენთვის საინტერესო მაგალითს ჰქვია “Blink”  და მისი გახსნა შეიძლება მენიუდან File → Examples → 01.Basics.

ამ ჩანაწერში გამოყენებული და გარჩეული ციმციმას მაგალითი ქართულენოვანია; ის ხელმისაწვდომია ამ ბმულზე.

ჩანახატის გახსნის შემდეგ, გაადიდეთ ფანჯარა ისე, რომ სრულად დაინახოთ შიგთავსი:

"ციმციმის" ქართულენოვანი ჩანახატი
“ციმციმის” ქართულენოვანი ჩანახატი

ჩანახატის ასლის შენახვა

როგორც წესი, სამაგალითო ჩანახატების შეცვლა არ შეიძლება, ამიტომ შევინახოთ ჩვენებური ვერსია მენიუდან File → Save As… , დავარქვათ სახელი “MyBlink01” და დავაჭიროთ ღილაკს “OK” ან “Save”.

ახლა შეგვიძლია პროექტის ალბომიდან (sketchbook) გახსნა:

შენახული ასლი ალბომში
ალბომში შენახული ასლი

ჩანახატის დაფაზე ატვირთვა

კოდის ჩაწერის შემდეგ, საჭიროა მისი დაკომპილება (compile) და მკკ-ზე ატვირთვა (upload).

კოდის დაკომპილებას უზრუნველყოფს შემუშავების გარემოს თანდართული პროგრამული უზრუნველყოფა. ის ასევე შეგვატყობინებს რაიმე სინტაქსური შეცდომის შესახებ. ყველა დაპროგრამების ენას გააჩნია გარკვეული წესები, რომელთა დაცვა არის აუცილებელი. თუ ეს წესები დაირღვა (სადმე ზედმეტი ან ნაკლები ფრჩხილია, ან წერტილმძიმე და ა.შ.), მაკომპილებელი პროგრამული უზრუნველყოფა ვერ ახერხებს კოდის სწორად წაკითხვას და დაკომპილებას. შესაბამისად, ის შეგვატყობინებს შეცდომის შესახებ და მიგვითითებს მასზე.

დაპროგრამების ენის წერითი წესების დარღვევას ეწოდება სინტაქსური შეცდომა (syntax error).

Arduino IDE გარემოს ფუნქცია შემოწმება (verify) გამოიყენება  მხოლოდ კოდის დაკომპილებისთვის:

დაკომპილება დასრულდა
დაკომპილება დასრულებულია

თუ კი ამასთან ერთად გვსურს პროექტის მკკ-ზე გაგზავნა, ვიყენებთ ღილაკს ატვირთვა (upload).

პროგრამის მკკ-ზე ატვირთვა ხდება ე.წ. დამპროგრამებლის მეშვეობით (programmer, “პროგრამატორი”). არდუინოს ყველა დაფაზე ის ჩაშენებულია და მასზე ზრუნვა არ გვიწევს.

დაფისა და პორტის მითითება

იმისთვის, რომ დამპროგრამებელმა სწორად შეძლოს ჩვენი ქმნილების ატვირთვა, მას უნდა შევატყობინოთ ორი რამის შესახებ: 1. რომელ დაფას ვიყენებთ; 2. სისტემაში ის რა სახელითაა  ცნობილი (ან რომელ COM-პორტზე არის შეერთებული).

დაფის არჩევა:

ჩამონათვლიდან აირჩიეთ თქვენის შესაბამისი მოდელი
ჩამონათვლიდან აირჩიეთ თქვენის შესაბამისი მოდელი

პორტის არჩევა:

აირჩიეთ ის პორტი, სადაც დაფა არის შეერთებული USB სადენის მეშვეობით
აირჩიეთ ის პორტი, სადაც დაფა არის შეერთებული USB სადენის მეშვეობით

ზემოთმოყვანილი სურათი შეესაბამება Linux გარემოს. Mac-ში დავინახავთ რაღაც ასეთს: “/dev/tty.usbmodemXXXX”, ხოლო Windows-ში დავინახავთ შემდეგნაირ ჩანაწერს: “COM3”.

იმის მერე რაც დავაჭერთ ატვირთვის ღილაკს, სწორი დაფისა და პორტის შემთხვევაში, კოდი დაკომპილდება, დაფაზე აციმციმდება სხვადასხვა შუქები და დავინახავთ შემდეგ გზავნილს:

ატვირთვა დასრულებულია
ატვირთვა დასრულებულია

აქ წერია, რომ ატვირთვა დასრულდა და ატვირთული პროგრამა მოიხმარს მკკ-ს არსებული მეხსიერებიდან (30 720 ბაიტი) მხოლოდ 1056 ბაიტს.

როგორ მუშაობს “ციმციმა”?

აქ მოყვანილი პროექტის სრული კოდი. მოდი გავარჩიოთ ის ნაბიჯ-ნაბიჯ. ბრძანებების ჩაწერისას, ყურადღება მიაქციეთ სასვენ ნიშნებსა და გამოყენებულ სიმბოლოებს – ისინი წარმოადგენენ კოდის აუცილებელ ნაწილს.

ეს ნაწერი იყოფა ორ ნაწილად:

  1. პროგრამის კოდი – ბრძანებები მიკროკონტროლერისთვის
  2. კომენტარები – გასაგები ენით დაწერილი ახსნა-განმარტება. მისი დაწერა აუცილებელი არ არის, მაგრამ სასარგებლოა კოდის ზოგიერთი ნაწილის ახსნისთვის.

კომენტარები:

ჩანახატის ის ტექსტი, რომელიც წერია ორი ცალი წილადის “//” სიმბოლოების შემდეგ არის ცალ-სტრიქონიანი კომენტარი. ის გრძელდება, სანამ არ გადავალთ ახალ სტრიქონზე.

ის ტექსტი, რომელის მოთავსებულია წილადი და ფიფქი  /*   და */  სიმბოლოებს შორის, არის მრავალ-სტრიქონიანი კომენტარი. ის შესაძლებელია ვრცელდებოდეს რამოდენიმე სტრიქონზე. მაგალითად, მოცემულ პროექტში ასეთი კომენტარი გამოყენებულია პროექტის აღწერის დასაწერად: მოცემულია პროექტის სახელი, აღწერილია დანიშნულება, მითითებულია ავტორი და შექმნის თარიღი:

პროექტის აღწერა, მრავა-სტრიქონიანი კომენტარი
პროექტის აღწერა, მრავალ-სტრიქონიანი კომენტარი

კომენტარები განსაკუთრებით გამოსადეგია, როდესაც კოდი რთულდება და მოიცავს რამოდენიმე ასეულ სტრიქონს, ობიექტებსა და ფუნქციებს. ან როცა პროექტს უბრუნდები რამოდენიმე კვირის შემდეგ. ამაზე უბრალოდ მენდეთ. 🙂

კოდის გარჩევა:

მიკროკონტროლერის პროგრამას აქვს ძირითადი ნაწილი:

  1.  void setup() {  …  }  →  ფიგურულ ფრჩხილებში {  } ჩაწერილი ბრძანებები შესრულდება ერთხელ – მიკროკონტროლერის ჩართვისთანავე, ან მისი გადატვირთვის შემთხვევაში (reset ღილაკზე დაჭერით)
  2.  void loop() {  …  }  →  ფრჩხილებში {  } მოთავსებული ბრძნებათა სია შესრულდება თავიდან ბოლომდე, მერე განმეორდება ისევ და ისევ, სანამ არ შევწყვიტავთ დაფის კვებას.

setup() და loop() ფუნქციებს გარეთ იწერება დამხმარე ფუნქციები და განსაზღვრებები. ამას მერე დავუბრუნდებით.

ფუნქცია setup() (გამართვა) გამოიყენება მკკ-ის მუშაობისთვის მოსამზადებლად. ფუნქცია loop() (ციკლი) არის ის ძირითადი ნაწილი, რომელშიც ჩავწერთ ჩაფიქრებულ პროგრამას.

სტრიქონი 10:

int led = 13;

ამ სტრიქონზე ვამბობთ, რომ მე-13 ფეხს ვარქმევთ სახელს  led.

სტრიქონი 13-16:

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

სანამ დავწერთ ძირითად პროგრამას, საჭიროა გამოვაცხადოთ, რომ მე-13 ფეხზე გვსურს სიგნალის გამოტანა.

ამისთვის ვიყენებთ ბრძანებას ფეხის რეჟიმი pinMode( ). ბრძაბების მრგვალ ფრჩხილებში უნდა მივუთითოთ ორი რამ: ფეხის ნომერი და სასურველი რეჟიმი – გამავალი (OUTPUT) თუ შემავალი (INPUT).

გამავალ რეჟიმში დაფას შეუძლია ფეხზე მიაწოდოს ძაბვა +5 ვოლტი, ხოლო შემავალ რეჟიმში მკკ აღიქვავს თუ ჩვენ მივაწვდით +5 ვოლტს.

მე-13 ფეხი რომ გავხადოთ გამავალი, ვწერთ:

pinMode(13, OUTPUT);

რადგან მე-13 ფეხისთვის უკვე გვაქვს მიცემული სახელი “led“, შეგვიძლია დავწეროთ ასე:

pinMode(led, OUTPUT);

სტრიქონი 19-24:

void loop() {
  digitalWrite(led, HIGH);
  delay(1000);
  digitalWrite(led, LOW);
  delay(1000);
}

ფუნქცია digitalWrite() გადართავს თითოეული ფეხის მდგომარეობას. მის მეშვეობით შეიძლება დავაყენოთ მხოლოდ ორი მდგომარეობა: HIGH ნიშნავს, რომ ფეხზე მიწოდებული იქნება +5v, ხოლო LOW – 0v.

ამ ფუნქციის გამოყენებისას საჭიროა მივუთითოთ ორი რამ: ფეხის ნომერი და მდგომარეობა. digitalWrite(led, HIGH); გადართავს მე-13 ფეხს აქტიურ (მაღალ) მდგომარეობაში, მიაწვდის +5 ვოლტს და აანთებს შუქდიოდს. digitalWrite(led, LOW); აღარ მიაწვდის ძაბვას და შუქდიოდი ჩაქრება (დაბალ მდგომარეობაში).

ახლა უკვე შეგვიძლია შუქდიოდის ჩართვა-გამორთვა. მაგრამ როგორ ვმართოთ თუ რა დროით ავანთოთ და რა დროით ჩავაქროთ ის? ეს ხდება delay() ფუნქცის მეშვეობით (delay – შეყოვნება). მასში ვუთითებთ რამდენი მილიწამით გვსურს “დალოდება”. მაგალითად, delay(1000); შეაყოვნებს მიკროკონტროლერის მუშაობას ერთი წამით (= 1000 მილიწამი). ამ დროის განმავლობაში არდუინო უქმად არის  – ის “ელოდება” მითითებული დროის გავლას.

მაშასადამე, შუქდიოდის ანთება და ჩაქრობა ხდება ოთხი ბრძანებით:

  1. ავანთოთ დიოდი (ფეხი 13 – მაღალზე)
  2. დაველოდით 1000 მილიწამი
  3. ჩავაქროთ დიოდი (ფეხი 13 – დაბალზე)
  4. დაველოდოთ 1000 მილიწამი

აჩქარებული ციმციმი

იმისთვის, რომ შუქდიოდი უფრო სწრაფად აციმციმდეს, საკმარისია შევცვალოთ ლოდინის დრო: იმის მაგივრად, რომ დაველოდით 1000 მილიწამი ბრძანებით delay(1000); შევცვალოთ მასში მითითებული რიცხვი 500-თ.

პროექტის შენახვისა და დაფაზე ატვირთვის შემდეგ, დავინახავთ რომ დიოდი უფრო ხშირად ინთება.

მაგალითის გაუმჯობესება

  1. რა მოხდება თუ ციმციმის დროს ნელ-ნელა შევამცირებთ 200, 100, ან 10 მილიწამამდე?
  2. მორზეს კოდის მიხედვით, საგანგებო სიგნალი SOS:
    (· · · – – – · · ·) . როგორ შეიძლება შევცვალოთ სამაგალითო პროექტი ისე, რომ შუქდიოდის ციმციმით მოვითხოვოთ დახმარება?
  3. ლოდინის დროის შეცვლისას, ბევრგან გვიწევს რიცხვების ჩაწერა. როგორ შეიძლება შევცვალოთ მაგალითი, რომ სამკარისი იყოს მხოლოდ ერთი რიცხვის შეცვლა?
    მითითება: მე-13 ფეხს რა სახელი დავარქვით?
Advertisements

6 thoughts on “არდუინოს დაპროგრამება 01 – დაფის შუქდიოდის ციმციმი”

  1. გიორგი, მე დათო ვარ, თუ გახსოვარ, თბილისის ხელნაწერთა ინსტიტუტიდან. თემა: ტიპმა გააკეთა პატარა პროგრამა, რომელიც ძალიან აადვილებს ძველბერძნულად ბეჭდვას უნიკოდში. ჩვეულებრივი წესით სამფურცლიანი ინსტრუქცია უნდა გქონდეს გაკრული კედელზე, ძველბერძნულად უნიკოდში რომ ბეჭდო. ეს პროგრამა ინტერნეტში კიდია, მარა ლინუქსისთვის არ გამოდგება. თვითონ წერს, რომ გამოდგებაო ან wine-თი გაუშვითო. მგონი, კოდი ღია აქვს, თუ სწორად მესმის. არ შეიძლება, რომ ლინუქსისთვის გამოსადეგარად გადაკეთდეს ისე, რომ wine არ ჭირდებოდეს? და, პრინციპში, მაგ პროგრამის გაუმჯობესებაც შეიძლება, ვინმე თუ დაინტერესდება. აი, ის გვერდი, სადაც ეგ პროგრამა კიდია: http://unigreek.phildow.net/
    იმის გამო, რომ ლინუქსზე ვერ ვაყენებ, მე ამ პროგრამის ინტერნეტვერსიას ვიყენებ: http://www.typegreek.com/
    ბოდიში, რა, თუ მომაბეზრებელ რაღაცებს გეკითხები.

    Like

  2. გამარჯობათ.

    მე მაინტერესებს თუ როგორ შეიძლება არდუინოს დიაგნოსტიკა მუშაობს თუ არა..

    დიდად დამეხმარებით

    დავითი

    Like

    1. სალამი! მუშაობს თუ არაში რას გულისხმობ? ჩინურის შემოწმება გსურს, ორიგინალივით თუ მუშაობს?
      თუ რაიმე. კონმრეტული ფუნქციონალობა? ან რაიმე კონკრეტული ფეხი? ათასი რამე შეიძლება დაემართოს

      Like

      1. დიდი მადლობა გამოხმაურებისათვის,

        პრობლემის აღწერა:

        საქმე მდგომარეობს შემდეგში: ბავშვთა გასართობ ცენტრში არის პატარა „მანქანა“ რომელიც მოძრაობს 24 ვოლტიანი ორი ელექტრო ძრავის მეშვეობით, წინ უყევია 5 ცალი ოპ[ტიკური გადამცემი რომელის უზრუნველყოფს იატაკზე არსებულ შავი ლენტის მიმართულებით მოძრაობას….. ამას ყველაფერს მართავს არდუინო ნანო, რომელიც ჩემი აზრით დაზიანდა.

        შეკითხვა:

        1. მინდა დავრწმუნდე, რომ არდუინო დაზიანებულია (USB mini კაბელით PC -ზე მირთებისას არანაირი რეაგირება არ აქვს)

        2. რომ შევიძინო ახალი არდუინო, შესაძლებელი იქნება თუ არა დაზიანებული არდუინოდან პროგრამის გადმოწერა.

        თუ გამიწევთ კონსულტაციას დიდად მადლობელი დაგრჩებით.

        წინასწარ გიხდით მადლობას.

        დავით მარდალეიშვილი

        599 270059

        Like

      2. თქვენს შესახებ წავიკითხე თბილისის ფორუმში, და გადავწყვიტე მოგწეროთ.

        პრობლემის აღწერა:
        საქმე მდგომარეობს შემდეგში: ბავშვთა გასართობ ცენტრში არის პატარა „მანქანა“ რომელიც მოძრაობს 24 ვოლტიანი ორი ელექტრო ძრავის მეშვეობით, წინ უყევია 5 ცალი ოპ[ტიკური გადამცემი რომელის უზრუნველყოფს იატაკზე არსებულ შავი ლენტის მიმართულებით მოძრაობას….. ამას ყველაფერს მართავს არდუინო ნანო, რომელიც ჩემი აზრით დაზიანდა.

        შეკითხვა:

        1. მინდა დავრწმუნდე, რომ არდუინო დაზიანებულია (USB mini კაბელით PC -ზე მირთებისას არანაირი რეაგირება არ აქვს)
        2. რომ შევიძინო ახალი არდუინო, შესაძლებელი იქნება თუ არა დაზიანებული არდუინოდან პროგრამის გადმოწერა.

        თუ გამიწევთ კონსულტაციას დიდად მადლობელი დაგრჩებით.

        წინასწარ გიხდით მადლობას.

        დავითი
        599 270059

        Like

        1. გამარჯობა,
          რაღაცნაირად გამომრჩა ეს თქვენი პოსტი და უყურადღებოდ დაგტოვეთ 😦

          გადაწყდა თქვენი პრობლემები? შევეცდები დაგეხმაროთ შეძლებისდაგვარად.

          Like

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s