Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

Светодиодная матрица + датчик движения дверной дисплей [Arduino Holiday]

Компоненты и расходные материалы

Arduino UNO
× 1
Arduino Nano R3
× 1
Датчик движения PIR (общий)
× 1
Реле (универсальное)
× 1
Перемычки (общие)
× 1
Шнур питания блока питания ПК
× 1
Светодиодная лента RGB
× 1
Панель Neopixel 8x8
× 3

Необходимые инструменты и машины

Паяльник (универсальный)
Инструмент для зачистки проводов

Об этом проекте

Этот проект сочетает в себе 3 светодиодные матрицы WS2812B 8x8 RGB и датчик движения PIR, чтобы приветствовать посетителей текстом «С праздником и Новым годом!» когда они находятся достаточно близко к двери и отображают набор эффектов, таких как заставка на мониторах, когда датчик не обнаруживает никого поблизости.

Он управляется Arduino UNO и питается от источника питания 5 В 30 А.

Я китбашил или объединил 3 набора кодов.

Те из библиотеки FastLED DemoReel100 Пример для эффектов ожидания / ожидания.

Код датчика движения PIR

И, думаю, установочный код для Neopixel. Я больше не уверен, тбх, так как это было почти месяц назад, когда я смешал коды вместе.

Я также использовал другой датчик движения PIR, который подключен к реле на 5 В с помощью светодиодной строки 12 В RGB через удлинитель и управляется Arduino Nano.

Светодиодная строка вместе с праздничными огнями, которая также подключена к удлинителю, активируется, когда 1-й ИК-датчик обнаруживает движение. Он находится на потолке у 1-й ступеньки лестницы.

После нескольких шагов вверх второй ИК-датчик сообщает UNO отображать текстовый дисплей на матрицах, когда кто-то находится достаточно близко к двери.

************************************************* ****************************

Ссылки в социальных сетях, на которые можно подписаться (я имею в виду, если вы хотите):

Facebook - https://fb.me/HeathenHacks

Twitter - https://twitter.com/HeathenHacks

Instagram - https://instagr.am/HeathenHacks

************************************************* ****************************

Код

  • Праздник Ардуино
Arduino Holiday Arduino
 #include  FASTLED_USING_NAMESPACE # include  #include  #include  #ifndef PSTR # define PSTR // Сделайте Arduino Due счастливым # endif # define // # если определено (FASTLED_VERSION) &&(FASTLED_VERSION <3001000) // # предупреждение «Требуется FastLED 3.1 или новее; проверьте github на последний код.» // # endif # define DATA_PIN 6 # define LED_TYPE WS2811 # define COLOR_ORDER GRB # define NUM_LEDS 192CRGB светодиодов [NUM_LEDS]; const uint8_t kMatrixWidth =24; const uint8_t kMatrixHeight =8; const bool kMatrixSerpentineLayout =true; #define NUM_LEDS (kMatrixWidth * kMatrixHeight_DIMENSATrix) #define 50 #define FRAMES_PER_SECOND 120 // 16-битная версия наших координат static uint16_t x; static uint16_t y; static uint16_t z; Adafruit_NeoMatrix matrix =Adafruit_NeoMatrix (24, 8, PIN, NEO_MATRIX_TOP + NEO_MATRIX_MATRIX_MATRIX_TOP + NEO_MATRIX_MATRESS + NEO_MATRIX_MATRESS + NEO_MATRIX_RIGHT + NEO_MATRIX_MATRESS + NEO_MATRIX_RIGHT + NEO_MATRIX_RIGHT + NEO_MATRIX_RIGHT + NEO_MATRIX_MATRESS уин t16_t colors [] ={matrix.Color (255, 0, 0), matrix.Color (0, 255, 0), matrix.Color (0, 0, 255), matrix.Color (0, 255, 255), matrix.Color (255, 0, 255), matrix.Color (255, 255, 0), matrix.Color (255, 255, 255)}; uint16_t speed =20; // скорость устанавливается динамически после запуска upuint16_t scale =30; // масштаб устанавливается динамически после запуска uint8_t noise [MAX_DIMENSION] [MAX_DIMENSION]; CRGBPalette16 currentPalette (PartyColors_p); uint8_t colorLoop =1; int pirSensorPin =5; // выбираем входной контакт (для датчика PIR) int pirState =true; // мы начинаем, предполагая, что движения не обнаружено int val =0; // переменная для чтения статуса вывода int minimummSecsLowForInactive =5000; // Если датчик сообщает о низком // значении дольше этого времени, то предполагается отсутствие активности long unsigned int timeLow; boolean takeLowTime; // время, которое мы даем датчику для калибровки (10-60 секунд в соответствии с таблицей данных) int CalibrationTime =30; void setup () {задержка (3000); // 3-секундная задержка для восстановления // сообщаем FastLED о конфигурации светодиодной ленты FastLED.addLeds  (leds, NUM_LEDS) .setCorrection (TypicalLEDStrip); //FastLED.addLeds(leds, NUM_LEDS) .setCorrection (TypicalLEDStrip); // устанавливаем мастер-контроль яркости FastLED.setBrightness (BRIGHTNESS); matrix.setTextWrap (ложь); matrix.setBrightness (40); matrix.setTextColor (цвета [0]); pinMode (pirSensorPin, ВХОД); // объявляем датчик входным LEDS.addLeds  (светодиоды, NUM_LEDS); х =random16 (); у =random16 (); z =random16 ();} int a =matrix.width (); int pass =0; // Список шаблонов для циклического просмотра. Каждая из них определяется как отдельная функция ниже .typedef void (* SimplePatternList []) (); SimplePatternList gPatterns ={радуга, rainbowWithGlitter, confetti, sinelon, juggle, bpm, cylon}; uint8_t gCurrentPatternNumber =0; // Номер индекса текущего паттерна uint8_t gHue =0; // вращение «основного цвета», используемого во многих шаблонах, избегайте fadeall () {for (int i =0; i  =6) pass =0; matrix.setTextColor (цвета [пройти]); } matrix.show (); задержка (100); if (pirState) {// мы только что включили pirState =false; } takeLowTime =true; } else {// Вызов текущей функции шаблона один раз, обновляя массив 'светодиодов' gPatterns [gCurrentPatternNumber] (); // отправляем массив 'светодиодов' на фактическую светодиодную ленту FastLED.show (); // вставляем задержку, чтобы сохранить умеренную частоту кадров FastLED.delay (1000 / FRAMES_PER_SECOND); // делаем некоторые периодические обновления EVERY_N_MILLISECONDS (20) {gHue ++; // медленно чередуем «базовый цвет» по радуге} EVERY_N_SECONDS (10) {nextPattern (); // периодически меняем шаблоны}}} # define ARRAY_SIZE (A) (sizeof (A) / sizeof ((A) [0])) void nextPattern () {// добавляем единицу к текущему номеру шаблона и оборачиваем end gCurrentPatternNumber =(gCurrentPatternNumber + 1)% ARRAY_SIZE (gPatterns);} void rainbow () {// Встроенный генератор радуги FastLED fill_rainbow (leds, NUM_LEDS, gHue, 7);} void rainbowWithGlitter () {// встроенный Радуга FastLED, плюс случайная радуга с блестками (); addGlitter (80);} недействительным addGlitter (фракт8 шансOfGlitter) {если (random8 () <случайныйOfGlitter) {светодиоды [random16 (NUM_LEDS)] + =CRGB ::Белый; }} void confetti () {// случайные цветные точки, которые мигают и плавно исчезают fadeToBlackBy (leds, NUM_LEDS, 10); int pos =random16 (ЧИСЛО); leds [pos] + =CHSV (gHue + random8 (64), 200, 255);} void sinelon () {// цветная точка, движущаяся вперед и назад, с исчезающими следами fadeToBlackBy (leds, NUM_LEDS, 20); int pos =beatsin16 (13, 0, NUM_LEDS - 1); leds [pos] + =CHSV (gHue, 255, 192);} void bpm () {// цветные полосы пульсируют с определенной частотой ударов в минуту (BPM) uint8_t BeatsPerMinute =62; CRGBPalette16 palette =PartyColors_p; uint8_t beat =beatsin8 (BeatsPerMinute, 64, 255); for (int i =0; i  =0; i--) {// Установите для i-го светодиода красные светодиоды [i] =CHSV (hue ++, 255, 255); // Показать светодиоды FastLED.show (); // теперь, когда мы показали светодиоды, сбросим i-й светодиод на черный // светодиоды [i] =CRGB ::Black; fadeall (); // Подождите немного, прежде чем мы перейдем к циклу и сделаем это снова delay (10); }} 

Схема


Производственный процесс

  1. Музыкальный визуализатор DIY LUMAZOID для Arduino
  2. Датчик DHT11 со светодиодами и пьезо-динамиком
  3. MyRiver
  4. Простой датчик препятствий с Arduino
  5. Найди меня
  6. Четвероногий Arduino
  7. Водяной пистолет с датчиком движения
  8. Сонар с использованием Arduino и отображение при обработке IDE
  9. Осциллограф 10 Гц-50 кГц для самостоятельного изготовления на ЖК-дисплее 128x64
  10. Перекидные часы Arduino с одной светодиодной матрицей