Sketch erweitern mit Code

Hallo an alle,

ich habe ein Sketch für mein Automaten

[code]
// created by Seafoxc
#include <SoftwareSerial.h>
SoftwareSerial EEBlue(0, 1); // RX | TX

//defining the pins used for each drink, you can changes this depending how you connect the pumps and the drinks.

int Vodka = 2;
int Cointreau = 3;
int CranberryJuice = 4;
int Sprite = 5;
int LemonJuice = 6;
int SugarWater = 7;
int BlueCur = 8;
int Gin = 9;
int Bacardi = 10;
int Weinbrand = 11;
int Cola = 12;



int state = 0;
// how much time there is between switching to the next pump.
int TimeBetweenPours = 500;


void setup()
{
 
  Serial.begin(9600); 
  Serial.println("The bluetooth gates are open.\n Connect to HC-05 from any other bluetooth device with 1234 as pairing key!");

  // Set pin 2-12 to output pins to drive the relay board
  pinMode(2, OUTPUT); 
  pinMode(3, OUTPUT); 
  pinMode(4, OUTPUT); 
  pinMode(5, OUTPUT); 
  pinMode(6, OUTPUT); 
  pinMode(7, OUTPUT); 
  pinMode(8, OUTPUT); 
  pinMode(9, OUTPUT); 
  pinMode(10, OUTPUT); 
  pinMode(11, OUTPUT); 
  pinMode(12, OUTPUT);
  
  
  
  
  
  
// My relayboard is a "low true" board. So setting the output to low energize the relay's. You don't want that they all switch on when powering on the cocktailmaker...

  digitalWrite(2,HIGH);
  digitalWrite(3,HIGH);
  digitalWrite(4,HIGH);
  digitalWrite(5,HIGH);
  digitalWrite(6,HIGH);
  digitalWrite(7,HIGH);
  digitalWrite(8,HIGH);
  digitalWrite(9,HIGH);
  digitalWrite(10,HIGH);
  digitalWrite(11,HIGH);
  digitalWrite(12,HIGH);
  
}
 
void loop()

{
if(Serial.available() > 0){ // Checks whether data is comming from the serial port
    state = Serial.read(); // Reads the data from the serial port
    Serial.println(state);
}

// Cocktails:


//Vodka sprite
if (state == 'a') {
  Serial.println("Vodka Sprite wird gemacht");
  Mix(3000,0,0,0,5000,0,0,0,0,0,0); // Vodka, Triple Sec, Cranberry juice, Sprite, Lime juice, Sugar water, Blue Curacao, Gin, Bacardi, Weinbrand, Cola
 }

// Blue Lagoon
if (state == 'b') {
  Serial.println("Blue Lagoon wird gemacht");
  Mix(2000,0,0,5000,1800,1000,1800,0,0,0,0); // Vodka, Triple Sec, Cranberry juice, Sprite, Lime juice, Sugar water, Blue Curacao, Gin, Bacardi, Weinbrand, Cola
 }
  

// Cosmo
if (state == 'c') {
  Serial.println("Cosmo wird gemacht");
  Mix(2500,1500,3800,0,1200,1200,0,0,0,0,0); // Vodka, Triple Sec, Cranberry juice, Sprite, Lime juice, Sugar water, Blue Curacao, Gin, Bacardi, Weinbrand, Cola
 }

// Lemon drop
if (state == 'd') {
  Serial.println("Lemon drop wird gemacht");
  Mix(1500,1500,0,0,1800,1200,0,0,0,0,0); // Vodka, Triple Sec, Cranberry juice, Sprite, Lime juice, Sugar water, Blue Curacao, Gin, Bacardi, Weinbrand, Cola
 }

// Blue Moon
if (state == 'e') {
  Serial.println("Blue Moon wird gemacht");
  Mix(2000,0,3000,0,1800,1200,1200,0,0,0,0); // Vodka, Triple Sec, Cranberry juice, Sprite, Lime juice, Sugar water, Blue Curacao, Gin, Bacardi, Weinbrand, Cola
 }

// Blue Gin Moon
if (state == 'f') {
  Serial.println("Blue Gin Moon wird gemacht");
  Mix(0,0,3000,0,1800,1200,1200,2000,0,0,0); // Vodka, Triple Sec, Cranberry juice, Sprite, Lime juice, Sugar water, Blue Curacao, Gin, Bacardi, Weinbrand, Cola
 }

// Double Strike
if (state == 'g') {
  Serial.println("Double Strike wird gemacht");
  Mix(2000,0,3000,0,1800,0,1200,0,0,0,0); // Vodka, Triple Sec, Cranberry juice, Sprite, Lime juice, Sugar water, Blue Curacao, Gin, Bacardi, Weinbrand, Cola
 }

// Tom Collins
if (state == 'h') {
  Serial.println("Tom Collins wird gemacht");
  Mix(0,0,0,4000,1800,1800,0,2200,0,0,0); // Vodka, Triple Sec, Cranberry juice, Sprite, Lime juice, Sugar water, Blue Curacao, Gin, Bacardi, Weinbrand, Cola
 }

// Flying Dutchman
if (state == 'i') {
  Serial.println("Flying Dutchman wird gemacht");
  Mix(0,2000,0,0,1200,1000,0,2000,0,0,0); // Vodka, Triple Sec, Cranberry juice, Sprite, Lime juice, Sugar water, Blue Curacao, Gin, Bacardi, Weinbrand, Cola
 }

// London Cosmo
if (state == 'j') {
  Serial.println("London Cosmo wird gemacht");
  Mix(0,2000,5000,1800,0,0,0,2000,0,0,0); // Vodka, Triple Sec, Cranberry juice, Sprite, Lime juice, Sugar water, Blue Curacao, Gin, Bacardi, Weinbrand, Cola
 }
    

// Vodka Cranberry 
if (state == 'k') {
  Serial.println("Vodka Cranberry wird gemacht");
  Mix(2000,0,5000,0,0,1200,0,0,0,0,0); // Vodka, Triple Sec, Cranberry juice, Sprite, Lime juice, Sugar water, Blue Curacao, Gin, Bacardi, Weinbrand, Cola
 }

 // Cranberry Gin   
if (state == 'l') {
  Serial.println("Cranberry Gin wird gemacht");
  Mix(0,0,5000,0,2000,0,0,2200,0,0,0); // Vodka, Triple Sec, Cranberry juice, Sprite, Lime juice, Sugar water, Blue Curacao, Gin, Bacardi, Weinbrand, Cola
 }
 
 // Bacardi Cola   
if (state == 'm') {
  Serial.println("Bacardi Cola wird gemacht");
  Mix(0,0,0,0,0,0,0,0,1500,0,3000); // Vodka, Triple Sec, Cranberry juice, Sprite, Lime juice, Sugar water, Blue Curacao, Gin, Bacardi, Weinbrand, Cola
 }

 // Weinbrand Cola   
if (state == 'n') {
  Serial.println("Weinbrand Cola wird gemacht");
  Mix(0,0,0,0,0,0,0,0,0,1500,3000); // Vodka, Triple Sec, Cranberry juice, Sprite, Lime juice, Sugar water, Blue Curacao, Gin, Bacardi, Weinbrand, Cola
 }

// Testin and maintenance options

// Set-up Vodka
if (state == 'o') {
  Serial.println("Set-up Vodka");
  Mix(1100,0,0,0,0,0,0,0,0,0,0); // Vodka, Triple Sec, Cranberry juice, Sprite, Lime juice, Sugar water, Blue Curacao, Gin, Bacardi, Weinbrand, Cola
 }

// Set-up Tripple Sec
if (state == 'p') {
  Serial.println("Set-up Tripple Sec");
  Mix(0,1100,0,0,0,0,0,0,0,0,0); // Vodka, Triple Sec, Cranberry juice, Sprite, Lime juice, Sugar water, Blue Curacao, Gin, Bacardi, Weinbrand, Cola
 }

// Set-up Cranberry juice
if (state == 'q') {
  Serial.println("Set-up Cranberry juice");
  Mix(0,0,1000,0,0,0,0,0,0,0,0); // Vodka, Triple Sec, Cranberry juice, Sprite, Lime juice, Sugar water, Blue Curacao, Gin, Bacardi, Weinbrand, Cola
 }

// Set-up Sprite
if (state == 'r') {
  Serial.println("Set-up Sprite");
  Mix(0,0,0,1000,0,0,0,0,0,0,0); // Vodka, Triple Sec, Cranberry juice, Sprite, Lime juice, Sugar water, Blue Curacao, Gin, Bacardi, Weinbrand, Cola
 }

// Set-up Lime juice
if (state == 's') {
  Serial.println("Set-up Lime juice");
  Mix(0,0,0,0,1100,0,0,0,0,0,0); // Vodka, Triple Sec, Cranberry juice, Sprite, Lime juice, Sugar water, Blue Curacao, Gin, Bacardi, Weinbrand, Cola
 }

// Set-up Sugar water
if (state == 't') {
  Serial.println("Set-up Sugar water");
  Mix(0,0,0,0,0,1200,0,0,0,0,0); // Vodka, Triple Sec, Cranberry juice, Sprite, Lime juice, Sugar water, Blue Curacao, Gin, Bacardi, Weinbrand, Cola
 }

// Set-up Blue curacao
if (state == 'u') {
  Serial.println("Set-up Blue curacao");
  Mix(0,0,0,0,0,0,800,0,0,0,0); // Vodka, Triple Sec, Cranberry juice, Sprite, Lime juice, Sugar water, Blue Curacao, Gin, Bacardi, Weinbrand, Cola
 }

// Set-up Gin
if (state == 'v') {
  Serial.println("Set-up Gin");
  Mix(0,0,0,0,0,0,0,1000,0,0,0); // Vodka, Triple Sec, Cranberry juice, Sprite, Lime juice, Sugar water, Blue Curacao, Gin, Bacardi, Weinbrand, Cola
 }

// Set-up Bacardi
if (state == 'w') {
  Serial.println("Set-up Gin");
  Mix(0,0,0,0,0,0,0,0,1000,0,0); // Vodka, Triple Sec, Cranberry juice, Sprite, Lime juice, Sugar water, Blue Curacao, Gin, Bacardi, Weinbrand, Cola
 }

// Set-up Weinbrand
if (state == 'x') {
  Serial.println("Set-up Gin");
  Mix(0,0,0,0,0,0,0,0,0,1000,0); // Vodka, Triple Sec, Cranberry juice, Sprite, Lime juice, Sugar water, Blue Curacao, Gin, Bacardi, Weinbrand, Cola
 }

  // Set-up Cola
if (state == 'y') {
  Serial.println("Set-up Gin");
  Mix(0,0,0,0,0,0,0,0,0,0,1000); // Vodka, Triple Sec, Cranberry juice, Sprite, Lime juice, Sugar water, Blue Curacao, Gin, Bacardi, Weinbrand, Cola
 }

  
  // Cleaning
if (state == 'z') {
  Serial.println("Set-up Gin");
  Mix(4000,4000,4000,4000,4000,4000,4000,4000,4000,4000,4000); // Vodka, Triple Sec, Cranberry juice, Sprite, Lime juice, Sugar water, Blue Curacao, Gin, Bacardi, Weinbrand, Cola
 }

// Set-up all (intial first time after cleaning)
if (state == '{') {
  Serial.println("Set-up All");
  Mix(800,800,800,800,1000,1600,800,800,800,800,800); // Vodka, Triple Sec, Cranberry juice, Sprite, Lime juice, Sugar water, Blue Curacao, Gin, Bacardi, Weinbrand, Cola
 }
    
}

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;
}
[/code]

Jetzt habe ich mir MAX7219 mit 8x32x4 LED-Band geholt. Im Sketch ist Serial.print eingetragen. Es soll die einzelnen Cocktails anzeigen und mit ein Effekt versehen werden. Das soll in diesem Sketch oben passieren.
Meine Frage ist ,wie mach ich das dann. Hab da überhaupt kein wirklichen Plan. Habe mir etliche Videos angeschaut und weiss nicht wirklich weiter. Meine Konfiguration ist ein Mega 2650 mit 16-fach Relaiskarte und HC-05 als Bluetooth Anbindung.

Kann man mir da ein wenig helfen?

Danke euch dafür.

Gruß Referent

Threads in German belong to #international:deutsch .

Du meinst wohl eher den Mega2650.
Aber, warum verwendest Du software-Serial auf einem Mega2560 der 3 Hardware-Serial Ports zur Verfügung stellt, und wendest Software-Serial auch noch völlig unnötigerweise auf den Hardware Serial Pins des Serialport0 an? Zumal dies auch noch der Port ist, der ausgerechnet von der USB- Komunikation zwischen Mega und PC benutzt wird. Das ist ein völlig unsinniges Unterfangen.
Dazu kommt noch, dass man ja Software-Serial gerade eshalb verwendet, wenn man eine 2. Sierelle Schnitstelle benötigt, dies jedoch nicht im Controller Hardwaremässig vorhanden ist.
Bevor Du den Sketch erweiterst, solltest Du zuerst die Sache mit Deinen Serials in Ordnung bringen. Nutze für das BlueTooth-Modul die Pins RX1/TX1 (Pin18//PIN19). Lasse Software-Serial ganz weg. Initialisiere Dein Bluetooth Modul im Setup mit Serial1.begin(9600); und spreche das Modul über somit als Serial1 an. Denn jetzt schreibst Du die Serial Ausgaben über das Bluetoothmodul zurück an das Bedienteil. (so gewollt?, wenn ja musst Du auch diese Anweisungen auf SERIAL1 umschreiben).
Wenn Du das erledigt hast, kannst Du ans Einbinden Deiner LED-Matrix gehen.

Hallo,
für die Anzeige wird es eine Lib geben , da musst Du dir dann mal die Beispiele ansehen. schau mal ob Du hier was findest.

Heinz

Hallo Deltaflyer ,

ich habe den Sketch komplett so übernommen , nur Bacardi, Weinbrand und Cola hinzugefügt. Habe Grad auch gesehen , das ich 6 x Gin drin Habe... :expressionless: . Dieser Sketch hat der Originalautor glaub ich , für einen UNO gemacht. Ich habe nur den MEGA genommen wegen dem mehr an digitalen Pins. Wollte ursprünglich noch Kühlschrankthermometer und D3231 anbinden. Das lasse ich aber jetzt separat über je einen NANO laufen.

Nun zum Software.Serial.
#include <SoftwareSerial.h> den ganz löschen
SoftwareSerial EEBlue(18, 19); // RX1 | TX1 Denn auf 18. 19 und nur Software löschen
Bei setup Serial.begin(9600); zu Serial1.begin(9600); umändern.

alles andere bleibt so?

Bin halbwissender Anfänger und versuche alles zu verstehen.

Danke erstmal für deine Hilfe.

Gruß Lars

Das könnte der Mega leicht nebenbei. Was für einen Temperatursensor verwendest du?

Nö, überall wo EEBlue steht muss jetzt Serial1 hin.

Hallo Whandall,

da nehme ich ein DHT11 , der reicht für meine Zwecke.

OK, das habe ich verstanden und werde das ändern.

Vom DHT11 habe ich bisher eigentlich nichts Gutes gehört, was Genauigkeit angeht,
wie sind deine Erfahrungen, zufrieden?

Ich verwende meist ds18b20 für Temperaturen (die gibts in allen möglichen Bauformen),
wenn ich nur eine Temperatur brauche,
DHT22 oder BME280 für Luftfeuchtigkeit, Druck und Temperatur.

Was machen deine Nanos denn mit den Daten?

Für meine Zwecke ist der DHT11 ausreichend, +- 1 Grad bei mir bisher. Soll ja auch nur Kühlschrank überwachen mit Temperatur und Luftfeuchte.
Der eine Nano gibt die Daten auf ein 1,8" LCD aus , der Nano mit der DS3231 auch auf ein LCD.

zur Erklärung , ich hatte vor etwas mehr als ein Jahr die Idee aus einem Youtubevideo , ein CocktailKühlschrank zu bauen. Viel 3d-Druck und Arduinos. Find ich absolut genial zum entspannen,
Also angefangen und Teile gekauft, testweise aufgebaut und programmiert aus verschiedenen Sketchen. Thermometer funktioniert schonmal einwandfrei . Uhr bin ich dran , CocktailMEGA funktioniert auch schon.
Jetzt setze ich alles in eine Box vom schwedischen Möbelhaus mit einem Netzgerät vom PC. Vorn sollen links und rechts die beiden 1,8" und in der Mitte die LED`S . Die sollen mir dann anzeigen , welcher Cocktail grad gemacht wird.
So soll mein Aufbau sein.
Bin zufrieden mit DHT11
Gruß Lars

Mit der Idee einen solchen Automaten zu bauen, habe ich auch schon gespielt,
sogar so stark, dass ich alle Teile schon hier habe. :grinning:

Der von dir verwendete Sketch wäre mir zu simpel und unflexibel,
aber die Rezepte sind einen Versuch Wert.

Für eine reine Temperaturanzeige (oder auch Regelung) hätte ich fertige Module verwandt.

https://de.aliexpress.com/item/33037396704.html

Ja, es ist ein Anfang . Wenn das erstmal zu 100 % läuft , kann man weiter denken als Anfänger .
Habe mir die Peristaltikpumpen für Cola,Sprite und so selber gedruckt. Schwierigkeit war , das Kohlensäure bei anderen Pumpen rausgelöst wird. Habe auch denn Ausgiesser selber erstellt.
Die Rezepte sind ja so simpel , weil man aus wenig viel machen kann .Regeln möchte ich den Kühlschrank nicht , nur überwachen.

Meine Addresse zum Bau :Cocktailautomat

Ach, schick wieder was von Dir zu hören :slight_smile:

Wenn Du die Geschichte eh in eine Box baust, kannst Du beide Displays auch von Mega beschreiben.

Ansonsten schliesse ich mich @Whandall an - switch/case ist das Mittel der Wahl. Hatte ich grade die letzetn Tage hier am machen.

Ich bin glücklicher Besitzer von 12 solcher Pumpen

früher waren die günstiger, die ersten 6 habe ich für unter 2 € erworben.

Hey ,my_xy_projekt , wie geht es dir? Ja, nach längerer Abwesenheit (persönlicher Natur) geht es weiter an meinem Cocktailautomat.

Ich habe 12V DC Motoren mit gedrucktem Peristaltikkorpus mit einer Leistung vom 400ml/20sec.
Hier der Link:Pumpe

Sind aber auch ziemlich groß aber auch sehr Leistungsfähig. Habe mir auch vor einem Jahr ein neuen 3D-Drucker zugelegt, um das zu drucken.

Eine Alterative, um nur an einer Stelle zu ändern, wäre z.B.
HardwareSerial& EEBlue = Serial1;
oder (in altem C)
#define EEBlue Serial1 // ohne Semikolon !
anstelle von
SoftwareSerial EEBlue(0, 1); // RX | TX

Wenn sich hier verloren gegangene Protagonisten wiederfinden: besser!
Danke der Nachfrage. :wink:
Ich hab versucht das von mir letztens bearbeitete Cocktailmaker zu finden - geht nicht.
Mal sehen, ob ich das noch nachreichen kann.

Das wäre cool , kann echt jede auch noch so kleine Hilfe gebrauchen. Ich sag euch , wenn das Ding läuft gebe ich Cocktails aus. Habe auch schon gut dazugelernt für mein Alter :yum:

Wow, das klingt eher nach Wasserwerfer.
Das ist ein normaler Schnaps pro Sekunde.

Dieser Thread?
Problem Dauer High signal - International / Deutsch - Arduino Forum

1 Like