Πίνακας περιεχομένων:

Φωτίστε τον Βαλεντίνο σας με αφρώδη μήτρα: 5 βήματα
Φωτίστε τον Βαλεντίνο σας με αφρώδη μήτρα: 5 βήματα

Βίντεο: Φωτίστε τον Βαλεντίνο σας με αφρώδη μήτρα: 5 βήματα

Βίντεο: Φωτίστε τον Βαλεντίνο σας με αφρώδη μήτρα: 5 βήματα
Βίντεο: Romeo and Juliet Audiobook by William Shakespeare 2024, Σεπτέμβριος
Anonim
Φωτίστε τον Βαλεντίνο σας με αφρώδη μήτρα
Φωτίστε τον Βαλεντίνο σας με αφρώδη μήτρα

Η Ημέρα του Αγίου Βαλεντίνου είναι μια ευκαιρία για εσάς να στείλετε μηνύματα αγάπης. Γιατί να μην κάνετε ένα διασκεδαστικό πρόσωπο LED με φθηνά εξαρτήματα για να εκφράσετε το συναίσθημά σας!

Βήμα 1: Πράγματα που χρησιμοποιούνται σε αυτό το έργο

Συστατικά υλικού

  • Seeeduino V4.2
  • Ασπίδα βάσης
  • Grove - Red LED Matrix w/Driver
  • Grove - Gesture (PAJ7620U2)

Εφαρμογές λογισμικού και διαδικτυακές υπηρεσίες

Arduino IDE

Βήμα 2: Ιστορία

Image
Image

Βήμα 3: Σύνδεση υλικού

Εικόνα
Εικόνα

Σε αυτό το έργο, χρησιμοποιούμε τον αισθητήρα χειρονομίας ως είσοδο και δίνουμε την ανατροφοδότηση στο πρόγραμμα οδήγησης μήτρας LED για να τροφοδοτήσει την κόκκινη μήτρα LED.

Πρέπει να συνδέσετε το Grove - Gesture και το Grove - Red LED Matrix w/Driver στη θύρα I^2^C της βασικής ασπίδας που είναι συνδεδεμένη στο Seeeduino. Στη συνέχεια, συνδέστε το Seeeduino στον υπολογιστή μέσω καλωδίου USB.

Βήμα 4: Προγραμματισμός λογισμικού

Το σχέδιο για αυτό το έργο είναι να εμφανίσει το στατικό emoji (πρόσωπο που κλαίει και πρόσωπο αναμονής) όταν δεν έχει διαβαστεί αριστερή ή δεξιά χειρονομία.

Εμφάνιση δυναμικών emoji αλλαγής θέσης ματιού με έλεγχο από αριστερή ή δεξιά χειρονομία όταν διαβάζεται αριστερή ή δεξιά χειρονομία.

Εικόνα
Εικόνα

Στη συγκεκριμένη θέση των ματιών, μια καρδιά που χτυπά θα εμφανιστεί στη μήτρα LED.

Εικόνα
Εικόνα

Τα μοτίβα οθόνης LED έχουν σχεδιαστεί από το LED Matrix Editor, μπορείτε να αλλάξετε ή να προσθέσετε τα μοτίβα LED στις παραπάνω εκπομπές προγράμματος.

Για να προετοιμαστείτε για αυτό το έργο, πρέπει να εγκαταστήσετε τις βιβλιοθήκες Grove - Gesture, Grove - Red LED Matrix w/Driver και MsTimer2 στο Arduino IDE.

#include "Grove_LED_Matrix_Driver_HT16K33.h"

#include "MsTimer2.h" #include "paj7620.h" #include "Wire.h"

Κατά τη διαδικασία ρύθμισης, ξεκινήσαμε τις συναρτήσεις Serial, matrix και MsTimer2. Το Initialized Serial χρησιμοποιείται για τον εντοπισμό σφαλμάτων στο πρόγραμμα, επομένως δεν είναι απαραίτητο να συνδεθείτε με υπολογιστή ή να χρησιμοποιήσετε Serial Monitor μετά τον εντοπισμό σφαλμάτων. Χρησιμοποιούμε το MsTimer2 σε αυτό το έργο για τον έλεγχο της εμφάνισης των στατικών emoji.

// Αρχικοποίησε το σειριακό για εντοπισμό σφαλμάτων.

Serial.begin (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 και ο δείκτης θα μειωθεί.

void displayDynamic (bool leftToRight) {

ανυπόγραφο long currentTime = millis (); εάν (currentTime - prevTime> TIMEOUT) {dIndex = leftToRight; 0: ARRAY_LENGTH (ΔΥΝΑΜΙΚΟ) - 1; showStatic = false; } // Αυτό χρησιμοποιείται για να αποφευχθεί η υπέρβαση του ορίου. εάν (dIndex> = ARRAY_LENGTH (ΔΥΝΑΜΙΚΟ) || dIndex <= -1) {heartBeat (); dIndex = leftToRight; ARRAY_LENGTH (ΔΥΝΑΜΙΚΟ) - 1: 0; } prevTime = currentTime; matrixDisplay = ΔΥΝΑΜΙΚΗ [leftToRight? dIndex ++: dIndex--]; }

Δεν διαβάζεται καμία κίνηση αν ξεπεραστεί η περίοδος TIMEOUT, η στατική αναπαραγωγή emoji θα αποκατασταθεί.

Ανεβάστε το πρόγραμμα στο Seeeduino σας, όλα είναι έτοιμα. Παίξτε και διασκεδάστε!

Βήμα 5: Κωδικός

#include "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])) Μήτρα Matrix_8x8; uint64_t matrixDisplay = 0; unsigned long prevTime = millis (); int8_t sIndex = 0; bool showStatic = true; const uint64_t STATIC = {0x00003c0000a54200, 0x00003c000000e700, 0x00003c004242e700}; int8_t dIndex = 0; const uint64_t ΔΥΝΑΜΙΚΗ = {0x00003c000021e700, 0x00003c000042e700, 0x00003c000084e700}; const uint64_t ΚΑΡΔΙΑ = {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 = currentTime; dIndex = leftToRight; 0: ARRAY_LENGTH (ΔΥΝΑΜΙΚΟ) - 1; } // Αυτό χρησιμοποιείται για να αποφευχθεί η υπέρβαση του ορίου. if (dIndex> = ARRAY_LENGTH (DYNAMIC) || dIndex TIMEOUT) {showStatic = true; } matrix.writeOnePicture (matrixDisplay); matrix.display (); καθυστέρηση (100)? }

Συνιστάται: