Hier werden die Unterschiede zwischen zwei Versionen gezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
projektewise21:fliegenderroboter:doku [2022/03/27 13:40] d.golovko [Code] |
projektewise21:fliegenderroboter:doku [2022/04/25 00:21] (aktuell) d.golovko |
||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
+ | |||
======Zeppelin====== | ======Zeppelin====== | ||
Zeile 10: | Zeile 11: | ||
Ein ähnliches Projekt, welches unserem als Inspiration gedient hat, ist der [[http://silent-runner.net/index.php?title=Main_Page|silent runner]] vom [[https://windreiter.de/|Windreiter-Projekt]]. | Ein ähnliches Projekt, welches unserem als Inspiration gedient hat, ist der [[http://silent-runner.net/index.php?title=Main_Page|silent runner]] vom [[https://windreiter.de/|Windreiter-Projekt]]. | ||
+ | Damit ihr euch vorstellen könnt, wie das am Ende aussieht, hier ein Bild unseres Zeppelins: | ||
+ | <imgcaption image4|>{{ :projektewise21:fliegenderroboter:zeppelin_fliegend.jpg?direct&650 |Unser fertiger Zeppelin}}</imgcaption> | ||
====Überblick==== | ====Überblick==== | ||
===Baugruppen=== | ===Baugruppen=== | ||
- | Unser Zeppelin besteht aus dem Ballon, der Motoraufhängung inklusive Akkus, der Aufhängung der Finnen, einem Steckbrett mit Arduino und Bluetooth-Modul und den Sensoren. | + | Unser Zeppelin besteht aus dem Ballon, der Motoraufhängung inklusive Electronic Speed Controller (ESC) mit Akkus, der Aufhängung der Finnen mit den Servos, einem Steckbrett mit Arduino und Bluetooth-Modul und den Sensoren (Phototransistoren und Ulltraschalldistanzsensoren). |
===Aufgaben=== | ===Aufgaben=== | ||
- | Die größte unserer Aufgaben war die Steuerung unseres Zeppelin über Bluetooth. Durch das Füllen mit Helium wurde das Problem des zum Fliegen bringen an sich umgangen, welches wir zum Beispiel bei einer Drohne gehabt hätten, aber die Steuerung ist notwendig, damit der Zeppelin nicht einfach nur unter der Decke des Raumes hängt. Die Steuerung teilt sich wiederum in mehrere Bereiche auf: das Ansteuern von Motor, ESC und der Servos, sowie die Verbindung dieser mit dem Propeller und den Steuerflossen. | + | Die größte unserer Aufgaben war die Steuerung unseres Zeppelin über Bluetooth. Durch das Füllen mit Helium wurde das Problem des zum Fliegen bringen an sich umgangen, welches wir zum Beispiel bei einer anderen Art von Drohne gehabt hätten, aber die Steuerung ist notwendig, damit der Zeppelin nicht einfach nur unter der Decke des Raumes hängt. Die Steuerung teilt sich in mehrere Bereiche auf: das Ansteuern von Motor, ESC und der Servos, sowie die Verbindung dieser mit dem Propeller und den Steuerflossen. |
Beim Einfüllen des Heliums stellte sich noch ein weiteres Problem heraus: zwar flog der Zeppelin, aber die Aufhängung der Flossen war deutlich schwerer als die Vorderseite, was zu einem Ungleichgewicht führte, gegen das man schwer gegensteuern konnte. Zuerst haben wir versucht, dies mit einem Gegengewicht auszugleichen, mussten aber feststellen, dass der Zeppelin dann zu schwer war zum fliegen. Deswegen waren wir gezwungen, das Steckbrett mit Arduino und allen Kabeln weiter nach vorne umzuordnen, um den Zeppelin in eine senkrechte Lage zu bringen. | Beim Einfüllen des Heliums stellte sich noch ein weiteres Problem heraus: zwar flog der Zeppelin, aber die Aufhängung der Flossen war deutlich schwerer als die Vorderseite, was zu einem Ungleichgewicht führte, gegen das man schwer gegensteuern konnte. Zuerst haben wir versucht, dies mit einem Gegengewicht auszugleichen, mussten aber feststellen, dass der Zeppelin dann zu schwer war zum fliegen. Deswegen waren wir gezwungen, das Steckbrett mit Arduino und allen Kabeln weiter nach vorne umzuordnen, um den Zeppelin in eine senkrechte Lage zu bringen. | ||
Ein weiterer Punkt, den es zu lösen galt, war die Befestigung der Mechanik am Ballon. Dies haben wir fast ausschließlich mit Gaffa Tape gelöst, was unserem Roboter den Namen „Gaffelin“ eingebracht hat, der auch auf der Seite des Ballons zu sehen ist. | Ein weiterer Punkt, den es zu lösen galt, war die Befestigung der Mechanik am Ballon. Dies haben wir fast ausschließlich mit Gaffa Tape gelöst, was unserem Roboter den Namen „Gaffelin“ eingebracht hat, der auch auf der Seite des Ballons zu sehen ist. | ||
- | |||
- | <note important> | ||
- | Wo ist das zu sehen? Fügt bitte am Anfang dieser Beschreibung eine Abbildung vom gesamten Zeppelin hinzu, damit die Lesenden vom Anfang an eine Vorstellung darüber haben. | ||
- | |||
- | |||
- | </note> | ||
An der Spitze des Ballons sitzen zwei Ultraschallsensoren und drei Phototransistoren. Erstere sollen eigenständig die Entfernung des Zeppelins von einem Hindernis feststellen und im Zweifel ausweichen bzw. den Motor stoppen, letztere sollen es ermöglichen, den Zeppelin Licht folgen zu lassen. | An der Spitze des Ballons sitzen zwei Ultraschallsensoren und drei Phototransistoren. Erstere sollen eigenständig die Entfernung des Zeppelins von einem Hindernis feststellen und im Zweifel ausweichen bzw. den Motor stoppen, letztere sollen es ermöglichen, den Zeppelin Licht folgen zu lassen. | ||
Zeile 62: | Zeile 59: | ||
Da das Labor nicht den passenden brushless Motor für unseren Zeppelin hatte, mussten wir diesen Online bei [[https://www.ebay.de/itm/274459265274|eBay bestellen]]. | Da das Labor nicht den passenden brushless Motor für unseren Zeppelin hatte, mussten wir diesen Online bei [[https://www.ebay.de/itm/274459265274|eBay bestellen]]. | ||
- | Das musste außerdem sehr schnell geschehen, weil der Motor aus China verschickt wurde. Die Auswahl des Motors war auch keine einfache. Denn wir hatten einen Beispielmotor aus dem Windreiter-Projekt, doch konnte man diesen nicht mehr bestellen. Deswegen haben wir einen ähnlichen gesucht der die Anforderungen erfüllt. | + | Das musste außerdem sehr schnell geschehen, weil der Motor aus China verschickt wurde. Die Auswahl des Motors war auch keine einfache. Denn wir hatten einen Beispielmotor aus dem Windreiter-Projekt, doch konnte man diesen nicht mehr bestellen. Deswegen haben wir einen ähnlichen gesucht, der die Anforderungen erfüllt. |
- | Eine davon war zunächst das Gewicht. Der Motor musste sehr leicht sein, damit wir kein Problem mit dem Gesamtgewicht des Zeppelin haben. Außerdem ist musste beim Motorkauf auf den Schub geachtet werden. Und damit zusammenhängend die Umdrehungen des Motors. | + | Eine davon war zunächst das Gewicht. Der Motor musste sehr leicht sein, damit wir kein Problem mit dem Gesamtgewicht des Zeppelin haben. Außerdem musste beim Motorkauf auf den Schub geachtet werden, und damit zusammenhängend die Umdrehungen des Motors. |
- | Damit unser Motor auch mit dem ESC zusammenpasst musste auch darauf geachtet werden, dass der Motor mit "2s" Spannung versorgt wird. Das "2s" steht bei RC Fahrzeugen dabei für die Anzahl an Akkus. Wenn nur ein Akku angeschlossen wird spricht man somit von "1s", bei zwei Akkus von "2s", und so weiter. Hierbei ist es sehr wichtig, dass die Akkus in Reihe geschalten werden, um die Spannung der angeschlossenen Akkus zu addieren. | + | Damit unser Motor auch mit dem ESC zusammenpasst musste auch darauf geachtet werden, dass der Motor mit "2s" Spannung versorgt wird. Das "2s" steht bei RC Fahrzeugen für die Anzahl an Akkus. Wenn nur ein Akku angeschlossen wird spricht man somit von "1s", bei zwei Akkus von "2s", und so weiter. Hierbei ist es sehr wichtig, dass die Akkus in Reihe geschaltet werden, um die Spannung der angeschlossenen Akkus zu addieren. |
Um die tatsächlich anliegende Spannung unterschiedlicher Akkus besser darzustellen hier [[https://www.heli-planet.com/images/Restkapa_Lipo.gif| eine Tabelle]]. | Um die tatsächlich anliegende Spannung unterschiedlicher Akkus besser darzustellen hier [[https://www.heli-planet.com/images/Restkapa_Lipo.gif| eine Tabelle]]. | ||
Der ESC ist das Herzstück der Stromversorgung. ESC steht für Electronic Speed Controller und wie der Name sagt, ist es die Geschwindigkeitsregelung für den brushless Motor. An den ESC werden die Akkus (in unserem Fall 2s) angeschlossen. Nun wird die Spannung zunächst in 5V umgewandelt und an den Arduino weitergegeben. Wenn dieser über die Signalleitung ein Signal mit dem Wert zwischen 0-1028 sendet, wird der Strom der Akkus außerdem an den Motor weitergegeben und der Motor beginnt sich zu drehen. | Der ESC ist das Herzstück der Stromversorgung. ESC steht für Electronic Speed Controller und wie der Name sagt, ist es die Geschwindigkeitsregelung für den brushless Motor. An den ESC werden die Akkus (in unserem Fall 2s) angeschlossen. Nun wird die Spannung zunächst in 5V umgewandelt und an den Arduino weitergegeben. Wenn dieser über die Signalleitung ein Signal mit dem Wert zwischen 0-1028 sendet, wird der Strom der Akkus außerdem an den Motor weitergegeben und der Motor beginnt sich zu drehen. | ||
- | Die Servos haben wir einfach an den Arduino an Pin 9,10 angeschlossen. Um bei der Stromversorgung Kabel zu sparen, haben wir die positiven und die negativen der Servos zusammengelötet und an den Arduino angeschlossen. | + | Die Servos haben wir einfach an die Arduino Pins 9 und 10 angeschlossen. Um bei der Stromversorgung Kabel zu sparen, haben wir die Positiven und Negativen der Servos zusammengelötet und dann an den Arduino angeschlossen. |
===Kommunikation Arduino & Processing=== | ===Kommunikation Arduino & Processing=== | ||
Zeile 75: | Zeile 72: | ||
Die Kommunikation wollten wir erst über WLAN erfolgen lassen, sind dann aber auf Bluetooth umgestiegen, die Umstellung der seriellen Kommunikation von USB auf Bluetooth keine größeren Anpassungen erfordert. | Die Kommunikation wollten wir erst über WLAN erfolgen lassen, sind dann aber auf Bluetooth umgestiegen, die Umstellung der seriellen Kommunikation von USB auf Bluetooth keine größeren Anpassungen erfordert. | ||
- | In Processing haben wir eine Klasse angelegt, die für das Senden und Empfangen von Daten verantwortlich ist. Dabei hat jeder Sensor einen bestimmten key, also eine Zahl, die ihm zugeordnet wurde und mit welcher jeweils erkannt werden kann, woher der übergebene Wert stammt. So kann es nicht vorkommen, dass beispielsweise ein Wert der Ultraschallsensoren mit dem eines Phototransistors verwechselt wird. Alle Daten werden in der Form ''{key:value}[Zeilenumbruch]'' übertragen. Abgesehen von den Sensoren gibt es auch keys für Error, Timestamp und Echo. | + | In Processing haben wir eine Klasse angelegt, die für das Senden und Empfangen von Daten verantwortlich ist. Dabei hat jeder Sensor und Aktuator einen bestimmten key, in Form einer Zahl, die ihm zugeordnet wird und mit welcher jeweils erkannt werden kann, woher der übergebene Wert stammt. So kann es nicht vorkommen, dass beispielsweise ein Wert der Ultraschallsensoren mit dem eines Phototransistors verwechselt wird. Alle Daten werden in der Form ''{key:value}[Zeilenumbruch]'' übertragen. Abgesehen von den Sensoren und Aktuatoren gibt es auch keys zur Übertragung von Zeitstempeln, Fehlern und zum Debuggen. |
Wir haben unseren Code so aufgeteilt, dass der Großteil auf Processing läuft. Dies hat den Vorteil, dass der Arduino nicht an die Grenzen seiner Speicherkapazität kommt. Allerdings ist der Arduino so auch abhängig von der Bluetoothverbindung mit dem Computer und Processing, sodass er nicht eigenständig betrieben werden kann, wie es bei den meisten anderen Robotern des Projektlabors der Fall ist. | Wir haben unseren Code so aufgeteilt, dass der Großteil auf Processing läuft. Dies hat den Vorteil, dass der Arduino nicht an die Grenzen seiner Speicherkapazität kommt. Allerdings ist der Arduino so auch abhängig von der Bluetoothverbindung mit dem Computer und Processing, sodass er nicht eigenständig betrieben werden kann, wie es bei den meisten anderen Robotern des Projektlabors der Fall ist. | ||
Zeile 81: | Zeile 78: | ||
===Steuerung=== | ===Steuerung=== | ||
- | Die manuelle Steuerung erfolgte in unseren Test über einen Gamecontroller, der an den Computer angeschlossen wurde. Ebenfalls ist es möglich, die w a und d Tasten für Motorschub und rechts und links zu nutzen, sowie die hoch und runter Pfeiltasten für die dementsprechende Richtung. Dabei muss der Controller jedoch trotzdem an den Computer angeschlossen sein. Steht kein Controller zur Verfügung, muss der Code dementsprechend geändert werden. | + | Die manuelle Steuerung erfolgt in unseren Tests über einen (Xbox-)Gamecontroller, der an den Computer angeschlossen wird. Ebenfalls ist es möglich, auf der normalen Laptoptastatur die ''w'' Taste für Motorschub, ''a'' für links und ''d'' für rechts zu nutzen, sowie ''↑'' und ''↓'' für die dementsprechende Richtung. Dabei muss der Controller jedoch trotzdem an den Computer angeschlossen sein. Steht kein Controller zur Verfügung, muss der Code dementsprechend geändert werden. |
- | + | ||
- | Wie auch das Versenden der Daten wird die Steuerung über spezielle Klassen. ''VirtualController'' ist in der Lage, die aktuelle Position der Servos und den Schub des Motors zu regeln, während ''ManualMode'' die Funktionen beinhaltet, welche das Steuern per Tastatur ermöglichen. Dabei greift letztere Klasse auf erstere zu. | + | |
===Licht folgen=== | ===Licht folgen=== | ||
Zeile 91: | Zeile 86: | ||
<imgcaption image3|>{{ :projektewise21:fliegenderroboter:sensoren.jpg?direct&650 |Phototransistoren und Ultraschallsensoren}}</imgcaption> | <imgcaption image3|>{{ :projektewise21:fliegenderroboter:sensoren.jpg?direct&650 |Phototransistoren und Ultraschallsensoren}}</imgcaption> | ||
- | Vom Arduino werden die Daten der Sensoren an Processing auf dem Computer weitergeleitet, wo sie verglichen werden. Ist der Wert des unteren PT um eine bestimmte Toleranz höher als die beiden Oberen, wird auf die bereits vorhandene Steuerfunktion zugegriffen und die Servos bewegen die Flossen so, dass der Zeppelin nach unten fliegt. | + | Vom Arduino werden die Daten der Sensoren an Processing auf dem Computer weitergeleitet, wo sie verglichen werden. Ist der Wert des unteren PT um eine bestimmte Toleranz höher als die beiden Oberen, wird auf die entsprechende Steuerfunktion zugegriffen und die Servos bewegen die Flossen so, dass der Zeppelin nach unten fliegt. |
Sendet einer der oberen Phototransistoren einen höheren Wert als der Untere, wird geprüft, ob dieser um eine bestimmte Toleranz höher ist als der rechte, bzw. linke PT. Ist dies der Fall wird wieder auf eine Steuerfunktion zugegriffen, die den Zeppelin nach links oder rechts fliegen lässt. | Sendet einer der oberen Phototransistoren einen höheren Wert als der Untere, wird geprüft, ob dieser um eine bestimmte Toleranz höher ist als der rechte, bzw. linke PT. Ist dies der Fall wird wieder auf eine Steuerfunktion zugegriffen, die den Zeppelin nach links oder rechts fliegen lässt. | ||
Zeile 100: | Zeile 95: | ||
{{lichtfolgen.mp4|Licht folgen (ohne Kollisionsvermeidung)}} | {{lichtfolgen.mp4|Licht folgen (ohne Kollisionsvermeidung)}} | ||
+ | |||
===Kollisionsvermeidung=== | ===Kollisionsvermeidung=== | ||
- | Am vorderen Ende des Zeppelin befinden sich zwei Ultraschallsensoren, die über Kabel mit dem Arduino verbunden sind. Sie senden durchgehend Werte, die der Arduino über Bluetooth an Processing weitergibt, wo der Abstand des rechten und des linken Ultraschallsensors vom nächsten Hindernis verglichen wird. Sinkt einer der Werte unter eine festgelegte Schwelle, d.h. kommt ein Gegenstand zu nahe, wird auf die zuvor geschriebene Steuerfunktion zugegriffen und der Zeppelin in die jeweils entgegengesetzte Richtung gelenkt, begleitet von der Nachricht „Eisberg voraus“. | + | Am vorderen Ende des Zeppelin befinden sich zwei Ultraschallsensoren, die über Kabel mit dem Arduino verbunden sind. Sie senden durchgehend Werte, die der Arduino über Bluetooth an Processing weitergibt, wo der Abstand des rechten und des linken Ultraschallsensors vom nächsten Hindernis verglichen wird. Sinkt einer der Werte unter eine festgelegte Schwelle, d.h. kommt ein Gegenstand zu nahe, wird auf die zuvor ensprechende Steuerfunktion zugegriffen und der Zeppelin in die jeweils entgegengesetzte Richtung gelenkt, begleitet von der Nachricht „Eisberg voraus“. |
===Diagramme=== | ===Diagramme=== | ||
Zeile 111: | Zeile 107: | ||
Für das Liniendiagramm haben wir zuerst ebenfalls versucht, eine eigene Klasse zu schreiben, die auch auf die gespeicherten Arrays zugreifen sollte. In einer simpleren Umgebung getrennt von unserem restlichen Code hat dies auch funktioniert, allerdings gab es Probleme beim Umformen in eine Klasse und bei der Eingliederung in den restlichen Code. Wir haben festgestellt, dass die Umsetzung zu aufwendig geworden wäre und verwenden deshalb nun die bereits existierende Library ''grafica''. | Für das Liniendiagramm haben wir zuerst ebenfalls versucht, eine eigene Klasse zu schreiben, die auch auf die gespeicherten Arrays zugreifen sollte. In einer simpleren Umgebung getrennt von unserem restlichen Code hat dies auch funktioniert, allerdings gab es Probleme beim Umformen in eine Klasse und bei der Eingliederung in den restlichen Code. Wir haben festgestellt, dass die Umsetzung zu aufwendig geworden wäre und verwenden deshalb nun die bereits existierende Library ''grafica''. | ||
- | Für das Darstellen des Akkustandes verwenden wir ein einfaches Rechteck, welches mit einem weiteren, farbigen Rechteck gefüllt ist, das den Akkustand darstellt. Es ist angelehnt an das entsprechende Symbol bei Smartphones oder Computern. Den Akkustand berechnen wir mit folgender Formel: | + | Für das Darstellen des Akkustandes verwenden wir ein einfaches Rechteck, welches mit einem weiteren, farbigen Rechteck gefüllt ist, das den Akkustand darstellt. Es ist angelehnt an das entsprechende Symbol bei Smartphones oder Computern. Die Akkuspannung berechnen wir mit folgender Formel: |
- | V<sub>in</sub> = (V<sub>out</sub> * (R<sub>1</sub>+R<sub>2</sub>)) / R<sub>2</sub> | + | U<sub>in</sub> = (U<sub>out</sub> * (R<sub>1</sub>+R<sub>2</sub>)) / R<sub>2</sub> |
wobei unsere Widerstände jeweils 22kOhm haben. V<sub>out</sub> wird an einem analogen Pin gemessen. | wobei unsere Widerstände jeweils 22kOhm haben. V<sub>out</sub> wird an einem analogen Pin gemessen. | ||
Zeile 174: | Zeile 170: | ||
Trotzdem gibt es natürlich auch negative Aspekte. Abgesehen von den im nächsten Punkt genannten Verbesserungsmöglichkeiten, hat unser Projekt im Gegensatz zu anderen den Nachteil, dass der Arduino immer eine Verbindung zum Computer braucht, damit der Zeppelin funktionieren kann. Auch die Füllung des Ballons ist ein Problem, da das Helium langsam entweicht und es eine komplette Füllung braucht, damit der Zeppelin fliegen kann. Diese Punkte waren jedoch von vornherein klar und wurden von uns in Kauf genommen, damit wir den ersten fliegenden Roboter des Projektlabors bauen konnten: | Trotzdem gibt es natürlich auch negative Aspekte. Abgesehen von den im nächsten Punkt genannten Verbesserungsmöglichkeiten, hat unser Projekt im Gegensatz zu anderen den Nachteil, dass der Arduino immer eine Verbindung zum Computer braucht, damit der Zeppelin funktionieren kann. Auch die Füllung des Ballons ist ein Problem, da das Helium langsam entweicht und es eine komplette Füllung braucht, damit der Zeppelin fliegen kann. Diese Punkte waren jedoch von vornherein klar und wurden von uns in Kauf genommen, damit wir den ersten fliegenden Roboter des Projektlabors bauen konnten: | ||
- | |||
- | <imgcaption image4|>{{ :projektewise21:fliegenderroboter:zeppelin_fliegend.jpg?direct&650 |Unser fertiger Zeppelin}}</imgcaption> | ||
{{testflug.mp4|Ein Testflug}} | {{testflug.mp4|Ein Testflug}} | ||
Zeile 199: | Zeile 193: | ||
Auch könnte man das gesamte Programm nutzerfreundlicher gestalten, eine App fürs Smartphone schreiben, und das Erkennen von Sprachbefehlen ermöglichen. | Auch könnte man das gesamte Programm nutzerfreundlicher gestalten, eine App fürs Smartphone schreiben, und das Erkennen von Sprachbefehlen ermöglichen. | ||
- | ====Code==== | + | ====Dateien==== |
- | Unser kompletter, lauffähiger Programmcode befindet sich [[code|hier]]. Dort findet sich auch eine .zip Datei und die Datei mit dem 3D-Modell unseres Zeppelins in Fusion 360 zum Download. | + | Unser kompletter, lauffähiger Programmcode befindet sich hier: |
+ | |||
+ | {{:projektewise21:fliegenderroboter:zeppelin-code.zip|Source-Code}} | ||
+ | |||
+ | Ebenfalls stellen wir das 3D-Model zur Verfügung, welches wir für das Drucken der Teile erstellt haben: | ||
+ | |||
+ | {{:projektewise21:fliegenderroboter:zeppelin_fusion_360_dateien.zip|Fusion 360 Dateien}} | ||
<note important> | <note important> | ||
- | Bitte packt euren Code und 3D-Dateien auf die selbe Seite wo die Doku ist. Grund: so kann ich später die Doku einfacher in den Archiv-Bereich übertragen. | + | **Bewertung der Projektarbeit** |
+ | |||
+ | Bauteile:\\ | ||
+ | - ESC \\ | ||
+ | - Servos\\ | ||
+ | - Bluetooth-Modul\\ | ||
+ | - Ultraschallsensoren\\ | ||
+ | - Phototransistoren (½ Punkte)\\ | ||
+ | - Kommunikation zwischen Arduino und PC\\ | ||
+ | Insgesamt 5,5 Bauteile => 16,5 Punkte | ||
+ | |||
+ | Komplexe Elemente: \\ | ||
+ | - Berechnung des Gewichtes und Schwierigkeiten im Zusammenhang mit dem Fliegen\\ | ||
+ | - 3D-Modellierung und Druck\\ | ||
+ | - Klassen und Grafiken in Processing\\ | ||
+ | Insgesamt 3 Elemente => 12 Punkte | ||
+ | |||
+ | Code: \\ | ||
+ | - Variablen-, Funktions-, Klassennamen: 2 Punkte\\ | ||
+ | - Aufteilung in Funktionen usw.: 2 \\ | ||
+ | - Redundanz: kein Abzug\\ | ||
+ | - Kommentare: 2 Punkte\\ | ||
+ | - Variablen möglichst lokal: 2 Punkte\\ | ||
+ | 8 Punkte | ||
+ | |||
+ | Arbeit im Team:\\ | ||
+ | - Verteilung 2\\ | ||
+ | - Kommunikation 2\\ | ||
+ | 4 Punkte | ||
+ | |||
+ | Weitere Aspekte:\\ | ||
+ | - Stabilität: 2 Punkte\\ | ||
+ | - Verkabelung: 2 Punkte\\ | ||
+ | 4 Punkte | ||
+ | |||
+ | Insgesamt 40 Punkte von 40 (mehr als 40 geht nicht). Tolle Arbeit!! | ||
+ | |||
+ | **Bewertung der Projektdokumentation** | ||
+ | |||
+ | Sehr gute detaillierte Dokumentation, wo ihr – trotz des großen Umfangs des Projektes – Umsetzungsdetails und eure Entscheidungen klar dokumentiert habt. Die Sprache liest sich sehr gut, und die Abbildungen helfen sehr, das Geschriebene besser zu verstehen. Meine Änderungswünsche habt ihr umgesetzt. Super! 20 Punkte von 20. | ||
</note> | </note> |