Hallo,
ich bin neu hier und auch relativ neu mit Arduino & Co.
Ich habe mir vor einiger Zeit Matrix LEDs mit MAX7219 bestellt, 6 x 4in1.
Ich will mir einen Scanner ala Knight Rider 2008 bauen.
Den Hauptteil davon habe ich soweit zum Laufen bekommen. Siehe Video-Link (Beispiel mit 32x8)
https://videobin.org/+19m3/1fvt.html
Nun würde ich gerne am Anfang und am Ende dieses Balken noch eine Art Spitze hinzufügen, damit es am Schluss ein wenig besser aussieht. Dass bekomme ich aber mit meinen Kenntnissen derzeit nicht hin. Ich betreibe das momentan an einem Uno.
Für Tipps dazu wäre ich sehr dankbar.
Hier der Stretch:
#include <MD_MAX72xx.h>
#define HARDWARE_TYPE MD_MAX72XX::FC16_HW
#define MAX_DEVICES 4
const int CLK_PIN = 13; // Uno 13, Nano D13
const int DATA_PIN = 11; // Uno 11, Nano D11
const int CS_PIN = 10; // Uno 10, Nano D10
// SPI hardware interface
MD_MAX72XX mx = MD_MAX72XX(HARDWARE_TYPE, CS_PIN, MAX_DEVICES);
// Wartezeit zwischen Aktionen
#define DELAYTIME 150 // in Millisekunden
const int maxLeds = mx.getColumnCount()-1; // ermittle maximale Anzahl LED-Spalten, je nach eingestellter Anzahl an Modulen
const int halbMaxLeds = maxLeds / 2; // Berechne die Mitte für LED-Spalte 0 bis halb
const int halbMaxLeds1 = maxLeds / 2 + 1; // Berechne die Mitte für LED-Spalte halb bis max
int x;
int y;
void scan() { // LED-Spalten nacheinander ab der Mitte einschalten
for (x = halbMaxLeds1, y = halbMaxLeds; x <= maxLeds && y >= 0; x++, y--)
{
mx.setColumn(x, 0xff);
mx.setColumn(y, 0xff);
delay(DELAYTIME);
}
}
void scan1() { // LED-Spalten nacheinander ab der Mitte ausschalten
for (x = halbMaxLeds1, y = halbMaxLeds; x <= maxLeds && y >= 0; x++, y--)
{
mx.setColumn(x, 0x00);
mx.setColumn(y, 0x00);
delay(DELAYTIME);
}
}
void scan2() { // LED-Spalten nacheinander ab den Enden einschalten
for (x = maxLeds, y = 0; x >= halbMaxLeds && y <= halbMaxLeds1; x--, y++)
{
mx.setColumn(x, 0xff);
mx.setColumn(y, 0xff);
delay(DELAYTIME);
}
}
void scan3() { // LED-Spalten nacheinander ab den Enden ausschalten
for (x = maxLeds, y = 0; x >= halbMaxLeds && y <= halbMaxLeds1; x--, y++)
{
mx.setColumn(x, 0x00);
mx.setColumn(y, 0x00);
delay(DELAYTIME);
}
}
void scanner() {
scan();
scan1();
delay(300);
scan2();
scan3();
delay(300);
}
void setup()
{
Serial.begin(9600);
Serial.println(maxLeds);
Serial.println(halbMaxLeds);
Serial.println(halbMaxLeds1);
mx.begin();
mx.control(MD_MAX72XX::INTENSITY, 15);
mx.clear();
}
void loop()
{
scanner();
}
Desweiteren soll das Ganze später in ein Gehäuse gepackt werden und mit einer durchsichtigen "Platte" an der Sichtseite abgedeckt werden. Diese Platte soll von aussen sehr dunkel sein und das Licht der einzelnen LEDs verschwimmen lassen, so dass man von aussen die einzelnen LEDs nicht mehr erkennen kann. (Ich dachte an Milchglass-Plexi mit dunkler Tönungsfolie)
Wenn dafür jemand eine Idee hat, wäre ich auch dankbar.