LED შვიდი სეგმენტის ინდიკატორები. შვიდი სეგმენტიანი ინდიკატორი შვიდი სეგმენტიანი LED ინდიკატორები საერთო კათოდით

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

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

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

შვიდი სეგმენტის ინდიკატორი შედგება შვიდი LED-ისგან (აქედან გამომდინარე მისი სახელი), მოწყობილი ოთხკუთხედად, როგორც ეს ნაჩვენებია ფიგურაში. შვიდი LED-დან თითოეულს სეგმენტი ეწოდება, რადგან განათებისას სეგმენტი წარმოადგენს ციფრის ნაწილს (ათწილადი ან 12-ციფრიანი). ზოგჯერ იმავე პაკეტში გამოიყენება მე-8 დამატებითი LED. ის ემსახურება ათობითი წერტილის ჩვენებას. (DP), რითაც ნებადართულია დისპლეის ჩვენება, თუ ორი ან მეტი 7-სეგმენტიანი ინდიკატორი ერთმანეთთან არის დაკავშირებული ათზე მეტი რიცხვების წარმოსადგენად.

LED დისპლეის შვიდი სეგმენტიდან თითოეული დაკავშირებულია შესაბამის საკონტაქტო მწკრივთან, რომელიც მდებარეობს პირდაპირ მართკუთხა პლასტმასის ინდიკატორის კორპუსზე. LED ქინძისთავები მონიშნულია a-დან g-მდე, რაც წარმოადგენს თითოეულ ცალკეულ სეგმენტს. LED სეგმენტების სხვა კონტაქტები ერთმანეთთან არის დაკავშირებული და ქმნიან საერთო გამომავალს.

ასე რომ, წინა მიკერძოება, რომელიც გამოიყენება LED სეგმენტების შესაბამის ქინძისთავებზე გარკვეული თანმიმდევრობით, გამოიწვევს ზოგიერთი სეგმენტის განათებას, ხოლო დანარჩენი ბნელი რჩება, რაც საშუალებას მისცემს სასურველი რიცხვის ნიმუშის სიმბოლოს განათება, რათა გამოჩნდეს ეკრანზე. ეს საშუალებას გვაძლევს წარმოვადგინოთ ათი ათობითი ციფრიდან თითოეული 0-დან 9-მდე 7 სეგმენტიან ეკრანზე.

ჩვეულებრივი პინი ჩვეულებრივ გამოიყენება 7 სეგმენტიანი დისპლეის ტიპის დასადგენად. თითოეულ დისპლეის LED- ს აქვს ორი დამაკავშირებელი ტერმინალი, რომელთაგან ერთს ეწოდება "ანოდი", ხოლო მეორეს, შესაბამისად, ეწოდება "კათოდი". ამრიგად, შვიდ სეგმენტიან LED ინდიკატორს შეიძლება ჰქონდეს ორი ტიპის მიკროსქემის დიზაინი - საერთო კათოდით (OC) და საერთო ანოდით (OA).

ამ ორი ტიპის დისპლეს შორის განსხვავება ისაა, რომ OK დიზაინში 7-ვე სეგმენტის კათოდები პირდაპირ არის დაკავშირებული ერთმანეთთან, საერთო ანოდის (CA) დიზაინში კი 7-ვე სეგმენტის ანოდები ერთმანეთთან არის დაკავშირებული. ორივე სქემა მუშაობს შემდეგნაირად.

  • საერთო კათოდი (OC) - ყველა LED სეგმენტის ურთიერთდაკავშირებულ კათოდებს აქვთ ლოგიკური დონე "0" ან დაკავშირებულია საერთო მავთულთან. ცალკეული სეგმენტები განათებულია ლოგიკური მაღალი ან ლოგიკური 1 სიგნალის გამოყენებით მათ ანოდის პინზე შემზღუდველი რეზისტორის მეშვეობით ცალკეული LED-ების გადაადგილების მიზნით.
  • საერთო ანოდი (CA) - ყველა LED სეგმენტის ანოდი გაერთიანებულია და აქვს ლოგიკური დონე "1". ინდიკატორის სინათლის ცალკეული სეგმენტები, როდესაც თითოეული კონკრეტული კათოდი უკავშირდება მიწას, ლოგიკურ "0" ან დაბალი პოტენციალის სიგნალს შესაბამისი შემზღუდველი რეზისტორის მეშვეობით.

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

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

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

შვიდი სეგმენტის ინდიკატორმა დიდი პოპულარობა მოიპოვა რადიომოყვარულებში, რადგან მოსახერხებელია გამოსაყენებლად და ადვილად გასაგები.

ამ გაკვეთილზე ჩვენ გავეცნობით შვიდი სეგმენტიანი LED ინდიკატორების მიკროკონტროლერებთან დაკავშირების დიაგრამებს და ინდიკატორების კონტროლის შესახებ.

LED შვიდი სეგმენტის ინდიკატორები რჩება ციფრული ინფორმაციის ჩვენების ერთ-ერთ ყველაზე პოპულარულ ელემენტად.

მათი შემდეგი თვისებები ხელს უწყობს ამას.

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

LED ინდიკატორების სახეები.

შვიდი სეგმენტიანი LED ინდიკატორი აჩვენებს სიმბოლოს შვიდი LED-ის გამოყენებით - ციფრული სეგმენტები. მერვე LED ანათებს ათობითი წერტილი. ასე რომ, შვიდ სეგმენტიან ინდიკატორში არის 8 სეგმენტი.

სეგმენტები აღინიშნება ლათინური ასოებით "A"-დან "H"-მდე.

თითოეული LED-ის ანოდები ან კათოდები გაერთიანებულია ინდიკატორში და ქმნის საერთო მავთულს. აქედან გამომდინარე, არსებობს ინდიკატორები საერთო ანოდით და საერთო კათოდით.

LED ინდიკატორი საერთო ანოდით.

LED ინდიკატორი საერთო კათოდით.

სტატიკური LED კონტროლი.

LED ინდიკატორები უნდა იყოს დაკავშირებული მიკროკონტროლერთან დენის შემზღუდველი რეზისტორების საშუალებით.

რეზისტორების გაანგარიშება იგივეა, რაც ცალკეული LED-ებისთვის.

R = (U მიწოდება - U სეგმენტი) / I სეგმენტი

ამ წრედისთვის: I სეგმენტი = (5 – 1,5) / 1000 = 3,5 mA

თანამედროვე LED ინდიკატორები საკმაოდ კაშკაშა ანათებს თუნდაც 1 mA დენის დროს. საერთო ანოდის მქონე მიკროსქემისთვის, სეგმენტები ანათებს, რომელთა საკონტროლო ქინძისთავებზე მიკროკონტროლერი წარმოქმნის დაბალ დონეს.

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

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

მულტიპლექსირებული რეჟიმი LED ინდიკატორების კონტროლისთვის.

მიკროკონტროლერთან თითოეული შვიდსეგმენტიანი ინდიკატორის დასაკავშირებლად საჭიროა რვა პინი. თუ არსებობს 3-4 ინდიკატორი (ციფრი), მაშინ ამოცანა პრაქტიკულად შეუძლებელი ხდება. უბრალოდ არ არის საკმარისი მიკროკონტროლერის ქინძისთავები. ამ შემთხვევაში, ინდიკატორების დაკავშირება შესაძლებელია მულტიპლექსირებულ რეჟიმში, დინამიური მითითების რეჟიმში.

თითოეული ინდიკატორის იმავე სახელწოდების სეგმენტების დასკვნები გაერთიანებულია. ეს იწვევს LED-ების მატრიცას, რომლებიც დაკავშირებულია სეგმენტის ქინძისთავებსა და საერთო ინდიკატორებს შორის. აქ არის წრე სამნიშნა ინდიკატორის მულტიპლექსირებული კონტროლისთვის საერთო ანოდით.

სამი ინდიკატორის დასაკავშირებლად საჭირო იყო 11 პინი და არა 24, როგორც სტატიკური კონტროლის რეჟიმში.

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

დინამიური მითითების წრე LED-ებისთვის საერთო კათოდით ასე გამოიყურება.

იცვლება ყველა სიგნალის პოლარობა. ახლა დაბალი დონე გამოიყენება აქტიური გამონადენის საერთო მავთულზე, ხოლო მაღალი დონე გამოიყენება იმ სეგმენტებზე, რომლებიც უნდა განათდეს.

სინათლის გამოსხივების დიოდის (LED) ინდიკატორების დინამიური ჩვენების ელემენტების გაანგარიშება.

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

  • სეგმენტების საშუალო დენი;
  • სეგმენტების პულსის დენი;
  • სეგმენტის რეზისტორის წინააღმდეგობა;
  • გამონადენის საერთო ტერმინალების პულსის დენი.

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

მოდით ავირჩიოთ საშუალო სეგმენტის დენი 1 mA.

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

I სეგმენტი imp. = I სეგმენტი საშ. *ნ

ჩვენი სქემისთვის I სეგმენტისთვის. imp. = 1 * 3 = 3 mA.

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

R = (U მიწოდება - U სეგმენტი) / I სეგმენტი. imp.

R = (5 - 1.5) / 0.003 = 1166 Ohm

ჩვენ განვსაზღვრავთ გამონადენის საერთო ტერმინალების პულსის დენებს. 8 სეგმენტს შეუძლია ერთდროულად განათდეს, რაც ნიშნავს, რომ ერთი სეგმენტის პულსის დენი უნდა გაამრავლოთ 8-ზე.

I კატეგორიის imp. = I სეგმენტი imp. * 8

ჩვენი სქემისთვის I კატეგორიის imp. = 3 * 8 = 24 mA.

  • ჩვენ ვირჩევთ რეზისტორის წინააღმდეგობას 1.1 kOhm;
  • სეგმენტის კონტროლის მიკროკონტროლერის ქინძისთავები უნდა უზრუნველყოფდეს მინიმუმ 3 mA დენს;
  • მიკროკონტროლერის ქინძისთავები ინდიკატორის ციფრის ასარჩევად უნდა უზრუნველყონ დენი მინიმუმ 24 mA.

ასეთი დენის მნიშვნელობებით, ინდიკატორი შეიძლება პირდაპირ დაუკავშირდეს Arduino დაფის ქინძისთავებს, დამატებითი კლავიშების გამოყენების გარეშე. ნათელი ინდიკატორებისთვის, ასეთი დენები საკმაოდ საკმარისია.

სქემები დამატებითი გასაღებებით.

თუ ინდიკატორებს მეტი დენი სჭირდება, მაშინ საჭიროა დამატებითი კლავიშების გამოყენება, განსაკუთრებით ციფრული შერჩევის სიგნალებისთვის. გამონადენის მთლიანი დენი 8-ჯერ აღემატება ერთი სეგმენტის დენს.

კავშირის დიაგრამა LED ინდიკატორისთვის საერთო ანოდით მულტიპლექსირებულ რეჟიმში ტრანზისტორი კონცენტრატორებით გამონადენის შესარჩევად.

ამ წრეში ბიტის შესარჩევად საჭიროა დაბალი დონის სიგნალის გენერირება. შესაბამისი გასაღები გაიხსნება და ელექტროენერგიას მიაწვდის ინდიკატორის გამონადენს.

კავშირის დიაგრამა LED ინდიკატორისთვის საერთო კათოდით მულტიპლექსირებულ რეჟიმში ტრანზისტორი გადამრთველებით გამონადენის შესარჩევად.

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

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

გაზრდილი მიწოდების ძაბვის ინდიკატორების გასაღებები.

არსებობს დიდი ინდიკატორები, რომლებშიც თითოეული სეგმენტი შედგება რამდენიმე LED-ისგან, რომლებიც დაკავშირებულია სერიაში. ასეთი ინდიკატორების გასააქტიურებლად საჭიროა 5 ვ-ზე მეტი ძაბვის წყარო. გადამრთველებმა უნდა უზრუნველყონ გაზრდილი ძაბვის გადართვა, რომელიც კონტროლდება მიკროკონტროლერის დონის სიგნალებით (ჩვეულებრივ 5 ვ).

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

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

ინდიკატორის ციფრებს შორის ყველა სეგმენტი უნდა გამორთოთ მოკლე დროით (1-5 μs). ეს დრო აუცილებელია გასაღების გადართვის გარდამავალი პროცესების დასასრულებლად.

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

მომდევნო გაკვეთილზე ჩვენ დავაკავშირებთ შვიდსეგმენტიან LED ინდიკატორს Arduino დაფაზე და დავწერთ ბიბლიოთეკას მის გასაკონტროლებლად.

კატეგორია: . შეგიძლიათ ჩანიშნოთ.

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

სქემატური დიაგრამა

ეს წრე არის ერთნიშნა 7 სეგმენტიანი დისპლეის კონტროლერი, რომელიც იყენებს 5 LED-ის დიდ კომპლექტს თითო სეგმენტზე და ცვლის რეგისტრს მიკროკონტროლერის შეყვანის მარტივი კონტროლისთვის. ამ პროექტში გამოყენებული თითოეული LED 5 მმ დიამეტრით.

ULN2003 ჩიპი ხელს უწყობს დიოდების გადინების გაძლიერებას. რეზისტორები R1 - R8 არის დენის შემზღუდველი LED-ებისთვის, რომლებიც სერიულად არის დაკავშირებული წრედში.

Კარგი დღე! ჩემი ხანგრძლივი და იძულებითი შესვენების შემდეგ გავაგრძელებთ Arduino პროგრამირების კურსის დაუფლებას. ერთ-ერთ წინა გაკვეთილზე ჩვენ უკვე ვიმუშავეთ LED-ების თანმიმდევრობით, ახლა დროა გადავიდეთ ტრენინგის შემდეგ ეტაპზე. დღევანდელი სტატიის თემა იქნება 7 სეგმენტიანი მაჩვენებელი.

7-სეგმენტიანი ინდიკატორის გაცნობა ორი ნაწილისგან შედგება. პირველ ნაწილში მოკლედ გადავალთ თეორიულ კომპონენტზე, ვიმუშავებთ აპარატურასთან და დავწერთ მარტივ პროგრამებს.

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

კიდევ ერთი მნიშვნელოვანი განსხვავება, რომელიც განასხვავებს ამ ინდიკატორს მარტივი LED- ებისგან. მას აქვს საერთო კათოდი (უფრო სწორად, ორი ეკვივალენტური ფეხი 3 და 8, რომელზედაც კათოდი არის დაკავშირებული). საკმარისია მხოლოდ ერთი კათოდის დაკავშირება მიწასთან ( GND). ყველა ინდიკატორი ელემენტს აქვს ინდივიდუალური ანოდები.

მცირე გადახვევა. ყოველივე ზემოთქმული ეხება 7 სეგმენტიან ინდიკატორებს საერთო კათოდით. თუმცა, არსებობს ინდიკატორები საერთო ანოდით. ასეთი ინდიკატორების დაკავშირებას მნიშვნელოვანი განსხვავებები აქვს, ამიტომ გთხოვთ, არ აურიოთ „ცოდვილი მართალთან“. ნათლად უნდა გესმოდეთ, რა ტიპის შვიდსეგმენტიანი მოწყობილობა გაქვთ ხელში!

მარტივ LED-ებსა და 7-სეგმენტიან ინდიკატორებს შორის განსხვავებების გარდა, ასევე არსებობს საერთო მახასიათებლები. მაგალითად: ინდიკატორები, ისევე როგორც LED-ები, შეიძლება დამონტაჟდეს ზედიზედ (თანმიმდევრობით) ორ-, სამ-, ოთხნიშნა რიცხვების (ციფრების) საჩვენებლად. თუმცა, მე არ გირჩევთ ძალიან იდარდოთ სეგმენტური ნაკრების თავად შეკრებაზე. იყიდება "გვერდით" ერთნიშნა ინდიკატორები, ასევე იყიდება მრავალნიშნა ინდიკატორები.

იმედი მაქვს, რომ არ დაგავიწყდათ LED-ების შეერთებისას დენის შემზღუდველი რეზისტორების გამოყენების აუცილებლობა. იგივე ეხება ინდიკატორებს: ინდიკატორის თითოეულ ელემენტს უნდა ჰქონდეს დაკავშირებული საკუთარი რეზისტორი. 8 ელემენტი (7 + 1) - 8 რეზისტორები.

ხელთ მქონდა შვიდი სეგმენტიანი ბლოკი, რომელსაც აქვს 5161AS (საერთო კათოდი). Pinout:



სქემატური დიაგრამა

როგორც ადრე ვთქვი, იმისათვის, რომ ჩართოთ სეგმენტი "A", ჩვენ ვაკავშირებთ მიწას ნებისმიერ ჩვეულებრივ პინთან (3 ან 8) და მივაწოდებთ 5 ვ ძაბვას მე-7 პინს. თუ ინდიკატორს აქვს საერთო ანოდი, მაშინ ანოდს ვაყენებთ 5 ვ-ს, ხოლო სეგმენტის გამოსავალს მიწას!

მოდით შევიკრიბოთ სატესტო სტენდი. სადენებს ვაკავშირებთ თანმიმდევრობით, დაწყებული პირველი ფეხით, რომელიც მიდის Arduino დაფის მე-2 ქინძისთავზე. ჩვენ ვაკავშირებთ მიწას ინდიკატორის მე-8 ქინძისთავთან.

სტენდის აწყობის შემდეგ, შეგიძლიათ დაიწყოთ პროგრამული უზრუნველყოფის წერა.

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


ახლა მოდით გამოვფხიზლოთ ნომერი 2. ამისთვის ჩავრთოთ კიდევ რამდენიმე ელემენტი.

ერთი ციფრის გამოსატანად, თქვენ უნდა დაწეროთ კოდის n-რიცხვი ხაზები. ძნელია, არ ფიქრობ?

არის სხვა გზა. ინდიკატორზე ნებისმიერი რიცხვის გამოსატანად, ის ჯერ უნდა იყოს წარმოდგენილი ბიტების გარკვეული თანმიმდევრობით.

მიმოწერის ცხრილი.

თუ ეკრანს აქვს საერთო ანოდი, მაშინ 1 უნდა შეიცვალოს 0-ით, ხოლო 0 1-ით!

თექვსმეტობითი სვეტი არის რიცხვის გამოსახულება ბაიტის სახით (ამაზე დაწვრილებით მეორე ნაწილში ვისაუბრებთ).

ორობითი რიცხვების სისტემაში რიცხვი იწერება შემდეგნაირად: 0b00000000. 0ბ- ბინარული სისტემა. ნულები ნიშნავს, რომ ყველა LED გამორთულია.

შეერთებისას გამოვიყენეთ ქინძისთავები 2-დან 9-მდე. 2-ის ჩასართავად ჩაწერეთ ერთი = 0b00000001.მარცხნიდან მეოთხე ბიტი პასუხისმგებელია წერტილზე. ბოლო ბიტი შეესაბამება ინდიკატორის შუა ხაზს.

დავწეროთ 0 რიცხვის გამოტანის მაგალითი.

აკრეფილი ხაზების რაოდენობის შესამცირებლად, ჩვენ გამოვიყენებთ ციკლს, რომელიც საშუალებას გაძლევთ „გაიმეოროთ“ ყველა 8 ბიტი. ცვლადი ჩართვა_სეგმენტიენიჭება წაკითხული ბიტის მნიშვნელობა. ამის შემდეგ, მიმდინარე გამომავალი დაყენებულია შესაბამის რეჟიმში ( სიგნალის არსებობა ან არარსებობა).

შენიშვნა: bitRead() ფუნქცია კითხულობს მითითებული ბიტის მდგომარეობას და აბრუნებს მდგომარეობის მნიშვნელობას (0 ან 1).bitRead (x, n)სადაც x არის რიცხვი, რომლის ბიტების წაკითხვაა საჭირო; n არის ბიტის რიცხვი, რომლის მდგომარეობა უნდა წაიკითხოს. ნუმერაცია იწყება ყველაზე ნაკლებად მნიშვნელოვანი (მარჯვენა) ბიტით დანომრილი 0.

და პირველი ნაწილის ბოლოს დავწერთ პატარა მრიცხველს.

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

რატომ არის 7 სეგმენტიანი მაჩვენებელი? ბოლოს და ბოლოს, ბევრი განსხვავებული ეკრანია, დიდი რაოდენობით სიმბოლოებით, ხაზებით, სხვადასხვა დიაგონალებით და რეზოლუციებით, შავ-თეთრი და ფერადი, რომელთაგან ყველაზე ხელმისაწვდომი ორიოდე დოლარი ღირს... და აი: „ძველი“ ერთი, აღმაშფოთებლად მარტივი, მაგრამ მოითხოვს ქინძისთავების დიდ რაოდენობას 7-სეგმენტის ინდიკატორს, მაგრამ მაინც ამ "მოხუცს" ასევე აქვს უპირატესობა. ფაქტია, რომ აქ მოცემული ესკიზების გამოყენებით შეგიძლიათ გააცოცხლოთ არა მხოლოდ 14 მმ ციფრული სიმაღლის ინდიკატორი, არამედ უფრო სერიოზული (თუმცა თვითნაკეთი) პროექტები და მრიცხველის ციფრები ამ შემთხვევაში შორს არის ლიმიტისაგან. ეს შეიძლება არც ისე საინტერესო იყოს დედაქალაქების მაცხოვრებლებისთვის, მაგრამ ნოვოკაცაპეტოვკას ან ნიჟნიაია კედროვკას მოსახლეობა ძალიან ბედნიერი იქნება, თუ კლუბში ან სოფლის საბჭოში გამოჩნდება საათი, რომელსაც ასევე შეუძლია აჩვენოს თარიღი და ტემპერატურა და ისინი ისაუბრებენ შემქმნელზე. ამ საათის ძალიან დიდი ხნის განმავლობაში. მაგრამ ასეთი საათები ცალკე სტატიის თემაა: ვიზიტორებს სურთ - დავწერ. ყოველივე ზემოთ დაწერილი შესავალად შეიძლება ჩაითვალოს. ჩემი ბოლო სტატიის მსგავსად, ეს სტატია შედგება ნაწილისაგან, ამჯერად ორად. პირველ ნაწილში ჩვენ უბრალოდ „ვმართავთ“ ინდიკატორს, ხოლო მეორეში შევეცდებით მის ადაპტირებას ოდნავ მაინც სასარგებლო რამეზე. ასე რომ, განვაგრძოთ:

ნაწილი პირველი. ექსპერიმენტული - საგანმანათლებლო

ამ პროექტის საფუძველია ARDUINO UNO, რომელიც ჩვენთვის უკვე კარგად არის ცნობილი წინა სტატიებიდან. შეგახსენებთ, რომ მისი შეძენის ყველაზე მარტივი გზა აქ არის:ან აქ: გარდა ამისა, დაგჭირდებათ 4-ნიშნა, 7 სეგმენტიანი მაჩვენებელი. მაქვს, კერძოდ, GNQ-5641BG-11. რატომ ეს? დიახ, უბრალოდ იმიტომ, რომ 5 წლის წინ შეცდომით ვიყიდე, ძალიან მეზარებოდა მის შეცვლაზე წასვლა, ამიტომ მთელი ამ ხნის განმავლობაში იწვა და ფრთებში მელოდა. მე ვფიქრობ, რომ ყველას, ვისაც აქვს საერთო ანოდი, გააკეთებს (და საერთო კათოდით ეს შესაძლებელია, მაგრამ თქვენ მოგიწევთ მასივის მონაცემების და სხვა პორტის მნიშვნელობების ინვერსია - ანუ მათი შეცვლა საპირისპიროზე), სანამ ის არც ისე ძლიერია, რომ არდუინო არ დაწვას. გარდა ამისა, 4 დენის შემზღუდველი რეზისტორები, თითო დაახლოებით 100 Ohms და კაბელის ნაჭერი (10 სმ საკმარისი იყო ჩემთვის) 12 ქინძისთავისთვის (ბირთვი) შეიძლება "მოიჭრას" უფრო ფართოდან, რაც მე გავაკეთე. ან შეგიძლიათ ცალკე მავთულებითაც კი შეადუღოთ, პრობლემა არ იქნება. ასევე დაგჭირდებათ დაფისთვის ქინძისთავები (11 ცალი), თუმცა თუ ფრთხილად იქნებით მათ გარეშეც შეგიძლიათ. ინდიკატორის ესკიზი ჩანს სურათზე 1, ხოლო მისი დიაგრამა 2-ში. მე ასევე აღვნიშნავ, რომ უმჯობესია ამ ინდიკატორის თითოეულ სეგმენტს მიაწოდოთ არაუმეტეს 2.1 ვ (შეიზღუდება 100 Ohm რეზისტორებით) და ამ შემთხვევაში ის მოიხმარს არაუმეტეს 20 mA-ს. თუ რიცხვი „8“ აინთება, მოხმარება არ აღემატება 7x20=140 mA-ს, რაც საკმაოდ მისაღებია Arduino-სთვის. ცნობისმოყვარე მკითხველი დასვამს კითხვას: ”მაგრამ 140 mA 4 გამონადენი უკვე არის 4x140 = 560 mA, და ეს უკვე ძალიან ბევრია!” ვპასუხობ - 140 დარჩება როგორ? წაიკითხეთ! ინდიკატორზე ქინძისთავების მდებარეობა ჩანს ნახაზზე 3. და ვაკეთებთ კავშირს ცხრილი 1-ის მიხედვით.


ბრინჯი. 1 - ინდიკატორის ესკიზი


ბრინჯი. 2 - ინდიკატორის წრე


ბრინჯი. 3 - Pin მდებარეობა

ცხრილი 1

Pin Arduino Uno

ინდიკატორის პინი

შენიშვნა

სეგმენტი გ

სეგმენტი F

სეგმენტი E

სეგმენტი D

სეგმენტი C

სეგმენტი B

სეგმენტი A

No1 სეგმენტის საერთო ანოდი, შეაერთეთ 100 ომიანი რეზისტორის მეშვეობით.

No2 სეგმენტის საერთო ანოდი, შეაერთეთ 100 ომიანი რეზისტორის მეშვეობით.

No3 სეგმენტის საერთო ანოდი, შეაერთეთ 100 ომიანი რეზისტორის მეშვეობით.

No6 სეგმენტის საერთო ანოდი, შეაერთეთ 100 Ohm რეზისტორის მეშვეობით.



ჩვენ ვავსებთ მარტივ ჩანახატს, რომელიც არის მარტივი „დათვლის ცხრილი“ 0-დან 9-მდე:


ახლა გარკვეული განმარტებისთვის. DDRD არის D პორტის რეესტრი (DDRB - შესაბამისად, პორტი B) "საშინელი" სიტყვის "რეგისტრაცია" უკან არის უბრალოდ "დამალული" ფუნქცია, რომელიც მიუთითებს, წაიკითხავს თუ არა პორტი რაღაცას თავისი პინით (მიიღებს ინფორმაციას), თუ ვიცე. პირიქით, იქ რაღაცის გაკეთება იქნება შესაძლებელი, შემდეგ დაწერე (ინფორმაცია მიაწოდე). ამ შემთხვევაში, ხაზი DDRD=B11111111; მიუთითებს, რომ D პორტის ყველა პინი გამომავალია, ე.ი. მათგან ინფორმაცია გამოვა. ასო "B" ნიშნავს, რომ ორობითი ნომერი იწერება რეესტრში. მოუთმენელი მკითხველი მაშინვე იკითხავს: „შესაძლებელია თუ არა ათობითი!?!“ მე ვჩქარობ დაგამშვიდოთ, რომ ეს შესაძლებელია, მაგრამ ამაზე ცოტა მოგვიანებით. თუ გვინდოდა გამოვიყენოთ პორტის ნახევარი შეყვანისთვის, ხოლო ნახევარი გამოსასვლელად, შეგვიძლია განვსაზღვროთ ასე: DDRD=B11110000; პირები აჩვენებს იმ ქინძისთავებს, რომლებიც გასცემენ ინფორმაციას, ხოლო ნულები აჩვენებს მათ, ვინც მიიღებს ამ ინფორმაციას. რეესტრის მთავარი მოხერხებულობა ასევე მდგომარეობს იმაში, რომ არ გჭირდებათ ყველა პინის 8-ჯერ რეგისტრაცია, ე.ი. პროგრამაში ვინახავთ 7 ხაზს. ახლა მოდით შევხედოთ შემდეგ ხაზს:

PORTB=B001000; // დააყენეთ B პორტის პინი 11 მაღალი

PORTB არის B პორტის მონაცემთა რეგისტრი, ე.ი. მასში რიცხვის ჩაწერით მივუთითებთ პორტის რომელ პინს ექნება ერთი და რომელს ექნება ნული. კომენტარის გარდა ვიტყვი, რომ თუ Arduino Uno-ს ისე აიღებთ, რომ კონტროლერი დაინახოთ და ციფრული პინები ზევით არის, რეესტრში შესვლა გასაგები იქნება, ე.ი. რომელ „ნულს“ (ან „ერთს“) რომელ პინს შეესაბამება, ე.ი. B პორტის ყველაზე მარჯვენა ნული პასუხისმგებელია მე-8 პინზე, ხოლო ყველაზე მარცხენა არის მე-13 (რომელსაც აქვს ჩაშენებული LED). D პორტისთვის, შესაბამისად, მარჯვენა არის პინი 0-ისთვის, მარცხენა არის პინი 7-ისთვის.
ვიმედოვნებ, რომ ასეთი დეტალური ახსნა-განმარტების შემდეგ ყველაფერი გასაგებია, მაგრამ რადგან ეს გასაგებია, მე ვთავაზობ ბავშვობიდან ჩვენთვის ცნობილ და საყვარელ ათწილადულ სისტემას დავუბრუნდეთ. და კიდევ ერთი რამ - 25 სტრიქონის ესკიზი შეიძლება პატარა ჩანდეს, მაგრამ დამწყებთათვის ის მაინც გარკვეულწილად რთულია. ჩვენ შევამცირებთ.

მოდით შეავსოთ კიდევ უფრო მარტივი ესკიზი, იგივე "დათვლის ცხრილი":


ვიდეო 1.
მხოლოდ 11 ხაზი! ეს არის ჩვენი გზა, "ახალი გზა"! გთხოვთ გაითვალისწინოთ, რომ ორობითი რიცხვების ნაცვლად რეესტრებში იწერება ათობითი რიცხვები. ბუნებრივია, ათობითი რიცხვებისთვის არ არის საჭირო ასოები წინ. მე ვფიქრობ, რომ არ იქნება ზიანი მიაყენოს ყველა რიცხვს ცხრილებში.

ცხრილი 2. ნაჩვენები სიმბოლოს შესაბამისობა პორტის მონაცემებთან

საერთო ანოდი

საერთო კათოდი

ორობითი სისტემა

ათობითი სისტემა

ორობითი სისტემა

ათობითი სისტემა

ცხრილი 3. ნაჩვენები ციფრის შესაბამისობა პორტის მონაცემებთან

საერთო ანოდი

საერთო კათოდი

ორობითი სისტემა

ათობითი სისტემა

ორობითი სისტემა

ათობითი სისტემა



ყურადღება! მე-2 და მე-3 ცხრილების მონაცემები ძალაშია მხოლოდ მაშინ, როდესაც სადენიანი 1-ლი ცხრილის მიხედვით არის გაყვანილი.
ახლა ავტვირთოთ ესკიზი "დათვლის ცხრილით" 0-დან 9999-მდე:




ბრინჯი. 4 - დათვლის მაგიდა

თქვენ შეგიძლიათ ნახოთ ესკიზი მოქმედებაში:ვიდეო 2.

ამ ჩანახატში უფრო მეტი კომენტარია, ვიდრე თავად კოდი. კითხვები არ უნდა იყოს... ერთის გარდა, როგორი „ციმციმის ციკლია“ ეს, სინამდვილეში რა ციმციმებს იქ და რატომ? და ასევე არის ამისთვის რაიმე სახის ცვლადი...
და მთელი საქმე იმაშია, რომ ოთხივე კატეგორიის ერთი და იგივე სახელწოდების სეგმენტები ერთ წერტილშია დაკავშირებული. A1, A2, A3 და A4 აქვთ საერთო კათოდი; A1, B1,…..G1 საერთო ანოდი. ასე რომ, 4-ციფრიან ინდიკატორზე „1234“-ის ერთდროულად გამოყენებით, ჩვენ მივიღებთ „8888“-ს და ძალიან გაგიკვირდებათ ეს. ამის თავიდან ასაცილებლად, ჯერ უნდა აანთოთ "1" თქვენს კატეგორიაში, შემდეგ გამორთოთ, აანთოთ "2" თქვენს კატეგორიაში და ა.შ. თუ ამას ძალიან სწრაფად გააკეთებთ, რიცხვების ციმციმი გაერთიანდება, როგორც ჩარჩოები ფილმზე და თვალი ამას პრაქტიკულად ვერ შეამჩნევს. და მბჟუტავი ცვლადის მაქსიმალური მნიშვნელობა ამ შემთხვევაში აკონტროლებს ინდიკატორზე რიცხვების შეცვლის სიჩქარეს. სხვათა შორის, სწორედ ამ „ციმციმის“ წყალობითაა, რომ მაქსიმალური დენის მოხმარება არის მხოლოდ 140 mA, ნაცვლად 560. ახლა მე გთავაზობთ გადასვლას უფრო სასარგებლოზე.

Მეორე ნაწილი. ცოტათი მაინც სასარგებლო

ამ ნაწილში ჩვენ გამოვიყვანთ სიმბოლოებს პერსონალური კომპიუტერიდან 7 სეგმენტიან ინდიკატორზე ARDUINO MEGA-ს გამოყენებით. რატომ გაჩნდა მოულოდნელად „გადასასვლელზე ცხენების გადართვის“ იდეა? არსებობს ორი მიზეზი: პირველი, მე არასოდეს განვიხილე ARDUINO MEGA ჩემს სტატიებში; და მეორეც, ARDUINO UNO-ში ჯერ კიდევ ვერ მივხვდი, როგორ შემიძლია დინამიურად შევცვალო COM პორტი და პორტი D. მაგრამ მე ვარ ახალბედა - შეიძლება მაპატიონ. ბუნებრივია, შეგიძლიათ შეიძინოთ ეს კონტროლერი აქ: . გეგმის განსახორციელებლად მომიწია აეღო გამაგრილებელი და კაბელი ხელახლა გადამედუღებინა არდუინოს მხრიდან, ასევე ახალი ჩანახატის დაწერა. როგორ ხდება კაბელის შედუღება სურათზე 5. საქმე იმაშია, რომ ARDUINO MEGA-სა და ARDUINO UNO-ს სხვადასხვა პორტი აქვთ, ხოლო Mega-ს კიდევ ბევრი პორტი აქვს. გამოყენებული ქინძისთავების შესაბამისობა ჩანს ცხრილში 4.



ბრინჯი. 5 - ახალი საკაბელო გაყვანილობა

ცხრილი 4

პორტ მეგა


ყურადღება! ეს ცხრილი მოქმედებს მხოლოდ ამ პროექტისთვის!

ასევე უნდა გაითვალისწინოთ, რომ Arduino Mega-ს C პორტი „იწყება“ პინი 37-დან და შემდეგ კლებადი მიმდევრობით, ხოლო პორტი A იწყება პინი 22-დან და შემდეგ აღმავალი მიმდევრობით.



ბრინჯი. 6 - ზოგადი ხედი



მცირე განხორციელების მახასიათებლები: ჩვენ გამოვყოფთ 4 სიმბოლოს. პერსონაჟები უნდა იყოს ნომრები. თუ შეიტანეთ „1234“ და ჩვენ დავინახავთ „1234“, თუ შეიყვანეთ „123456“ ჩვენ კვლავ ვიხილავთ „1234“, თუ შეიტანეთ „ytsuk“, „fyva1234“, „otiog485909oapom“ - ვერაფერს დავინახავთ. თუ შეიყვანეთ "pp2345mm" ჩვენ დავინახავთ "23" ე.ი. პატარა, ჩამონტაჟებული "უგუნური".

რეალური ესკიზი:



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



პაველ სერგეევის მიერ მომზადებული მიმოხილვა