Intensiver habe ich mich 2015 mit dieser Thematik beschäftigt, da ist mir MD_Parola als sehr animationsfreudig aufgefallen. Je mehr die Bibliothek kann, desto komplizierter ist sie in der Anwendung, das ist halt der Nachteil.
"Hallo Welt!" getestet mit einem Mega2560 mit Hardware SPI:
#include <MD_Parola.h> // Version 3.5.6 zu installieren mittels Bibliotheksmanager
#include <MD_MAX72xx.h> // Version 3.3.0 zu installieren mittels Bibliotheksmanager
#include <SPI.h>
// Define the number of devices we have in the chain and the hardware interface
// NOTE: These pin numbers will probably not work with your hardware and may
// need to be adapted
#define HARDWARE_TYPE MD_MAX72XX::FC16_HW
#define MAX_DEVICES 4
/* UNO
#define CS_PIN 10
#define CLK_PIN 13
#define DATA_PIN 11
*/
// Mega2560
#define CS_PIN 53
#define CLK_PIN 52
#define DATA_PIN 51
// Hardware SPI connection
MD_Parola P = MD_Parola(HARDWARE_TYPE, CS_PIN, MAX_DEVICES);
// Arbitrary output pins
//MD_Parola P = MD_Parola(HARDWARE_TYPE, DATA_PIN, CLK_PIN, CS_PIN, MAX_DEVICES);
void setup(void)
{
P.begin();
}
void loop(void)
{
static uint32_t vorhin = millis();
static bool flag = false;
if (millis() - vorhin >= 1000)
{
vorhin = millis();
flag = !flag;
if (flag)
{
P.displayText("Hallo", PA_CENTER, 0, 0, PA_PRINT, PA_NO_EFFECT);
} else {
char t[] = {"Welt!"};
Serial.println(t);
P.displayText(t, PA_CENTER, 0, 0, PA_PRINT, PA_NO_EFFECT);
}
P.displayAnimate();
}
}
Leider wirft die Bibliothek Warnungen "this statement may fall through" raus, die Du erstmal ignorieren mußt.
Du bist ja echt schnell - ich bin leider ausserhalb....
Ja, da in #21 war schon mal ein Ansatz - ich weiss jetzt auch, was aus dem switch case geworden ist. Die Baustelle war eine andere und seit #48 leider nicht mehr weiter verfolgt.
Über das Parola habe ich schon gelesen , ist echt ganz gut gemacht. Würde das ja auch benutzen. Hat viele verschiedene Beispiele dabei. Werde mich damit morgen mehr beschäftigen.
so, werde jetzt heia machen. Danke an euch für diese tolle Unterstützung. Mit euch werde ich das alles noch ans laufen kriegen. werde nachher wieder reinschauen und berichten. Bis dahin , Gute Nacht
Die Relais brauchen 70mA. die 5V des Arduino können nicht den Strom für alle Relais gleichzeitig liefern. Bei USB Versorgung ca 6 Stück, bei 9V über Vin oder Netzteilbuschse nur 2Relais.
Grüße Uwe
jedes Relais wird beim mixen nacheinander angesprochen. Nichts ist da gleichzeitig , deswegen kann es doch funktionieren. Habe auch für die 5 V ein PC-Netzteil dran , wie auch für die 12V.
Gruß Lars
Ich kann nur das sehen was Du zeichnest.
Achtung einige PC-Netzteile brauchen eine Mindestlast damit sie stabiel funktionieren. Ein unbelastetes Netzteil kann schwingen und sich ausschalten.
ah, ok ,danke für den Hinweis , wollte mir ein Barebone-Netzteil einbauen weil es schlank ist. Was meinst du , wenn ich den Arduino MEGA mit 5V ständig mit einem ATX-Netzteil laufen lasse + 2 Nanos oder 1 Nano und ein UNO? Würde da soviel Leistung abgerufen werden , um es stabil laufen zu lassen? Habe z,Z, nur ein ATX.
@Whandall ja , die sind sehr schnell , da es sich aber um Cola oder Sprite zum auffüllen handelt, ist diese Geschwindigkeit schon OK. Nachteil ist , bei der Geschwindigkeit fängt man an , Flaschen in 10 minuten-Takt zu wechseln
ich bleibe ja erstmal beim Cocktailsketch, der ist oberste Priorität.
Aber meine Frage ist, kann ich mit einem UNO die 2 1,8" Displays betreiben und ein Adafruit LED-Ring? Würde dann die 3 Nanos gegen ein UNO austauschen.
Versuch doch zunächst die Displays und die LEDs auch vom Mega aus zu steuern,
ich sehe keinen Grund, warum das nicht gehen sollte
(den Ausschank müsstest du schon ent-delayen, aber das solltest du sowieso).
Ich traue mich da nicht so recht ran , war froh , das ich den Sketch vom Cocktailmaker schon ohne Fehler mit Aufbau betreiben konnte. Hatte schon mal versucht , den LED-Ring einzubauen in den Sketch, ging voll daneben. Die zusammenhänge sind mir teilweise auch schon geläufig, aber allein durch lesen kriege ich das nicht so hin. Kann es probieren , habe ja ein Testsketch.
Du meinst das hier?
void Mix(int DelayTimeVodka, int DelayTimeCointreau, int DelayTimeCranberryJuice, int DelayTimeSprite, int DelayTimeLemonJuice, int DelayTimeSugarWater, int DelayTimeBlueCur, int DelayTimeGin, int DelayTimeBacardi, int DelayTimeWeinbrand, int DelayTimeCola ) {
state = 0;
delay(800);
digitalWrite(Vodka, LOW);
delay(DelayTimeVodka);
digitalWrite(Vodka, HIGH);
delay(TimeBetweenPours);
digitalWrite(Cointreau, LOW);
delay(DelayTimeCointreau);
digitalWrite(Cointreau, HIGH);
delay(TimeBetweenPours);
digitalWrite(CranberryJuice, LOW);
delay(DelayTimeCranberryJuice);
digitalWrite(CranberryJuice, HIGH);
delay(TimeBetweenPours);
digitalWrite(Sprite, LOW);
delay(DelayTimeSprite);
digitalWrite(Sprite, HIGH);
delay(TimeBetweenPours);
digitalWrite(LemonJuice, LOW);
delay(DelayTimeLemonJuice);
digitalWrite(LemonJuice, HIGH);
delay(TimeBetweenPours);
digitalWrite(SugarWater, LOW);
delay(DelayTimeSugarWater);
digitalWrite(SugarWater, HIGH);
delay(TimeBetweenPours);
digitalWrite(BlueCur, LOW);
delay(DelayTimeBlueCur);
digitalWrite(BlueCur, HIGH);
delay(TimeBetweenPours);
digitalWrite(Gin, LOW);
delay(DelayTimeGin);
digitalWrite(Gin, HIGH);
delay(TimeBetweenPours);
digitalWrite(Bacardi, LOW);
delay(DelayTimeBacardi);
digitalWrite(Bacardi, HIGH);
delay(TimeBetweenPours);
digitalWrite(Weinbrand, LOW);
delay(DelayTimeWeinbrand);
digitalWrite(Weinbrand, HIGH);
delay(TimeBetweenPours);
digitalWrite(Cola, LOW);
delay(DelayTimeCola);
digitalWrite(Cola, HIGH);
delay(TimeBetweenPours);
Serial.println("Cocktail ist fertig!");
state = 0;
}