תוכן עניינים:

להאיר את האהבה שלך עם מטריצה נוצצת: 5 שלבים
להאיר את האהבה שלך עם מטריצה נוצצת: 5 שלבים

וִידֵאוֹ: להאיר את האהבה שלך עם מטריצה נוצצת: 5 שלבים

וִידֵאוֹ: להאיר את האהבה שלך עם מטריצה נוצצת: 5 שלבים
וִידֵאוֹ: נעים מאוד - הפין והאשכים! 2024, יולי
Anonim
להאיר את האהבה שלך עם מטריצה נוצצת
להאיר את האהבה שלך עם מטריצה נוצצת

חג האהבה הוא הזדמנות עבורך לשלוח הודעות אהבה. למה שלא תעשה פני LED מהנים עם רכיבים לא יקרים כדי לבטא את ההרגשה שלך!

שלב 1: דברים המשמשים בפרויקט זה

רכיבי חומרה

  • Seeeduino V4.2
  • מגן בסיס
  • גרוב - מטריקס LED אדום עם נהג
  • גרוב - מחווה (PAJ7620U2)

אפליקציות תוכנה ושירותים מקוונים

Arduino IDE

שלב 2: סיפור

Image
Image

שלב 3: חיבור חומרה

תמונה
תמונה

בפרויקט זה אנו משתמשים בחיישן המחווה כקלט ונותנים את המשוב לנהג מטריצת ה- LED כדי להאכיל את מטריצת ה- LED האדומה.

עליך לחבר את Grove - Gesture ו- Grove - Matrix LED אדום w/Driver ליציאת I^2^C של מגן הבסיס המחובר ל- Seeeduino. לאחר מכן חבר את Seeeduino למחשב באמצעות כבל USB.

שלב 4: תכנות תוכנה

התוכנית לפרויקט זה היא להציג את האמוג'י הסטטי (פרצוף בוכה ופנים מחכות) כאשר לא נקראה מחווה שמאל או ימין.

הצג אמוג'י דינמי לשינוי מיקום העין עם שליטה על ידי מחווה שמאל או ימינה כאשר נקראה מחווה שמאל או ימין.

תמונה
תמונה

במיקום העין הספציפי, לב פועם יוצג על מטריצת ה- LED.

תמונה
תמונה

דפוסי תצוגת LED מעוצבים על ידי עורך מטריקס LED, אתה יכול לשנות או להוסיף את דפוסי ה- LED שלך בתוכניות התוכנית לעיל.

כדי להתכונן לפרויקט זה, נדרש להתקין את Grove - Gesture, Grove - Red LED Matrix w/Driver וספרייות MsTimer2 לתוך Arduino IDE.

#כלול "Grove_LED_Matrix_Driver_HT16K33.h"

#כלול "MsTimer2.h" #include "paj7620.h" #כלול "Wire.h"

במהלך הליך ההתקנה, אתחלנו את הפונקציות Serial, matrix ו- MsTimer2. Serialized Initialized משמש לניפוי באגים של התוכנית, ולכן אין צורך להתחבר למחשב או להשתמש ב- Monitor Serial לאחר איתור באגים. אנו משתמשים ב- MsTimer2 בפרויקט זה כדי לשלוט על הצגת האמוג'י הסטטי.

// אתחל את הסידרה כדי לאתר באגים.

Serial.begin (9600); בעוד (! סדרתי); paj7620Init (); Wire.begin (); matrix.init (); matrix.setBrightness (15); matrix.setBlinkRate (BLINK_OFF); MsTimer2:: set (1000, displayStatic); MsTimer2:: start ();

בלולאה הראשית, אנו לוקחים רק שתי יציאות מחיישן המחווה, GES_RIGHT_FLAG, GES_LEFT_FLAG ואלה משמשות להנחיית הפונקציה displayDynamic ().

הפונקציה displayDynamic () תחשב את המרווח מהפעם האחרונה שהוצג אמוג'י דינמי לזמן הנוכחי, אם המרווח יעלה על TIMEOUT, הוא יפסיק לשחק אימוג'ים סטטיים, ויגדיר את אינדקס האימוג'ים הדינמי המוצג כדי להתחיל. כאשר קוראים מחוות משמאל לימין, מדד ההתחלה הוא 0, והאינדקס יוגדל לאחר שתנועות שמאל לימין יקראו שוב. אחרת, אינדקס ההתחלה הוא המדד האחרון של מערך DYNAMIC, והאינדקס יורד.

תצוגת חלל דינמית (bool leftToRight) {

currentTime long untime = millis (); אם (currentTime - prevTime> TIMEOUT) {dIndex = leftToRight? 0: ARRAY_LENGTH (דינאמי) - 1; showStatic = false; } // זה משמש כדי להימנע מחריגה מהגבול. אם (dIndex> = ARRAY_LENGTH (DYNAMIC) || dIndex <= -1) {heartBeat (); dIndex = leftToRight? ARRAY_LENGTH (דינאמי) - 1: 0; } prevTime = currentTime; matrixDisplay = DYNAMIC [leftToRight? dIndex ++: dIndex--]; }

אין לקרוא מחווה אם חרגת משך TIMEOUT, הפעלת אימוג'י סטטית תשוחזר.

העלה את התוכנית ל- Seeeduino שלך, הכל נעשה. שחקו ותהנו!

שלב 5: קוד

#כלול "Grove_LED_Matrix_Driver_HT16K33.h"

#include "MsTimer2.h" #include "paj7620.h" #include "Wire.h" #define TIMEOUT 5000 #define GES_REG_ADDR 0x43 #define ARRAY_LENGTH (array) (sizeof (array) / sizeof (array [0])) מטריצה_8x8; uint64_t matrixDisplay = 0; prevTime לא חתום ארוך = מיליס (); int8_t sIndex = 0; bool showStatic = true; const uint64_t STATIC = {0x00003c0000a54200, 0x00003c000000e700, 0x00003c004242e700}; int8_t dIndex = 0; const uint64_t DYNAMIC = {0x00003c000021e700, 0x00003c000042e700, 0x00003c000084e700}; const uint64_t HEART = {0x00183c7e7e240000, 0x00183c7effff6600, 0x183c7effffffff66, 0x00183c7effff6600}; void displayStatic (void) {if (showStatic) {matrixDisplay = STATIC [sIndex]; sIndex = (sIndex + 1) % ARRAY_LENGTH (STATIC); }} void heartBeat () {for (uint8_t i = 0; i TIMEOUT) {showStatic = false; prevTime = currentTime; dIndex = leftToRight? 0: ARRAY_LENGTH (דינאמי) - 1; } // זה משמש כדי להימנע מחריגת הגבול. אם (dIndex> = ARRAY_LENGTH (DYNAMIC) || dIndex TIMEOUT) {showStatic = true; } matrix.writeOnePicture (matrixDisplay); matrix.display (); עיכוב (100); }

מוּמלָץ: