/
ManualDE.txt
264 lines (243 loc) · 14.1 KB
/
ManualDE.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
<H1 class="chapter">EV3Basic</H1>
<P>
Einen Roboter nach eigenen Ideen zu programmieren macht Spaß. Am einfachsten gelingt das Programmieren einfacher Aufgaben
mit der grafischen Software von Lego.
Für größere und komplexere Programme braucht man jedoch eine textbasierte Programmiersprache.
Es gibt auch viele verschiedene Projekte, um Programmiersprachen für den EV3 zu adaptieren (LeJOS, MonoBrick, RobotC, ev3dev, and andere).
Aber alle haben eine Sache gemeinsam: Sie sind unglaublich schwierig zum Laufen zu bringen und zu benutzen. Man benötigt
jahrelange Erfahrung, um auch nur eine davon benutzen zu können.
</P>
<P>
Um diese Lücke zwischen ganz-einfach-aber-eingeschränkt und allmächtig-aber-schwierig zu füllen, habe ich EV3Basic entwickelt.
Diese Sprache ist speziell auf EV3-Benutzer zugeschnitten, die über die Beschränkungen der grafischen Programmierung hinausgehen
wollen, selbst aber noch keine IT-Profis sind.
EV3Basic ist recht einfach zu lernen und bietet trotzdem alle Möglichkeiten, komplexere Steuerungen zu entwickeln.
Dabei programmieren zu lernen, ist noch ein zustätzlicher Bonus.
</P>
<P>
EV3Basic basiert auf der Programmiersprache "Small Basic" von Microsoft, die für Kinder oder allgemein für Anfänger als Möglichkeit eines
Einstiegs ins Programmieren geschaffen wurde. "Small Basic" wurde absichtlich einfach gehalten und für meine EV3-Erweiterung have ich versucht,
das selbe Prinzip anzuwenden.
Ich würde mich sehr freuen, wenn diese Sprache tatsächlich dabei helfen könnte, programmieren zu lernen und den EV3 kreativer zu benutzen.
</P>
<address>
Reinhard Grafl
<br>
reinhard.grafl@aon.at
</address>
<H1 class="chapter">Erste Schritte</H1>
<P>
Was man zuerst braucht, ist ein PC mit Microsoft Windows (jede Version seit Windows Vista) und die aktuelle Version von
<a href="http://smallbasic.com">Microsoft Small Basic</a> die man sich gratis runterladen kann. Für komplette Programmier-Neulinge empfehle
ich die Tutorials auf Small Basic - Webseite um die grundlegenden Prinzipien zu erlernen. Das dauert nicht all zu lange und macht für sich
alleine auch schon Spaß.
</P>
<P>
Der nächste Schritt ist, die EV3-Erweiterung für Small Basic runterzuladen und zu installieren.
Bei der <a href="https://github.com/c0pperdragon/EV3Basic/releases">neuesten Version</a> gibt es die Datei "EV3BasicInstaller.msi", die
man gratis runterladen und installieren kann.
Die Installation muss direkt in das selbe Verzeichnis wie Small Basic gespeichert werden. Normalerweise ist das schon richtig voreingestellt, wenn man
den Installationspfad vom vorigen Schritt auch nicht verändert hat.
Beim nächsten Start von Small Basic, hat man Zugriff auf verschiedene Objekte, mit denen sich die unterschiedlichen Aspekte des EV3-Bricks ansteuern lassen,
sowie noch ein paar weitere universell nützliche Objekte.
</P>
<P>
Als erstes Programm könnte man
</P>
<pre>
LCD.Clear()
LCD.Write(40,40, "Hello EV3")
Program.Delay(10000)
</pre>
<P>
in das Programm-Fenster tippen (oder kopieren).
Sobald der EV3-Brick über ein USB-Kabel mit dem PC verbunden und eingeschaltet ist, kann man das Programm
mit dem großen blauen "Ausführen" - Knopf von Small Basic starten.
</P>
<P>
Während des Programmierens zeigt das Intellisense-System von Small Basic die möglichen Bibliotheksfunktionen und Erklärungen
für deren Benutzung. Diese Information is die selbe wie im Kapitel "Programmierbibliotheken".
Es sind noch viele zusätzliche Beispiel auf der EV3Basic Webseite als 'Examples.zip' verfügbar.
</P>
<P>
Den EV3-Brick vom PC aus fernzusteuern ist eine gute Sache, aber für viele Anwendungen ist es besser, das Programm direkt
auf dem Roboter auszuführen, unabhängig von einem PC, der jeden einzelnen Schritt festlegen muss.
</P>
<P>
Um das Programm auf den Brick zu bekommen, gibt es den EV3Explorer, der gleichzeit mit der EV3-Erweiterung mitinstalliert wurde, und
nun über das Windows Start Menü (EV3Basic/EV3Explorer) geöffnet werden kann. Dieses Programm zeigt ein Fenster mit zwei Hälften: Links
sieht man die Dateien, die am Brick gespeichert sind und rechts die Dateien am PC.
Man kann jedes der Beispiele oder jedes eigene Programm übersetzen und am Brick starten, indem man es auswählt und "Compile and Run" drückt.
Dadurch wird das Quellprogramm in eine für den Brick verständliche Form übersetzt (in eine Datei mit der Erweiterung .rbf), auf den
Brick übertragen und sofort gestartet.
Wenn das Programm auch im Menu auf dem Brick sichtbar sein soll, muss zuerst ein Unterverzeichnis des "prjs"-Verzeichnisses mit einem
aussagekräftigen Namen erstellt werden, in das das ausführbare Programm hineinkopiert werden muss (Der EV3-Brick zeigt nur Programme im Menü
an, die auch in ihrem eigenen Unterverzeichnis liegen).
</P>
<H1 class="chapter">Kurzreferenz für Small Basic</H1>
<p>
Für Personen, die bereits in der einen oder anderen Sprache programmieren können, und die nicht die Small Basic Tutorials für die grundlegendsten
Dinge durcharbeiten wollen, habe ich hier ein kleines Beispiel zusammengestellt, in dem die meisten Sprachkonstrukte von
Small Basic vorkommen.
Das Beispiel läuft nicht am EV3-Brick sondern nur am PC, weil es das TextWindow - Objekt benutzt.
</p>
<pre>
' Demo-Programm zur Erklärung der meisten Small Basic - Elemente
' (alle Kommentare starten mit einfachem Hochkomma)
' Ausführung startet hier
A = 5 ' Variablen werden implizit bei der ersten Benutzung deklariert
a = a + 1 ' Groß- und Kleinschreibung wird nie unterschieden
B[a] = 55 ' Arrays werden implizit deklariert und wachsen bei Bedarf
X = "hi" ' Variablen können auch Text enthalten
Sub write ' Definiert ein Unterprogramm (Parameter sind nicht möglich)
TextWindow.WriteLine(X) ' Aufruf einer Bibliotheksfunktion, Zugriff auf Variable
EndSub
' Ablauf des Hauptprogramms fließt um die Sub-Definition herum
TextWindow.WriteLine("A="+a) ' Texte werden mit + zusammengesetzt
WRITE() ' Aufruf eines Unterprogrammes. Groß- und Kleinschreibung ist egal.
write2() ' Kann Unterprogramm aufrufen, das erst später im Code definiert wird.
TextWindow.Writeline("B[6]="+B[6]) ' Zugriff auf Arrays
For i=2 to 5 ' Eine Schleife von 2 bis 5 (inclusive)
TextWindow.Writeline("I:"+I)
EndFor
For i=6.5 to 10.5 step 2 ' Eine Schleife mit nicht-ganzzahligen Werten und größeren Schritten
TextWindow.Writeline("I:"+I)
EndFor
Sub write2
write() ' Unterprogramm ruft andereres Unterprogramm auf
write()
EndSub
' Ablauf des Hauptprogramms fließt um die Sub-Definition herum
I=99 ' i und I sind zwei Schreibungen für die gleiche Variable
while i>3 ' Schleife mit Bedingung
i=i/2
TextWindow.Writeline("I:"+i)
endwhile
TextWindow.WriteLine("PI="+Math.PI) ' Eine Bibliotheks-Eigenschaft (Zugriff ohne Klammern)
TextWindow.WriteLine("SIN="+Math.Sin(0.5)) ' Eine Bibliotheks-Funktioen mit Rückgabewert
A=50
B=20
If a<5 then ' Eine bedingte Anweisung mit mehreren Möglichkeiten
TextWindow.WriteLine("first")
elseif a<10 and b<100 then ' logische 'and' - Verknüpfung
TextWindow.WriteLine("second")
elseif a<20 or (b>40 and b<60) then ' verschachtelte logische Verknüpfungen
TextWindow.WriteLine("third")
else
TextWindow.WriteLine("other")
endif
</pre>
<H1 class="chapter">Unterschiede zwischen Small Basic and EV3Basic</H1>
<P>
Obwohl ich versucht habe, das Originalverhalten von Small Basic in meinem EV3-Compiler so gut wie
möglich zu imitieren, gibt es doch einige Dinge, die mit der Laufzeitumgebung des EV3-Bricks nicht möglich sind.
</P>
<H3 class="subchapter">Variablen haben einen Datentyp</H3>
<P>
Während Small Basic in jede Variable abwechselnd sowohl Zahlen oder Texte oder ganze Arrays speichern kann,
erhält bei EV3-Basic jede Variable einen der folgenden Datentypen:
</P>
<ul>
<li>Zahl (eine 32bit Fließkommazahl)</li>
<li>Text </li>
<li>Array von Zahlen</li>
<li>Array von Texten</li>
</ul>
<P>
Jede Variable bekommt bei der ersten Benutzung im Programm einen dieser Typen zugewiesen und kann
ab dann nichts anderes als Werte dieses Types speichern.
</P>
<H3 class="subchapter">Operatoren und Funktionen arbeiten entsprechend der Operanden-Typen</H3>
<P>
Arithmetische oder logische Operatoren müssen mit spezifischen Datentypen benutzt werden und liefern ebenfalls
einen definierten Datentyp als Ergebnis (z.B. der Operator "<" erhält zwei Zahlen und liefert einen Text).
Eine Ausnahme sind die Gleichheits/Ungleichheits-Operatoren, die entweder mit Zahlen oder Texten arbeiten, abhängig
von den Datentypen der Operanden. Zweite Ausnahme ist der "+" - Operator, der entweder Zahlen addiert, oder
Texte zusammenhängt.
Ähnliche Einschränkungen gibt es für die Parameter von Bibliotheksfunktionen, die jeweils einen fixen Typ erwarten.
Als kleine Erleichterung werden dort Zahlen automatisch in Texte konvertiert, wenn die Funktion einen Text benötigt
(aber nicht anders herum).
</P>
<H3 class="subchapter">Arrays</H3>
<P>
Die Arrays von Small Basic arbeiten sehr universell und können jede Zahl oder jeden Text als Index verwenden.
EV3-Basic kann das nicht. Nur Zahlen sind als Index erlaubt, und nur nicht-negative ganze Zahlen funktionieren wie erwartet.
(A[4.5] ist das selbe wie A[4], A[-4] liefert aber immer 0 oder "")
Es gibt keine Unterstütztung für mehrdimensionale Arrays.
Arrays können an Bibliotheksfunktionen übergeben werden. Array-Rückgabewerte müssen aber jeweils sofort in eine Variable gespeichert werden
und können nicht statt dessen sofort an andere Funktionen geschickt werden (es gibt keinen automatisch angelegten temporären Speicher für Arrays).
<P>
<H3 class="subchapter">Einschränkungen bei Text</H3>
<P>
Jede Variable vom Typ Text kann maximal 251 Zeichen enthalten und die möglichen Zeichen beschränken sich
auf die Unicode-Werte 1 - 255.
Das selbe gilt für alle Elemente eines Text-Arrays.
</P>
<H1 class="chapter">Bluetooth-Unterstützung</H1>
<P>
Die einfachste und verlässlichste Methode, den EV3 mit dem PC zu verbinden, ist über ein USB-Kabel.
Aber in manchen Fällen ist eine Kabelverbindung zu unpraktisch, vor allem bei mobilen Robotern.
</P>
<P>
Wenn der PC Bluetooth unterstützt (entweder mit einem Dongle oder schon eingebaut), kann der EV3
so konfiguriert werden, dass die Kommunikation auch drahtlos möglich ist.
Wenn es noch nicht bereits geschehen ist, muss der EV3 zur Liste der Bluetooth-Geräte am
PC hinzugefügt werden. Zuerst muss Bluetooth am EV3 aktiviert werden. Dazu müssen im Einstellungs-Menü die Punkte
"Bluetooth" und "Visibility" angewählt werden.
Am PC muss man dann in der Übersicht der Bluetooth-Geräte das neue Gerät suchen und hinzufügen. Nach einigen
weiteren geführten Schritten, bei denen man auch am EV3 den Zugriff zulassen, und einen Kopplungs-Code
(ist normalerweise "1234") eingeben muss, sollte die Verbindung hergestellt sein.
</P>
<P>
Sobald es eine Verbindung gibt, und die notwendigen Gerätetreiber automatisch installiert wurden,
kann der PC mit dem EV3 über einen sogenannten "Seriellen Anschluss" kommunizieren. Dieser Anschluss hat
eine Bezeichnung in der Form "COM1", "COM2", oder ähnlich. Der tatsächlich vergebene Name ist
in der Eigenschafts-Seite des Bluetooth-Gerätes ersichtlich.
</P>
<P>
Um diese neue Verbindung mit EV3-Basic zu verwenden, muss man nur das Programm wie gewohnt vom Small Basic
starten, oder den EV3-Explorer benutzen. Falls kein EV3 an einem USB-Anschluss gefunden werden kann, zeigt
das Programm weitere Möglichkeiten an. In dem Dialogfenster erscheinen auch alle potentiellen "Seriellen
Anschlüsse", an denen ein EV3 verbunden sein könnte. Wenn man den richtigen auswählt, sollte
eine Verbindung funktionieren.
</P>
<H1 class="chapter">WiFi-Unterstützung (WLAN)</H1>
<P>
Wie die Bluetooth-Verbindung, dient eine Kommunikation über WiFi ebenfalls zur drahtlosen
Kommunikation zwischen dem PC und dem EV3-Brick. WiFi hat einige Vorteile, wie höhere Geschwindigkeit,
Reichweite und Stabilität. Es hat aber auch Nachteile wie größeren Stromverbrauch und die Tatsache,
dass man einen WiFi-Dongle an den EV3 anstecken muss. Außerdem funktioniert das nur, wenn man
auch einen WiFi-Router zur Verfügung hat.
Teilweise ist es eine Geschmackssache, ob man Bluetooth oder das WiFi verwenden will.
</P>
<P>
Um die WiFi-Variante zu benutzen, benötigt man einen speziellen Dongle, der kompatibel mit dem EV3 ist.
Derzeit gibt es nur ein einziges Modell das mit einem unmodifizierten EV3 funktioniert: "Netgear WNA1100", der
an den großen USB-Stecker an der linken Seite des EV3 angesteckt wird.
Die Verbindung kann man direkt am Einstellungs-Menü vom EV3 einrichten. Man muss zuerst die Option "WiFi" aktivieren
(das dauert ein bisschen bis der Dongle gestartet ist) und dann muss man die Verbindung zum WiFi-Router herstellen.
Für den Fall, dass das Wifi-Netzwerk durch Verschlüsselung geschützt ist, muss hier der WPA2-Schlüssel
eingegeben werden. Derzeit werden keine anderen Verschlüsselungsmethoden unterstützt.
</P>
<P>
Sobald eine Verbindung zwischen EV3 und Router hergestelllt ist, sollte der EV3 eine IP-Adresse erhalten haben.
Diese Adresse in der Form "10.2.3.4" oder ähnlich, wird im Einstellungs-Menu im Punkt "Brick Info" ganz unten
in der Liste angezeigt.
</P>
<P>
Um endlich den EV3 von Small Basic oder mit dem EV3-Explorer anzusteuern, muss man den "WiFi"-Button im Dialogfenster,
das nach der richtigen Verbindungsmethode fragt, drücken.
Dort muss die IP-Adresse genauso wie vom Brick angezeigt eingegeben werden. Das muss man nur einmal machen,
diese Adresse wird am PC für zukünftige Verwendung gespeichert.
</P>
<P>
Achtung: Der EV3-Brick verbindet sich nach dem Start nicht automatisch mit dem Router. Das muss jedesmal von Hand veranlasst werden.
</P>
<H1 class="chapter">Dokumentation der Bibliotheksfunktionen</H1>
<P>
Die Laufzeit-Bibliothek für den EV3 besteht aus einzelnen Komponenten, die 'Objekte' genannt werden. Jedes Objekt
stellt Funktionen für einen spezifischen Teil des Systemes bereit.
Diese Liste enthält alle Objekte, die sowohl für Small Basic am PC (mit der EV3-Erweiterung) als auch am EV3-Brick selbst verfügbar sind.
Beim Schreiben vom Programmen, die sowieso nur am PC laufen sollen, kann man auch alle weiteren Objekte von Small Basic benutzen.
Sie sind hier aber nicht beschrieben.
</P>