
Die Idee ist ein wiederverwendbares elektronisches Schild für Demonstrationen zu erstellen, das Text auf verschiedene weise anzeigen kann.
Benötigt wird:
LED Band mit WS2812 Chips(Je nachdem wie groß das Schild werden soll)
1x Arduino Nano
1x Powerbank oder andere Stromquelle für den Arduino
Hier muss beachtet werden das je mehr LEDs desto größer/leistungsfähiger muss die Stromquelle sein.
Und alles was man sonst noch für ein Demo Schild braucht:
Pappe oder eine andere Grundlage
Stab, Klebeband, Kabelbinder
Ich habe ein LED Band gekauft mit 30leds/m ⋅ 5m lang welches ich in Schlangenlinie auf dem Schild festgeklebt habe.
Daraus ergibt sich eine Matrix von 18x8 auf einer Fläche von 60cm x 30cm.
Die Auflösung ist dadurch relativ grob aber zum Text anzeigen geht es.
Dafür verwende ich die Bibliothek FastLED die sich in der Arduino IDE installieren lässt. Und zwei weitere Bibliotheken von Aaron Liddiment die man auf Github herunterladen kann:
https://github.com/AaronLiddiment/RGBLEDS
Da diese leider nicht mehr weiterentwickelt wird steht noch weitere Entwicklung an, es gibt noch eine Seite auf Github mit weiteren WS2812 Bibliotheken:
https://github.com/PabloCastellano/awesome-ws2812
Zum Schutz und als Kontrast habe ich das ganze Schild in einen grauen Müllsack eingepackt.
Hier mein Code für die Arduino IDE der aus einem Beispiel der FastLED Library entnommen ist:
#include
#include
#include
#include
// Change the next 6 defines to match your matrix type and size
#define LED_PIN 5
#define COLOR_ORDER GRB
#define CHIPSET WS2812B
#define MATRIX_WIDTH -18
#define MATRIX_HEIGHT 8
#define MATRIX_TYPE HORIZONTAL_ZIGZAG_MATRIX
cLEDMatrix leds;
cLEDText ScrollingMsg;
const unsigned char TxtDemo[] = { EFFECT_FRAME_RATE "\x01" EFFECT_SCROLL_LEFT EFFECT_RGB "\xff\x00\x00" " Keine AFD"
EFFECT_HSV_CV "\x00\xff\xff\x40\xff\xff" " Waehlt Liebe Nie wieder ist "
EFFECT_FRAME_RATE "\x04" "JETZT"
EFFECT_FRAME_RATE "\x00" EFFECT_SCROLL_UP "000000000000000000000000000000"};
void setup()
{
FastLED.addLeds(leds[0], leds.Size());
FastLED.setBrightness(64);
FastLED.clear(true);
delay(500);
FastLED.showColor(CRGB::Red);
delay(1000);
FastLED.showColor(CRGB::Lime);
delay(1000);
FastLED.showColor(CRGB::Blue);
delay(1000);
FastLED.showColor(CRGB::Yellow);
delay(1000);
FastLED.show();
ScrollingMsg.SetFont(MatriseFontData);
ScrollingMsg.Init(&leds, leds.Width(), ScrollingMsg.FontHeight() + 1, 0, 0);
ScrollingMsg.SetText((unsigned char *)TxtDemo, sizeof(TxtDemo) - 1);
ScrollingMsg.SetTextColrOptions(COLR_RGB | COLR_SINGLE, 0xff, 0x00, 0xff);
}
void loop()
{
if (ScrollingMsg.UpdateText() == -1)
ScrollingMsg.SetText((unsigned char *)TxtDemo, sizeof(TxtDemo) - 1);
else
FastLED.show();
delay(70);
}
