ჩვენ უკვე გადავხედეთ Arduino- ს ღილაკის დამაკავშირებლად და შევეხეთ კონტაქტების "გადახრის" საკითხს. ეს ძალიან შემაშფოთებელი ფენომენია, რომელიც იწვევს ღილაკის განმეორებით დაჭერას და ართულებს ღილაკზე დაწკაპუნების პროგრამულად მართვას. მოდით ვისაუბროთ იმაზე, თუ როგორ დავაღწიოთ კონტაქტის ნახტომი.
აუცილებელია
- - არდუინო;
- - ტაქტის ღილაკი;
- - რეზისტორი, რომლის ნომინალური ღირებულებაა 10 kOhm;
- - სინათლის დიოდი;
- - სადენების დამაკავშირებელი.
ინსტრუქციები
Ნაბიჯი 1
კონტაქტის ნახტომი ჩვეულებრივი მოვლენაა მექანიკურ კონცენტრატორებში, ღილაკებში, გადართვის კონცენტრატორებში და რელეებში. იმის გამო, რომ კონტაქტები ჩვეულებრივ მზადდება ლითონებისა და შენადნობებისგან, რომლებსაც აქვთ ელასტიურობა, ფიზიკურად დახურვის შემთხვევაში, ისინი დაუყოვნებლივ არ ამყარებენ საიმედო კავშირს. მოკლე დროში კონტაქტები რამდენჯერმე იკეტება და ერთმანეთს მოიგერიებს. შედეგად, ელექტროენერგია იღებს სტაბილურ მდგომარეობას არა მყისიერად, არამედ მთელი რიგი აღზევებისა და დაცემის შემდეგ. ამ გარდამავალი ეფექტის ხანგრძლივობა დამოკიდებულია საკონტაქტო მასალაზე, ზომაზე და დიზაინზე. ილუსტრაცია გვიჩვენებს ტიპიურ ოსილოგრამას, როდესაც ტაქტის ღილაკის კონტაქტები დახურულია. ჩანს, რომ დრო სტაბილურ მდგომარეობაში გადასვლის მომენტიდან არის რამდენიმე მილიწამი. ამას "ნახტომი" ეწოდება.
ეს ეფექტი არ არის შესამჩნევი ელექტრულ წრეებში, განათების, ძრავების ან სხვა ინერციული სენსორებისა და მოწყობილობების გასაკონტროლებლად. მაგრამ სქემებში, სადაც ხდება ინფორმაციის სწრაფი კითხვა და დამუშავება (სადაც სიხშირეები იგივე წესისაა, როგორც "ნახტომის" იმპულსები, ან უფრო მაღალი), ეს პრობლემაა. კერძოდ, Arduino UNO, რომელიც მუშაობს 16 მეგაჰერციანზე, შესანიშნავია კონტაქტის ნახტომის მიღებით, ერთებისა და ნულების თანმიმდევრობის მიღებით, ერთჯერადი 0 – დან 1 გადამრთველის ნაცვლად.
ნაბიჯი 2
ვნახოთ, როგორ მოქმედებს კონტაქტის ნახტომი წრის სწორ მუშაობაზე. მოდით, დავუკავშირდეთ საათის ღილაკს Arduino- ს, ჩამოსაწევ რეზისტორულ წრეზე. ღილაკზე დაჭერით, ჩვენ ვანთებთ LED- ს და დავტოვებთ მას მანამ, სანამ ღილაკი კვლავ არ დააჭერს. სიცხადისთვის, ჩვენ ვუკავშირდებით გარე LED- ს ციფრულ პინს 13-ს, თუმცა ჩამონტაჟებული მოწყობილობის გაცემა შეიძლება.
ნაბიჯი 3
ამ ამოცანის შესასრულებლად, პირველი, რაც მახსენდება:
- გახსოვდეს ღილაკის წინა მდგომარეობა;
- შედარება არსებულ მდგომარეობასთან;
- თუ მდგომარეობა შეიცვალა, ჩვენ ვცვლით LED- ის მდგომარეობას.
მოდით დავწეროთ ეს ესკიზი და ჩავტვირთოთ Arduino მეხსიერებაში.
ჩართვის ჩართვისთანავე, ჩანს კონტაქტის გამოხტომის ეფექტი. ეს გამოიხატება იმაში, რომ LED ღილაკს დაჭერისთანავე არ ანათებს, ან ანათებს და შემდეგ ითიშება, ან ღილაკს დაჭერისთანავე არ ითიშება, მაგრამ რჩება ჩართული. ზოგადად, წრე არ მუშაობს სტაბილურად. და თუ LED- ის ჩართვით დავალებისთვის ეს ასე არ არის კრიტიკული, მაშინ სხვა, უფრო სერიოზული ამოცანებისთვის, ეს უბრალოდ მიუღებელია.
ნაბიჯი 4
ჩვენ შევეცდებით სიტუაცია გამოვასწოროთ. ჩვენ ვიცით, რომ კონტაქტის ნახტომი ხდება კონტაქტის დახურვის შემდეგ რამდენიმე მილიწამში. დაველოდოთ, ვთქვათ, 5 მმ ღილაკის მდგომარეობის შეცვლის შემდეგ. ადამიანისთვის ეს დრო თითქმის მყისიერია და ადამიანის მიერ ღილაკის დაჭერა ჩვეულებრივ გაცილებით მეტხანს გრძელდება - რამდენიმე ათეული მილიწამი. Arduino შესანიშნავად მუშაობს ამ მოკლე დროში და ამ 5 მმ საშუალებას მისცემს მას შეწყვიტოს კონტაქტების გადახტომა ღილაკზე დაჭერისგან.
ამ ესკიზში განვაცხადებთ ჩამოტვირთვის () პროცედურის შესახებ (ინგლისურად "Bounce" მხოლოდ "Bounce", პრეფიქსი "de" ნიშნავს საპირისპირო პროცესს), რომლის შეყვანაში ვწვდებით ღილაკის წინა მდგომარეობას. თუ ღილაკის დაჭერა 5 წამზე მეტია, მაშინ ის ნამდვილად არის დაჭერით.
პრესის დაფიქსირებით, ჩვენ ვცვლით LED მდგომარეობას.
ატვირთეთ ესკიზი Arduino დაფაზე. ახლა ყველაფერი ბევრად უკეთესია! ღილაკი მუშაობს უშეცდომოდ, როდესაც დაჭერით, LED ცვლის მდგომარეობას, როგორც გვინდოდა.
ნაბიჯი 5
მსგავსი ფუნქციონირება უზრუნველყოფილია სპეციალური ბიბლიოთეკებით, როგორიცაა Bounce2 ბიბლიოთეკა.თქვენ შეგიძლიათ გადმოწეროთ ბმულიდან "წყაროები" განყოფილებაში ან ვებგვერდზე https://github.com/thomasfredericks/Bounce2. ბიბლიოთეკის ინსტალაციისთვის, განათავსეთ იგი Arduino– ს განვითარების გარემოს ბიბლიოთეკების დირექტორიაში და გადატვირთეთ IDE.
"Bounce2" ბიბლიოთეკა შეიცავს შემდეგ მეთოდებს:
Bounce () - "Bounce" ობიექტის ინიციალიზაცია;
ბათილი ინტერვალი (ms) - ადგენს შეყოვნების დროს მილიწამებში;
ძალადაკარგული მიმაგრება (პინის ნომერი) - ადგენს ქინძისთავს, რომელთანაც დაკავშირებულია ღილაკი;
int update () - ახდენს ობიექტის განახლებას და აბრუნებს true- ს, თუ pin მდგომარეობა შეიცვალა, ხოლო false სხვაგვარად;
int read () - კითხულობს ქინძისთავის ახალ მდგომარეობას.
მოდით გადავწეროთ ჩვენი ესკიზი ბიბლიოთეკის გამოყენებით. თქვენ ასევე შეგიძლიათ გახსოვდეთ და შეადაროთ ღილაკის წინა მდგომარეობა ამჟამინდელთან, მაგრამ მოდით გავამარტივოთ ალგორითმი. ღილაკის დაჭერისას, ჩავთვლით პრესებს და თითოეული უცნაური პრესა ჩართავს LED– ს და თითოეული ლუწი დაჭერით გამორთავს მას. ეს ესკიზი ლაკონურად გამოიყურება, ადვილად იკითხება და მარტივია გამოსაყენებლად.