Sketch erweitern mit Code


Mein Kühlschrank

Die Peristaltikpumpe selber

Die Zeitanzeige (läuft noch nicht wegen Display, ist aber in Arbeit)

Zeitanzeige mit neuem Display.
IMG_20211030_232836
Es geht voran

Mein Motorträger und Motor

Der Ausgiesser(Oben)

Der Ausgiesser (unten) Dazwischen kommt milchiges Plexiglas

Noch ein paar Pumpenteile (insgesamt 3)

Temparaturanzeige (fertig)

Nur mal ein paar Bilder vorab

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.

Hier habe ich mich beteiligt: HILFE !!! Cocktailmaschine mit Arduino Uno

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.

Bist ein Guter - so Schluß für heute.

Ü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

Das ist in den vielen .cpp das zusammenfassen der cases auf ein break.
Das lässt sich ändern - ist aber evtl. Fleissarbeit.

@combie hatte mir das mal erläutert:

War nicht so schwierig :blush:

MD_Parola_src.zip (93,0 KB)

Hallo an alle,

habe mal (Schnell) das Schema von dem cocktailautomaten mit Fritzing erstellt. Hoffe , man kann alles erkennen.

Gruß Lars

So geht das nicht.

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

Hallo 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

Und das HC-05, bleibt das jetzt an SERIAL0?

Nein ,
habe erstmal den IST-Zustand erstellt. Werde das , wenn es dann funktioniert, Umstellen.
Bin noch bei Familie zu Besuch, mache das dann nachher :wink:

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.

Grüße Uwe

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 :laughing:

Belaste ihn irgend wie mit 1A, je nach Wattzahl kann er spinen.

Werde ich ausprobieren. Danke für den Hinweis.

Hallo ,

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;
}