java03 – datentypen und operatoren

Werbung
java03 – datentypen und operatoren
worgtsone.scienceontheweb.com - mailto: worgtsone @ hush.com
2015-09-06 – 23. Januar 2016
Inhaltsverzeichnis
0 Lehrplan
1 AB Variablen und Konstanten
1.1 Ganzzahlige Datentypen .
1.2 Fließkomma-Datentypen .
1.3 Strings . . . . . . . . . . .
1.4 Deklaration . . . . . . . .
1.5 Initialisierung . . . . . . .
3
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
4
4
4
4
4
4
2 AB Hello World, Deklaration und Initialisierung
2.1 In Java . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.2 In C++ . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.3 Deklaration, Initialisierung und Ausgabe von Variablen
2.3.1 ... in Java . . . . . . . . . . . . . . . . . . . . .
2.3.2 ... in C++ . . . . . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
5
5
5
5
5
5
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
3 AB Programmentwicklung am Beispiel : Rechteck
6
4 AB Tastatur.java
7
5 AB Operanden, Prioritäten, Konvertierung
5.1 Operanden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.2 Prioritäten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.3 Typkonvertierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8
8
8
8
6 Übungen: Variablen und Operatoren
6.1 Rechnen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.2 Modulo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.3 Nützliches aus der Klasse Math . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9
9
9
9
7 Übungen : Eingeben – Verarbeiten – Ausgeben
7.1 Hallo . . . . . . . . . . . . . . . . . . . . . . .
7.2 Zwei Zahlen . . . . . . . . . . . . . . . . . . .
7.3 Würfel . . . . . . . . . . . . . . . . . . . . . .
7.4 Brutto . . . . . . . . . . . . . . . . . . . . . .
7.5 Quader1 . . . . . . . . . . . . . . . . . . . . .
7.6 Mittelwert . . . . . . . . . . . . . . . . . . . .
7.7 Prozent-Anteil . . . . . . . . . . . . . . . . . .
7.8 Kreis . . . . . . . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
10
10
10
10
10
10
10
10
10
8 arrays (Felder)
11
8.1 anlegen, belegen und anzeigen von feldern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
8.1.1 Ü Klassenspiegel aus Datenliste . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
9 arduino kurzgefaßt
9.0.2 Ü Schaltplan Ampel . .
9.0.3 Ü Variablen . . . . . . .
9.0.4 Ü 1/2 Hz . . . . . . . .
9.0.5 Ü 1/2 Hz am Steckbrett
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. .
. .
. .
. .
1
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
12
12
12
12
12
INHALTSVERZEICHNIS
2
9.0.6 Ü Programm Ampel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
9.0.7 Ü Programm DruckAmpel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
Disclaimer
Wissen ist zum Teilen da. Ich teile mein Wissen mit Ihnen, lieber Kollege.
Ich bin aber nicht perfekt. Unter [email protected] nehme ich dankbar Ihre
Verbesserungsvorschläge entgegen.
*
Legal Blurb: Alle Informationen in diesem Dokument sind falsch, unvolständig,
irreführend, irrelevant und / oder funktionieren einfach nicht.
Wenn Sie es trotzdem benutzen, und es geht dabei etwas kaputt, ist das Ihr Problem,
nicht meins.
*
Bitte teilen Sie meine Web-Adresse nicht Ihren Schülern mit.
0
0
LEHRPLAN
3
Lehrplan
In Q1 (die ehemalige 11/1) sind lt. Lehrplan Themenfelder 1-3 verpflichtend. Technische Kommunikation gibt es nicht
bzw. sie wird an meiner Schule ersetzt durch Maschinenbau-Grundkurs.
Leider hat im 1. Halbj. 2015/16 niemand auf die Stunden geschaut... 6 Wochen (davon 1 krank) plus 7 Wochen plus 2
nach den Winterferien läßt wenig Platz für Blicke über den Tellerrand.
Dafür wird ein arduino in Programmieren I aufgenommen. Es gilt also:
1. Themenfeld: Basiskonzepte (16h)
Grundbegriffe der Problemanalyse : Algotirhmus, Programm, Software
Programmiersprachen, Maschinensprachen, Assemblersprache, Höhere P’Sprachen
Übersetzungsprogramme und -vorgang : Interpreter, Compiler, zweistufige Übersetzung
Werkzeuge : Entwicklungsumgebungen, Debugger, Standard-Bibliotheken
Variablen und Konstanten : Elementare Datentypen, Deklaration und Initialisierung
Ausdrücke und Operatoren : arithmetische, relationale und logische O’en, Zuweisung, Prioritäten, implizite und
explizite Typkonvertierung
Tastatureingabe und Bildschirmausgabe
2. Themenfeld: Kontrollstrukturen (16h)
Grafische Darstellung von Algorithmen : Flußdiagramme, Struktogramme
Verzweigungen : einfach, mehrfach (CASE), mehrstufig
Schleifen : abweisend, annehmend, zählergesteuert
2a. Themenfeld: arduino (Klausur-relevant)
aufbauen von LEDs mit Vorwiderstand (gibt es in ET-Kurs) (R6 = 100,150,220,320,470,680,1000)
Taster abfragen
Ausgabe an LED
Ampel: bei Tastendruck einen Ampelzyklus durchlaufen, sonst schlafen
programm dazu in c schreiben, cross-compilieren und überspielen
3. Themenfeld: Eindimensionale Felder (16h)
Deklaration, automatische und explizite Initialisierung, Zugriff auf einzelne Elemente, Eigenschaften von Referenzvariablen (??? c++ !!!)
4. Themenfeld: Zweidimensionale Felder (16h) (nicht verbindlich)
5. Themenfeld: einfache Such- und Sortieralgorithmen (16h) (nicht verbindlich)
Sequentielle Suche
Bubble-Sort, Insertion-Sort, Effizienz
1
AB VARIABLEN UND KONSTANTEN
1
4
AB Variablen und Konstanten
Def.: Elementare Datentypen in Java sind Zahlendatentypen. Zudem gibt es eine Klasse String.
Zahlendatentypen nehmen Zahlen auf: ganzzahlige oder mit Nachkommastellen.
1.1
Ganzzahlige Datentypen
Der wichtigste Ganzzahlen-Datentyp sind integer. Sie decken den Bereich von -231 = −2147483648 bis +231 − 1 =
2147483647 ab.
Weitere Datentypen haben andere Zahlenbereiche und können Vorzeichen oder auch nicht:
long
-2^63 .. 2^63-1
short
-2^8 .. 2^8-1
unsigned long 0..2^64-1
unsigned int 0..2^32-1
byte
0..2^8
1.2
-9223372036854775808 .. 9223372036854775807
-256 .. 255
0..18446744073709551615
0..4294967296
0..255
Fließkomma-Datentypen
Fließkomma-Datentypen merken sich Zahlen mit Nachkommastellen mit einer gewissen Anzahl von Ziffern.
double
float
1.3
-4E309 .. 4E309
-2.8E39
.. 2.8E39
Strings
Strings merken sich Zeichenketten, d.h eine beliebige Folge und Anzahl von Computerzeichen.
1.4
Deklaration
Datentyp Variablenname;
d.h. der Wunsch ”Hallo Java, lege bitte eine Variablen vom Typ integer mit dem Namen k an.” liest sich wie folgt:
int k;
1.5
Initialisierung
Neuere Java-Versionen belegen Variablen ohne Zuweisung mit 0 (die Zahl Null). Es ist jedoch ein guter Brauch, der
Variablen sogleich einen Wert zuzuweisen, damit sie einen hat. Das Zuweisungszeichen in Java (und den meisten
anderen Programmiersprachen) ist =.
d.h. der Wunsch ”Hallo Java, weise k bitte den Wert 5 zu.” liest sich wie folgt:
k = 5;
Man kann beides in einer Zeile machen:
int k = 5;
legt die Variable k an und weist ihr den Wert 5 zu. Weitere Variablen mit dem Namen k in diesem Programm sind damit
verboten.
2
AB HELLO WORLD, DEKLARATION UND INITIALISIERUNG
2
2.1
AB Hello World, Deklaration und Initialisierung
In Java
class HelloWorld {
// Klassennamen GROSS und in KamelSchreibWeise
public static void main (String [] args) {
// oder psvm(S[]a)
System.out.println ("Hello World!!!");
}
}
System.out.println gibt den in Klammern folgenden String aus.
2.2
In C++
Sie können dieses Programm compilieren und ausführen zB mit Bloodshed Dev-C++.
#include <iostream>
// Bibliothek fuer Ein- und Ausgabe
using namespace std;
// Pflicht
int main () {
// geschweifte Klammern fassen Bloecke zusammen
cout << "HaloWelt, worgtsone, 01.08.2005" << endl;
// sagt, was das Programm macht
system.pause();
// Pflicht
return (0);
// Pflicht
}
// Ende des Blockes main()
2.3
2.3.1
Deklaration, Initialisierung und Ausgabe von Variablen
... in Java
class Variablen01 {
public static void main (String [] args) {
int i = 5;
int j = 7;
int summe = i + j;
System.out.println ("i="+i);
System.out.println ("j="+j);
System.out.println ("summe="+summe);
}
}
2.3.2
// gibt i=5
// gibt j=7
// gibt summe=12
... in C++
#include <iostream>
using namespace std;
// dies ist Datei kreis.cpp
int main () {
// geschweifte Klammern fassen Bloecke zusammen
cout << "kreis, 09.11.2001" << endl;
float pi = 3.1415926;
float radius = 5;
float umfang = 2 * pi * radius;
cout << "umfang = " << umfang << endl;
system.pause();
return (0);
}
5
3
3
AB PROGRAMMENTWICKLUNG AM BEISPIEL : RECHTECK
6
AB Programmentwicklung am Beispiel : Rechteck
1. Aufgabe : Schreiben Sie ein Programm, das nach Eingabe von Länge und Breite die Fläche und den Umfang
eines Rechtecks berechnet.
2. Analyse : Länge und Breite brauch ich und hab ich. Es sind vermutlich Zahlen mit Nachkommastellen.
Umfang = 2(l + b). Fläche =l ∗ b.
Das soll auch ausgegeben werden. Das steht zwar nicht in der Ausgabe, aber ein Programm, das so tolle Sachen
berechnet und dann für sich behält, ist doof.
3. Algorithmus :
4. Programm :
// Tastatur.class muss im selben Verzeichnis liegen
class Rechteck {
public static void main (String args[]) {
System.out.println ("Rechteck by worgtsone, 17.08.2006, does Rechteck");
System.out.print ("Laenge: ");
double l = Tastatur.leseKommazahl ();
System.out.print ("Breite: ");
double b = Tastatur.leseKommazahl ();
double f = l * b;
double u = 2 * (l + b);
System.out.println ("Umfang = " + u);
System.out.println ("Flaeche = " + f);
} }
******************** Programmlauf los ***********************
Rechteck by worgtsone, 17.08.2006, does Rechteck
Laenge: 55
Breite: 99
Umfang = 308.0
Flaeche = 5445.0
******************** Programmlauf end ***********************
5. Das war’s, Aufgabe ist gelöst.
4
4
AB TASTATUR.JAVA
7
AB Tastatur.java
Freundliche Leute der internationalen Java-Community haben Tastatur.java bereitgestellt.
Man muß es herunterladen und in dasselbe Verzeichnis wie die eigenen java-Dateien stecken. Anschließend kann man
die eingebauten Funktionen benutzen:
• public static String leseText () : gibt einen String
• public static int leseZahl () : gibt ein int
• public static double leseKommazahl () : gibt ein double
class Quadrat {
public static void main (String [] args) {
System.out.println ("Ich rechne ein Quadrat, 29.02.2009");
// Eingabe
System.out.println ("Gib mir Seite a:");
int a = Tastatur.leseZahl();
// Aufruf der Methode in der Klasse Tastatur
// Verarbeitung
int flaeche = a*b;
double diagon = Math.sqrt(a*a + a*a);
// Ausgabe
System.out.println ("flaeche = " + flaeche);
System.out.println ("diagonale = " + diagonale);
}
}
5
AB OPERANDEN, PRIORITÄTEN, KONVERTIERUNG
5
8
AB Operanden, Prioritäten, Konvertierung
5.1
Operanden
Java verwendet folgende Zeichen um Zahlen zu verknüpfen:
+ - * / % ( )
Strings werden mit + zusammengehängt:
String h = "hallo" + " " + "welt!";
5.2
Prioritäten
Weitere Fähigkeiten von Java werden in der Übung gefunden, insbesondere das nachkommastellenlose Dividieren von
Ganzzahlen.
5.3
Typkonvertierung
Java wandelt automatisch Ganzzahlentypen nach Fließkommatypen.
Java weigert sich, automatisch Fließkommazahlen nach Ganzzahlen zu wandeln, weil es nicht weiß, was es mit den
Nachkommastellen machen soll.
Durch einen Cast (Datentyp in Klammern) kann man das Wegwerfen der Nachkommastellen erzwingen.
Zahlen kann man zu Strings wandeln, indem man einen Leerstring addiert.
Strings kann man mit der Methode Integer.parseInt() bzw. Double.parseDouble() konvertieren.
Das folgende Programm illustriert das:
class cast {
public static void main (String[]args) {
System.out.println ("cast by worgtsone.scienceontheweb.net");
float f = 7.9f ;
int i = (int) (f);
System.out.println ("i="+i);
f = -7.9f ;
i = (int) (f);
System.out.println ("i="+i);
String s=""+f;
System.out.println ("s="+s);
s=f+"";
System.out.println ("s="+s);
double d=Double.parseDouble(s);
System.out.println ("d="+d + " d*d = "+ d*d);
}
}
==================== gibt: =====================
cast by worgtsone.scienceontheweb.net
i=7
i=-7
s=-7.9
s=-7.9
d=-7.9 d*d = 62.410000000000004
6
ÜBUNGEN: VARIABLEN UND OPERATOREN
6
9
Übungen: Variablen und Operatoren
6.1
Rechnen
Prüfen Sie die im folgenden genannten Regeln. Haken Sie die richtigen ab, schreiben Sie an die falschen ein f.
1. Es gelten die Zeichen + - * / ( ) %.
2. Java beherrscht die Regel ”Punkt vor Strich”.
3. Java berechnet Ganze Zahlen über 200 000 000 oder unter -200 000 000 fehlerfrei.
4. Java akzeptiert nur Dezimalpunkt.
5. Quadrieren: a2 = a * a.
6. Bei Divisionsaufgaben sollte man ein 1.0 * davorstellen.
7. Große Zahlen schreibt Java als aEb, das bedeutet a ∗ 10b .
Beispiel: 5E5 bedeutet 5*1000 = 50000. 5E-005 bedeutet 5*0,0001 = 0,00005.
8. In der Klasse Math sitzen einige nützliche Funktionen und Konstanten, zB sqrt(), PI, E.
9. Das % gibt mir den Rest bei der Division von Ganzen Zahlen.
Bsp: 15 : 4 =
10. Quadratwurzel:
Rest
√
. Dann ist in Java 15 / 4 =
und 15 % 4 =
keks = Math.sqrt(keks).
11. Nicht geschriebener Malpunkt: a(bc + d) = a * ( b * c + d).
12. Rechenaufgaben in der Ausgabe müssen eingeklammert werden und einen String vorangestellt bekommen, zB
System.out.println("2 + 2 = " + (2 + 2));
13. Bei Brüchen klammert man Zähler und Nenner ein, das ist NIE falsch.
6.2
Modulo
Wir gehen zurück in die 3. Klasse
Erstellen Sie eine 4-spaltige Tabelle. Die Spalten heißen a, b, a/b und a%b.
In a stehen 9,10,11,12,13,14,15,15,15,15. In b stehen 4,4,4,4,4,4,4,5,6,7. Füllen Sie die Tabelle aus.
6.3
Nützliches aus der Klasse Math
Math gibt uns folgende nützliche Funktionen an die Hand:
• Math.sqrt() – berechnet die Quadratwurzel;
• Math.PI – gibt π (ca. 3.141). Beachte: Konstanten in GROSSBUCHSTABEN;
• Math.E – gibt Eulersche Zahl e (ca. 2.818);
• Math.ceil() – gibt nächstgrößeres Double (???);
• Math.floor() – gibt nächstkleineres Double (???);
• Math.abs() – gibt Zahl mit positivem Vorzeichen zurück.
• Math.random() – gibt Zufallszahl zwischen 0 und 1 (excl.);
• Math.round() – gibt gerundetes Integer.
7
ÜBUNGEN : EINGEBEN – VERARBEITEN – AUSGEBEN
7
10
Übungen : Eingeben – Verarbeiten – Ausgeben
7.1
Hallo
fragt nach dem Namen des Users und sagt dann freundlich ’Hallo <Name des Users>.’
7.2
Zwei Zahlen
fragt nach zwei Zahlen a und b und gibt dann aus: ”Die zweite Zahl war ... Die erste Zahl war ... a+b ist ... a-b ... a*b ...
a/b ... a*a ... b*b ...”
7.3
Würfel
fragt nach der Kantenlänge eines Würfels und gibt Volumen, Oberfläche, Raumdiagonale und Gesamt-Kantenlänge
aus.
7.4
Brutto
fragt nach Netto und Umsatzsteuersatz und errechnet das Brutto.
7.5
Quader1
wie Würfel, bloß mit einem Quader.
7.6
Mittelwert
Berechnen Sie den Mittelwert dreier einzugebender Zahlen.
7.7
Prozent-Anteil
fragt nach 4 INTEGER-Zahlen und gibt deren prozentualen Anteil an der Summe aus.
Zahl 1
13
Prozent
8.13
Zahl 2
113
Prozent 70.63
Zahl 3
3
Prozent
1.88
Zahl 4
31
Prozent 19.38
-----------------------------Gesamt
160
Prozent 100.00
Hinweis: ein zusätzliches Leerzeichen können Sie erzeugen durch
String s = "";
if (zahl < 100) s = s + " ";
if (zahl < 10) s = s + " ";
7.8
// das ist leer
// falls zahl kleiner 100, ein Leerzeichen
// falls zahl kleiner 10, noch ein Leerzeichen
Kreis
fragt nach Radius und gibt Durchmesser, Umfang und Fläche aus.
8
ARRAYS (FELDER)
8
11
arrays (Felder)
hint: arduino sollte mE möglichst nach hinten geschoben werden; es täuscht über die erforderlichen coding-Fähigkeiten
im LK TI hinweg.
8.1
8.1.1
anlegen, belegen und anzeigen von feldern
Ü Klassenspiegel aus Datenliste
Liest eine Datei ein und zeigt den Klassenspiegel, Minimum, Maximum und Durchschnitt.
Hinweise:
1. Eine Datei wird zum Lesen geöffnet durch
//
BufferedReader br = new BufferedReader(new FileReader("filename.ext"));
und geschlossen durch
br.close;
2. eine Zeile wird gelesen und explodiert durch
String line="";
while ((line=br.read()) != null) {
String[]words = line.split(";");
// falls es EIN Semikolon war
String nachname = words[0];
// usw.
}
3. Die Datei sollte das folgende Format haben:
Meyer;Hans;15
Mueller;Karl;03
Stevens;Kim;08 ...
9
9
ARDUINO KURZGEFASST
arduino kurzgefaßt
12
*
Variablen: Wenn Sie die blaue LED an Pin 5 anschließen:
int ledBlau = 5;
9.0.3 Ü Variablen
Was schreiben Sie, wenn Sie Taster01 an Pin10 anschließen?
Mit welchem Wert initialisieren Sie die variable
int tasterstatus01?
*
Kleines Glossar
void setup() { ...befehle... } – wird einmal direkt
nach dem Reset ausgeführt.
void loop() { ...befehle... } – wird unendlich oft
nach setup() ausgeführt.
digitalWrite(int pinNr, HIGH | LOW);
– schreibt
Ein arduino ist ein Computer, mit CPU, RAM und
nach pinNr.
Ein-/Ausgängen auf einem Chip.
delay (int msecs); – schläft msecs Millisekunden.
varName = digitalRead(pinNr); – liest HIGH oder
Der eigentliche Computer ist der längliche, 24-beinige Chip
LOW von pinNr in die Integer-Variable varName.
rechts unten, auf dem atmel-ga328p steht.
if (varName == HIGH) { ...befehle... } – führt ...beLinks oben ist eine USB-Buchse, zur Spannungsversorfehle... aus, wenn Bedingung erfüllt.
gung und Hochladen von Programmen.
pinMode(pinNr, OUTPUT | INPUT); – schaltet den Pin
arduino wird über die Pins Vin und GND (unten Mitte) mit
als Eingang oder Ausgang.
+9V versorgt.
Oben rechts ist eine Reihe Kontakte (Pins), die digitale
Ein-/Ausgänge sind, d.h. sie führen entweder HIGH (5V) 9.0.4 Ü 1/2 Hz
oder LOW (0V) oder lauschen auf die eingefütterte SpanSchreiben und bauen Sie ein Programm, das Pin13 1sec
nung.
ein- und dann 1sec ausschaltet.
Unter Pin13 ist eine LED (L), die samt Vorwiderstand an
Pin13 angeschlossen ist.
9.0.5 Ü 1/2 Hz am Steckbrett
*
arduino kann über Kabel an ein Steckbrett angeschlossen
Bauen Sie zu 1 eine gelbe Leuchtdiode auf dem Steckbrett
werden. Viele Kontakte dieses Steckbrettes sind stets mitdazu.
einander verbunden:
in den oberen und unteren beiden Reihen waagrecht, in
den anderen beiden senkrecht.
*
Leuchtdioden werden mit der abgeflachten Seite an Masse und mit einem Vorwiderstand von 220Ω an 5V angeschlossen.
Taster werden mit dem einen Ende am +5V, mit dem anderen Ende an einen Eingangs-Pin und parallel an einen
Pull-Down-Widerstand von 1kΩ an Masse angeschlossen.
9.0.2 Ü Schaltplan Ampel
Wir wollen eine Ampel mit 3 LEDs (rot, grün, gelb) und
einem Taster an einen arduino anbauen. Zeichnen Sie den
Schaltplan.
Zeichnen Sie den arduino als Kasten mit einem ”a” mittendrin. Wo immer ein Kabel herauskommt oder hineingeht,
schreiben Sie die Pin-Nummer dazu.
*
Programmierung
arduino-Software ist bereits auf die PCs gespielt. Wenn
Sie Ihr Programm schreiben und [PfeilRechtsInKreis]
drücken, dann wird es kompiliert, übertragen und ausgeführt.
arduino-Programme bestehen aus drei Teilen C: Variablen, setup() und loop().
9.0.6 Ü Programm Ampel
Schreiben Sie ein Programm, das eine rot-gelb-grüne Ampel laufen läßt: 8secRt - 2secRtGb - 8secGn - 2secGb -...
9.0.7 Ü Programm DruckAmpel
Erweitern Sie ”Ampel”, so daß die Ampel einmal zykelt,
wenn der Taster gedrückt wird; sonst soll sie Rot zeigen.
Herunterladen