Агуулгын хүснэгт:

Гэгээн Валентинаа гялалзсан матрицаар гэрэлтүүлээрэй: 5 алхам
Гэгээн Валентинаа гялалзсан матрицаар гэрэлтүүлээрэй: 5 алхам

Видео: Гэгээн Валентинаа гялалзсан матрицаар гэрэлтүүлээрэй: 5 алхам

Видео: Гэгээн Валентинаа гялалзсан матрицаар гэрэлтүүлээрэй: 5 алхам
Видео: Джинсовые домики. Сказочный город. 2024, Долдугаар сарын
Anonim
Гэгээн Валентинаа гялалзсан матрицаар гэрэлтүүлээрэй
Гэгээн Валентинаа гялалзсан матрицаар гэрэлтүүлээрэй

Гэгээн Валентины өдөр бол танд хайрын мессеж илгээх боломж юм. Мэдрэмжээ илэрхийлэхийн тулд хямд үнэтэй бүрэлдэхүүн хэсгүүдтэй хөгжилтэй LED нүүр хийж яагаад болохгүй гэж!

Алхам 1: Энэхүү төсөлд ашигласан зүйлс

Тоног төхөөрөмжийн бүрэлдэхүүн хэсгүүд

  • Seeeduino V4.2
  • Үндсэн бамбай
  • Grove - Жолоочтой улаан LED матриц
  • Гроув - Дохио зангаа (PAJ7620U2)

Програм хангамж, онлайн үйлчилгээ

Arduino IDE

Алхам 2: Түүх

Image
Image

Алхам 3: Тоног төхөөрөмжийн холболт

Зураг
Зураг

Энэхүү төсөлд бид дохио зангаа мэдрэгчийг оролт болгон ашиглаж, LED матрицын жолоочид улаан LED матрицыг тэжээхийн тулд санал хүсэлтээ өгдөг.

Та Grove - Gesture ба Grove - Red LED матрицыг драйвер ашиглан Seeeduino -д залгагдсан үндсэн бамбайны I^2^C порт руу холбох хэрэгтэй. Дараа нь 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 функцийг эхлүүлсэн. Анхдагч сериал нь програмыг дибаг хийхэд ашигладаг тул дибаг хийсний дараа компьютерт холбогдох эсвэл сериал монитор ашиглах шаардлагагүй болно. Бид энэ төсөлд MsTimer2 -ийг ашиглан статик эможи дэлгэцийг хянах боломжтой.

// Цувралыг дибаг хийхээр эхлүүлсэн.

Цуваа эхлэх (9600); байхад (! Цуваа); paj7620Init (); Wire.begin (); matrix.init (); matrix.setBrightness (15); matrix.setBlinkRate (BLINK_OFF); MsTimer2:: set (1000, displayStatic); MsTimer2:: эхлэх ();

Гол гогцоонд бид дохио зангаа мэдрэгчээс GES_RIGHT_FLAG, GES_LEFT_FLAG гэсэн хоёр гаралтыг л авдаг бөгөөд эдгээр нь displayDynamic () функцийг удирдахад хэрэглэгддэг.

DisplayDynamic () функц нь динамик эможиг харуулсан сүүлийн үеийн интервалаас одоогийн цаг хүртэлх хугацааг тооцоолох бөгөөд хэрэв интервал TIMEOUT -ээс хэтэрвэл статик эможи тоглуулахаа больж, харуулсан динамик эможи индексийг эхлүүлэхээр тохируулна. Зүүнээс баруун тийш дохио зангаа уншихад эхлэх индекс 0 байх бөгөөд зүүнээс баруун тийш дохио дахин уншсаны дараа индекс нэмэгдэх болно. Үгүй бол эхлэх индекс нь DYNAMIC массивын сүүлчийн индекс бөгөөд индекс буурах болно.

void displayDynamic (bool leftToRight) {

гарын үсэг зураагүй урт currentTime = millis (); if (currentTime - prevTime> TIMEOUT) {dIndex = leftToRight? 0: ARRAY_LENGTH (DINAMIC) - 1; showStatic = худал; } // Үүнийг хил хязгаараас хэтрэхгүй байх зорилгоор ашигладаг. if (dIndex> = ARRAY_LENGTH (DYNAMIC) || dIndex <= -1) {heartBeat (); dIndex = leftToRight? ARRAY_LENGTH (DINAMIC) - 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 #GES_REG_ADDR -ийг тодорхойлох 0x43 #ARRAY_LENGTH (массив) (sizeof (массив) / массив [0])) Matrix_8x8 матриц; uint64_t matrixDisplay = 0; гарын үсэг зураагүй урт prevTime = millis (); int8_t sIndex = 0; bool showStatic = үнэн; 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) {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 (DINAMIC) - 1; } // Энэ нь хил хязгаарыг давахгүйн тулд ашиглагддаг. if (dIndex> = ARRAY_LENGTH (DYNAMIC) || dIndex TIMEOUT) {showStatic = true; } matrix.writeOnePicture (matrixDisplay); matrix.display (); саатал (100); }

Зөвлөмж болгож буй: