MICHAEL GARDI
Published © CC BY-NC-SA

A Simple 5x7 NeoPixel Display

I needed a 5x7 LED display for a Think-a-Tron reproduction project. Unable to find one commercially I decided to make my own.

IntermediateFull instructions provided4 hours678
A Simple 5x7 NeoPixel Display

Things used in this project

Hardware components

Arduino Nano R3
Arduino Nano R3
Used for testing.
×1

Story

Read more

Custom parts and enclosures

LED+Array+Box.stl

LED++Array+Diffuser.stl

Code

Code snippet #1

Plain text
#include "FastLED.h"

#define NUM_LEDS 35
#define LEDS_PIN 6
CRGB leds[NUM_LEDS];

int A[35] = {0,0,1,1,1,1,1,
             0,1,0,0,1,0,0,
             1,0,0,0,1,0,0,
             0,1,0,0,1,0,0,
             0,0,1,1,1,1,1};

int B[35] = {1,1,1,1,1,1,1,
             1,0,0,1,0,0,1,
             1,0,0,1,0,0,1,
             1,0,0,1,0,0,1,
             0,1,1,0,1,1,0}; 

int C[35] = {0,1,1,1,1,1,0,
             1,0,0,0,0,0,1,
             1,0,0,0,0,0,1,
             1,0,0,0,0,0,1,
             0,1,0,0,0,1,0};

int T[35] = {1,0,0,0,0,0,0,
             1,0,0,0,0,0,0,
             1,1,1,1,1,1,1,
             1,0,0,0,0,0,0,
             1,0,0,0,0,0,0};

int F[35] = {1,1,1,1,1,1,1,
             1,0,0,1,0,0,0,
             1,0,0,1,0,0,0,
             1,0,0,1,0,0,0,
             1,0,0,0,0,0,0};

void setup() {
  FastLED.addLeds<NEOPIXEL, LEDS_PIN>(leds, NUM_LEDS);
  Serial.begin(115200);
  Serial.println("5x7 LED Array");
  FastLED.setBrightness(32);

  for (int i = 0; i < NUM_LEDS; i++) {
    leds[i] = CRGB::White;
    FastLED.show();
    delay (100); 
    leds[i] = CRGB::Black;
    FastLED.show();
  }
}

void loop() {
  showLetter(A);
  delay(1000);
  showLetter(B);
  delay(1000);
  showLetter(C);
  delay(1000);
  showLetter(T);
  delay(1000);
  showLetter(F);
  delay(1000);
  showRandom();
}

void showLetter(int letter[]){

  for (int i = 0; i < NUM_LEDS; i++) {
    if (letter[i] == 1) {
      leds[i] = CRGB::White; 
    } else {
      leds[i] = CRGB::Black; 
    }
  }
  FastLED.show();
}

void showRandom() {
  for (int count = 0; count < 100; count++) {
    for (int i = 0; i < NUM_LEDS; i++) {
      if (random(3) == 0) {
        leds[i] = CRGB::Blue;
      } else {
        leds[i] = CRGB::Black; 
      }
    }
    FastLED.show();
    delay(50);
  }
}

Code snippet #2

C/C++
#include "FastLED.h"

#define NUM_LEDS 35
#define LEDS_PIN 6
CRGB leds[NUM_LEDS];

int A[35] = {0,0,1,1,1,1,1,
             0,1,0,0,1,0,0,
             1,0,0,0,1,0,0,
             0,1,0,0,1,0,0,
             0,0,1,1,1,1,1};

int B[35] = {1,1,1,1,1,1,1,
             1,0,0,1,0,0,1,
             1,0,0,1,0,0,1,
             1,0,0,1,0,0,1,
             0,1,1,0,1,1,0}; 

int C[35] = {0,1,1,1,1,1,0,
             1,0,0,0,0,0,1,
             1,0,0,0,0,0,1,
             1,0,0,0,0,0,1,
             0,1,0,0,0,1,0};

int T[35] = {1,0,0,0,0,0,0,
             1,0,0,0,0,0,0,
             1,1,1,1,1,1,1,
             1,0,0,0,0,0,0,
             1,0,0,0,0,0,0};

int F[35] = {1,1,1,1,1,1,1,
             1,0,0,1,0,0,0,
             1,0,0,1,0,0,0,
             1,0,0,1,0,0,0,
             1,0,0,0,0,0,0};

void setup() {
  FastLED.addLeds<NEOPIXEL, LEDS_PIN>(leds, NUM_LEDS);
  Serial.begin(115200);
  Serial.println("5x7 LED Array");
  FastLED.setBrightness(32);

  for (int i = 0; i < NUM_LEDS; i++) {
    leds[i] = CRGB::White;
    FastLED.show();
    delay (100); 
    leds[i] = CRGB::Black;
    FastLED.show();
  }
}

void loop() {
  showLetter(A);
  delay(1000);
  showLetter(B);
  delay(1000);
  showLetter(C);
  delay(1000);
  showLetter(T);
  delay(1000);
  showLetter(F);
  delay(1000);
  showRandom();
}

void showLetter(int letter[]){

  for (int i = 0; i < NUM_LEDS; i++) {
    if (letter[i] == 1) {
      leds[i] = CRGB::White; 
    } else {
      leds[i] = CRGB::Black; 
    }
  }
  FastLED.show();
}

void showRandom() {
  for (int count = 0; count < 100; count++) {
    for (int i = 0; i < NUM_LEDS; i++) {
      if (random(3) == 0) {
        leds[i] = CRGB::Blue;
      } else {
        leds[i] = CRGB::Black; 
      }
    }
    FastLED.show();
    delay(50);
  }
}

Test 5x7 NeoPixel LED

Arduino
Used to ensure that the LED Panel was working correctly.
#include "FastLED.h"

#define NUM_LEDS 35
#define LEDS_PIN 6
CRGB leds[NUM_LEDS];

int A[35] = {0,0,1,1,1,1,1,
             0,1,0,0,1,0,0,
             1,0,0,0,1,0,0,
             0,1,0,0,1,0,0,
             0,0,1,1,1,1,1};

int B[35] = {1,1,1,1,1,1,1,
             1,0,0,1,0,0,1,
             1,0,0,1,0,0,1,
             1,0,0,1,0,0,1,
             0,1,1,0,1,1,0}; 

int C[35] = {0,1,1,1,1,1,0,
             1,0,0,0,0,0,1,
             1,0,0,0,0,0,1,
             1,0,0,0,0,0,1,
             0,1,0,0,0,1,0};

int T[35] = {1,0,0,0,0,0,0,
             1,0,0,0,0,0,0,
             1,1,1,1,1,1,1,
             1,0,0,0,0,0,0,
             1,0,0,0,0,0,0};

int F[35] = {1,1,1,1,1,1,1,
             1,0,0,1,0,0,0,
             1,0,0,1,0,0,0,
             1,0,0,1,0,0,0,
             1,0,0,0,0,0,0};

void setup() {
  FastLED.addLeds<NEOPIXEL, LEDS_PIN>(leds, NUM_LEDS);
  Serial.begin(115200);
  Serial.println("5x7 LED Array");
  FastLED.setBrightness(32);

  for (int i = 0; i < NUM_LEDS; i++) {
    leds[i] = CRGB::White;
    FastLED.show();
    delay (100); 
    leds[i] = CRGB::Black;
    FastLED.show();
  }
}

void loop() {
  showLetter(A);
  delay(1000);
  showLetter(B);
  delay(1000);
  showLetter(C);
  delay(1000);
  showLetter(T);
  delay(1000);
  showLetter(F);
  delay(1000);
  showRandom();
}

void showLetter(int letter[]){

  for (int i = 0; i < NUM_LEDS; i++) {
    if (letter[i] == 1) {
      leds[i] = CRGB::White; 
    } else {
      leds[i] = CRGB::Black; 
    }
  }
  FastLED.show();
}

void showRandom() {
  for (int count = 0; count < 100; count++) {
    for (int i = 0; i < NUM_LEDS; i++) {
      if (random(3) == 0) {
        leds[i] = CRGB::Blue;
      } else {
        leds[i] = CRGB::Black; 
      }
    }
    FastLED.show();
    delay(50);
  }
}

Credits

MICHAEL GARDI
10 projects • 6 followers
A retired software developer, who appreciates having the time to make whatever the heck he wants.
Contact

Comments

Please log in or sign up to comment.