Оглавление:

Зажгите свою валентинку сверкающей матрицей: 5 шагов
Зажгите свою валентинку сверкающей матрицей: 5 шагов

Видео: Зажгите свою валентинку сверкающей матрицей: 5 шагов

Видео: Зажгите свою валентинку сверкающей матрицей: 5 шагов
Видео: Именины Домового – кашку съешь, а нам дай взамен неразменный рубль дай... 2024, Ноябрь
Anonim
Зажги свой Валентин с помощью сверкающей матрицы
Зажги свой Валентин с помощью сверкающей матрицы

День святого Валентина - это возможность отправить любовные послания. Почему бы не сделать забавное светодиодное лицо из недорогих компонентов, чтобы выразить свои чувства!

Шаг 1. Вещи, использованные в этом проекте

Компоненты оборудования

  • Seeeduino V4.2
  • Базовый щит
  • Grove - красная светодиодная матрица с драйвером
  • Роща - Жест (PAJ7620U2)

Программные приложения и онлайн-сервисы

IDE Arduino

Шаг 2: история

Image
Image

Шаг 3: Подключение оборудования

Изображение
Изображение

В этом проекте мы используем датчик жестов в качестве входа и даем обратную связь драйверу светодиодной матрицы для подачи на красную светодиодную матрицу.

Вам необходимо подключить Grove - Gesture и Grove - Red LED Matrix с драйвером к порту I ^ 2 ^ C базового экрана, который подключен к Seeeduino. Затем подключите Seeeduino к ПК с помощью кабеля USB.

Шаг 4: Программирование программного обеспечения

План этого проекта состоит в том, чтобы отображать статические эмодзи (плачущее лицо и ожидающее лицо), когда не было прочитано ни левого, ни правого жеста.

Отображение смайлов с динамическим изменением положения глаз с помощью жестов влево или вправо, когда читается жест влево или вправо.

Изображение
Изображение

В определенном положении глаз на светодиодной матрице будет отображаться бьющееся сердце.

Изображение
Изображение

Шаблоны светодиодных дисплеев разработаны с помощью редактора светодиодных матриц, вы можете изменить или добавить свои шаблоны светодиодных индикаторов в программе, показанной выше.

Чтобы подготовиться к этому проекту, необходимо установить библиотеки Grove - Gesture, Grove - Red LED Matrix с драйвером и MsTimer2 в IDE Arduino.

#include "Grove_LED_Matrix_Driver_HT16K33.h"

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

Во время процедуры настройки мы инициализировали функции Serial, matrix и MsTimer2. Initialized Serial используется для отладки программы, поэтому нет необходимости подключаться к ПК или использовать Serial Monitor после отладки. В этом проекте мы используем 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, и индекс будет увеличиваться после повторного чтения жестов слева направо. В противном случае начальным индексом будет последний индекс ДИНАМИЧЕСКОГО массива, и индекс будет уменьшен.

void displayDynamic (bool leftToRight) {

беззнаковый длинный 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 превышен, статическое воспроизведение смайлов будет восстановлено.

Загрузите программу на свой 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 (массив) (sizeof (array) / sizeof (array [0])) Матрица Matrix_8x8; uint64_t matrixDisplay = 0; беззнаковый длинный prevTime = millis (); 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 СЕРДЦЕ = {0x00183c7e7e240000, 0x00183c7effff6600, 0x183c7effffffff66, 0x00183c7effff6600}; void displayStatic (void) {если (showStatic) {matrixDisplay = STATIC [sIndex]; sIndex = (sIndex + 1)% ARRAY_LENGTH (СТАТИЧЕСКИЙ); }} void heartBeat () {для (uint8_t я = 0; я TIMEOUT) {showStatic = false; prevTime = currentTime; dIndex = leftToRight? 0: ARRAY_LENGTH (ДИНАМИЧЕСКИЙ) - 1; } // Это используется, чтобы избежать выхода за границу. если (dIndex> = ARRAY_LENGTH (ДИНАМИЧЕСКИЙ) || dIndex TIMEOUT) {showStatic = true; } matrix.writeOnePicture (matrixDisplay); matrix.display (); задержка (100); }

Рекомендуемые: