Სარჩევი:

გაანათეთ თქვენი ვალენტინი ცქრიალა მატრიქსით: 5 ნაბიჯი
გაანათეთ თქვენი ვალენტინი ცქრიალა მატრიქსით: 5 ნაბიჯი

ვიდეო: გაანათეთ თქვენი ვალენტინი ცქრიალა მატრიქსით: 5 ნაბიჯი

ვიდეო: გაანათეთ თქვენი ვალენტინი ცქრიალა მატრიქსით: 5 ნაბიჯი
ვიდეო: რას იზავს თქვენი "ვალენტინი" ვალენტინობაზე? ☺️- 2 ვარიანტი 🌟🃏🌟 2024, ივლისი
Anonim
გაანათეთ თქვენი ვალენტინი ცქრიალა მატრიქსით
გაანათეთ თქვენი ვალენტინი ცქრიალა მატრიქსით

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

ნაბიჯი 1: ნივთები, რომლებიც გამოიყენება ამ პროექტში

აპარატურის კომპონენტები

  • Seeeduino V4.2
  • ბაზის ფარი
  • გროვი - წითელი LED მატრიცა მძღოლთან ერთად
  • გროვი - ჟესტი (PAJ7620U2)

პროგრამული უზრუნველყოფის პროგრამები და ონლაინ სერვისები

Arduino IDE

ნაბიჯი 2: ისტორია

Image
Image

ნაბიჯი 3: აპარატურის კავშირი

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

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

თქვენ უნდა დააკავშიროთ Grove - Gesture and Grove - Red LED Matrix w/Driver w/Driver to the I^2^C port of the base shield, რომელიც ჩართულია Seeeduino– ში. შემდეგ დააკავშირეთ Seeeduino კომპიუტერთან USB კაბელის საშუალებით.

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

ამ პროექტის გეგმაა სტატიკური ემოციის ჩვენება (ტირილი და მომლოდინე სახე), როდესაც არ არის წაკითხული მარცხენა ან მარჯვენა ჟესტი.

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

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

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

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

LED ჩვენების შაბლონები შექმნილია LED Matrix Editor– ის მიერ, თქვენ შეგიძლიათ შეცვალოთ ან დაამატოთ თქვენი LED შაბლონები პროგრამის ზემოთ ნაჩვენებ პროგრამებში.

ამ პროექტისათვის მოსამზადებლად საჭიროა Arduino IDE- ში დააყენოთ Grove - Gesture, Grove - Red LED Matrix w/Driver და MsTimer2 ბიბლიოთეკები.

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

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

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

// ინიციალიზებული იყო სერიის გამართვის მიზნით.

სერიული.დაწყება (9600); ხოლო (! სერიული); paj7620Init (); Wire.begin (); matrix.init (); matrix.setBrightness (15); matrix.setBlinkRate (BLINK_OFF); MsTimer2:: კომპლექტი (1000, displayStatic); MsTimer2:: დაწყება ();

მთავარ მარყუჟში ჩვენ მხოლოდ ორ გამოსავალს ვიღებთ ჟესტების სენსორიდან, GES_RIGHT_FLAG, GES_LEFT_FLAG და ეს გამოიყენება ჩვენებისათვის displayDynamic ().

DisplayDynamic () ფუნქცია გამოითვლის ინტერვალს ბოლო დროიდან, როდესაც დინამიური emoji გამოჩნდა მიმდინარე დრომდე, თუ ინტერვალი აღემატება TIMEOUT- ს, ის შეწყვეტს სტატიკური emoji- ების თამაშს და დააყენებს ჩვენებული დინამიური emoji ინდექსის დაწყებას. როდესაც ჟესტები მარცხნიდან მარჯვნივ იკითხება, დაწყების ინდექსი არის 0 და ინდექსი გაიზრდება მარცხნიდან მარჯვნივ ჟესტების ხელახლა წაკითხვის შემდეგ. წინააღმდეგ შემთხვევაში, დაწყების ინდექსი არის DYNAMIC მასივის ბოლო ინდექსი და ინდექსი შემცირდება.

ბათილი ჩვენება დინამიური (bool leftToRight) {

ხელმოუწერელი long currentTime = millis (); if (currentTime - preTTime> TIMEOUT) {dIndex = leftToRight? 0: ARRAY_LENGTH (დინამიური) - 1; showStatic = ყალბი; } // ეს გამოიყენება საზღვრის გადაკვეთის თავიდან ასაცილებლად. if (dIndex> = ARRAY_LENGTH (DYNAMIC) || dIndex <= -1) {heartBeat (); dIndex = leftToRight? ARRAY_LENGTH (დინამიური) - 1: 0; } prevTime = მიმდინარე დრო; matrixDisplay = დინამიური [leftToRight? dIndex ++: dIndex--]; }

TIMEOUT პერიოდის გადაჭარბების შემთხვევაში ჟესტი არ იკითხება, სტატიკური emoji დაკვრა აღდგება.

ატვირთეთ პროგრამა თქვენს Seeeduino– ში, ყველაფერი დასრულებულია. ითამაშეთ და გაერთეთ!

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

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

#მოიცავს "MsTimer2.h" #მოიცავს "paj7620.h" #მოიცავს "Wire.h" #განსაზღვრეთ TIMEOUT 5000 #განსაზღვრეთ GES_REG_ADDR 0x43 #განსაზღვრეთ ARRAY_LENGTH (მასივი) (ზომა (მასივი) / ზომა (მასივი [0])) მატრიცა_8x8 მატრიცა; uint64_t მატრიცა ჩვენება = 0; ხელმოუწერელი გრძელი დრო = მილი (); int8_t sIndex = 0; bool showStatic = ჭეშმარიტი; const uint64_t STATIC = {0x00003c0000a54200, 0x00003c000000e700, 0x00003c004242e700}; int8_t dIndex = 0; const uint64_t დინამიური = {0x00003c000021e700, 0x00003c000042e700, 0x00003c000084e700}; const uint64_t HEART = {0x00183c7e7e240000, 0x00183c7effff6600, 0x183c7effffffff66, 0x00183c7effff6600}; void displayStatic (void) {if (showStatic) {matrixDisplay = STATIC [sIndex]; sIndex = (sIndex + 1) % ARRAY_LENGTH (სტატიკური); }} void heartBeat () {for (uint8_t i = 0; i TIMEOUT) {showStatic = false; prevTime = მიმდინარე დრო; dIndex = leftToRight? 0: ARRAY_LENGTH (დინამიური) - 1; } // ეს გამოიყენება საზღვრის გადაკვეთის თავიდან ასაცილებლად. if (dIndex> = ARRAY_LENGTH (DYNAMIC) || dIndex TIMEOUT) {showStatic = true; } matrix.writeOnePicture (matrixDisplay); მატრიცა. ჩვენება (); დაგვიანება (100); }

გირჩევთ: