Სარჩევი:

OLED I2C ჩვენება Arduino/NodeMCU სამეურვეო პროგრამა: 15 ნაბიჯი
OLED I2C ჩვენება Arduino/NodeMCU სამეურვეო პროგრამა: 15 ნაბიჯი

ვიდეო: OLED I2C ჩვენება Arduino/NodeMCU სამეურვეო პროგრამა: 15 ნაბიჯი

ვიდეო: OLED I2C ჩვენება Arduino/NodeMCU სამეურვეო პროგრამა: 15 ნაბიჯი
ვიდეო: arduino oled i2c tutorial : 0.96" 128 X 32 for beginners 2024, ივლისი
Anonim
Image
Image

პირველი პროგრამა, რომელსაც წერთ სწავლის დაწყებისთანავე

ახალი პროგრამირების ენაა: "გამარჯობა მსოფლიო!".

თავად პროგრამა არაფერს აკეთებს, ვიდრე ეკრანზე "გამარჯობა მსოფლიო" ტექსტის დაბეჭდვას.

მაშ, როგორ მივიღოთ ჩვენი არდუინო "Hello World!"?

ამ ვიდეოში მე გაჩვენებთ თუ როგორ უნდა დაიწყოთ მცირე ზომის 0.91 (128x32) და 0.96 (128x64) I2C OLED დისპლეით.

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

ნაბიჯი 1: ის, რასაც დღეს ვისწავლით

აპარატურის მოთხოვნა
აპარატურის მოთხოვნა

ამ ვიდეოში ჩვენ ვისაუბრებთ:

- რა არის OLED დისპლეი?

- შემდეგ ჩვენ უფრო ახლოს განვიხილავთ 0.91 (128x32) და 0.96 (128x64) I2C OLED დისპლეებს

- შემდეგ ჩვენ ვისაუბრებთ Adafruit ბიბლიოთეკის თქვენს Arduino IDE– ზე დაყენებაზე

- შემდეგ ჩვენ დავუკავშირდებით NodeMCU და Arduino OLED ეკრანს

- შემდეგ ჩვენ შევხედავთ კოდს და გამოვაქვეყნებთ მასზე რამდენიმე გრაფიკას და ტექსტს

- ჩვენ ასევე ვისაუბრებთ საბაჟო შრიფტების გამოყენების და სურათების ჩვენების შესახებ

- შემდეგ ჩვენ დავუკავშირდებით მრავალ OLED– ს მიკროკონტროლერს I2C მულტიპლექსერის გამოყენებით

და ბოლოს, ჩვენ ვისაუბრებთ რამდენიმე ჩვეულებრივ შეცდომებზე, რომლებსაც ადამიანები უშვებენ OLED ეკრანების გამოყენებისას

ნაბიჯი 2: აპარატურის მოთხოვნა

ამ გაკვეთილისთვის ჩვენ გვჭირდება:

- პურის დაფა

- 0.91 "(128x32) და 0.96" (128x64) I2C OLED დისპლეი

- Arduino UNO/NANO (რაც მოსახერხებელია)

- NodeMCU

- TCA9548A I2C მულტიპლექსერი

- რამდენიმე დამაკავშირებელი კაბელი

- და USB კაბელი კოდის ასატვირთად

ნაბიჯი 3: რა არის OLED დისპლეი?

რა არის OLED დისპლეი?
რა არის OLED დისპლეი?
რა არის OLED დისპლეი?
რა არის OLED დისპლეი?

OLED ან ორგანული სინათლის გამომტანი დიოდი არის სინათლის გამომტანი

დიოდი (LED), რომელშიც ელექტრული ელექტროლუმინესცენტური ფენა არის ორგანული ნაერთის ფილმი (მილიონობით პატარა LED განათება), რომელიც ასხივებს შუქს ელექტრული დენის საპასუხოდ.

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

ნაბიჯი 4:

გამოსახულება
გამოსახულება

არსებობს მრავალი სახის OLED დისპლეი

ბაზარი მათ საფუძველზე

- ზომები

- ფერი

- Ბრენდები

- Ოქმი

- SPI (სერიული პერიფერიული ინტერფეისი) ან I2C

-პასიური მატრიცის (PMOLED) ან აქტიური მატრიცის (AMOLED) კონტროლის სქემა

ამ გაკვეთილში მე ვაპირებ ვისაუბრო კავშირის შესახებ

ლურჯი ფერი 0.91 (128x32 OLED) და 0.96 (128x64 OLED) I2C OLDE მონიტორები Arduino NANO და NodeMCU. I2C ავტობუსის ტექნოლოგია იყენებს MCU– ს მხოლოდ 2 ქინძისთავს, ასე რომ ჩვენ გვაქვს გროვები სხვა სენსორებისთვის.

ნაბიჯი 5: უფრო ახლოს

Ახლო ხედი
Ახლო ხედი
Ახლო ხედი
Ახლო ხედი
Ახლო ხედი
Ახლო ხედი

მოდით უფრო ახლოს მივხედოთ ამ ორ ეკრანს.

ამ ეკრანების უკანა ნაწილში არის SMD კონდენსატორების გროვა და ბორტზე შედუღებული რეზისტორები; მაგრამ, რადგან ის I2C მოწყობილობაა, ჩვენ ვზრუნავთ მხოლოდ ამ 2 ქინძისთავზე (SCL და SDA)

ეკრანი აკავშირებს Arduino– ს მხოლოდ ოთხი მავთულის გამოყენებით - ორი დენისთვის (VCC და GND) და ორი მონაცემთათვის (სერიული საათი SCL და

სერიული მონაცემები SDA), რაც გაყვანილობას ძალიან მარტივს ხდის. მონაცემთა კავშირი არის I2C (I²C, IIC ან ინტეგრირებული წრე) და ამ ინტერფეისს ასევე უწოდებენ TWI (ორი მავთულის ინტერფეისი).

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

- ოპერაციული ძაბვა 3v- დან 5v- მდეა, მაგრამ უმჯობესია გამოიყენოთ ინსტრუქცია მწარმოებლის მონაცემთა ფურცლიდან.

- ზოგჯერ ჩვენ გვჭირდება 2 ეკრანის გამოყენება ჩვენს პროექტებში. მაშ, როგორ მივაღწიოთ ამას?

ხრიკი მდგომარეობს იმაში, რომ თქვენს ეკრანზე იყოს კონფიგურირებადი მისამართი. ამ ერთეულს აქვს კონფიგურირებადი მისამართი 0x78 და 0x7A შორის. მხოლოდ ერთი მხარისგან 0Ohm რეზისტორის გამყიდველი და მისი მეორე მხარეს გადახურვით ან უბრალოდ გლობალური შედუღების საშუალებით შეგვიძლია შევცვალოთ მისამართი. ჩვენ ვისაუბრებთ ამაზე სიღრმისეულად, როდესაც ჩვენ გავაერთიანებთ რამოდენიმე ეკრანს Arduino– ს ამ გაკვეთილის შემდეგ ნაწილში.

სურათზე ეს ჩვენებები ძალიან დიდი ჩანს. მაგრამ, პრაქტიკულად რომ ვთქვათ, ისინი პატარაა. ისინი დამზადებულია 128 x 32/64 ინდივიდუალური OLED პიქსელისგან და არ საჭიროებს უკანა შუქს. უბრალოდ შეხედე ამას და ნახე რამდენად პატარაა. მიუხედავად იმისა, რომ ისინი მცირეა, ისინი შეიძლება ძალიან სასარგებლო იყოს ნებისმიერ ელექტრონულ პროექტში.

ნაბიჯი 6: ბიბლიოთეკა

ბიბლიოთეკა
ბიბლიოთეკა
ბიბლიოთეკა
ბიბლიოთეკა
ბიბლიოთეკა
ბიბლიოთეკა

არსებობს რამდენიმე ბიბლიოთეკა, რომელთა კონტროლიც შესაძლებელია

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

OLED ეკრანის გასაკონტროლებლად დაგჭირდებათ ბიბლიოთეკა "adafruit_GFX.h" და "adafruit_SSD1306.h".

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

მეთოდი 1

გადადით "ბიბლიოთეკის მენეჯერზე" და მოძებნეთ "adafruit_SSD1306" და "adafruit_gfx"

აირჩიეთ უახლესი ვერსია და დააჭირეთ ღილაკს ინსტალაცია.

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

მეთოდი 2

ეს ორი ბიბლიოთეკა ასევე შეიძლება გადმოწერილი იყოს github– დან (თქვენ გჭირდებათ ორივე):

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

ჩვენების ბიბლიოთეკა:

GFX ბიბლიოთეკა:

გადმოტვირთვის შემდეგ დააკოპირეთ Adafruit_SSD1306-master საქაღალდე გადმოწერილი zipped ფაილიდან Arduino ბიბლიოთეკების საქაღალდეში. ეს საქაღალდე ჩვეულებრივ გვხვდება დოკუმენტებში> Arduino> ბიბლიოთეკები Windows სისტემებზე. Linux– ზე ის ჩვეულებრივ გვხვდება სახლის საქაღალდეში> Arduino> ბიბლიოთეკები. დაბოლოს, Arduino ბიბლიოთეკის საქაღალდეში გადაარქვით სახელი Adafruit_SSD1306 სამაგისტრო საქაღალდეს Adafruit_SSD1306. მაშინაც კი, თუ არ გადაარქმევ სახელს, კარგია.

ნაბიჯი 7:

გამოსახულება
გამოსახულება

ახლა მოდით შევხედოთ "Adafruit_SSD1306.h"

ფაილი

ორი რამ, რაც უნდა ვიცოდეთ ამ ბიბლიოთეკაში:

1. თუ გსურთ გამოიყენოთ პატარა ეკრანი, გამოიყენეთ ნაგულისხმევი 128_32, წინააღმდეგ შემთხვევაში უფრო დიდი ეკრანისთვის გააკეთეთ კომენტარი 128_32 და დააკომენტარეთ 128_64

2. თუ თქვენ დაფარეთ 0x7A მისამართი დაფაზე (რაზეც მოგვიანებით ვისაუბრებთ), გამოიყენეთ 7 ბიტიანი 0x3D მისამართი უფრო დიდი ეკრანებისთვის, წინააღმდეგ შემთხვევაში გამოიყენეთ ნაგულისხმევი 0x3C მისამართი. პატარა ეკრანებისთვის მისამართი არის 0x3C.

ნაბიჯი 8: გაყვანილობა 128 X 64/32 OLED

გაყვანილობა 128 X 64/32 OLED
გაყვანილობა 128 X 64/32 OLED

დავიწყოთ NodeMCU ეკრანთან დაკავშირებით.

პირველი და ყველაზე მნიშვნელოვანი, რაც უნდა აღინიშნოს, არის ის, რომ ზოგიერთ ეკრანს შეიძლება შეცვალოს GND და VCC დენის ბუდეები. შეამოწმეთ თქვენი ეკრანი და დარწმუნდით რომ ის იგივეა რაც სურათზე. თუ ქინძისთავები იცვლება, დარწმუნდით, რომ შეცვალეთ კავშირები Arduino– სთან ან NodeMCU– სთან.

- NodeMCU OLED გაყვანილობა

OLED VCC - NodeMCU 3.3V

OLED GND - NodeMCU GND

OLED SCL - NodeMCU D1

OLED SDA - NodeMCU D2

- Arduino Uno OLED გაყვანილობა

OLED VCC - არდუინო 5V

OLED GND - არდუინო GND

OLED SCL - Arduino Uno A5

OLED SDA - Arduino Uno A4

- Arduino MEGA 2560 OLED გაყვანილობა

OLED VCC - არდუინო 5V

OLED GND - არდუინო GND

OLED SCL - Arduino MEGA 2560 პინი 21

OLED SDA - Arduino MEGA 2560 პინი 20

ნაბიჯი 9: კოდი

კოდი
კოდი
კოდი
კოდი
კოდი
კოდი
კოდი
კოდი

ადაფრუტის ბიბლიოთეკას მოყვება მართლაც კარგი მაგალითები ორივესთვის

ეკრანი 128x32 და 128x64.

ბიბლიოთეკა მდებარეობს ფაილი> მაგალითები> Adafruit SSD1306> და შემდეგ ჩვენების ტიპი Arduino IDE- ში.

ჩვენ ვაპირებთ გამოვიყენოთ 128x32 I2C მაგალითი და შევცვალოთ იგი, რომ იმუშაოს როგორც 128x64, ასევე 128x32 ეკრანის მუშტებით, რომ შეაერთოს ის არდუინოსთან და შემდეგ NodeMCU დაფაზე.

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

- ჯერ ჩვენ ვაპირებთ ჩატვირთვას კოდი Arduino Nano– ზე, რომელიც დაკავშირებულია 128x32 ეკრანზე.

ჩვენ შეგვიძლია გამოვიყენოთ კოდი ყოველგვარი ცვლილების გარეშე.

128x32 იყენებს 0x3C მისამართს, ასე რომ, ეს ბიტი აქ კარგად გამოიყურება, მოდით ორმაგად შევამოწმოთ სათაურის ბიბლიოთეკა, დიახ, ის ასევე იყენებს 0x3C მისამართს და ჩვენების ტიპია 128x32.

- ახლა მოდით დავუკავშიროთ 128x64 ეკრანი. როგორც ვიცით, ის სტანდარტულად იყენებს 0x3C მისამართს, ამიტომ ჩვენ არ გვჭირდება მისამართის განახლება არც კოდში და არც ბიბლიოთეკაში.

ჩვენ უბრალოდ გვჭირდება, რომ კომენტარი გავაკეთოთ 128_32 -ზე და გამოვიტანოთ კომენტარი 128_64 სათაურის ბიბლიოთეკაში და შეცვალოთ LCDHEIGHT 64 ჩვენს კოდში.

- ახლა იგივე კოდის გასაშვებად NodeMCU- ზე ჩვენ უნდა შევცვალოთ კიდევ ერთი ხაზი ჩვენს კოდში.

"#განსაზღვრეთ OLED_RESET 4"> "#განსაზღვრეთ OLED_RESET LED_BUILTIN" დანარჩენი კოდი იგივეა, რაც Arduino

საკმაოდ ბევრი რამის საჩვენებლად, რაც ჩვენ გვჭირდება წინა ეკრანის გასასუფთავებლად

display.clearDisplay (); // ბუფერის გასუფთავება

შემდეგ დახაზეთ ობიექტი

testdrawline (); // დახაზეთ ხაზი

აჩვენეთ იგი აპარატურაზე

ჩვენება. ჩვენება (); // გახადე ისინი ხილული ჩვენების აპარატურაზე!

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

დაგვიანება (2000); // დაელოდეთ 2 წამს

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

ნაბიჯი 10: ტექსტის მორგება და სურათების დამატება

ტექსტის მორგება და სურათების დამატება
ტექსტის მორგება და სურათების დამატება
ტექსტის მორგება და სურათების დამატება
ტექსტის მორგება და სურათების დამატება
ტექსტის მორგება და სურათების დამატება
ტექსტის მორგება და სურათების დამატება

ზოგჯერ თქვენს კოდს სჭირდება მორგებული შრიფტების ჩვენება და

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

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

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

მორგებული შრიფტები

გადადით შრიფტების გადამყვანის ვებსაიტზე, შეარჩიეთ შრიფტის ოჯახი, სტილი, ზომა, ბიბლიოთეკის ვერსია, როგორც "Adafruit GFX ფონტი" და შემდეგ დააჭირეთ ღილაკს "შექმნა". ამ გვერდის მარჯვენა მხარეს ხედავთ როგორ გამოიყურება თქვენი შრიფტი რეალურ ეკრანზე.

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

#მოიცავს "შეცვლილია_ ფონტი.ჰ"

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

display.setFont (& Your_Fonts_Name);

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

მეხსიერება ყოველთვის შეშფოთებულია პერსონალური შრიფტების გამოყენებისას, ასე რომ ყოველთვის გაითვალისწინეთ ბაიტები, რომლებიც მოიხმარს მეხსიერებას. გახსოვდეთ, რომ Arduino UNO– ს აქვს მხოლოდ 32 ათასი მეხსიერება.

პერსონალური სურათები

თქვენს ეკრანზე bitmap სურათის ჩვენების მიზნით, თქვენ ჯერ უნდა შექმნათ 128 x 64/32 ზომის სურათი.

მე ვიყენებ ძველ კარგ "MS Paint" - ს 128 x 64 bitmap გამოსახულების შესაქმნელად, რომელსაც შემდეგ ავტვირთავ ამ სურათის გადამყვანის ვებსაიტზე. ვებგვერდი გარდაქმნის სურათებს ბაიტ-სტრიქონებად, რომელთა გამოყენება შესაძლებელია Arduino და OLED დისპლეებით.

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

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

ნაბიჯი 11: 2 ეკრანის დაკავშირება

2 დისპლეის დაკავშირება
2 დისპლეის დაკავშირება
2 დისპლეის დაკავშირება
2 დისპლეის დაკავშირება

ორი 128 x 64 ეკრანის დაკავშირება თქვენს პროექტთან ადვილია.

თქვენ უბრალოდ უნდა გააუქმოთ გამყიდველი 0Ohm რეზისტორი 0x78 მისამართიდან და დადოთ 0x7A და შემდეგ გამოიყენოთ 0x3D მისამართი თქვენს კოდში ნაგულისხმევი 0x3C ნაცვლად.

ალბათ გაინტერესებთ, რატომ ვიყენებთ 0x3C და 0x3D მისამართებს და არა რეალურ 0x78 და 0x7A. Arduino იღებს 7-ბიტიან მისამართს და არა 8-ბიტიან აპარატურულ მისამართებს. ამრიგად, ჩვენ ჯერ უნდა გადავიყვანოთ 8 ბიტიანი მისამართი ორობაში და შემდეგ დავჭრათ უმნიშვნელო ბიტი, რომ მივიღოთ 7 ბიტი. შემდეგ გადააკეთეთ 7 ბიტი HEX– ზე, რომ მიიღოთ 0x3C ან 0x3D მისამართები, რომლებიც შეიყვანეთ თქვენს კოდში.

პირველი, ინიციალიზაცია მოახდინეთ ჩვენების მიცემით, მას უნიკალური სახელი მიანიჭეთ:

Adafruit_SSD1306 ჩვენება 1 (OLED_REST);

Adafruit_SSD1306 ჩვენება 2 (OLED_REST);

შემდეგ თქვენს კოდში გამოიყენეთ ეკრანი 1 და ეკრანი 2, რათა დარეკოთ საწყისი განცხადებები მოწყობილობის მისამართებით მათში:

ჩვენება 1. დასაწყისი (SSD1306_SWITCHCAPVCC, 0x3C); // ჩვენება 1 ოპ მისამართი 0x3C

ჩვენება2.დაწყება (SSD1306_SWITCHCAPVCC, 0x3D); // ჩვენება 2 op მისამართი 0x3D

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

გაყვანილობა ზუსტად იგივეა, რაც ჩვენ ადრე გავაკეთეთ, მაგრამ თქვენ უბრალოდ უნდა დაამატოთ სხვა ჩვენება Arduino- ს ან NodeMCU- ს იმავე I2C ქინძისთავებს. მისამართების საფუძველზე, MCU აგზავნის მონაცემებს I2C მონაცემთა ხაზზე.

ნაბიჯი 12: 2 -ზე მეტი ჩვენების დაკავშირება

2 -ზე მეტი ჩვენების დაკავშირება
2 -ზე მეტი ჩვენების დაკავშირება
2 -ზე მეტი ჩვენების დაკავშირება
2 -ზე მეტი ჩვენების დაკავშირება
2 -ზე მეტი ჩვენების დაკავშირება
2 -ზე მეტი ჩვენების დაკავშირება

რა მოხდება, თუ გსურთ დააკავშიროთ 2 -ზე მეტი ეკრანი?

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

მაშ, როგორ შეგვიძლია დავამატოთ 2 -ზე მეტი I2C დისპლეი არდუინოს? ხრიკი არის TCA9548 მულტიპლექსერის გამოყენება.

TCA9548 საშუალებას აძლევს ერთ მიკროკონტროლერს დაუკავშირდეს '64 სენსორს ', ყველა იგივე და განსხვავებული I2C მისამართით, თითოეული სენსორული მონა ავტობუსისთვის უნიკალური არხის მინიჭებით.

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

მულტიპლექსერი აკავშირებს მიკრო კონტროლერის 3V3, GND, SDA და SCL ხაზებს. მონების სენსორები დაკავშირებულია დაფაზე არსებული SCL/SDA მონა რვა პორტთან. არხების შერჩევა ხდება TCA9548A– ს მისი I2C მისამართის (0x70 {ნაგულისხმევი} - 0x77) გაგზავნით, რასაც მოჰყვება არხის ნომერი (0b00000001 - 0b10000000). თქვენ შეგიძლიათ გქონდეთ ამ მულტიპლექსერის მაქსიმუმ 8 დაკავშირებული 0x70-0x77 მისამართებზე, რათა გააკონტროლოთ 64 იგივე I2C მიმართული ნაწილი. სამი მისამართის ბიტის A0, A1 და A2 VIN– თან შეერთებით შეგიძლიათ მიიღოთ მისამართების განსხვავებული კომბინაცია. მე ამას სიღრმისეულად აგიხსნით TCA9548A გარღვევის დაფაზე ჩემს შემდეგ გაკვეთილზე. ჯერჯერობით, მოდით, უბრალოდ შევაერთოთ 8 OLED ამ დაფაზე და სწრაფად შევხედოთ კოდს.

კავშირი:

VIN 5V (ან 3.3V)

GND მიწაზე

SCL to I2C საათი

SDA to I2C მონაცემები

შემდეგ მიამაგრეთ სენსორები VIN, GND და გამოიყენეთ ერთ -ერთი SCn / SDn მულტიპლექსური ავტობუსი

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

#მოიცავს "Wire.h"

#ჩართეთ

#განსაზღვრეთ MUX_ მისამართი 0x70 // TCA9548A კოდირების მისამართი

შემდეგ ჩვენ უნდა შევარჩიოთ პორტი, რომელთანაც გვინდა ურთიერთობა და გავაგზავნოთ მასზე მონაცემები ამ ფუნქციის გამოყენებით:

void tcaselect (uint8_t i) {

თუ (i> 7) დაბრუნდება;

Wire.beginTransmission (MUX_Address);

Wire.write (1 << i);

Wire.endTransmission ();

}

შემდეგი ჩვენ ვიწყებთ ჩვენებას კონფიგურაციის განყოფილებაში დარეკვით "u8g.begin ();" MUX- ზე მიმაგრებული თითოეული ჩვენებისათვის "tcaselect (i);"

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

ნაბიჯი 13: უპირატესობები და უარყოფითი მხარეები

Დადებითი და უარყოფითი მხარეები
Დადებითი და უარყოფითი მხარეები

OLED– ის გამოსახულება მშვენიერია. თუმცა, OLED– ებსაც აქვთ

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

უპირატესობები

არ არის საჭირო განათება

ჩვენებები ძალიან თხელი და მსუბუქია

დაბალი ენერგიის მოხმარება

ხედვის კუთხეები უფრო ფართოა ვიდრე LCD– ები

სიკაშკაშე და კონტრასტი შესანიშნავია

მაღალი სიჩქარე და დაბალი რეაგირების დრო

ღრმა შავი ფერი

ნაკლოვანებები

ძვირადღირებული ტექნოლოგია

მოკლე სიცოცხლის ციკლი

OLEDS უფრო სავარაუდოა, რომ დაიწვას

Წყლის დაზიანება

ნაბიჯი 14: საერთო შეცდომები

საერთო შეცდომები
საერთო შეცდომები

გაკვეთილის დასასრულებლად მოდით ვისაუბროთ რამდენიმე საერთო შეცდომებზე

ადამიანები აკეთებენ ამ მონიტორების გამოყენებისას:

- ყოველთვის სამჯერ შეამოწმეთ ქინძისთავები თქვენს პროექტში გამოყენებამდე

- შეარჩიეთ ბიბლიოთეკის სწორი მისამართი სათაურის ფაილში და თქვენს კოდში

#განსაზღვრეთ SSD1306_I2C_ADDRESS 0x3C // Adafruit_SSD1306.h

და

ჩვენება. დასაწყისი (SSD1306_SWITCHCAPVCC, 0x3C); // თქვენს კოდში

თუ მისამართი არასწორია, OLED არაფერს აჩვენებს

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

#შეცდომა ("სიმაღლე არასწორია, გთხოვთ შეასწოროთ Adafruit_SSD1306.h!");

- თუ იყენებთ NodeMCU- ს, დარწმუნდით, რომ შეცვლით OLED_RESET 4 -დან LED_BUILTIN

#განსაზღვრეთ OLED_RESET LED_BUILTIN

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

ნაბიჯი 15: ბმულები

- ბლოგი:

- დაამატეთ სურათი:

- პერსონალური ტექსტი:

- ადაფრუტის ჩვენების ბიბლიოთეკა:

-Adafruit GFX ბიბლიოთეკა:

- u8glib ბიბლიოთეკა: https://code.google.com/archive/p/u8glib/ ან

თუ გსურთ გამოიყენოთ პატარა ეკრანი, გამოიყენეთ ნაგულისხმევი 128_32, წინააღმდეგ შემთხვევაში უფრო დიდი ეკრანისთვის კომენტარი გააკეთეთ 128_32 -ზე და დატოვეთ კომენტარი 128X64 NO_ACK თქვენს კოდში (უბრალოდ გამოაქვეყნეთ თქვენი ეკრანის ტიპი კომენტარის გარეშე) (შრიფტები შრიფტების ბიბლიოთეკაში არის)

გირჩევთ: