Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Productieproces

Bouw een 48x8 scrollende LED-matrix met Arduino – Stapsgewijze handleiding

Onderdelen en benodigdheden

OnderdeelAantal
Arduino UNO1
74HC595 8-bit schuifregister7
Weerstand 475 ohm56
Man header 40-polig (0.1")2
Vrouw header 8-polig (0.1")21
Universele PCB 6"×4"4
8x8 LED-matrix6
BC547 Transistor1

Benodigde tools

  • Solderbout
  • Lijmpistool
  • Multimeter (bijv. Mastech MS8217)

Apps en online diensten

  • Arduino IDE

Over dit project

Hallo allemaal! Dit project bouwt een programmeerbare 48×8 scrollende LED-matrix met Arduino UNO en 74HC595 schuifregisters. Mijn eerste Arduino-project – een uitdaging van mijn leraar. Toen wist ik nog niet eens hoe een LED te laten knipperen. Met geduld en begrip kan iedere beginner dit.

Het schema

Bouw een 48x8 scrollende LED-matrix met Arduino – Stapsgewijze handleiding

Een schuifregister stuurt de 8 rijen. Voor kolommen: één 74HC595 per 8 kolommen (één 8×8 module). Wil je breder? Voeg per 8 kolommen een register toe (daisy-chain). Geen limiet aan kolommen.

Componenten verzamelen

Bouw een 48x8 scrollende LED-matrix met Arduino – Stapsgewijze handleiding

Prototype bouwen

Bouw een 48x8 scrollende LED-matrix met Arduino – Stapsgewijze handleiding

Solderfase

Rij- en kolomcontrole op losse experimenteerprinten, met draden en headers om te verbinden.

Bouw een 48x8 scrollende LED-matrix met Arduino – Stapsgewijze handleiding
Bouw een 48x8 scrollende LED-matrix met Arduino – Stapsgewijze handleiding
Bouw een 48x8 scrollende LED-matrix met Arduino – Stapsgewijze handleiding
Bouw een 48x8 scrollende LED-matrix met Arduino – Stapsgewijze handleiding
Bouw een 48x8 scrollende LED-matrix met Arduino – Stapsgewijze handleiding

Na succesvol 8×8: meer schuifregisters daisy-chainen voor kolommen (alleen één voor alle rijen).

Tweede helft bouwen

Bouw een 48x8 scrollende LED-matrix met Arduino – Stapsgewijze handleiding
Bouw een 48x8 scrollende LED-matrix met Arduino – Stapsgewijze handleiding
Bouw een 48x8 scrollende LED-matrix met Arduino – Stapsgewijze handleiding
Bouw een 48x8 scrollende LED-matrix met Arduino – Stapsgewijze handleiding

Geen 3D-printer → lokale timmerman gevraagd voor behuizing. Gekregen was groter dan verwacht. Beter: zelf ontwerpen in Fusion 360 en 3D-printen. Gaten voor voeding en USB.

Bouw een 48x8 scrollende LED-matrix met Arduino – Stapsgewijze handleiding

De code

Code scant rijen en voedt kolommen met juiste logische niveaus. Bepaalt scrollsnelheid en bericht. Standaard rechts-naar-links, met kleine aanpassing andere richtingen mogelijk.

Volledige code (C/C++) met uitgebreide commentaren:

/* Arduino code voor scrollende tekst op 6+ 8x8 LED matrices.
   Aantal matrices aanpasbaar met kleine codewijziging.
   Gecodeerd door Prasanth K S - kksjunior@hotmail.com */

char msg[] = "WELCOME WIZ";  // Pas tekst aan
int scrollspeed = 5;        // Lagere waarde = sneller
int x, y;

// Kolom-pins (74HC595 #1)
int clockPin1 = 2, latchPin1 = 3, dataPin1 = 4;
// Rij-pins (74HC595 #2)
int clockPin2 = 5, latchPin2 = 6, dataPin2 = 7;

// BITMAP: 8 rijen, 7 zones (6 matrices + 1 extra voor scrolling)
byte bitmap[8][7];
int numZones = sizeof(bitmap) / 8;
int maxZoneIndex = numZones - 1;
int numCols = numZones * 8;

// FONTDEFINITIE (5 kolommen per teken, 2 kolommen spatie)
byte alphabets[][8] = {
  {0,0,0,0,0}, // @ = spatie
  {31,36,68,36,31},   // A
  {127,73,73,73,54},  // B
  {62,65,65,65,34},   // C
  {127,65,65,34,28},  // D
  {127,73,73,65,65},  // E
  {127,72,72,72,64},  // F
  {62,65,65,69,38},   // G
  {127,8,8,8,127},    // H
  {0,65,127,65,0},    // I
  {2,1,1,1,126},      // J
  {127,8,20,34,65},   // K
  {127,1,1,1,1},      // L
  {127,32,16,32,127}, // M
  {127,32,16,8,127},  // N
  {62,65,65,65,62},   // O
  {127,72,72,72,48},  // P
  {62,65,69,66,61},   // Q
  {127,72,76,74,49},  // R
  {50,73,73,73,38},   // S
  {64,64,127,64,64},  // T
  {126,1,1,1,126},    // U
  {124,2,1,2,124},    // V
  {126,1,6,1,126},    // W
  {99,20,8,20,99},    // X
  {96,16,15,16,96},   // Y
  {67,69,73,81,97}    // Z
};

void setup() {
  pinMode(latchPin1, OUTPUT); pinMode(clockPin1, OUTPUT); pinMode(dataPin1, OUTPUT);
  pinMode(latchPin2, OUTPUT); pinMode(clockPin2, OUTPUT); pinMode(dataPin2, OUTPUT);
  // Bitmap wissen
  for (int row = 0; row < 8; row++)
    for (int zone = 0; zone <= maxZoneIndex; zone++)
      bitmap[row][zone] = 0;
}

void RefreshDisplay() {
  for (int row = 0; row < 8; row++) {
    int rowbit = 1 << row;
    digitalWrite(latchPin2, LOW);
    shiftOut(dataPin2, clockPin2, MSBFIRST, rowbit);
    digitalWrite(latchPin1, LOW);
    for (int zone = maxZoneIndex; zone >= 0; zone--)
      shiftOut(dataPin1, clockPin1, MSBFIRST, bitmap[row][zone]);
    digitalWrite(latchPin1, HIGH);
    digitalWrite(latchPin2, HIGH);
    delayMicroseconds(300);
  }
}

void Plot(int col, int row, bool isOn) {
  int zone = col / 8;
  int colBitIndex = col % 8;
  byte colBit = 1 << colBitIndex;
  if (isOn) bitmap[row][zone] |= colBit;
  else bitmap[row][zone] &= ~colBit;
}

void XProcess() {
  for (int charIndex = 0; charIndex < (sizeof(msg) - 1); charIndex++) {
    int alphabetIndex = msg[charIndex] - '@';
    if (alphabetIndex < 0) alphabetIndex = 0;
    for (int col = 0; col < 7; col++) { // 5 kolommen teken + 2 spatie
      for (int row = 0; row < 8; row++) {
        bool isOn = 0;
        if (col < 5) isOn = bitRead(alphabets[alphabetIndex][col], 7 - row) == 1;
        Plot(numCols - 1, row, isOn); // Teken op rechterkolom
      }
      for (int refreshCount = 0; refreshCount < scrollspeed; refreshCount++)
        RefreshDisplay();
      // Bitmap één kolom naar links schuiven
      for (int row = 0; row < 8; row++) {
        for (int zone = 0; zone < numZones; zone++) {
          bitmap[row][zone] >>= 1;
          if (zone < maxZoneIndex)
            bitWrite(bitmap[row][zone], 7, bitRead(bitmap[row][zone + 1], 0));
        }
      }
    }
  }
}

void loop() { XProcess(); }

Resultaat

Een werkende 48×8 scrollende matrix die berichten weergeeft. Succesvol afgerond!

Bedankt! :)

Schema's

Bouw een 48x8 scrollende LED-matrix met Arduino – Stapsgewijze handleiding

Productieproces

  1. Bouw een indrukwekkend monitor Ambilight-systeem met Arduino
  2. Een LED bedienen via Bluetooth met Arduino – Eenvoudige DIY Handleiding
  3. Interactieve LED-matrix deurdisplay met PIR-bewegingsensor – Arduino vakantiegroet
  4. Bouw een Slimme Arduino Vierpotige Robot: Stap-voor-Stap Handleiding
  5. Naadloze LED-dimmer met Bolt IoT en Arduino UNO
  6. Arduino Flip Clock met 8×8 LED Matrix – DIY Real-Time Clock Project
  7. Arduino RGB LED Kleurmixer – Beginner-vriendelijk DIY-project
  8. Een 8×8 LED-matrix beheersen met Arduino Uno: Stap-voor-stap handleiding
  9. Bouw een compacte FM-radio met Arduino Nano en RDA5807M
  10. Outdoor DMX-ingeschakelde RGB LED Flodlights – Betaalbaar & Hoog Presterend
  11. DIY LED Roulette-spel – Bouw Eenpersoons Arcade Met Arduino Nano