Millis() beim Arduino Nano

Mahlzeit…

Rum Maschine ist fast fertig…eine Hürde nur noch:
Bei meinem Arduino Mega funzt die abfallverzögerung mit den Millis()
Beim Arduino Nano jedoch nicht.
kennt jemand den Grund?

//Starke Mischung
tasterstatus3=digitalRead(T3);
if (tasterstatus3==LOW){digitalWrite (Normal, LOW);digitalWrite (Mittel, LOW);digitalWrite (GoLed, HIGH);
lcd.setCursor(1,0); 
lcd.print("    Stark     ");
lcd.setCursor(1,1);                     
lcd.print("               ");}
if ((digitalRead(Normal)==LOW) && (digitalRead(Mittel)==LOW))
{unsigned long NewTime3 = millis();
if (NewTime3 - Time3 > interval1) {Time3 = NewTime3;digitalWrite ( Stark, LOW );}}

OHOHOH …Edit
Habs gefunden…kann es zwar nicht erklären, aber jetzt geht es:

Mit display dran geht es…erklären kann ich es aber nicht…

Wenn du nur Fragmente deines Sketches postets, können wir nicht erkennen, wo du den Fehler machst.

An “millis()” selbst wird es nicht liegen.
Du hast vermutlich die Pin-Nummern nicht angepasst.

HouseLisa:
OHOHOH …Edit
Habs gefunden…kann es zwar nicht erklären, aber jetzt geht es:

Mit display dran geht es…erklären kann ich es aber nicht…

Wer weiß, was du da für einen Murks machst. Wir können nicht “hellsehen”.

Ist die Rummaschine eine Mischmaschine? Genau sowas möcht ich mir auch bauen, für alle möglichen Mischen. ist das oben der fertige Code? Möchte meinen zwar selber schreiben, aber will mir paar Inspirationen holen, da ich noch Anfänger bin ;)

elektropaule: Ist die Rummaschine eine Mischmaschine? Genau sowas möcht ich mir auch bauen, für alle möglichen Mischen. ist das oben der fertige Code? Möchte meinen zwar selber schreiben, aber will mir paar Inspirationen holen, da ich noch Anfänger bin ;)

Na dann fang mal an zu üben, wenn du mit den paar Zeilen klar kommen willst.

Aber du kannst hier im Forum nach Cocktailmaschinen suchen und du wirst fündig.

Bei Fragen einen neuen Thread öffnen.

Hellooo... Nein das ist natürlich nicht der ganze Sketch gewesen... Aber ich kann sagen dass die Rummaschine gut funktioniert...wenn ich rausfinde wie man Bilder einbindet, zeige ich sie auch gerne mal.

LG Lisa

HouseLisa: ...wenn ich rausfinde wie man Bilder einbindet, zeige ich sie auch gerne mal.

Steh alles in "how to use this Forum, please read"

Für den ganzen Sketch werd ich vermutlich gesteinigt…aber ich fand bis jetzt immer gut durch…und wichtiger war/ist das er funktioniert hat.
War damals nur zum testen für den Arduino…nachdem ich für meine ganzen Musik Sachen die Controller der Hardware fertig hatte, habe ich ehrlich auch nichts mehr gemacht…doch einmal noch ne Uhr aus Druck Manometern…immoment lese ich nur noch mir…
Ja HotSystems …steht da iwo… :smiley:

Hier der RumMaschinen Sketch: ( Vermutlich eher ein Mahnmal wie man es nicht macht )

#include <Wire.h> 
#include <LiquidCrystal_I2C.h>

// Set the LCD address to 0x3F for a 16 chars and 2 line display
LiquidCrystal_I2C lcd(0x3F, 16, 2);

int Normal= 12;
int Mittel= 2;
int Stark=  4;
int GoLed=   5;
int Rum=    14;
int Cola=   15;
int Ventil= 16;
int Luft=   17;
int T1 = 3;
int T2 = 8;
int T3 = 7;
int Go = 6;
int RGB1=9;
int RGB2=10;
int RGB3=11;
int brightness1 = 255;
int brightness0 = 0;
int tasterstatus1=0;
int tasterstatus2=0;
int tasterstatus3=0;
int tasterstatusGo=0;
unsigned long Time1=0; 
unsigned long Time2=0; 
unsigned long Time3=0;        
const long interval1 = 10000; 

void setup()
{
pinMode (Normal, OUTPUT );
pinMode ( Mittel,OUTPUT);
pinMode ( Stark, OUTPUT ) ;
pinMode ( GoLed, OUTPUT ) ;
pinMode (Rum, OUTPUT );
pinMode (Cola, OUTPUT );
pinMode (Ventil, OUTPUT );
pinMode (Luft, OUTPUT );

pinMode ( T1, INPUT_PULLUP );
pinMode ( T2, INPUT_PULLUP);
pinMode ( T3, INPUT_PULLUP);	
pinMode (Go, INPUT_PULLUP);
lcd.begin();
lcd.backlight();

}

void loop()
{



//Normale Mischung
tasterstatus1=digitalRead(T1);
if (tasterstatus1==LOW){digitalWrite (Mittel, LOW);digitalWrite (Stark, LOW);digitalWrite (GoLed, HIGH);
lcd.setCursor(1,0); 
lcd.print("    Normal     ");
lcd.setCursor(1,1);                     
lcd.print("               "); }
if ((digitalRead(Mittel)==LOW) && (digitalRead(Stark)==LOW))
{unsigned long NewTime1 = millis();
if (NewTime1 - Time1 > interval1) {Time1 = NewTime1;digitalWrite ( Normal, LOW );}}



//Mittlere Mischung
tasterstatus2=digitalRead(T2);
if (tasterstatus2==LOW){digitalWrite (Normal, LOW);digitalWrite (Stark, LOW);digitalWrite (GoLed, HIGH);
lcd.setCursor(1,0); 
lcd.print("    Mittel     ");
lcd.setCursor(1,1);                     
lcd.print("               "); }
if ((digitalRead(Normal)==LOW) && (digitalRead(Stark)==LOW))
{unsigned long NewTime2 = millis();
if (NewTime2 - Time2 > interval1) {Time2 = NewTime2;digitalWrite ( Mittel, LOW );}}


                                  
//Starke Mischung
tasterstatus3=digitalRead(T3);
if (tasterstatus3==LOW){digitalWrite (Normal, LOW);digitalWrite (Mittel, LOW);digitalWrite (GoLed, HIGH);
lcd.setCursor(1,0); 
lcd.print("    Stark     ");
lcd.setCursor(1,1);                     
lcd.print("               ");}
if ((digitalRead(Normal)==LOW) && (digitalRead(Mittel)==LOW))
{unsigned long NewTime3 = millis();
if (NewTime3 - Time3 > interval1) {Time3 = NewTime3;digitalWrite ( Stark, LOW );}}
 

//Anfangs Position
if ((digitalRead(Normal)==LOW)&& (digitalRead(Mittel)==LOW) && (digitalRead(Stark)==LOW)&!(tasterstatusGo==LOW))
{
lcd.setCursor(3,0);                 
lcd.print("W\341hlen Sie");    //W\341hlen        
lcd.setCursor(1,1);  
lcd.print("eine Mischung"); 
digitalWrite (GoLed, LOW);
digitalWrite (Normal, HIGH);
digitalWrite (Mittel, HIGH);
digitalWrite (Stark, HIGH);


}

  





//GO

tasterstatusGo=digitalRead(Go);
if (tasterstatusGo==LOW && (digitalRead(Normal)==HIGH)&& (digitalRead(Mittel)==LOW)&& (digitalRead(Stark)==LOW) )   // Normal+Go
{

lcd.setCursor(1,0); 
lcd.print("For the Pussys");
lcd.setCursor(1,1);  
lcd.print("");
delay ( 2000);

analogWrite(RGB1, brightness1);
lcd.setCursor(7,1);  
lcd.print("3");
delay ( 1000);

analogWrite(RGB1, brightness0);
analogWrite(RGB2, brightness1);
lcd.setCursor(7,1);  
lcd.print("2");
delay ( 1000);

analogWrite(RGB2, brightness0);
analogWrite(RGB3, brightness1);
lcd.setCursor(7,1);  
lcd.print("1");
delay ( 1000);

analogWrite(RGB3, brightness0);
lcd.setCursor(1,1);  
lcd.print("     Yeah      ");
digitalWrite (Luft, HIGH);
delay ( 2000);

digitalWrite (Luft, LOW);
//analogWrite(RGB1, brightness1);
analogWrite(RGB2, brightness1);
//analogWrite(RGB3, brightness1);
lcd.setCursor(1,0); 
lcd.print("     Rum       ");
lcd.setCursor(1,1);  
lcd.print("               ");
digitalWrite (Rum, HIGH);
delay ( 2000); // FörerZeit Rum
digitalWrite (Rum, LOW);
delay ( 2000); //Pause

digitalWrite (Ventil, HIGH);
lcd.setCursor(1,0);
lcd.print("     Cola      ");
lcd.setCursor(1,1);  
lcd.print("                ");
digitalWrite (Cola, HIGH);
delay ( 16000); // FörderZeit Cola

digitalWrite (Cola, LOW);
digitalWrite (Ventil, LOW);
lcd.setCursor(1,0);
lcd.print("    Fertig      ");
lcd.setCursor(1,1);  
lcd.print("                ");
analogWrite(RGB1, brightness1);
analogWrite(RGB2, brightness1);
analogWrite(RGB3, brightness1);
delay (5000);
analogWrite(RGB1, brightness0);
analogWrite(RGB2, brightness0);
analogWrite(RGB3, brightness0);
}


tasterstatusGo=digitalRead(Go);
if (tasterstatusGo==LOW && (digitalRead(Normal)==LOW)&& (digitalRead(Mittel)==HIGH)&& (digitalRead(Stark)==LOW) )   // Mittel+Go
{
lcd.setCursor(1,0); 
lcd.print("Geile Mische");
lcd.setCursor(1,1);  
lcd.print("");
delay ( 2000);

analogWrite(RGB1, brightness1);
lcd.setCursor(7,1);  
lcd.print("3");
delay ( 1000);

analogWrite(RGB1, brightness0);
analogWrite(RGB2, brightness1);
lcd.setCursor(7,1);  
lcd.print("2");
delay ( 1000);

analogWrite(RGB2, brightness0);
analogWrite(RGB3, brightness1);
lcd.setCursor(7,1);  
lcd.print("1");
delay ( 1000);

analogWrite(RGB3, brightness0);
lcd.setCursor(1,1);  
lcd.print("     Yeah      ");
digitalWrite (Luft, HIGH);
delay ( 2000);

digitalWrite (Luft, LOW);
analogWrite(RGB1, 255);
analogWrite(RGB2, 255);
analogWrite(RGB3, 0);
lcd.setCursor(1,0); 
lcd.print("     Rum       ");
lcd.setCursor(1,1);  
lcd.print("               ");
digitalWrite (Rum, HIGH);
delay ( 2000); // FörerZeit Rum
digitalWrite (Rum, LOW);
delay ( 2000); //Pause

digitalWrite (Ventil, HIGH);
lcd.setCursor(1,0);
lcd.print("     Cola      ");
lcd.setCursor(1,1);  
lcd.print("                ");
digitalWrite (Cola, HIGH);
delay ( 5000); // FörderZeit Cola

digitalWrite (Cola, LOW);
digitalWrite (Ventil, LOW);
lcd.setCursor(1,0);
lcd.print("    Fertig      ");
lcd.setCursor(1,1);  
lcd.print("                ");
analogWrite(RGB1, brightness1);
analogWrite(RGB2, brightness1);
analogWrite(RGB3, brightness1);
delay (5000);
analogWrite(RGB1, brightness0);
analogWrite(RGB2, brightness0);
analogWrite(RGB3, brightness0);

}
tasterstatusGo=digitalRead(Go);
if (tasterstatusGo==LOW && (digitalRead(Normal)==LOW)&& (digitalRead(Mittel)==LOW)&& (digitalRead(Stark)==HIGH) ) // Stark+Go
{
lcd.setCursor(1,0); 
lcd.print("    Hardcore!    ");
lcd.setCursor(1,1);  
lcd.print("");
delay ( 2000);

analogWrite(RGB1, brightness1);
lcd.setCursor(7,1);  
lcd.print("3");
delay ( 1000);

analogWrite(RGB1, brightness0);
analogWrite(RGB2, brightness1);
lcd.setCursor(7,1);  
lcd.print("2");
delay ( 1000);

analogWrite(RGB2, brightness0);
analogWrite(RGB3, brightness1);
lcd.setCursor(7,1);  
lcd.print("1");
delay ( 1000);

analogWrite(RGB3, brightness0);
lcd.setCursor(1,1);  
lcd.print("     Yeah      ");
digitalWrite (Luft, HIGH);
delay ( 2000);

digitalWrite (Luft, LOW);
analogWrite(RGB1, brightness1);
//analogWrite(RGB2, brightness1);
//analogWrite(RGB3, brightness1);
lcd.setCursor(1,0); 
lcd.print("     Rum       ");
lcd.setCursor(1,1);  
lcd.print("               ");
digitalWrite (Rum, HIGH);
delay ( 2000); // FörerZeit Rum
digitalWrite (Rum, LOW);
delay ( 2000); //Pause

digitalWrite (Ventil, HIGH);
lcd.setCursor(1,0);
lcd.print("     Cola      ");
lcd.setCursor(1,1);  
lcd.print("                ");
digitalWrite (Cola, HIGH);
delay ( 5000); // FörderZeit Cola

digitalWrite (Cola, LOW);
digitalWrite (Ventil, LOW);
lcd.setCursor(1,0);
lcd.print("    Fertig      ");
lcd.setCursor(1,1);  
lcd.print("                ");
analogWrite(RGB1, brightness1);
analogWrite(RGB2, brightness1);
analogWrite(RGB3, brightness1);
delay (5000);
analogWrite(RGB1, brightness0);
analogWrite(RGB2, brightness0);
analogWrite(RGB3, brightness0);
}

}

( Vermutlich eher ein Mahnmal wie man es nicht macht )

Da mache dir mal keine Sorgen... Selbst der am übelsten formatierte Sketch, ist für irgendwas gut, und sei es nur als schlechtes Beispiel. :smiling_imp: :smiling_imp: :smiling_imp:

Ansosnten: Wenn es tut, dann kann es so falsch gar nicht sein.

HouseLisa: Für den ganzen Sketch werd ich vermutlich gesteinigt...aber ich fand bis jetzt immer gut durch..und wichtiger war/ist das er funktioniert hat.

Meine präferierte Handlung:

void loop()
{
digitalWrite(14, HIGH);
}

Es mag funktionieren; in loop() alles unterbringen zu wollen?? Kann man machen. ABER: Du wiederholst Dich: (Bezogen auf Deinen Code) Zeile 119; 189; 257; Kann man machen - wenn der Taster klemmt oder der Benutzer nicht los lässt, was dann ? ? ? ? Du hast tatsächlich da jeweils mehrfach delay() drin - ein Abbruch ist nicht möglich. Zwischen Zeile 119 und 186 vergehen 32 (zweiunddreissig!) Sekunden! Zwischen Zeile 189 und 256 vergehen 21 Sekunden. Selbiges zwischen 257 und 323.

Willst Du das wirklich?

Helloo

@my_xy_projekt

Ja da haste wohl Recht. Im " Zubereitungs Teil " sind delays() drin...damals war mir das zuviel mit den millis..hatte ich nicht richtig drauf... Und jetzt rede ich mich damit raus, dass wenn die "Bedienung" die Bestellung einmal aufgenommen hat, ich das nicht mehr abbestellen kann... :-)

Vorgesehen war auch damals das es nur geht wenn ein Glas drauf steht..mit Ultraschall oder Wägezelle..mit Wägezelle könnte man sogar noch weiter spinnen...

Das größere Problem war damals eigentlich die Verschraubungen für die Falschen dicht zubekommen. Und der Eigendruck der Cola...läuft nun alles gut..Schläuche lassen sich gut reinigen...Luftpumpen arbeiten sauber...keiner ist bis jetzt bei liegen geblieben und 4 habe ich an den Mann bringen können...

:-D

LG Lisa

Hi,

HouseLisa: Im " Zubereitungs Teil " sind delays() drin...damals war mir das zuviel mit den millis..hatte ich nicht richtig drauf... Und jetzt rede ich mich damit raus, dass wenn die "Bedienung" die Bestellung einmal aufgenommen hat, ich das nicht mehr abbestellen kann... :-)

och - ich bin da ganz unvoreingenommen. Die Erklärung ist zumindest nicht an den Haaren herbeigezogen.

keiner ist bis jetzt bei liegen geblieben und 4 habe ich an den Mann bringen können...

Das könnte sich aber mit meinem Codeschnipsel schnell ändern. Ich bin grad am überlegen, wieviel da in 1 Minute durchläuft und wieviele Minuten das zu (v)ertragen ist.

[/OT]

Trotz der Kritik: Schönes Ideechen.