პროექტი №2 – მორზეს S.O.S. სიგნალის ციმციმა.

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

გახსენით არდუინოს IDE და აკრიფეთ ქვემოთ მოყვანილი კოდი:

//შუქდიოდი შეერთებულია მე–10 კონტაქტთან
int ledPin = 10;
//გაეშვება ერთჯერ, sketch–ის სტარტისას
void setup(){
      //განსაზღვრავს გამომავალ კონტაქტს
     pinMode(ledPin, OUTPUT);
}
// მუშაობს ციკლი 
void loop(){
     // 3 წერტილი
     for (int x=0; x<3; x++) {
         digitalWrite(ledPin, HIGH); // ჩართავს შუქდიოდს         delay(150); //იცდის 0,15წმ
         digitalWrite(ledPin, LOW); //გამორთავს შუქდიოდს
         delay(100); //იცდის 0,1წმ
     }
     // 0,1წმ დაყოვნება წერტილებს და ტირეებს შორის
     delay(100);
     // 3 ტირე 
     for (int x=0; x<3; x++) {
         digitalWrite(ledPin, HIGH); // ჩართავს შუქდიოდს
          delay(400); // იცდის 0,4წმ
                  digitalWrite(ledPin, LOW); // გამორთავს შუქდიოდს 
         delay(100); // იცდის0,1წმ
     }
     // 0,1წმ დაყოვნება ტირეებს და წერტილებს შორის
     delay(100);
      // ისევ 3 წერტილი
     for (int x=0; x<3; x++) {
         digitalWrite(ledPin, HIGH); //ჩართავს შუქდიოდს
         delay(150); //იცდის 0,15წმ
         digitalWrite(ledPin, LOW); //გამორთავს შუქდიოდს
         delay(100); // იცდის 0,1წმ
     }
     // 5 წამიანი დაყოვნება SOS სინალის განმეორებამდე, 
     //ამ სიგნალების ერთმანეთისაგან უკეთ გარჩევისათვის
     delay(5000);
}

შეამოწმეთ კოდი და ჩატვირთეთ არდუინოში (იხ. შესავალში). შუქდიოდი დაიწყებს SOS სიგალის შესაბამისად ციმციმს.                 ამ (… – – – …) ერთი ციკლის დამთავრების შემდეგ გააკეთებს 5 წამიან პაუზას და ისევ გაუშვებს ციკლს უსასრულოდ მანამ, სანამ არდუინოს მიეწოდება დენი. კოდის ჩატვირთვის შემდეგ შეგიძლიათ მოხსნათ USB კაბელი და არდუინოს მიაწოდოთ გარეთა კვება ან 9ვ ბატარიდან ან დამატებითი 9ვ კვების ბლოკიდან. არდუინოს სამუშაო ძაბვაა 5–12 ვ, ოპტიმალურია 9ვ.

სურ. არდუინოს გარეთა კვების წყაროს ვარიანტები. შტეკერის შიდა დიამეტი 2,1მმ. ადაპტერიდან გამომავალი ძაბვა 9, დენი 1ა. ხოლო ცენტრალური კონტაქტი ”+”. პირველ რიგში მოცემული შეგიძლიათ შეუკვეთოთ ebay.com-ზე. ხოლო მეორე რიგში მოცემული მაღაზია DAC-ში.

ეს მოწყობილობა უკვე შეიძლება გამოყენებული იქნეს პარქტიკული მიზნებისთვის, როგორც ავარიული SOS სიგნალიზატორი. ამისათვის მოათავსეთ ყველფერი გამჭვირვალე და ჰერმეტულ ყუთში და დაუყენეთ გარე ჩამრთველი. დამატებითი 5ვ რელეს, ძლიერი ბატარეის და შუქდიოდების საშუალებით შეიძლება მისი სიკაშკაშის გაზრდა.

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

კოდის შესავალი ნაწილი ზუსტად იგივეა რაც პირველ პროექტში. სადაც გამოცხადებული ცვლადი და მე–10 კონტაქტი განისზღვრება როგორც გამომავალი კონტაქტი. მთავარი loop–ის კოდიც პირველი პროექტის ანალოგიურია. სადაც იგივე განმარტებებია მოცემული: შუქდიოდი ანთია გარკვეული დროის განმავლობაში შემდეგ კი ჩამქრალია ასევე რაღაც დროის განმავლობაში. მაგრამ ამ პროექტში ასეთი ბლოკი გამოყენებულია სამჯერ.

პირველ ბლოკი იძლევა სინათლის სამ მოკლე იმპულს.

for (int x=0; x<3; x++) {
    digitalWrite(ledPin, HIGH); 
    delay(150);
    digitalWrite(ledPin, LOW); 
    delay(100);
}

როგორვ ამ ბლოკიდან ჩანს შუქდიოდი ანთია 0,15წმ და ჩამქრალია 0,1წმ. შესაბამისი კოდი მოქცეულია ფიგურულ ფრიჩხილებში. მაგრამ კოდის გაშვების შემდეგ შუქდიოდი აციმციმდება სამჯერ და არა ერთჯერ.

ამას აკეთებს for ციკლი:

for (int x=0; x<3; x++) {

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

ინიციალიზაციის დროს ხდება ცვლადის გამოცხადება მისი ტიპის და საწისი მნიშვნელობის მითითებით. ჩვენს შემთხვევაში შემოგვყავს მთელი ტიპის ცვლადი სახელად x და მისი საწყისი მნიშვნელობა არის 0.

int x=0;

შემდეგ ვწერთ პირობას თუ რა პირობებში, რამდენჯერ უნდა შესრულდეს ფიგურულ ფრჩხილებში მოქცეული კოდი.

x<3;

ჩვენს ჩემთხვევაში for ციკლი შესრულდება მანამ სანამ x ნაკლებია (<) 3–ზე.

ამ სიმბოლოს < ზოგადად ეწოდება შედარების ოპერატორი. შედარების ოპერატორებია:

== (ტოლია), მათემატიკური ტოლობის 2 ნიშანი. ერთი ტოლობის ნიშანი, როგორც ეს უკვე ახეთ პირველ ორ პროქტში, გამოიყენება მინიჭების ოპერატორად.

!= (არ უდრის)

< (ნაკლებია)

> (მეტია)

<= (ნაკლებია ან ტოლი)

>= (მეტია ან ტოლი)

ბოლო განსაღვრება არის ზრდა, ინკრემენტი:

x++

რაც ნიშნავს, რომ x უნდა გაიზარდოს ბიჯით 1. ეს შეიძლeბა ასეც დაიწეროს x = x + 1, რაც ნიშნაცს, რომ x–ს მიენიჭოს მის უკვე არსებულ მნიშვნელობას მიმატებული 1. for ციკლის შემდეგ წერტილ-მძიმეს დასმა საჭირო არ არის.

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

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

One Response to პროექტი №2 – მორზეს S.O.S. სიგნალის ციმციმა.

  1. scienceasm says:

    წიგნის თარგმანი ქვეყნდება forum.ge – ზე Hinkalino-ს მიერ.
    დამატებითი შეკითხვები თემაში
    ==========================================
    “Arduino ს ინტერფეისი”
    ==========================================
    http://forum.ge/?f=48&showtopic=34393677

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 )

Google photo

You are commenting using your Google 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 )

Connecting to %s

%d bloggers like this: