Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Herstellungsprozess

Beeindruckende Lichtsequenzen mit Arduino und Schieberegister erstellen

Komponenten und Materialien

Arduino UNO × 1
Steckbrett (Breadboard) × 2
Jumper-Kabel × 55
74HC595 Schieberegister × 1
Taster (Buttons) × 4
Drehpotentiometer × 1
LEDs (beliebig) × 8
Widerstand 220 Ω × 9
Widerstand 10 kΩ × 4

Benötigte Werkzeuge

Apps und Online-Dienste

Projektbeschreibung

Ich habe Spaß an Lichtsteuerungen und Arrays gehabt und wollte das Schieberegister zusammen mit einem LCD-Display nutzen, um ein Programm zu erstellen, mit dem man Lichtanimationen erstellen und anzeigen kann, ohne jedes Mal den Code manuell ändern zu müssen.

Es gibt 4 Tasten (von links nach rechts nummeriert 1–4), die der Menünavigation und dem Ändern von Werten dienen:

Das Programm erlaubt die Anpassung der Animationsgeschwindigkeit und der Wiederholungsanzahl. Über die Konstante ARR_SIZE im Code lässt sich die Anzahl der Frames ändern.

Schaltplan

Der Schaltplan zeigt die Verdrahtung aller Komponenten. Aufgrund von Darstellungsbeschränkungen konnte das Layout nicht so kompakt wie im Originalaufbau gehalten werden. Nach dem Nachbau lohnt es sich, die Verkabelung aufzuräumen.

Beeindruckende Lichtsequenzen mit Arduino und Schieberegister erstellen

Code

Der vollständige Sketch („Light Sequencer“) steuert die 8 LEDs über das 74HC595-Schieberegister, zeigt Menüs auf dem LCD an und reagiert auf Tastendrücke. Der Code umfasst Funktionen für:

#include <LiquidCrystal.h>
#define ARR_SIZE 16  // Anzahl der Frames (anpassbar)
#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;   // ms pro Frame
int loopCount = 5;    // Wiederholungen

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);
}

// Weitere Funktionen: PrintMenu, PrintCreate, PrintSetSpeed, PrintSetLoop,
// Play, Create, IntToHexToByte, BoolArrayToByte, SetSpeed, SetLoop,
// shiftOut, ClearScreen – siehe vollständiger Code im Original.

Herstellungsprozess

  1. TinyML Spracherkennung mit Edge Impulse auf Arduino Nano 33 BLE Sense
  2. Echtzeit-Gyroskop-Spiel mit Arduino Nano & MPU-6050
  3. Arduino Digitaler Würfel: LCD-Würfel mit Zufallszahlen (1–6)
  4. 37-LED-Roulette-Spiel mit Arduino Nano bauen – Europäisches Layout
  5. ATtiny85 Mini-Arcade: Snake – Handheld OLED-Spielekonsole selbst bauen
  6. Tragbarer Entfernungsmesser – Arduino Nano DIY-Kit mit HC-SR04, 18650-Akku und 3D-gedrucktem Gehäuse
  7. Audio-reaktive Schreibtischlampe mit Arduino Nano bauen
  8. Autonomes Gesichtsverfolgungs-Robotercar mit Arduino Nano & OpenCV
  9. Kupfer-Galvanik-Projekt: Intelligentes System mit Arduino UNO bauen
  10. NeoPixel-Matrix Pong auf Arduino Nano: Neon-Pong selbst bauen