Hallo,
ich fange gerade ein neues Projekt mit einem ProMini und LED-Matrixanzeigen an. Der Sketch ist bisher nur
ein Test und ist vollständig :
#define DATA_PIN 7
#define CS_PIN 8
#define CLK_PIN 9
#define NUM_MAX 16
#include <MD_Parola.h>
#include <MD_MAX72xx.h>
#include <SPI.h>
//--------------------------------------------------------------------------------------------------
// Statische Variablen
//--------------------------------------------------------------------------------------------------
uint64_t sendQueue; // Variable Sendque
#define HARDWARE_TYPE MD_MAX72XX::FC16_HW
#define MAX_DEVICES 16
#define SPEED_TIME 25
#define PAUSE_TIME 1000
MD_Parola p = MD_Parola(HARDWARE_TYPE, DATA_PIN, CLK_PIN, CS_PIN, MAX_DEVICES);
#define ZAEHLER2 0
#define SAUF 1
#define ZAEHLER1 2
//--------------------------------------------------------------------------------------------------
void setup()
{
uint8_t channel;
uint8_t queue;
uint8_t cnt;
pinMode(13,OUTPUT);
for (cnt = 0 ; cnt < 10 ; cnt++)
{
digitalWrite(13,!digitalRead(13));
delay(250);
}
digitalWrite(13,LOW);
p.begin(3);
p.setInvert(false);
p.setZone(ZAEHLER2,0,3);
p.setZone(SAUF,4,11);
p.setZone(ZAEHLER1,12,15);
p.displayZoneText(ZAEHLER2,"4 Pkt",PA_CENTER,SPEED_TIME, PAUSE_TIME,PA_SCROLL_LEFT);
p.displayZoneText(SAUF,"AUSTRINKEN",PA_CENTER,SPEED_TIME, PAUSE_TIME,PA_SCROLL_LEFT);
p.displayZoneText(ZAEHLER1,"1 Pkt",PA_CENTER,SPEED_TIME, PAUSE_TIME,PA_SCROLL_LEFT);
}
int flag = 0;
void loop()
{
while (!p.getZoneStatus(0)) p.displayAnimate();
while (!p.getZoneStatus(1)) p.displayAnimate();
while (!p.getZoneStatus(2)) p.displayAnimate();
delay(5000);
digitalWrite(13,!digitalRead(13));
switch(flag)
{
case 0:
{
p.displayClear(SAUF);
p.displayClear(ZAEHLER2);
p.displayClear(ZAEHLER1);
p.displayZoneText(ZAEHLER2,"4 Pkt",PA_CENTER,SPEED_TIME, PAUSE_TIME,PA_SCROLL_LEFT);
p.displayZoneText(ZAEHLER1,"1 Pkt",PA_CENTER,SPEED_TIME, PAUSE_TIME,PA_SCROLL_LEFT);
p.displayZoneText(SAUF,"AUSTRINKEN!",PA_CENTER,SPEED_TIME, PAUSE_TIME,PA_SCROLL_LEFT);
}
break;
case 1:
{
p.displayClear(SAUF);
p.displayClear(ZAEHLER2);
p.displayClear(ZAEHLER1);
p.displayZoneText(ZAEHLER2,"9 Pkt",PA_CENTER,SPEED_TIME, PAUSE_TIME,PA_SCROLL_LEFT);
p.displayZoneText(ZAEHLER1,"12 Pkt",PA_CENTER,SPEED_TIME, PAUSE_TIME,PA_SCROLL_LEFT);
p.displayZoneText(SAUF,"NACHLADEN!",PA_CENTER,SPEED_TIME, PAUSE_TIME,PA_SCROLL_LEFT);
}
break;
case 2:
{
p.displayClear(SAUF);
p.displayClear(ZAEHLER2);
p.displayClear(ZAEHLER1);
p.displayZoneText(ZAEHLER2,"3 Pkt",PA_CENTER,SPEED_TIME, PAUSE_TIME,PA_SCROLL_LEFT);
p.displayZoneText(ZAEHLER1,"2 Pkt",PA_CENTER,SPEED_TIME, PAUSE_TIME,PA_SCROLL_LEFT);
p.displayZoneText(SAUF,"Marcels Saufspiel",PA_CENTER,SPEED_TIME, PAUSE_TIME,PA_SCROLL_LEFT);
}
break;
}
flag++;
if (flag == 3) flag = 0;
}
Der zeigt in 3 Bereichen von 4 Display verschiedene Strings an, macht Pause und zeigt neue an.
Ich hatte das ganze zuerst auf einen ProMini 3.3V 8Mhz geflasch und es funktionierte.
Aus Faulheit habe ich einen FTDI mit 5V benutzt. Ich war immer der Meinung ein 328 die 5V immer schluckt
und halt für 3.3V halt maximal 8Mhz machen kann.
Ich habe das auch eine ganze Zeit als Stablitätstest mit 5V laufen lassen. In der endgültigen Schaltung soll
der Prozessor allerdings wirklich mit 3.3V laufen weil da noch ein nrf24l01 angeschlossen werden soll der ja nur
3.3V ab kann. Auf einmal ging mein Aufbau nicht mehr. Das initiale Blinken der LED 13 war zu sehen und
dann war schluss ! Einen anderen Pro Mini 3.3V genommen. Das Selbe nur das das 5 sekündige Blinken
von LED13 zu sehen war. Noch einen Probiert. Das initiale Blinken OK und dann nur noch flimmern auf LED13.
Einen 5V pro Mini genommen → alles OK.
Alle 3 Pro minis 3.3 mal mit einem einfachen Sketch ausprobiert → scheinen zu gehen. Eine LED an immerhin 8
Ports mal blinken lassen.
Dann mal vernünftig aufgebaut → Spannungswandler 3.3V vor den Pro mini → Masse zusammen und die 5V auf die
LEDs. Der 5V Pro mini macht alles richtig sowohl mit 3.3V als auch mit 5V.
Die 3 anderen Pro minis funktionieren auch hier nicht !
Weiter im Takt → einen neuen 3.3V 8Mhz geflascht. Der funktioniert mit 3.3V am Prozessor und 5 an den LEDs.
Habe ich die 3 anderen 3.3V kaputt gemacht ist hier die Frage ? Ich habe sie der Reihe nach in eine andere
Schaltung gepackt die auch einen nrf benutzt und fast alle I/Os benutzt, sowie Stromsparen und Sleepmode.
(Das ist eine Funkfernbedienung für ein spezielles Projekt).
Alle 3 funktionieren einwandfrei !!
Habe ich die jetzt gehimmelt oder nicht ? Oder ist es Zufall das manchmal ein 8Mhz/3.3V läuft.
Ist die MD_MAX72xx nur für >8Mhz tauglich ? (habe dazu nichts gefunden).
Ich hoffe dieses Chaos einigermaßen verständlich rübergebracht zu haben.
Ulli