Feedback Ultraschallsensor Sicherheitssystem mit Buzzer

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen

Autor: Justin Frommberger

Proband 1

Programmierrichtlinien:

Passt es das die Programmierrichtlinien unter "https://wiki.hshl.de/wiki/index.php/Programmierrichtlinien_Einsteiger" so wenig und vorallem so eigen sind ? kenne es bspw. eigentlich so das man variablen komplett klein und Methoden Namen groß schreibt (ist meine Java vorgabe geweseb). Wenn bei dir methoden kleingeschrieben werde muss das aufjedenfall auch ins wiki

Nen bsp das ich auf ner alten seite durch google fix gefunden hab: (Gibt auch richtige codeguidlines von bpsw. Google oder so)

Use descriptive names for all variables, function names, constants, and other identifiers. Use single letter identifiers only for the counter in loops. Class names start with an upper case letter. Variable names start with a lower case letter. (Variables include parameters, local variables, and data fields. Exception: use UPPER_CASE for constants - final variables.) Method names start with a lower case letter. Multi-word identifiers are internally capitalized. Do not use hyphens or underscores to separate multi-word identifiers (except for constants, which have all upper case letters).

Also du könntest bei dir noch reinschreiben, das namen immer eindeutig beschreibend seien sollen, das zusammengesetzte namen in Camel-Case geschrieben werden usw.

Guck außerdem das du die geschweiften klammer immer gleich nutzt (ist manchmal unterschiedlich), Also: void(){ }

versus:

void() { }

sind zwei verschiedene Coding styles über die sich immer gestritten wird was man lieber mag. Solltest konsistent seien musst das aber denke nicht umbedingt definieren (haben btw auch namen aber da komm ich gerad net drauf)


6.3.4 Entfernung und Dauer:

"Berechnen Sie die Strecke durch 2 multipliziert mit der Schallgeschwindigkeit = 0.03432." bischen komisch geschrieben. Das sieht aus als ob die gesamtrechnung das ergebnis ist und nicht das das nur die Schallgeschwindigkeit ist.

Außerdem warum ist da keine Maßeinheit hinter !!!! das darf nicht fehlen, sind ja keine Bananen xD



7. Komplett lösung:

"Zählt der Mikrocontroller die Zeit in Mikrosekunden, bis der Schall zum Ultraschallsensor zurückkehrt" <- Satzbau. Das ist doch keine frage oder? ;)

Also man kann den Mustercode noch bischen effizienter machen und denke kürzer, aber nicht so das er so gut leserlich bleibt wie jetzt. Finde das man dem Code sehr gut folgen kann und vorallem die Kommentare gut gesetzt sind.

Wenn du ne idee haben willst wie man das vllt sogar noch etwas kürzer strukturieren kann ginge das wie folgt:

erst alle inputs direkt auf LOW setzen, also digitalWrite(LED_LAMP_GREEN, LOW); digitalWrite(LED_LAMP_YELLOW, LOW); digitalWrite(LED_LAMP_RED, LOW);

und dann abstand checken und gegebenenfalls den richtigen hochsetzen

if (Entfernung < 15) {                                
  digitalWrite(LED_LAMP_GREEN, HIGH);                // LED Grün geht an
}
elif (Entfernung < 10) {
  digitalWrite(LED_LAMP_YELLOW, HIGH);
}
elif (Entfernung < 5) {
  digitalWrite(LED_LAMP_RED, HIGH);
  Sound = 1000;
}

und dann wie gehabt. KP obs wirklich besser ist, fands nur bischen eleganter weil kürzer. Ggf aber schlechter zu erklären.

Habs btw nicht hingekriegt in dem Online arduino das ding auszulösen, also des es nicht "auerßhalb der Range" ist. Hab rumgeklickt aber passierte nicht. sollte man vllt dazuschreiben wie das geht bin vllt aber auch einfach zu dumm. (Also an die stelle wo du den Online Arduino mit link angibst kann man das hinzuschreiben) - Würde übrigens "Außerhalb der Reichweite" anstatt "Außerhalb der Range" schreiben. Denglisch ist bei sowas zwar unvermeidbar, aber finds da unpassend.


Grundkenntnisse der Programmierung:

zu deiner "https://wiki.hshl.de/wiki/index.php/Grundkenntnisse_Programmierung_(Pulsierende_LED)" seite kommt man nur durch links von unterteilen also bspw. wenn man auf "https://wiki.hshl.de/wiki/index.php/Grundkenntnisse_Programmierung_(Pulsierende_LED)#Initialisierung_(Zuweisung)" klickt. Ich würde definitiv ganz oben beim ablauf die komplette seite verklinken sodass ein user bei fragen zu codestellen erstmal da nachschauen kann. Bspw. warum loop() und setup() genutzt werden etc. Hatte mich schon gefragt warum du das nirgends erklärst - war halt auf der Seite die ich erst garnicht gefunden habe xD.

2.2 Du benutzt aufeinmal "Du" anstatt "Sie" das sollte überall einheitlich seien. Prüf das am besten nochmal.

5.1 "Das if-Bedingung checkt, ob eine Bedingung wahr ist und führt dann den Code aus, der innerhalb der Klammern steht." Ist leider nicht richtig. Besser wäre: Die if-Bedingung prüft, ob die angegebene Bedingung in den runden klammern () wahr ist und führt dann den Code aus, der innerhalb der Geschweiften Klammern {} steht. Siehe Beispiel ...


Proband 2



→ zurück zum Hauptartikel: BA: Arduino-Projekte für die Lehre