Summe berechnen funktioniert nicht

Ich bitte um Hilfe bei nachstenden Sketch.

Wir sollen Summe berechnen nach diesem Programm. Das funktioniert aber nicht. Gibt man im Seriellen Monitor zwei Werte ein, kommt immer "20" raus.

? Was ist falsch?

Summe

int z1;
int z2;
int s;

void setup()
{
Serial.begin(9600);

Serial.println("ZweiZahlen addieren");
Serial.println("");

Serial.flush();
}
void loop()
{
Serial.println("Gib die erste Zahl ein, Press ENTER");
while(Serial.available()==0);
{
//Zahl 1
z1=Serial.parseInt();
Serial.print("1.Zahl=");Serial.println(z1,DEC);

while(Serial.available()>0)
{z1=Serial.read();}
}
Serial.println("Gib die zweite Zahl ein, Press ENTER");
while(Serial.available()==0);
{
//Zahl 2
z2=Serial.parseInt();
Serial.print("2.Zahl=");Serial.println(z2,DEC);
while(Serial.available()>0)
{z2=Serial.read();}

//Summe berechnen und ausgeben

s=z1*z2;

Serial.print("Die Summe betraegt =");
Serial.println(s,DEC);Serial.println();
}
}

LG

Sag mal, wie berechnest du eine Summe ?
Wo hast du das gelernt ?

Und Sketche werden der besseren Lesbarkeit in Code-Tags gesetzt.

Was sind Code Tags?

Wir haben ein script bekommen zum abtipppen.

dorfduino:
Was sind Code Tags?

Wir haben ein script bekommen zum abtipppen.

Das kannst du nachlesen in "how to use this forum".

Und du tippst einfach ohne zu überlegen ab ?
So etwas lernt man schon in der ersten Klasse, vielfach auch schon vorher.

@ Dieter

ich habe keine Ahnung, deswegen bitte ich ja um Hilfe und nicht um Belehrungen.

dorfduino:
@ Dieter

ich habe keine Ahnung, deswegen bitte ich ja um Hilfe und nicht um Belehrungen.

Aber die vier Grundrechenarten sind dir bekannt ?

Code-Tags sind Formatierungszeichen.
Z.B. [code] am Anfang und [/code] am Ende ohne die Sterne.

Allerdings sehe ich hier keine Belehrung, aber ohne Grundrechenarten wird das nichts

Im Editor findest Du links oben ein Knöpfchen </>, damit bekommst Du die code-Tags.

Wenn Du dann noch das Multiplikationszeichen '*' durch das Zeichen für die Addition '+' ersetzt, könnte es was werden.

ok

Ziemlich am Schluss steht s=z1*z2; anstatt s=z1+z2;

weil ich probiert habe ob beim multiplizieren auch ein Fehler passiert.

Aber nochmal: Es geht lediglich um die Frage, warum dieses Scribt so nicht funktioniert, selbst wenn ich das * in ein "+" tausche.

Ich will nicht lernen wie man Arduino programmiert und ich habe auch keine Ahnung von programmieren.

Nochmal - Ich will nur eine Lösung des Problems, sonst nix :wink:

Damit zumindest das mit den Code-Tags erledigt ist:

int z1;
int z2;
int s;

void setup()             
{
 Serial.begin(9600);   

 Serial.println("ZweiZahlen addieren");
 Serial.println("");

 Serial.flush();     
}
void loop()
{
 Serial.println("Gib die erste Zahl ein, Press ENTER");
 while(Serial.available()==0);
 {
   //Zahl 1
   z1=Serial.parseInt();     
   Serial.print("1.Zahl=");Serial.println(z1,DEC);

   while(Serial.available()>0)
   {z1=Serial.read();}       
 }
 Serial.println("Gib die zweite Zahl ein, Press ENTER");
 while(Serial.available()==0);
 {
   //Zahl 2
   z2=Serial.parseInt();
   Serial.print("2.Zahl=");Serial.println(z2,DEC);
   while(Serial.available()>0)
   {z2=Serial.read();}

   //Summe berechnen und ausgeben

   s=z1*z2;

   Serial.print("Die Summe betraegt =");
   Serial.println(s,DEC);Serial.println();
 }
}

Gruß

Gregor

@Gregor,

verstanden, Danke

Aber mein Problem ist leider noch nicht gelöst.

Ich will nicht lernen wie man Arduino programmiert und ich habe auch keine Ahnung von programmieren.

Nochmal - Ich will nur eine Lösung des Problems, sonst nix :wink:

Ganz schlechte Voraussetzungen...

Dann muss ich nochmal den Lehrer Fragen, vielleicht hat er sich ja irgendwo värtibt.

Das Einlesen der Zahlen ist schon sehr abstrus. Nicht unbedingt falsch, aber viel zu kompliziert. Einmal parseInt() reicht völlig aus

@Serenifly

wie könnte ich es besser machen? Konkret?

dorfduino:
.......
Ich will nicht lernen......

Nochmal - Ich will nur eine Lösung des Problems,......

Genau so habe ich das auch verstanden.

Ist das heute so üblich ?
Oder sollte man evtl. mal durchlesen, was man schreibt.

Sorry, wenn das belehrend wirkt.

Schmeiß die inneren while-Schleifen raus, dann geht es.

Schade, dass hier nur "warme Luft" gepostet wird. Danke an die "Selbstdarsteller" für die Zielführende Hilfe !

eof

Stell deinen Serial Monitor ein so das er für deinen Code passt.

Hallo,

Schade, dass hier nur "warme Luft" gepostet wird. Danke an die "Selbstdarsteller" für die Zielführende Hilfe !

Solche Antworten finde äußerst frech! Weil es einfach nicht stimmt. Du musst nur umsetzen was gesagt wurde.

Habe den Code um Debugausgaben erweitert., Wo die 10 herkommt weiß ich im Moment auch nicht. Aber du siehst erstmal das Deine Eingaben völlig ignoriert werden. Desweiteren liest du jede Zahl doppelt ein. Hier solltest du aufräumen und machen was schon geschrieben wurde. Schau dir dazu auch das Bsp. Communication > read ASCII String an.

int z1;
int z2;
int s;

void setup()
{
  Serial.begin(9600);

  Serial.println("Zwei Zahlen addieren");
  Serial.println();

}
void loop()
{

  Serial.println("Gib die erste Zahl ein, Press ENTER");
  while (Serial.available() == 0);
  {
    z1 = Serial.parseInt();
    Serial.print("z1 "); Serial.print(z1); Serial.print('\t');
    Serial.print("1.Zahl= "); Serial.println(z1, DEC);

    while (Serial.available() > 0)
    {
      z1 = Serial.read();
      Serial.print("z1 "); Serial.println(z1);
    }
  }

  Serial.println("Gib die zweite Zahl ein, Press ENTER");
  while (Serial.available() == 0);
  {
    z2 = Serial.parseInt();
    Serial.print("z2 "); Serial.print(z2); Serial.print('\t');
    Serial.print("2.Zahl= "); Serial.println(z2, DEC);
    while (Serial.available() > 0)
    {
      z2 = Serial.read();
      Serial.print("z2 "); Serial.println(z2);
    }

    //Summe berechnen
    Serial.print2("Addition mit "); Serial.print(z1); Serial.print(" + "); Serial.println(z2);
    s = z1 + z2;

    Serial.print("Die Summe betraegt = ");
    Serial.println(s, DEC); Serial.println();
  }
}

Du musst im Monitor kein Zeilenende angeben dan addiert er auch, wenn * gegen + ausgetauscht.
Der Code na ja wurde ja schon einiges gesagt wie sagt mann "Das schüttelt die Sau samt Buchte"