Სარჩევი:

პერსონაჟების პერსონალური გენერატორი (Adafruit HT16k33 მატრიცა): 3 ნაბიჯი
პერსონაჟების პერსონალური გენერატორი (Adafruit HT16k33 მატრიცა): 3 ნაბიჯი

ვიდეო: პერსონაჟების პერსონალური გენერატორი (Adafruit HT16k33 მატრიცა): 3 ნაბიჯი

ვიდეო: პერსონაჟების პერსონალური გენერატორი (Adafruit HT16k33 მატრიცა): 3 ნაბიჯი
ვიდეო: როგორ გავხსნათ პერსონაჟი რიჩი dude theft wars-ში 2024, ნოემბერი
Anonim
პერსონაჟების პერსონალური გენერატორი (Adafruit HT16k33 მატრიცა)
პერსონაჟების პერსონალური გენერატორი (Adafruit HT16k33 მატრიცა)

LCD– ებზე და Led მატრიცებზე სპეციალური პერსონაჟების დაბეჭდვა დიდი გართობაა. სპეციალური სიმბოლოების ან პერსონალური პერსონაჟების დაბეჭდვის პროცედურა არის თითოეული რიგისა და სვეტისთვის მასივის გენერირება ორობითი მნიშვნელობებით. შეიძლება რთული იყოს ნებისმიერი პერსონაჟისთვის სწორი კოდის პოვნა, შესაბამისად, ეს პროექტი ავტომატიზირებს და გამოიმუშავებს კოდს 8x8 led მატრიცისთვის და ასევე დაბეჭდავს პერსონალურ პერსონაჟს Adafruit HT16k33 8x8 Bicolor Matrix.

Adafruit HT16k33, 1.2 "8x8 Bicolor Led Matrix აკავშირებს Arduino– ს I2C საკომუნიკაციო პროტოკოლის საშუალებით

ადაფრუტის თქმით, "LED ზურგჩანთის ეს ვერსია განკუთვნილია 1.2" 8x8 მატრიცებისთვის. მათი ზომაა მხოლოდ 1.2 "x1.2", ასე რომ სირცხვილია გამოიყენოს მასიური მასივი ჩიპი მის გასაკონტროლებლად. ეს ზურგჩანთა წყვეტს 16 ქინძისთავის ან ჩიპების გამოყენების გაღიზიანებას იმით, რომ I2C მუდმივი მიმდინარე მატრიცის კონტროლერი კარგად არის მოთავსებული PCB- ის უკანა მხარეს. კონტროლერის ჩიპი ზრუნავს ყველაფერზე, ხატავს ყველა 64 LED- ს ფონზე. ყველაფერი რაც თქვენ უნდა გააკეთოთ არის მონაცემების ჩაწერა მასში 2 პინიანი I2C ინტერფეისის გამოყენებით. არსებობს ორი მისამართის არჩევის ქინძისთავი, ასე რომ თქვენ შეგიძლიათ აირჩიოთ 8 მისამართიდან ერთი, რომ გააკონტროლოთ 8-დან ეს ერთჯერადი 2-პინიანი I2C ავტობუსზე (ისევე როგორც სხვა I2C ჩიპები ან სენსორები, რომლებიც მოგწონთ). დრაივერის ჩიპს შეუძლია „დაბინდოს“მთელი ეკრანი 1/16 სიკაშკაშედან სრულ სიკაშკაშემდე 1/16 საფეხურზე. მას არ შეუძლია დაბლოკოს ცალკეული LED- ები, მხოლოდ მთელი ჩვენება ერთდროულად."

ამ სასწავლო ინსტრუქციაში მე აგიხსნით, თუ როგორ მიიღოთ კოდი ნებისმიერი პერსონალური პერსონაჟისთვის რეალურ დროში და დაბეჭდოთ ეს სიმბოლო Led Matrix– ზე.

ნაბიჯი 1: კომპონენტები

ეს ინსტრუქცია არის ძირითადი პროექტი Adafruit HT16k33 Matrix– ზე. Შენ გჭირდება:

  1. Adafruit HT16k33 1.2 "x 1.2" 8x8 Bicolor Led Matrix.
  2. Arduino (ნებისმიერი ვარიანტი, მაგრამ Uno სასურველია).
  3. პურის დაფა
  4. Ენერგიის წყარო

ნაბიჯი 2: სქემატური

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

Adafruit HT16k33 Led მატრიცის გაყვანილობა ძალიან ადვილია, რადგან ჩვენ გვჭირდება საათის და მონაცემთა პინის დაკავშირება, როგორც ამას ჩვეულებრივ ვაკეთებთ I2C მოწყობილობებისთვის. კავშირები იქნება:

  1. SCL (საათის მატრიცის მატრიცა) დაკავშირებულია A5– თან (Arduino Uno– ს საათის პინი. იხილეთ მონაცემთა ცხრილი Arduino– ს სხვა ვარიანტებისთვის)
  2. SDA (მატრიცის მონაცემთა პინი) დაკავშირებულია A4- თან. (იხილეთ მონაცემთა ფურცელი Arduino– ს სხვა ვარიანტებისთვის)
  3. VCC უკავშირდება 5V.
  4. GND დაკავშირებულია 0V- თან.

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

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

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

არდუინოს კოდი

პირველ რიგში, ჩვენ შევიტანთ ყველა საჭირო ბიბლიოთეკას.

  1. Wire.h:- I2C კომუნიკაციისთვის
  2. Adafruit_LedBackpack
  3. Adafruit_GFX

ყველა ეს ბიბლიოთეკა ხელმისაწვდომია Arduino IDE– ში. თქვენ უბრალოდ უნდა დააინსტალიროთ ისინი ბიბლიოთეკის მენეჯერიდან. ესკიზი >> ბიბლიოთეკის ჩართვა >> ბიბლიოთეკების მართვა

დაყენების ფუნქცია ()

8-ბიტიანი მასივის ხელმოუწერელი რიცხვი strore8 ორობითი მნიშვნელობებისთვის 8 სტრიქონისთვის, თითოეული 8 ბიტიანი (8 სვეტი). დააყენეთ მისამართი I2C კომუნიკაციისთვის.

მარყუჟის ფუნქცია ()

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

სერიული სტრიქონის კითხვა:

if (Serial.available ()> 0) {data = Serial.readStringUntil ('\ n'); Serial.println (მონაცემები); }

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

8 ბიტიანი სტრიქონის ათწილად გადაყვანა:

int val (სიმებიანი ქუჩა) {int v = 0; for (int i = 0; i <8; i ++) {if (str == '1') {v = v+სიმძლავრე (2, (7-i)); }} დაბრუნება v; }

ათწილადის ეკვივალენტის შესაფასებლად სიმძლავრის ფუნქციის (pow ()) გამოყენებით, თქვენ უნდა გაუმკლავდეთ ორმაგი ტიპის მნიშვნელობებს და, შესაბამისად, ჩვენ შეგვიძლია დავწეროთ ჩვენი საკუთარი სიმძლავრის ფუნქცია, როგორც:

int ძალა (int ბაზა, int ექსპონენტი) {int c = 1; for (int i = 0; i {c = c*ბაზა;} დაბრუნება c;}

ბოლოს და ბოლოს, ჩვენ დავწერთ კოდს, რომ დავბეჭდოთ პერსონაჟი 8 ათობითი მნიშვნელობის გენერირებული მასივის გამოყენებით (თითო თითოეულ სტრიქონზე).

void print_emoji (uint8_t emoji , სიმებიანი ფერი) {matrix.clear (); if (ფერი == "წითელი") {matrix.drawBitmap (0, 0, emoji, 8, 8, LED_RED); } else {matrix.drawBitmap (0, 0, emoji, 8, 8, LED_GREEN); } matrix.writeDisplay (); დაგვიანება (500); }

თქვენ მარტივად გაიგებთ ამ კოდს, რადგან ჩვენ ჯერ ვასუფთავებთ მატრიცას და შემდეგ ვაჩვენებთ სიმბოლოს emoji მასივის გამოყენებით matrix.drawBitmap () ფუნქციის გამოყენებით. არ დაგავიწყდეთ "matrix.writeDisplay ()" ჩაწერა ფორმატირების შემდეგ, რადგან ეს ფუნქცია მხოლოდ მატრიცაზე აქამდე გაკეთებულ ყველა ფორმატს აჩვენებს.

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

B00111100, B01000010, B10100101, B10000001, B10100101, B10011001, B01000010, B00111100

ეს არის სერიული მონიტორის სტრიქონი და ხედავს სიმბოლოს მატრიცაზე.

ახლა ჩვენ გვჭირდება სერიული მონაცემების ავტომატურად გაგზავნა პროგრამული უზრუნველყოფიდან, როდესაც ჩვენ დააჭირეთ ღილაკს "ბეჭდვა". ამის ავტომატიზაციისთვის ჩვენ გავაკეთებთ დემო 8x8 მატრიქსს და ჩვენ მივცემთ მომხმარებელს შესაძლებლობას აირჩიოს რომელი უჯრედები უნდა იყოს ფერადი და შემდეგ პროგრამული უზრუნველყოფა ავტომატურად გამოიმუშავებს კოდს და მონაცემებს სერიულად გაუგზავნის Arduino– ს სიმებიანი ფორმატით. მე ავირჩიე დამუშავება დანარჩენი სამუშაოსთვის. დამუშავებისას ჩვენ შეგვიძლია გავაკეთოთ მატრიცა 64 ღილაკის გამოყენებით (მართკუთხედები დაჭერილი ფუნქციით) და შეგვიძლია მივანიჭოთ კონკრეტული მნიშვნელობა და ფერი დასაწყისში (ეს იყოს თეთრი ფერი 0 მნიშვნელობით). ახლა, როდესაც ღილაკზე დაჭერილი იქნება, ჩვენ გადავიყვანთ ღილაკის ფერს შავზე და მნიშვნელობას დავაყენებთ 1 -ზე. თუ მომხმარებელი კვლავ დააჭერს იმავე ღილაკს, მისი მნიშვნელობა კვლავ შეიცვლება 0 -მდე და ფერი ისევ თეთრად. ეს დაეხმარება მომხმარებელს შეცვალოს კოდი ისევ და ისევ მარტივად და შეუძლია ცვლილებები ადვილად შეიტანოს მთელი მატრიცის კვლავ წაშლის გარეშე. ღილაკზე "დაბეჭდვა", ჩვენ გავაკეთებთ სტრიქონს, რომელიც დემოსათვის ზემოთ ნაჩვენებია. შემდეგ სტრიქონი გაიგზავნება კონკრეტულ სერიულ პორტში.

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

თქვენ შეგიძლიათ ნახოთ როგორ გამოიყურება GUI და როგორ იქმნება პერსონაჟი სისტემის გამოყენებით. ერთი და იგივე სიმბოლოს მატრიცაზე შესაქმნელად წამი დასჭირდება.

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

გირჩევთ: