Სარჩევი:

1602 LCD კლავიატურის ფარის მოდული I2C ზურგჩანთით: 6 ნაბიჯი
1602 LCD კლავიატურის ფარის მოდული I2C ზურგჩანთით: 6 ნაბიჯი

ვიდეო: 1602 LCD კლავიატურის ფარის მოდული I2C ზურგჩანთით: 6 ნაბიჯი

ვიდეო: 1602 LCD კლავიატურის ფარის მოდული I2C ზურგჩანთით: 6 ნაბიჯი
ვიდეო: Подключение дисплея 1602 lcd i2c. 1602 ардуино дисплей 2024, ივლისი
Anonim
1602 LCD კლავიატურის ფარის მოდული I2C ზურგჩანთით
1602 LCD კლავიატურის ფარის მოდული I2C ზურგჩანთით

როგორც უფრო დიდი პროექტის ნაწილი, მინდოდა მქონოდა LCD დისპლეი და კლავიატურა რამდენიმე მარტივი მენიუს ნავიგაციისთვის. მე Arduino– ზე ბევრ I/O პორტს ვიყენებ სხვა სამუშაოებისთვის, ამიტომ მინდოდა I2C ინტერფეისი LCD– ისთვის. ამიტომ შევიძინე ტექნიკა, რომელიც შედგება 1602 LCD კლავიატურის ფარის მოდულისგან DFRobot– დან და ანონიმური I2C სერიული მოდული LCD– ებისთვის. მე მსურს მათი გამოყენება არდუინო ნანოსთან ერთად. შემდეგ აღმოვაჩინე, რომ არსებობს გარკვეული გამოწვევები ამ კომპონენტების ერთად მუშაობისთვის - მაგრამ ეს შესაძლებელია. ამიტომ მსურს ჩემი გამოცდილების გაზიარება და სხვების დახმარება.

ეს ფოტო არის სამუშაო დაფის ბარათი, რომელსაც შეუძლია აჩვენოს შეტყობინებები LCD- ზე და განსაზღვროს გასაღებების დაჭერა. LCD კონტროლდება I2C ინტერფეისის საშუალებით, LCD უკანა შუქის ჩათვლით. Arduino იღებს საკვანძო პრესებს პინ A0– ზე (ეს შეიძლება იყოს ნებისმიერი ანალოგური ქინძისთავები, გარდა A4 და A5, რომლებიც მიბმულია I2C ინტერფეისისთვის).

ნაბიჯი 1: ნაწილების აღწერა - LCD კლავიატურის ფარის მოდული

ნაწილების აღწერა - LCD კლავიატურის ფარის მოდული
ნაწილების აღწერა - LCD კლავიატურის ფარის მოდული

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

ნაბიჯი 2: ნაწილების აღწერა - I2C სერიული მოდული

ნაწილების აღწერა - I2C სერიული მოდული
ნაწილების აღწერა - I2C სერიული მოდული

სერიულ მოდულს აქვს ჩვეულებრივი 4 პინიანი სათაური I2C– სთვის, და თავსათაურის არალეგალირებული ქინძისთავების ნაკრები, რომელიც მესმის, გამიზნულია პირდაპირ LCD მოდულის ქვედა ნაწილში ჩასართავად. LCD ეტიკეტების შესწავლით, მე შევძელი სერიული მოდულის ქინძისთავების ფუნქციების იდენტიფიცირება.

ეს მოდული ემყარება IC PCF8574T- ს, რომელიც წყვეტს I2C პროტოკოლს, აქვს 3 ქინძისთავი მისამართების კონტროლისთვის (20 -დან 27 -მდე) და აქვს 8 ციფრული შეყვანის/გამომავალი ქინძისთავი P0- დან P7- მდე. PCF8574T– ის მონაცემების ფურცლის თანახმად, თითოეულ I/O პინს აქვს FET, რომ გაიყვანოს იგი მიწაზე დაბალი მდგომარეობისთვის და შეიძლება ჩაიძიროს მინიმუმ 20 მ. მაღალ სახელმწიფოში მას აქვს გარდამავალი აქტიური გაყვანა და შემდეგ უწყვეტი გაყვანის დენი დაახლოებით 0.1 mA.

ამ მოდულზე, ყველა ციფრული I/O ქინძისთავები, P3- ის გარდა, უბრალოდ გამოტანილია სათაურის ქინძისთავებში (მარჯვნივ ფოტოში). P3– ის შემთხვევაში, იგი დაკავშირებულია ტრანზისტორის ბაზასთან (ჩანს ფოტოში, მარჯვენა ზედა ნაწილში, ეტიკეტზე „LED“). ამ ტრანზისტორის გამცემი უკავშირდება Vss (მიწას) და კოლექტორი უკავშირდება სათაურის პინ 16 -ს, სადაც მისი გამოყენება შესაძლებელია LCD განათების კონტროლისთვის. ტრანზისტორის გამო, ლოგიკური მდგომარეობა იცვლება პროგრამული ბიბლიოთეკაში არსებულთან შედარებით. ანუ, LCD განათება ჩართულია, როდესაც P3 პინი დაბალია და გამორთულია, როდესაც P3 პინი არის მაღალი.

ტრანზისტორის ეტიკეტზე წერია L6, რომელიც ჩემი კვლევის თანახმად, ალბათ მას გახდის MMBC1623L6 რომელსაც აქვს მინიმალური მიმდინარე მომატება 200. 0.1 mA საბაზისო დენით, მას უნდა შეეძლოს შეინარჩუნოს დაბალი მდგომარეობა მის კოლექტორზე (მოდულის პინ 16) მინიმუმ 20 mA კოლექტორის დენით.

გარდა ამისა, ამ მოდულს აქვს 10K პოტენომეტრი, რომელიც დაკავშირებულია +5 - სა და Ground– ს შორის, რომლის ცვლადი ტყვიის გამოყვანა ხდება პინ 3 – მდე (მესამე ქვემოდან ფოტოში). როდესაც პირდაპირ LCD– თან არის დაკავშირებული, ეს ქოთანი გააკონტროლებს LCD– ის კონტრასტს. ამასთან, ეს ფუნქცია უზრუნველყოფილია ცალკეულ მსგავს ქოთანზე LCD ეკრანზე, ამიტომ სერიულ მოდულზე ამ ქვაბს არ აქვს ფუნქცია.

მე ვერ ვიპოვე კავშირი PCF8574T– ის INT პინთან.

განახლება 2019 წლის 22 აგვისტო

როგორც ზემოთ აღვნიშნეთ, PCF8574– ს აქვს 3 მისამართის კონტროლის ქინძი. როგორც ჩანს, ეს ჩანთები ამოღებულია ზურგჩანთის დაფაზე, სადაც მათ ეტიკეტი აქვთ A0, A1 და A2. მათი ნახვა შესაძლებელია ფოტოში. მე არ გამომიცდია ეს, მაგრამ მე თითქმის დარწმუნებული ვარ, რომ ერთი ან რამდენიმე ამ ქინძისთავის მიმდებარე ბალიშებით გადაკვეთით, I2C მისამართი შეიძლება კონტროლდებოდეს 20 -დან 27 -მდე დიაპაზონში. გარდა ამისა, არსებობს მეორე თითქმის იდენტური მოწყობილობა, PCF8574A რომელსაც აქვს PCF8574– ის იდენტური ფუნქციონირება, მაგრამ მოიცავს მისამართების დიაპაზონს 0x38– დან 0x3F– მდე.

მისამართი, რომელსაც თქვენი მოწყობილობა რეალურად იყენებს, შეიძლება შემოწმდეს I2CScanner– ით. არსებობს რამდენიმე მარტივი I2C სკანერი სხვადასხვა წყაროდან. ეს https://github.com/farmerkeith/I2CScanner ასევე განსაზღვრავს ნაპოვნი ზოგიერთი მოწყობილობას.

ნაბიჯი 3: კავშირები

კავშირები
კავშირები

მადლობა ChaitanyaM17- ს, რომელმაც წარმოადგინა Fritzing დიაგრამა, რომელიც ასახავს კავშირებს, ქვემოთ აღწერილი.

Ძალა:

LCD მოდულს ქვედა მხარეს აქვს პინი, წარწერით "5.0V". მარჯვნივ, მის მიმდებარედ არის ორი დაუნიშნავი ქინძისთავი, რომლებიც ორივე ადგილზეა.

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

I2C ინტერფეისი. სერიულ მოდულზე, ზედა პინი არის SCL (საათი) და ის მიდის Arduino A5– ზე. მეორე პინი ქვემოთ არის SDA (მონაცემები) და ის მიდის Arduino A4– ზე.

LCD ბეჭდვის ინტერფეისი. არსებობს 6 კავშირი სერიულ მოდულსა და LCD კლავიატურის ფარს შორის, ყველა მათგანი ქინძისთავებს შორის ეტიკეტების გარეშე. მე გამოვავლენ მათ LCD მოდულს მარჯვნივ მარჯვნივ და მარცხნივ, პირველი პინი არის 1. არის 8 ბლოკი 8 -ით, ამიტომ ისინი 1 -დან 16 -მდე მიდიან. მე ვადგენ მათ I2C სერიულ მოდულზე მარცხნიდან ათვლით მართალია, ასევე არსებობს 16 მათგანი. გარდა ამისა, თითოეულ მავთულს ვაძლევ ეტიკეტს, რომელიც არის Arduino– ს ეკვივალენტური პინი, რომელიც ჩვეულებრივ ასოცირდება ამ ფუნქციასთან, სერიული მოდულის გარეშე პირდაპირი კავშირის შემთხვევაში.

ასე რომ, 6 მონაცემთა კავშირი არის:

Arduino ექვივალენტი // სერიული მოდულის პინი // LCD კლავიატურის მოდულის პინი

D4 // 11 // 5 D5 // 12 // 6 D6 // 13 // 7 D7 // 14 // 8 D8 // 4 // 9D9 // 6 // 10

LCD განათების კონტროლი: ეს იყენებს კიდევ ერთ კავშირს:

Arduino ექვივალენტი // სერიული მოდულის პინი // LCD კლავიატურის მოდულის პინი

D10 // 16 // 11

კლავიატურის ინტერფეისი: ეს იყენებს ერთ მავთულს LCD მოდულის პინიდან ქვედა მხარეს, სახელწოდებით "A0", Arduino– ზე A0 ჩასამაგრებლად. ყოველ შემთხვევაში, ეს საკმაოდ ადვილი იყო!

ნაბიჯი 4: გახადეთ RST გასაღები სხვა 5 გასაღების მსგავსი

RST შეიძლება პირდაპირ დაუკავშირდეს Arduino Nano– ს RESTART შეყვანას.

თუმცა, თუ გინდათ რომ RST გასაღები გამოსაყენებელი იყოს პროგრამულ უზრუნველყოფაში სხვა რამისთვის, ეს შეიძლება გაკეთდეს 15K რეზისტორის შეერთებით RST პინსა და A0 პინს შორის LCD კლავიატურის ფარის ქვედა მხარეს.

ეს მუშაობს შემდეგნაირად: არის 2K რეზისტორი +5V და მარჯვენა ღილაკს შორის. შემდეგ თანდათანობით უფრო დიდი რეზისტორების ჯაჭვი თითოეული სხვა გასაღებისთვის (330R UP გასაღებამდე, 620R DOWN ღილაკზე, 1K მარცხენა ღილაკზე და 3K3 SELECT ღილაკზე. ყველა გასაღები (მათ შორის RST გასაღები) დაკავშირებულია მიწაზე. როდესაც დაკავშირებულია 10 ბიტიან A/D გადამყვანთან (რაც შეეხება Arduino Nano A0) ისინი აწვდიან დაახლოებით შემდეგ მნიშვნელობებს:

მარჯვენა = 0; ზემოთ = 100; ქვემოთ = 260; მარცხნივ = 410; აირჩიეთ = 640.

RST– ს 15 k რეზისტორით, იგი აწვდის დაახლოებით 850 – ს.

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

ნაბიჯი 5: პროგრამული უზრუნველყოფა

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

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

განახლება 2019 წლის 22 აგვისტო

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

LiquidCrystal_I2C LCD (0x27, 2, 1, 0, 4, 5, 6, 7);

ნაბიჯი 6: მიმოხილვა და დისკუსია

როგორც ხედავთ, მე მივიღე ძირითადი ფუნქციები.

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

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

შესაძლო გადაწყვეტილებებია:

ა) შეეგუე მას. გახსენით სახურავი სახურავზე და გამოიყენეთ ღილაკი (მაგ. შესაფერისი დიამეტრის ქსოვის ნემსი).

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

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

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

მე ვგეგმავ წასვლას გ) ზემოთ ხსენებით და ვნახოთ როგორ წავალ.

ინფორმაციის კიდევ ერთი ფრაგმენტი, რომელიც შეიძლება იყოს საინტერესო:

უკანა შუქის ჩართვით, ამ პროექტის მიმდინარე მოხმარებაა: Arduino Nano 21.5 მ; სერიული მოდული 3.6 მ; LCD მოდული 27.5 mA; სულ 52 mA.

უკანა შუქის გამორთვით, ამ პროექტის მიმდინარე მოხმარებაა: Arduino Nano 21.5 მ; სერიული მოდული 4.6 მ; LCD მოდული 9.8 mA; სულ 36 mA.

გირჩევთ: