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

Создание потрясающих световых последовательностей с Arduino и сдвиговым регистром

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

Arduino UNO1 шт.
Макетная плата (breadboard)2 шт.
Перемычки (jumper wires)55 шт.
Сдвиговый регистр 74HC5951 шт.
Кнопки4 шт.
Потенциометр (10 кОм)1 шт.
Светодиоды (LED)8 шт.
Резисторы 220 Ом9 шт.
Резисторы 10 кОм4 шт.

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

Руки (сборка на макетной плате не требует специальных инструментов)

Программное обеспечение

Arduino IDE

О проекте

Этот проект позволяет создавать и воспроизводить световые анимации на 8 светодиодах с использованием сдвигового регистра 74HC595 и ЖК-дисплея 16x2. Управление осуществляется четырьмя кнопками через интуитивное меню на дисплее.

Управление

Возможности

Схема подключения

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

Создание потрясающих световых последовательностей с Arduino и сдвиговым регистром

Код

#include <LiquidCrystal.h>
#define ARR_SIZE 16  // Количество кадров
#define LIGHTS 8     // Количество светодиодов

const int btn1 = 7, btn2 = 8, btn3 = 9, btn4 = 10;
int bs1 = 0, bs2 = 0, bs3 = 0, bs4 = 0;

const int latchPin = 11;
const int clockPin = 13;
const int dataPin = 12;

byte data;
bool ArrOne[ARR_SIZE][LIGHTS] = {false};
byte lightArrOne[ARR_SIZE] = {0xFF};

int animSpeed = 50;
int loopCount = 5;

const int rs = 15, en = 14, d4 = 3, d5 = 4, d6 = 5, d7 = 6;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);

void setup() {
  pinMode(btn1, INPUT_PULLUP);
  pinMode(btn2, INPUT_PULLUP);
  pinMode(btn3, INPUT_PULLUP);
  pinMode(btn4, INPUT_PULLUP);
  lcd.begin(16, 2);
  pinMode(latchPin, OUTPUT);
  PrintMenu();
}

void loop() {
  bs1 = digitalRead(btn1);
  bs2 = digitalRead(btn2);
  bs3 = digitalRead(btn3);
  bs4 = digitalRead(btn4);

  if (bs1 == HIGH) { bs1 = LOW; delay(150); Play(); }
  else if (bs2 == HIGH) { bs2 = LOW; delay(150); Create(ArrOne); }
  else if (bs3 == HIGH) { bs3 = LOW; delay(150); SetSpeed(); }
  else if (bs4 == HIGH) { bs4 = LOW; delay(150); SetLoop(); }

  PrintMenu();
  delay(150);
}

// Функции меню, воспроизведения, создания кадров, настройки скорости и циклов
// ... (полный код доступен в исходнике)

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

  1. TinyML-детектор языка на Arduino Nano 33 BLE Sense с Edge Impulse
  2. Создание игры в реальном времени на Arduino Nano с гироскопом MPU-6050 и OLED-дисплеем
  3. Цифровые кости на Arduino: генератор случайных чисел с LCD-дисплеем и кнопкой
  4. Создание рулетки на 37 светодиодов с Arduino Nano
  5. Мини-аркада на ATtiny85: Snake — ручная OLED-консоль своими руками
  6. Портативный дальномер на Arduino Nano: HC-SR04, питание 18650, 3D-корпус
  7. Сборка аудиореактивной настольной лампы на Arduino Nano
  8. Автономный робот-следопыт с распознаванием лиц на Arduino Nano и OpenCV
  9. Медное гальваническое покрытие: умная система на Arduino UNO
  10. NeoPixel Matrix Pong на Arduino Nano: неоновая игра Pong на матрице 15×10