Სარჩევი:
ვიდეო: პერსონაჟების პერსონალური გენერატორი (Adafruit HT16k33 მატრიცა): 3 ნაბიჯი
2024 ავტორი: John Day | [email protected]. ბოლოს შეცვლილი: 2024-01-30 10:20
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– ზე. Შენ გჭირდება:
- Adafruit HT16k33 1.2 "x 1.2" 8x8 Bicolor Led Matrix.
- Arduino (ნებისმიერი ვარიანტი, მაგრამ Uno სასურველია).
- პურის დაფა
- Ენერგიის წყარო
ნაბიჯი 2: სქემატური
Adafruit HT16k33 Led მატრიცის გაყვანილობა ძალიან ადვილია, რადგან ჩვენ გვჭირდება საათის და მონაცემთა პინის დაკავშირება, როგორც ამას ჩვეულებრივ ვაკეთებთ I2C მოწყობილობებისთვის. კავშირები იქნება:
- SCL (საათის მატრიცის მატრიცა) დაკავშირებულია A5– თან (Arduino Uno– ს საათის პინი. იხილეთ მონაცემთა ცხრილი Arduino– ს სხვა ვარიანტებისთვის)
- SDA (მატრიცის მონაცემთა პინი) დაკავშირებულია A4- თან. (იხილეთ მონაცემთა ფურცელი Arduino– ს სხვა ვარიანტებისთვის)
- VCC უკავშირდება 5V.
- GND დაკავშირებულია 0V- თან.
თქვენ ასევე შეგიძლიათ გაეცნოთ ფიგურაში ნაჩვენებ სქემატურს.
ნაბიჯი 3: კოდი
არდუინოს კოდი
პირველ რიგში, ჩვენ შევიტანთ ყველა საჭირო ბიბლიოთეკას.
- Wire.h:- I2C კომუნიკაციისთვის
- Adafruit_LedBackpack
- 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 საცავიდან.
გირჩევთ:
წვრილმანი აუდიო რეაქტიული LED მატრიცა: 6 ნაბიჯი
წვრილმანი აუდიო რეაქტიული LED მატრიცა: ოდესმე გიგრძვნიათ მაგარი RGB მატრიცის საჭიროება აუდიო რეაქციის ფუნქციით, მაგრამ ძალიან გაგიჭირდათ მისი ყიდვა ან ძალიან ძვირი? კარგი, ახლა თქვენი ლოდინი დასრულდა. თქვენ შეგიძლიათ გქონდეთ მაგარი აუდიო რეაქტიული RGB LED მატრიცა თქვენს ოთახში. ეს ინსტრუქცია
LCD Invaders: Space Invaders Like Game 16x2 LCD პერსონაჟების ჩვენება: 7 ნაბიჯი
LCD Invaders: Space Invaders Like Game on 16x2 LCD პერსონაჟების ჩვენება: არ არის საჭირო ლეგენდარული თამაშის "Space Invaders" შემოღება. ამ პროექტის ყველაზე საინტერესო მახასიათებელია ის, რომ იგი იყენებს ტექსტის ჩვენებას გრაფიკული გამოყვანისთვის. ეს მიიღწევა 8 პერსონალური პერსონაჟის დანერგვით. შეგიძლიათ ჩამოტვირთოთ სრული Arduino
ამინდზე დაფუძნებული მუსიკის გენერატორი (ESP8266 დაფუძნებული მიდი გენერატორი): 4 ნაბიჯი (სურათებით)
ამინდზე დაფუძნებული მუსიკის გენერატორი (ESP8266 დაფუძნებული მიდი გენერატორი): გამარჯობა, დღეს მე აგიხსნით, თუ როგორ უნდა შექმნათ თქვენი საკუთარი პატარა ამინდი მუსიკის გენერატორი. იგი ეფუძნება ESP8266- ს, რომელიც არდუინოს მსგავსია და ის პასუხობს ტემპერატურას, წვიმას და სინათლის ინტენსივობა. ნუ ელოდებით, რომ ის მთელ სიმღერებს ან აკორდს გამოიმუშავებს
არდუინო და პერსონაჟების LCD კავშირი BreadShield– ში: 6 ნაბიჯი
Arduino and Character LCD დაკავშირება BreadShield– ში: Arduino– ს ბევრი პროექტი მოიცავს პერსონაჟების LCD– ებს, რომლებიც უმეტესად იყენებენ HD44780 პროტოკოლს Arduino– დან მონაცემების მისაღებად. Arduino– ს HD44780– თან დაკავშირება ჩვეულებრივ (4 ბიტიან რეჟიმში) იღებს 12 მავთულს! ამით დასრულდება ჯამპერის მავთულის სპაგეტის დიდი არეულობა. დასჭირდება
გენერატორი - DC გენერატორი რიდის გადამრთველის გამოყენებით: 3 ნაბიჯი
გენერატორი - DC გენერატორი ლერწმის გადამრთველის გამოყენებით: მარტივი DC გენერატორი პირდაპირი მიმდინარე (DC) გენერატორი არის ელექტრო მანქანა, რომელიც გარდაქმნის მექანიკურ ენერგიას პირდაპირ მიმდინარე ელექტროენერგიად. მნიშვნელოვანია: პირდაპირი მიმდინარე (DC) გენერატორი შეიძლება გამოყენებულ იქნას როგორც DC ძრავა ყოველგვარი კონსტრუქციული გარეშე ცვლილებები