Go Down

Topic: Brauche Hilfe für Spiel (Read 4423 times) previous topic - next topic

agmue

"Arduino 0018" lese ich, was soll das denn sein?

Wenn Du C programmieren willst, mußt Du dich auch an die Syntax halten, sonst meckert der Compiler.
Die Vorstellungskraft ist wichtiger als Wissen, denn Wissen ist begrenzt. (Albert Einstein)

Chinacracker

Das soll vermutlich schon ein bissvhen älter sein..wo genau stimmt der syntax nicht?

Chinacracker

Ja ich habe vergessen die Zeile mit // zu schreiben. Stimmt meine Überlegung prinzipiell? Wieso stimmt es nicht wenn ich nach false die Klammer schließe?

Tommy56

Quellcode als Bild eines schlechten Screephotos anzuhängen ist wohl die blödeste Variante, die es gibt. (Keine Sorge, Du bist nicht allein)
Warum stellst Du den Code nicht in Codetags (</> oben links) als Text ein?

Gruß Tommy
"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)

Chinacracker

Weil das Wlan hier für meinen PC nicht geht...nur das mobile internet für mein ipad. Das heißt ich schreibe am ipad. Programmiere am PC...ist saublöd ja

Tommy56

#35
Nov 19, 2017, 09:54 pm Last Edit: Nov 19, 2017, 10:02 pm by Tommy56
Ok, das ist wirklich saublöd.

Gruß Tommy

Edit: Aber bei dem extrem kurzen Code könnte man ihn auch abtippen.
"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)

Chinacracker

Achtung. ist nu4 abgetippt. syntax stimmt natürlich nicht, aber mehr kann ich aktuell nicht tun....


//Tresor

int LED=13;
int ADC0=0;
int Code1, Code2, Code3, Code4;

void setup()
{
pinMode(LED,OUTPUT);
}

void loop()
{
// Code1 = >800
if((analogRead(ADC0)>800))
{
Code1=true;
}else Code1=false;
}

{
digitalWrite(LED,HIGH);
delay(5000);
digitalWrite(LED,LOW);
}
else
{
digitalWrite(LED,LOW);
}

gregorss

#37
Nov 20, 2017, 12:01 am Last Edit: Nov 20, 2017, 01:36 am by gregorss
Ich habe Deinen Code mal schnell überarbeitet. Wenn Du eine Variable benötigst, die nur zwei Zustände annehmen kann, ist bool eine bessere Wahl als int. Und wenn Du den Code der Struktur entsprechend einrückst, ist er besser zu lesen und vor allen Dingen besser zu debuggen.

Wie dem auch sei, hier meine hoffentlich fehlerfreie Variante:

Code: [Select]
// Tresor

const byte LED=13;
const byte ADC0=0;
bool Code1=false;    // Ich initialisiere meistens schon bei der Deklaration
bool Code2=false;   //
bool Code3=false;  //
bool Code4=false; //

void setup()
{
  pinMode(LED,OUTPUT);
}

void loop()
{
  // ADC > 800
  if(analogRead(ADC0)>800)
  {
    Code1=true;
    digitalWrite(LED,HIGH);
  }
  else
  {
    Code1=false;
    digitalWrite(LED,LOW);
  }
}


Gruß

Gregor


Mir wird übel. (Uwe)

gregorss

#38
Nov 20, 2017, 04:56 pm Last Edit: Nov 20, 2017, 04:56 pm by gregorss
Was meint ihr?

Code: [Select]
// Tresor
...
  // Schalter 1 Stellung 2
  if(analogRead(ADC0)<100)
... 
  // Schalter 1 Stellung 2
  if(analogRead(ADC0)<100)

Du fragst beide Male den gleichen Analogeingang ab. Das ist ganz sicher nicht so gemeint.

Damit der Code nicht zu lang wird (man nicht [so viel] scrollen muss), solltest Du ihn umformatieren. Z. B.:

Code: [Select]

...
if(analogRead(ADC0)<100)  { Code1=true; } else { Code1=false; } // Schalter 1 Stellung 2
...


Das ist syntaktisch korrekt, braucht aber nur eine Zeile pro Schalter. Dann passt der ganze Sketch evtl. auf eine Bildschirmseite. Und wenn Du vier fast identische Zeilen übereinander stehen hast, wird das Debuggen noch leichter.

Gruß

Gregor
Mir wird übel. (Uwe)

Serenifly

Oder man macht das:
Code: [Select]

Code1 = analogRead(ADC0) < 100;

michael_x

Quote
if(analogRead(ADC0)<100)  { Code1=true; } else { Code1=false; } // Schalter 1 Stellung 2
braucht aber nur eine Zeile pro Schalter
Gibt übrigens auch diese Schreibweise:

Code1 = (analogRead(ADC0)<100) ;  // true / false
Klammern und Kommentar eigentlich überflüssig

Wenn es nicht ganz so simpel ist mit true/false zuweisen, kann man auch sowas schreiben

Code1 = (analogRead(ADC0)<100) ? exp_true : exp_false ;
exp_true/exp_false können beliebige Ausdrücke sein, die zum Datentyp von Code1 passen

gregorss

#41
Nov 20, 2017, 05:15 pm Last Edit: Nov 20, 2017, 05:16 pm by gregorss
Oder man macht das:
Code: [Select]

Code1 = analogRead(ADC0) < 100;

Wobei ich mich zuallererst frage, wie da das Ergebnis zustande kommt. Ich versuche, immer so zu programmieren, das es auch ein Chef, der das Maximum an Doofheit erreicht hat, verstehen kann. Deshalb verwende ich in HTML immer Tabellen, nie <div>, wenn es um Layoutsachen geht. Mag sein, dass meine Programme und HTML-Seiten nicht so irre effizient sind, aber meine Chefs haben es immer kapiert, wenn ich ihnen Probleme oder Besonderheiten erklären musste.

Gruß

Gregor
Mir wird übel. (Uwe)

michael_x

Deswegen habe ich meine Version von Serenifly's Tip drin gelassen ;) Auch wenn er viel schneller war und das ganze ja eigentlich beim wenig-Müll-tippen helfen soll.

Ist halt eine Frage mit individuell unterschiedlicher Antwort, wo das Optimum an Lesbarkeit und schnellem Schreiben liegt.

Ein ordentlicher Compiler wird es oft zum gleichen Ergebnis verarbeiten.

Serenifly

Wobei ich mich zuallererst frage, wie da das Ergebnis zustande kommt.
Ein Vergleich hat true/false als Ergebnis

Die lange Version ist auf den ersten Blick einfacher von links nach rechts lesbar, aber sie ist halt auch länger

Tommy56

Ich versuche, immer so zu programmieren, das es auch ein Chef, der das Maximum an Doofheit erreicht hat, verstehen kann.
Das habe ich genau anders herum gemacht. Ich hatte vor langer Zeit mal einen Chef, der wollte mir immer in die Programmierung reinreden. Dann habe ich gemerkt, dass Pointer nicht so sein Ding waren. Ab da habe ich alles mit Pointern gemacht, egal ob es notwendig war oder nicht.
Ab da hatte ich Ruhe.

Gruß Tommy
"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)

Go Up