INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Arduino Codeschnipsellitanei?
28.01.2016, 18:38
Beitrag #1
Arduino Codeschnipsellitanei?
Kann mich einfach nicht an die überlangen Codes der Arduionsprache
gewöhnen. Warum baut man so ehlange Codeanweisungen, wo es doch
deutlicher und kürzer ginge. Man hat immer den Eindruck wenn man auf
eine längere Anweisung schaut, nichts auseinander halten zu können.
Geht es euch auch so?

Beispiele:
delayMicroseconds(100); könnte man doch so abkürzen:
wait(100) oder waitms(100) oder

digitalWrite(stepperPin, LOW); als
outPin(Pin, low);

Man könnte sich wirklich fragen, was sich die Denker dieser Sprache
eigentlich dachten, als sie diese Codeschnipsellitanei gebacken haben?
Bei allem Respekt über die Erbauer von Arduino, aber man hatte
doch genug Zeit, das richtig und logisch aufzubauen, so dass es sich
auch besser programmieren und überblicken lässt. Die Hardware ist da
meiner Meinung zu 100% gelungen, die Software nur zu 50%.
Oder was denkt Ihr darüber?
Ich kenne andere kleine Microcontroller die ein super Codeschnipsel haben,
und deren Editor um Meilen besser und vor allem intelligenter -auch mit
Flußdiagrammen aufgebaut ist. Nur sind diese nicht auf Echtzeit getrimmt,
womit man dann wieder zum Arduino zurück kehrt, wenn die Projekte
komplizierter werden. Aber sehr viele Steuerungen kann man mit erheb-
lich weniger Aufwand damit realisieren, und vor allem nur mit dem Chip
alleine der alles drin hat.

Und könnte mir irgendjemand von euch den nachfolgenden Code mal exakt erklären!? was ich weis, gebe ich mal an:

PHP-Code:
int dirPin 2;                              // deklariere Pin 2
int stepperPin 3;                          // deklariere Pin 2

void setup() {                              // setup Festlegungen I/O
  
pinMode(dirPinOUTPUT);          // Pin 2 als Output festlegen
  
pinMode(stepperPinOUTPUT);   // Pin 3 als Output festlegen
}

void step(boolean dir,int steps){   //?
  
digitalWrite(dirPin,dir);                 // Ausgabe Pin 2, ?
  
delay(50);                                     // Warte 50ms
  
for(int i=0;i<steps;i++){              // For Next-Schleife? i++ incrementweise
                                                       
i<steps?
    
digitalWrite(stepperPinHIGH);    // Ausgabe auf Pin 3 mit High
    
delayMicroseconds(100);            // warte 100 µs
    
digitalWrite(stepperPinLOW);   // Ausgabe auf Pin 3 mit Low
    
delayMicroseconds(100);           // warte 100 µs
  
}
}

void loop(){
  
step(true,1600);             // step Aussage wahr (wozu?)
  
delay(500);                       // // Warte 500ms
  
step(false,1600*5);       // step Aussage falsch (wozu?)
  
delay(500);                    // Warte 500ms


Nicht falsch verstehen, aber was ich oben sagte, ist schon so, und man
wünchste sich wirklich, es wäre alles viel kürzer definiert worden, um
bei nur 50 Codezeilen auch sofort einen klaren Überblick zu haben.
So muss man wirklich jede Zeile exakt lesen, sonst schleichen sich
Fehler ein. Warum also "delayMicroseconds(100)" wenn es auch mit
"wait(100) ginge!? Und wenn man jetzt glaubt den Code delayMi.... mit
dem kürzeren micros...ersetzen zu wollen, dann muss man dort auch
wieder erst "time=micros()" schreiben, was dann auch wieder länger wird.
Ich versteh das nicht!
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
28.01.2016, 19:53
Beitrag #2
RE: Arduino Codeschnipsellitanei?
(28.01.2016 18:38)joseph2016 schrieb:  Kann mich einfach nicht an die überlangen Codes der Arduionsprache
gewöhnen. Warum baut man so ehlange Codeanweisungen, wo es doch
deutlicher und kürzer ginge. Man hat immer den Eindruck wenn man auf
eine längere Anweisung schaut, nichts auseinander halten zu können.
Geht es euch auch so?

Beispiele:
delayMicroseconds(100); könnte man doch so abkürzen:
wait(100) oder waitms(100) oder

digitalWrite(stepperPin, LOW); als
outPin(Pin, low);

Man könnte sich wirklich fragen, was sich die Denker dieser Sprache
eigentlich dachten, als sie diese Codeschnipsellitanei gebacken haben?
Bei allem Respekt über die Erbauer von Arduino, aber man hatte
doch genug Zeit, das richtig und logisch aufzubauen, so dass es sich
auch besser programmieren und überblicken lässt. Die Hardware ist da
meiner Meinung zu 100% gelungen, die Software nur zu 50%.
Oder was denkt Ihr darüber?
Ich kenne andere kleine Microcontroller die ein super Codeschnipsel haben,
und deren Editor um Meilen besser und vor allem intelligenter -auch mit
Flußdiagrammen aufgebaut ist. Nur sind diese nicht auf Echtzeit getrimmt,
womit man dann wieder zum Arduino zurück kehrt, wenn die Projekte
komplizierter werden. Aber sehr viele Steuerungen kann man mit erheb-
lich weniger Aufwand damit realisieren, und vor allem nur mit dem Chip
alleine der alles drin hat.

Und könnte mir irgendjemand von euch den nachfolgenden Code mal exakt erklären!? was ich weis, gebe ich mal an:

PHP-Code:
int dirPin 2;                              // deklariere Pin 2
int stepperPin 3;                          // deklariere Pin 2

void setup() {                              // setup Festlegungen I/O
  
pinMode(dirPinOUTPUT);          // Pin 2 als Output festlegen
  
pinMode(stepperPinOUTPUT);   // Pin 3 als Output festlegen
}

void step(boolean dir,int steps){   //?
  
digitalWrite(dirPin,dir);                 // Ausgabe Pin 2, ?
  
delay(50);                                     // Warte 50ms
  
for(int i=0;i<steps;i++){              // For Next-Schleife? i++ incrementweise
                                                       
i<steps?
    
digitalWrite(stepperPinHIGH);    // Ausgabe auf Pin 3 mit High
    
delayMicroseconds(100);            // warte 100 µs
    
digitalWrite(stepperPinLOW);   // Ausgabe auf Pin 3 mit Low
    
delayMicroseconds(100);           // warte 100 µs
  
}
}

void loop(){
  
step(true,1600);             // step Aussage wahr (wozu?)
  
delay(500);                       // // Warte 500ms
  
step(false,1600*5);       // step Aussage falsch (wozu?)
  
delay(500);                    // Warte 500ms


Nicht falsch verstehen, aber was ich oben sagte, ist schon so, und man
wünchste sich wirklich, es wäre alles viel kürzer definiert worden, um
bei nur 50 Codezeilen auch sofort einen klaren Überblick zu haben.
So muss man wirklich jede Zeile exakt lesen, sonst schleichen sich
Fehler ein. Warum also "delayMicroseconds(100)" wenn es auch mit
"wait(100) ginge!? Und wenn man jetzt glaubt den Code delayMi.... mit
dem kürzeren micros...ersetzen zu wollen, dann muss man dort auch
wieder erst "time=micros()" schreiben, was dann auch wieder länger wird.
Ich versteh das nicht!

ich sag's mal so,
jeder der sich mit Technik beschäftigt hat gelernt exakt zu arbeiten.
Wer nicht exakt arbeiten will kann ja immer noch als Phrasendrescher in die Politik gehen !
Sorry, aber so eine Eingabe kann man kaum anders beantworten.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
28.01.2016, 20:24
Beitrag #3
RE: Arduino Codeschnipsellitanei?
Im Übrigen haben die bemängelten Dinge weniger was mit Arduino sondern mehr mit der Programmiersprache zu tun.

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
28.01.2016, 20:34
Beitrag #4
RE: Arduino Codeschnipsellitanei?
Hi joseph2016,

Mit Compilerdirektiven kannst du dir einiges zurecht biegen.
Code:
#define waitms delay
#define waitus delayMicroseconds
#define outPin digitalWrite

int dirPin = 2;                     // deklariere Pin 2
int stepperPin = 3;                 // deklariere Pin 3

void setup() {                      // setup Festlegungen I/O
  pinMode(dirPin, OUTPUT);          // Pin 2 als Output festlegen
  pinMode(stepperPin, OUTPUT);      // Pin 3 als Output festlegen
}

void step(boolean dir,int steps){   //
  outPin(dirPin,dir);               // Ausgabe Pin 2, ?
  waitms(50);                       // Warte 50ms
  for(int i=0;i<steps;i++){         // For Next-Schleife? i++ incrementweise i<steps?
    outPin(stepperPin, HIGH);       // Ausgabe auf Pin 3 mit High
    waitus(100);                    // warte 100 µs
    outPin(stepperPin, LOW);        // Ausgabe auf Pin 3 mit Low
    waitus(100);                    // warte 100 µs
  }
}

void loop(){
  step(true,1600);                  // step Aussage wahr (wozu?)
  waitms(500);                      // // Warte 500ms
  step(false,1600*5);               // step Aussage falsch (wozu?)
  waitms(500);                      // Warte 500ms
}
Wenn dir der Code so besser gefällt, kannst du gerne darauf aufbauen.
Aber erwarte bitte, bitte nicht dass man dir hier dann bei einem Codeproblem weiter hilft. Smile

Ansonsten beachte den Hinweis von hotsystems.

Gruß
Arne

ExclamationMit zunehmender Anzahl qualifizierter Informationen bei einer Problemstellung, erhöht sich zwangsläufig die Gefahr auf eine zielführende Antwort.Exclamation
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
29.01.2016, 14:00
Beitrag #5
RE: Arduino Codeschnipsellitanei?
ja, danke. Jedoch habe ich mit keiner Silbe erwähnt, dass ich euch laufend Codeschnipsel zur Lösung vorlegen möchte. Aber was wäre denn daran schlimm, wenn man eine Frage zu einem Codeproblem hätte!? Haben sich da die AGB´s verändert, oder habe ich da etwas verschlafen!?

Danke trotzdem für die Hinweise die ich sekundär gut gebrauchen kann.
Aber die primären Fragen mit den nachfolgenden Fragezeichen, waren
eigentlich die Wichtigsten, und wurden noch von keinem beantwortet.

Oder steht ihr vor den gleichen Problemen wie ich?
Denke doch, dass es für euch als reine Programmierfreaks kein Problem
sein sollte, das zu entziffern und kurz zu benennen. Reicht dafür ein
Dankeschön!? ...würde ich begrüßen!
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
29.01.2016, 16:26
Beitrag #6
RE: Arduino Codeschnipsellitanei?
Hallo joseph2016,

ich beziehe mich jetzt auf deinen Eingangspost #1 meine Antwort #4 und deinen Post #5.
Es haben sich weder die AGB´s geändert noch hast du etwas verschlafen. Exclamation

Vermutlich hat einer von uns etwas missverstanden. Also der Reihe nach.
(28.01.2016 18:38)joseph2016 schrieb:  Kann mich einfach nicht an die überlangen Codes der Arduionsprache
gewöhnen. Warum baut man so ehlange Codeanweisungen, wo es doch
deutlicher und kürzer ginge. Man hat immer den Eindruck wenn man auf
eine längere Anweisung schaut, nichts auseinander halten zu können.
...
Also daran, du dich nicht an die die überlangen Codes der Arduionsprache gewöhnen kannst und längere Anweisung nicht auseinander halten kannst, kann ich leider nichts ändern.
Warum man so ehlange Codeanweisungen baut, liegt wohl in der Historie der Programmiersprache C begründet deren Wurzeln in das Jahr 1972 zurück reichen und seither ständig Ergänzungen unterworfen wurde.

(28.01.2016 18:38)joseph2016 schrieb:  ...
Geht es euch auch so?
...
Ich kann da nur für mich sprechen. Nein, mir geht es nicht (mehr) so.

(28.01.2016 18:38)joseph2016 schrieb:  ...
Man könnte sich wirklich fragen, was sich die Denker dieser Sprache
eigentlich dachten, als sie diese Codeschnipsellitanei gebacken haben?
Bei allem Respekt über die Erbauer von Arduino, aber man hatte
doch genug Zeit, das richtig und logisch aufzubauen, so dass es sich
auch besser programmieren und überblicken lässt.
...
Ich sehe das grundlegend anders. Meiner Meinung nach haben die "Denker dieser Sprache" und die "Erbauer von Arduino" mit der Auswahl der Programmiersprache C für den Arduino die absolut beste Entscheidung getroffen die möglich war.

(28.01.2016 18:38)joseph2016 schrieb:  ...
Beispiele:
delayMicroseconds(100); könnte man doch so abkürzen:
wait(100) oder waitms(100) oder

digitalWrite(stepperPin, LOW); als
outPin(Pin, low);
...
Genau diese Beispiele habe ich in meiner Antwort #4 aufgegriffen.
In dem Codeblock kannst du sehen dass ich im Code nur noch waitms, waitus und outPin verwendet habe, also genau so wie du es in deinem Beispiel vorschlägst. Außerdem kann man in dem Code erkennen wie man dem Compiler sagt dass man eigene Codedefinitionen verwenden möchte.

Aber scheinbar hast du dir diesen Code nicht richtig angeschaut oder auch nicht verstanden, denn nur mit dieser Vermutung verstehe ich deine Antwort:
(29.01.2016 14:00)joseph2016 schrieb:  ...
Danke trotzdem für die Hinweise die ich sekundär gut gebrauchen kann.
Aber die primären Fragen mit den nachfolgenden Fragezeichen, waren
eigentlich die Wichtigsten, und wurden noch von keinem beantwortet.
...
Oder gibt es in dem Code aus meinem Beitrag #4 nun noch weitere Dinge welche dir nicht genehm sind?

(29.01.2016 14:00)joseph2016 schrieb:  ...
Oder steht ihr vor den gleichen Problemen wie ich?
Denke doch, dass es für euch als reine Programmierfreaks kein Problem
sein sollte, das zu entziffern und kurz zu benennen. Reicht dafür ein
Dankeschön!? ...würde ich begrüßen!

Also ich, und vermutlich auch andere, stehen nicht oder nicht mehr vor den gleichen Problemen wie du.
Fast alle User hier im Forum beschäftigen sich mit dem Arduino als Hobby. Ich finde es deshalb vermessen diese User als "reine Programmierfreaks" zu bezeichnen. Die wirklich echten Programmierfreaks haben vermutlich keine Probleme wenn du deinen Code so schreiben würdest wie ich es in meinem Beitrag #4 vorgemacht habe. Die wirklich echten Programmierfreaks gibt es aber glaube ich in diesem Forum nicht.
Deshalb kam auch der Hinweis von mir dass du deinen Code gerne nach meinem Beispielcode "zurecht biegen kannst", aber wenn du das so machst dann solltest du von den Hobbyprogrammierern in diesem Forum bitte keine Hilfe mehr erwarten.

Ein Dankeschön für deinen Beitrag kannst du von mir gerne bekommen. Herzlichen Dank.

Ich vermute mal dass dir die Grundlagen der Programmierung mit der Programmiersprache C nicht geläufig sind und dass diese Programmiersprache eine lange Tradition und weite Verbreitung hat.
Es wird dir also nur übrig bleiben die Sprache so hinzunehmen wie sie ist, oder dir die Sprache nach meinem Beispiel aus #4 nach deinen Wünschen anzupassen.
Die Sprache selbst zu ändern wird dir nicht gelingen, das wäre so als wolltest du das GG der BRD ändern.

Da die Arduino Plattform aber Open Source ist hast du noch die Alternative eine eigene Sprache nach deinen Wünschen zu entwickeln. Wer weiß, vielleicht gelingt dir ja der große Wurf. Smile

Gruß
Arne

ExclamationMit zunehmender Anzahl qualifizierter Informationen bei einer Problemstellung, erhöht sich zwangsläufig die Gefahr auf eine zielführende Antwort.Exclamation
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
29.01.2016, 17:40
Beitrag #7
RE: Arduino Codeschnipsellitanei?
[quote='ardu_arne' pid='27205' dateline='1454081171']
Hallo joseph2016,

ich beziehe mich jetzt auf deinen Eingangspost #1 meine Antwort #4
und deinen Post #5. Es haben sich weder die AGB´s geändert noch
hast du etwas verschlafen. Exclamation Vermutlich hat einer von
uns etwas missverstanden. Also der Reihe nach.

Also daran, ......unterworfen wurde.

Ja, es dürfte wohl allgemein unumstritten sein,
dass man einen Satz mit 50 Zeichen nicht so schnell lesen kann,
als ein Wort mit vllt. 10 Silben, oder habt ihr da eine andere
Methode, als der Rest der Welt!?


Ich kann da nur für mich sprechen. Nein, mir geht es nicht
(mehr) so.

Wie lange hast du denn darum kämpfen müssen?
und hast du dich nicht das gleiche gefragt wie ich? Ich kenne halt
andere Basiccodes die sehr kurz sind, und mit denen man ruckzuck
ein Programm schreiben kann, und wo man keinen besseren Überblick
hat, als bei diesem CodeListung.

...
Man könnte sich wirklich fragen, was sich die Denker
....und überblicken lässt.

...
Ich sehe das grundlegend anders. Meiner Meinung nach haben die
"Denker dieser Sprache" und die "Erbauer von Arduino" mit der
Auswahl der Programmiersprache C für den Arduino die absolut
beste Entscheidung getroffen die möglich war.

Das sehr ich anders! Ich schreibe hier mal einen
Code rein, und bitte dann diesen in C umzuschreiben, dann reden
wir wieder darüber, ob das wirklich so ist, wie du sagst, oder so
wie ich das empfinde. Bin gespannt wie lange der ArduinoCode
bzw. der C-Code gegenüber "meinem Codebeispiel" dann sein
wird, und welcher von beiden übersichtlicher ist...

...
Beispiele:
delay........
Genau dieses Beispiele habe ich in meiner Antwort #4 aufgegriffen.
........Aber scheinbar hast du dir diesen Code nicht richtig angeschaut
oder auch nicht verstanden, denn nur mit dieser Vermutung verstehe
ich deine Antwort:
............
Natürlich habe ich alles klar verstanden!

Oder gibt es in dem Code aus meinem Beitrag #4 nun noch weitere
Dinge welche dir nicht genehm sind?

Ich habe alles gut verstanden und es ist alles
genehm!...


Also ich, und vermutlich auch andere, stehen nicht oder nicht mehr
vor den gleichen Problemen wie du. Fast alle User hier im Forum
beschäftigen sich mit dem Arduino als Hobby. Ich finde es deshalb
vermessen diese User als "reine Programmierfreaks" zu bezeichnen.

Ich sehe ein Programmierfreak als ein Profi an,
und nicht als etwas anderes! Das sollte doch ein Kompliment
sein!


Deshalb kam auch der Hinweis von mir dass du deinen Code gerne
nach meinem Beispielcode "zurecht biegen kannst"...

Das werde ich aj gerne versuchen!
Ein Dankeschön für deinen Beitrag kannst du von mir gerne
bekommen. Herzlichen Dank.
Das mit dem Dankeschön war für deine Antworten
gemeint und nicht von dir zu mir!


Ich vermute mal dass dir die Grundlagen der Programmierung mit
der Programmiersprache C nicht geläufig sind und dass diese
Programmiersprache eine lange Tradition und weite Verbreitung hat.

Ja, du hast recht, ich bin ein NewComer was C
betrifft, aber wenn man es umdefinieren kann, wieso sollte man
das dann nicht so tun!? Und niemand wird doch freiwllig einen
Roman schreiben wollen, wenn er das mit 30% erledigen kann!


Da die Arduino Plattform aber Open Source ist hast du noch die
Alternative eine eigene Sprache nach deinen Wünschen zu entwickeln.
Wer weiß, vielleicht gelingt dir ja der große Wurf. Smile Gruß Arne

Meinst du das in Hinsicht auf das umdefinieren mit
#define? Dann hätte das doch schon von anderer Seite stattgefunden!
Gruß
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Arduino Ethernet mit USB 2 Serial Converter/Welche Einstellungen im Arduino-Sketch lociluke 1 1.113 05.05.2015 13:40
Letzter Beitrag: Bitklopfer
  Arduino Mega-Projekt mit EEPROM auf Arduino Due portieren Foto-Ralf 17 3.141 16.03.2015 12:06
Letzter Beitrag: Foto-Ralf

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste