So I set about making the "Answer Panel" for my Think-a-Tron 2020. Here is what the original looks like.
I was so impressed with the spinning wheel implementation of the original, that for a while I considered doing something similar, but motor driven perhaps. At the end of the day though I decided to replace what I initially thought was an LED array with an actual 5x7 LED array.
The panel on the original is 50 mm (2") wide and 70 mm (2 3/4") high and I wanted mine to be the same size. I searched for a suitably sized LED array but came up empty. I was about to start creating a custom PCB when I found these:
NeoPixel compatible, WS2812B addressable, smart RGB LED pixel lights. They are individual units but ship attached in a 10x10 grid as can be seen in the picture above. The good news for me is that each pixel light is about 10 mm in diameter which is perfect for my purposes. With a little careful bending it was easy to snap off a 5x7 block of these. As shipped they are not connected so I had to wire the individual units in my 5x7 array together.
I used some 30 awg "wire wrapping" wire that I had lying around from the old days ;-) It was a lot of pads to wire but not too hard. The pixel lights shipped with a three wire connector that I attached.
The next order of business was to make a diffuser for the lights. This is what I came up with.
It's all one piece. I printed the black backing panel, paused the print, then finished with some "transparent" PLA filament. Not quite as clear as the original, but it gets the job done.
I printed a case.
And when it was all put together here is what it looked like.
For testing purposes I connected the display to an Arduino Nano and wrote a short sketch using the FastLED library.
#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);
}
}
And here is my "real" 5x7 Answer Panel in action.
Discussions
Become a Hackaday.io Member
Create an account to leave a comment. Already have an account? Log In.