Felder und Schleifen. Themen heute. Felder Schleifen Heartbleed. Programmieren für Ingenieure Sommer Andreas Zeller, Universität des Saarlandes

Ähnliche Dokumente
Eingaben. Themen heute. Taster. Eingaben Zuweisungen Zeitmessung. Programmieren für Ingenieure Sommer Andreas Zeller, Universität des Saarlandes

Anmeldung HISPOS. Klausur MAI JULI. Prüfungsanmeldung ab sofort möglich Verpflichtend Anmeldung bis zum 19. Mai 2014

Bisher hatten immer nur als Ausgänge geschaltet und hierfür folgende Befehle benutzt:

Erste Gehversuche mit ARDUINO (DL6OAA)

Erste Schritte. Programmieren für Ingenieure Sommer Andreas Zeller, Universität des Saarlandes

Anmeldung HISPOS MAI. Prüfungsanmeldung ab sofort möglich Verpflichtend Anmeldung bis zum 27. Mai I n t e r a k t i v e HA u t o m a t e n _

Starten Sie die Arduino IDE und geben Sie den folgenden Programmcode ein:

Girls Day. Einführung Mikrocontroller,

Struktur eines Sketches

Bei jedem Arduino-Projekt muss man ein Grundgerüst "bauen". Das sieht dann so aus:

Was so passieren wird:

Einführung Arduino - Aufbau

Einen elektronischen Würfel programmieren

Eine tastergesteuerte LED

Erste Schritte. Das Arduino-Board. Ihr Fundino-Board. Programmieren für Ingenieure Sommer Andreas Zeller, Universität des Saarlandes

Hinter den Kulissen. Bergfest. Lassen Sie uns die Aussicht genießen und etwas zurückblicken :-)

saarland Prof. Dr. Andreas Zeller Verantw. Tutor: Florian Groß Übungsblatt 4

Programmieren für Ingenieure Übungs-Klausur

Teile und Herrsche. Themen heute. Eigene Funktionen Parameter Fallunterscheidungen Fehlersuche. Programmieren für Ingenieure Sommer 2014

Mark VHS Augsburg Einführung in die Mikrocontroller-Programmierung.

Einführung in Mikrokontroller Benutzung mit dem Arduino Board. Ramon Hofer ICVR

Ampelsteuerung Merkblatt 2 Wie wird der Arduino programmiert?

GI Vektoren

Arduino für FunkAmateure

Programmieren in C. Eine Einführung in die Programmiersprache C. Prof. Dr. Nikolaus Wulff

Girls Day 2017 Programmierung

S. d. I.: Programieren in C Folie 4-1. im Gegensatz zu Pascal gibt es in C kein Schlüsselwort "then"

Arduino - Einfacher Teiler

saarland Prof. Dr. Andreas Zeller Verantw. Tutor: Florian Groß Übungsblatt 6

Girls Day 2018 Programmiereinführung

LED Skalenbeleuchtung mit einem Arduino

Grundlagen der Programmierung Teil1 Einheit III Okt. 2010

ARDUINO Übung. Inhalt:

ESP32 Pico-Board. und Node-RED GUI ESP32 Addon. ESP32 und Node-RED Datenversand. Vers. 1.0

Teile und Herrsche. Themen heute. Eigene Funktionen Parameter Fallunterscheidungen Fehlersuche. Programmieren für Ingenieure Sommer 2015

Die Sonne spielt Musik

DE

Arrays. Theorieteil. Inhaltsverzeichnis. Begriffe. Programmieren mit Java Modul 3. 1 Modulübersicht 3

Probeklausur Name: (c)

Wir hätten nie gedacht das drei Computer und Elektronik-Fans soweit kommen!! Mit diesem Video sagen wir vielen Dank!

ÜBUNGS-BLOCK 7 LÖSUNGEN

Erste Gehversuche mit ARDUINO (Teil 3) (DL6OAA) Die 7-Segmentanzeige (1-stellig)

Programmiervorkurs Einführung in Java Tag 3

PROCESSING EINE ZUSAMMENFASSUNG. Created by Michael Kirsch & Beat Rossmy

Elementare Datentypen in C++

Projektworkshop Digitales Haustier. Digitales Haustier. Bau dir ein Digitales Haustier, das schnurrt, wenn du es streichelst. 1/8

Einführung Java Programmieren in Java Arrays Schleifen Fehler. Einführung in Java. Arne Hüffmeier. Michelle Liebers, Dennis Hoffmann

einlesen n > 0? Ausgabe Negative Zahl

Projektarbeit in DVT auf dem Entwicklerboard

Wunderst du dich auch manchmal, wo die ganzen Kekse hin sind? Mit diesem Projekt kommst du dem Dieb schnell auf die Schliche.

SINNsorik Wahrnehmen durch Sensoren NAME, KLASSE:

2 Programmieren in Java I noch ohne Nachbearbeitung

EINE MHZ FUNKSTRECKE MIT ARDUINOS AUFBAUEN [GEBEN SIE IHRE ADRESSE EIN]

analoge Ein- und Ausgänge

Institut für Programmierung und Reaktive Systeme. Java 3. Markus Reschke

Inhalt. 1 Einstieg in die Welt von C Erste Schritte in C 31. Vorwort... 15

Ausgabe:

Vorkurs Informatik WiSe 16/17

Arbeiten mit JavaKara

Schleifen: Immer wieder dasselbe tun

Programmieren in C. Felder, Schleifen und Fließkommaarithmetik. Prof. Dr. Nikolaus Wulff

Operatoren für elementare Datentypen Bedingte Anweisungen Schleifen. Operatoren für elementare Datentypen Bedingte Anweisungen Schleifen

Abbildung 4-4-1: Ein prellender Taster

Institut für Programmierung und Reaktive Systeme. Java 2. Markus Reschke

Programmierkurs I. Gliederung: Deklarationsteil als BNF 2. Blöcke in Ada95 (Lebenszeit, Sichtbarkeit von Variablen)

C++ - Einführung in die Programmiersprache Schleifen

EEPROM Strukturen speichern über SPI-Bus

3. Anweisungen und Kontrollstrukturen

Teil 5: Felder, Zeiger, Zeigerarithmetik Gliederung

Arduino 1/10. Das erste Programm: LED-Blinklicht. Einzelheiten der Schaltung. Programm für das Blinklicht

Wenn... dann... if (condition) statement. if (kontostand < 0) System.out.println("Oops..."); false. condition. true. statement

Präzedenz von Operatoren

IoT-Werkstatt Das Internet der Dinge anfassbar machen Algorithmisches Denken

Highspeedaufnahmen mit dem Arduino Uno Board

Vorkurs Informatik WiSe 17/18

Gedächtnis. Während der Abarbeitung eines Algorithmus müssen sich Dinge gemerkt werden bzw. auf Dingen wird gerechnet. Zugriff.

Kontrollfragen Mikrocontroller Programmiersprache C H1203 Felix Rohrer

Variablen, Konstanten und Datentypen

Vorkurs Informatik WiSe 16/17

Wie entwerfe ich ein Programm?

Mussten wir eine ganze Reihe solcher Zahlen speichern, haben wir das eindimensionale Array verwendet.

+ C - Array (Vektoren, Felder)

Arbeitsblatt Nr.19: RFID Kit

Teil 5: Zeiger, Felder, Zeichenketten Gliederung

JAVA BASICS. 2. Primitive Datentypen. 1. Warum Java? a) Boolean (logische Werte wahr & falsch)

Grundlagen von C# - 2

Operatoren für elementare Datentypen Bedingte Anweisungen Schleifen. Programmieren I. Martin Schultheiß. Hochschule Darmstadt Wintersemester 2010/2011

Einführung in die Programmierung I. 2.4 Felder. Thomas R. Gross. Department Informatik ETH Zürich

2 Teil 2: Nassi-Schneiderman

1 Aufgaben 1.1 Objektorientiert: ("extended-hamster") Sammel-Hamster

6. Bearbeitung von Strings in C Bearbeitung von Strings in C

Unterlagen. CPP-Uebungen-08/

K Ergänzungen zur Einführung in C

Übungsblatt 1. Java Vorkurs (WS 2017)

Prof. Dr. Oliver Haase Karl Martin Kern Achim Bitzer. Programmiertechnik Kontrollstrukturen

Arduino Kurs Das LC-Display. Stephan Laage-Witt FES Lörrach

Transkript:

Felder und Schleifen Programmieren für Ingenieure Sommer 2015 Andreas Zeller, Universität des Saarlandes Sensor abfragen int ledpin = 13; // Die LED int buttonpin = 8; // Der Taster! pinmode(ledpin, OUTPUT); pinmode(buttonpin, INPUT);! if (digitalread(buttonpin) == HIGH) { digitalwrite(ledpin, HIGH); if (digitalread(buttonpin) == LOW) { digitalwrite(ledpin, LOW); Zuweisung Die Anweisung name = wert bewirkt, dass die Variable name den neuen Wert wert hat. Im weiteren Programmablauf liefert jeder spätere Zugriff auf die Variable den Wert wert (bis zur nächsten Zuweisung) Blinken mit Millis int ledpin = 13; // Pin LED int buttonpin = 8; // Pin Taster int ms = 0; // Zeit! pinmode(ledpin, OUTPUT); pinmode(buttonpin, INPUT);! int ms = millis() % 1000; if (ms < 500) digitalwrite(ledpin, LOW); if (ms > 500) digitalwrite(ledpin, HIGH); Entprellen mit Millis!! unsigned long previouspush = 0;! if (millis() - previouspush >= 20) { if (digitalread(buttonpin) == HIGH) { previouspush = millis(); ledstatus =!ledstatus; pushed = 1; if (pushed && digitalread(buttonpin) == LOW) pushed = 0;! // Blinken... Themen heute Felder Schleifen Heartbleed

Pegel LED-Kette soll Pegel anzeigen Plan Wir schließen einen Sensor an etwa einen Photowiderstand Wir messen dessen Wert Wir schließen 7 LEDs an Je nach Pegel lassen wir 0 7 LEDs leuchten http:// learningthearduino.blogspot.de/ 2012/11/arduino-vu-meteraudio-sound-meter-with.html Sensor

Sensor abfragen Wir haben bereits digitalread() kennengelernt, das Daten digital liest Neu: analogread() liest Daten analog ein analogread(pin_number) liefert einen Wert von 0 1023, je nach Spannung am Pin (0 5V) Sensor abfragen int inputpin = 0; // Der Eingabe-PIN Serial.begin(9600); int level = analogread(inputpin); Serial.println(level); delay(100); Photowiderstand anschließen Demo

Sensorwert ausgeben Je nach Wert am Analog-Eingang sollen 0 7 LEDs leuchten Sensorwert ausgeben int inputpin = 0; // Der Eingabe-PIN int led1 = 13; // Die LED-PINs int led2 = 12; int led3 = 11; // usw. für 4 weitere LEDs pinmode(led1, OUTPUT); pinmode(led2, OUTPUT); // usw. int inputpin = 0; // Der Eingabe-PIN int led1 = 13; // Die LED-PINs int led2 = 12; int led3 = 11; // usw. für 4 weitere LEDs pinmode(led1, OUTPUT); pinmode(led2, OUTPUT); // usw. int level = analogread(inputpin); if (level < 100) digitalwrite(led1, LOW); digitalwrite(led1, HIGH); if (level < 200)

int level = analogread(inputpin); if (level < 100) digitalwrite(led1, LOW); digitalwrite(led1, HIGH); if (level < 200) digitalwrite(led2, LOW); digitalwrite(led2, HIGH); if (level < 300) digitalwrite(led3, LOW); digitalwrite(led3, HIGH); // usw. für 4 weitere LEDs int inputpin = 0; // Der Eingabe-PIN int led1 = 13; // Die LED-PINs int led2 = 12; int led3 = 11; // usw. für 4 weitere LEDs pinmode(led1, OUTPUT); pinmode(led2, OUTPUT); // usw. int level = analogread(inputpin); if (level < 100) digitalwrite(led1, LOW); digitalwrite(led1, HIGH); Alle Variablen werden gleich behandelt if (level < 200) digitalwrite(led2, LOW); digitalwrite(led2, HIGH); if (level < 300) digitalwrite(led3, LOW); digitalwrite(led3, HIGH); // usw. für 4 weitere LEDs Ziel Wir brauchen einen Weg, unterschiedliche Variablen auf dieselbe Weise zu behandeln

Felder Ein Feld (Array) fasst mehrere Variablen zu einer Einheit zusammen Jedes Element (jede Variable) wird mit einer Nummer angesprochen 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 Felder 0 1 2 3 4 5 6 7 8 9 10 Die Notation name[index] bezieht sich auf das Element mit der Nummer index Das erste Element hat die Nummer 0 a Felder deklarieren 0 1 2 3 4 5 6 7 8 9 10 int a[11]; // 11 Elemente Typ der Elemente Name des Feldes Größe des Feldes

a Felder benutzen 0 1 2 3 4 5 6 7 8 9 10 13 int a[11]; // 11 Elemente a[0] = 13; a Felder benutzen 0 13 1 2 3 4 5 6 7 8 9 10 12 int a[11]; // 11 Elemente a[0] = 13; a[1] = 12; a Felder benutzen 0 1 2 3 4 5 6 7 8 9 10 13 12 25 int a[11]; // 11 Elemente a[0] = 13; a[1] = 12; a[2] = a[0] + a[1];

a Felder benutzen Geht auch mit symbolischem Index 0 1 2 3 4 5 6 7 8 9 10 1 int a[11]; // 11 Elemente int i = 5; a[i] = 1; a Felder benutzen Geht auch mit symbolischem Index 0 1 2 3 4 5 6 7 8 9 10 2 1 int a[11]; // 11 Elemente int i = 5; a[i] = 1; a[a[i]] = 2; leds Felder initialisieren 0 1 2 3 4 5 6 13 12 11 10 9 8 7 int leds[7]; leds[0] = 13; leds[1] = 12; leds[2] = 11; leds[3] = 10; leds[4] = 9; leds[5] = 8; leds[6] = 7; int leds[] = { 13, 12, 11, 10, 9, 8, 7 ; // Bereits initialisiert

a Feldüberlauf 0 1 2 3 4 5 6 7 8 9 10 11 int a[11]; // 11 Elemente int x = a[11]; Was passiert hier? Undefiniertes Verhalten Greift das Programm außerhalb der Grenzen auf ein Feld zu, ist sein Verhalten undefiniert (= alles ist möglich) Später mehr dazu Undefiniertes Verhalten = es kann alles passieren, auch dass das Programm einen rosa Elefanten anzeigen lässt. (Frühere GCC- Varianten haben bei einer undefinierten #pragma- Anweisung gerne mal Adventure gestartet.) Bildquelle: http://openclipart.org/ image/2400px/svg_to_png/ 189185/ elefante_in_corsa_pink.png Bei jedem Feldzugriff Feldgrenzen beachten!

Schleifen Wir brauchen immer noch einen Weg, um alle Elemente einheitlich zu behandeln pinmode(leds[0], OUTPUT); pinmode(leds[1], OUTPUT); pinmode(leds[2], OUTPUT); pinmode(leds[3], OUTPUT); pinmode(leds[4], OUTPUT); pinmode(leds[5], OUTPUT); pinmode(leds[6], OUTPUT); wie sieht das aus bei 100 LEDs? While-Schleifen Mit einer Schleife kann man ein Programmstück beliebig oft wiederholen: while (Bedingung) { Anweisungen ; Die Anweisungen werden wiederholt, solange die Bedingung erfüllt ist While-Schleifen i = 1; while (i < 5) { Serial.println(i); i = i + 1; Serial.println("ENDE"); Ausgeführte Anweisungen i = 1; Serial.println(i); i = i + 1; // 2 Serial.println(i); i = i + 1; // 3 Serial.println(i); i = i + 1; // 4 Serial.println(i); i = i + 1; // 5 Serial.println("ENDE");

Setup mit Schleife Der setup()-code kann jetzt so aussehen: int i = 0; while (i < 7) { pinmode(leds[i], OUTPUT); i = i + 1; Schleife mit Schleife int level = analogread(inputpin); if (level < 100) digitalwrite(led1, LOW); digitalwrite(led1, HIGH); if (level < 200) digitalwrite(led2, LOW); digitalwrite(led2, HIGH); if (level < 300) digitalwrite(led3, LOW); digitalwrite(led3, HIGH); // usw. für 4 weitere LEDs int level = analogread(inputpin); int i = 0; while (i < 7) { if (level < 100 * (i + 1)) digitalwrite(leds[i], LOW); digitalwrite(leds[i], HIGH); i = i + 1; LEDs und (erst einmal) Potentiometer anschließen Demo

Endlosschleife setup() und loop() werden vom System als Endlosschleife aufgerufen: void main() { setup(); while (1) { loop(); Feinheiten Anstelle von x = x + y geht auch x += y (analog x *= y, x /= y, x -= y) int i = 0; while (i < 7) { pinmode(leds[i], OUTPUT); i += 1; Inkrement Anstelle von x = x + 1 oder x += 1 geht auch ++x oder x++ (analog --x oder x-- für x -= 1) int i = 0; while (i < 7) { pinmode(leds[i], OUTPUT); i++;

Prä- und Postinkrement ++x erhöht erst x und liefert dann den Wert x++ liefert erst den Wert von x und erhöht dann int x = 0; int y = 0; y = x++; // x = 1, y = 0 y = ++x; // x = 2, y = 2 y = x--; // x = 1, y = 2 Inline Inkrement int i = 0; while (i < 7) { pinmode(leds[i], OUTPUT); i++; int i = 0; while (i < 7) pinmode(leds[i++], OUTPUT); For-Schleifen Weiß man, wie oft eine Schleife wiederholt werden soll, setzt man oft for-schleifen ein: for (Initialisierung; Bedingung; Inkrement) { Anweisungen ; ist dasselbe wie Initialisierung; while (Bedingung) { Anweisungen ; Inkrement;

Setup mit For-Schleife int i = 0; while (i < 7) { pinmode(leds[i], OUTPUT); i++; for (int i = 0; i < 7; i++) pinmode(leds[i], OUTPUT); http:// learningthearduino.blogspot.de/ 2012/11/arduino-vu-meteraudio-sound-meter-with.html Sensor Pegel anzeigen void range(int d) { for (int i = 0; i < 7; i++) if (i < d) digitalwrite(leds[i], HIGH); digitalwrite(leds[i], LOW); int level = analogread(inputpin); range(level / 100);

Erneut Belichtung messen Demo Punkt anzeigen void dot(int d) { for (int i = 0; i < 7; i++) if (i == d) digitalwrite(leds[i], HIGH); digitalwrite(leds[i], LOW); void dot() { int level = analogread(inputpin); dot(level / 100); Belichtung per Punkt messen Demo

Lauflicht Der Titel dieser Folie enthält keine Ligatur. Wem so etwas auffällt: bei mir melden :-) void dot(int d) { for (int i = 0; i < 7; i++) if (i == d) digitalwrite(leds[i], HIGH); digitalwrite(leds[i], LOW); for (int i = 0; i < 7; i++) { dot(i); delay(20); Demo Lauflicht (ggf. variieren, auch über Sensor) Demo Sichtbarkeit Jede Variable ist nur innerhalb der sie einschließenden Klammern { (einem Block) definiert for (int i = 0; i < 7; i++) { int n = i + 1; dot(n); // n und i sind hier nicht mehr sichtbar

Sichtbarkeit In einem Block muss jede Variable einen eindeutigen Namen tragen Verschiedene Blöcke dürfen den gleichen Namen für ihre Variablen benutzen void dot(int d) { for (int i = 0; i < 7; i++) {... for (int i = 0; i < 7; i++) { Zwei verschiedene i s dot(i); Sichtbarkeit Beim Zugriff auf eine Variable gilt der innerste Name. int i = 1; Serial.println(i); for (int i = 2; i < 10; i++) { if (i < 10) { int i = 3; Serial.println(i); Globale Variablen Variablen, die nicht in einem Block definiert werden, heißen globale Variablen Globale Variablen sind risikoreich, da man sie unabsichtlich benutzen kann float pi = 3.141526535; int py = 25; pi += 1; // sollte py sein

Heartbleed Heartbeat-Protokoll Die Heartbeat-Funktion dient zu prüfen, ob ein Server im Internet noch läuft Man schickt eine Zeichenkette hin und bekommt sie in gleicher Form zurück.

Zeichen in C Ein einzelnes Zeichen wird in C in einzelne Hochkomma eingeschlossen: char c = 'a'; Serial.println(c); Die wichtigste Verwendung ist als Feld von Zeichen (Zeichenkette, auch String) Zeichenketten enden mit einem speziellen Null-Zeichen, geschrieben als \0 s Zeichenkette 0 1 2 3 4 5 6 7 8 9 10 H a l l o! \0 char s[] = { 'H', 'a', 'l', 'l', 'o', '!', '\0'; oder kürzer char s[] = "Hallo!"; Was ist s[0]?

Zeichen einlesen Die Funktion Serial.parseInt() liefert eine Zahl von der seriellen Schnittstelle: int n = Serial.parseInt(); Mit Serial.readBytes(buffer, n) kann man n Zeichen in das Feld buffer einlesen: char buffer[20]; Serial.readBytes(buffer, n); Serial.begin(9600); Heartbeat char buffer[10]; char secret[20] = "Joshua"; // Puffer // Geheime Daten while (1) { // Endlosschleife if (Serial.available() > 0) { // Daten verfügbar int n = Serial.parseInt(); // Anzahl Zeichen Serial.readBytes(buffer, n); // Zeichen einlesen for (int i = 0; i < n; i++) // Zeichen ausgeben Serial.print(buffer[i]); Serial.println(); Erst Standard-Eingabe; dann zu großen Wert für n angeben Demo

Bei jedem Feldzugriff Feldgrenzen beachten!

Serial.begin(9600); Heartbeat char buffer[10]; char secret[20] = "Joshua"; // Puffer // Geheime Daten while (1) { // Endlosschleife if (Serial.available() > 0) { // Daten verfügbar int n = Serial.parseInt(); // Anzahl Zeichen Serial.readBytes(buffer, n); // Zeichen einlesen for (int i = 0; i < n; i++) // Zeichen ausgeben Serial.print(buffer[i]); Serial.println(); Heartbleed Serial.begin(9600); char buffer[10]; char secret[20] = "Joshua"; // Puffer // Geheime Daten while (1) { // Endlosschleife if (Serial.available() > 0) { // Daten verfügbar int n = Serial.parseInt(); // Anzahl Zeichen Serial.readBytes(buffer, n); // Zeichen einlesen for (int i = 0; i < n; i++) // Zeichen ausgeben Serial.print(buffer[i]); Serial.println();

Serial.begin(9600); Korrektur char buffer[10]; char secret[20] = "Joshua"; // Puffer // Geheime Daten while (1) { // Endlosschleife if (Serial.available() > 0) { // Daten verfügbar int n = Serial.parseInt(); // Anzahl Zeichen if (n > 10) { n = 10; // Überlauf vermeiden Serial.readBytes(buffer, n); // Zeichen einlesen for (int i = 0; i < n; i++) // Zeichen ausgeben Serial.print(buffer[i]); Serial.println(); Bei jedem Feldzugriff Feldgrenzen beachten! Bei jedem Feldzugriff Feldgrenzen beachten! Nicht = und == verwechseln! Wertüberlauf vermeiden!

Ariane 5 Absturz wegen Überlauf space.com Vorschau Mehr über Zeichenketten Interaktion mit LCD-Anzeige leds Felder initialisieren While-Schleifen 0 1 2 3 4 5 6 13 12 11 10 9 8 7 int leds[7]; int leds[] = leds[0] = 13; { 13, 12, 11, 10, 9, 8, 7 ; leds[1] = 12; leds[2] = 11; leds[3] = 10; leds[4] = 9; // Bereits initialisiert leds[5] = 8; leds[6] = 7; i = 1; while (i < 5) { Serial.println(i); i = i + 1; Serial.println("ENDE"); Ausgeführte Anweisungen i = 1; Serial.println(i); i = i + 1; // 2 Serial.println(i); i = i + 1; // 3 Serial.println(i); i = i + 1; // 4 Serial.println(i); i = i + 1; // 5 Serial.println("ENDE"); s Zeichenkette 0 1 2 3 4 5 6 7 8 9 10 H a l l o! \0! char s[] = { 'H', 'a', 'l', 'l', 'o', '!', '\0'; oder kürzer! char s[] = "Hallo!"; Was ist s[0]? Heartbeat Serial.begin(9600);! char buffer[10]; char secret[20] = Joshua"; // Puffer // Geheime Daten while (1) { // Endlosschleife if (Serial.available() > 0) { // Daten verfügbar int n = Serial.parseInt(); // Anzahl Zeichen! Serial.readBytes(buffer, n); // Zeichen einlesen! for (int i = 0; i < n; i++) // Zeichen ausgeben Serial.print(buffer[i]); Serial.println();

Handouts Sensor abfragen int inputpin = 0; // Der Eingabe-PIN Serial.begin(9600); int level = analogread(inputpin); Serial.println(level); delay(100); Felder 0 1 2 3 4 5 6 7 8 9 10 Die Notation name[index] bezieht sich auf das Element mit der Nummer index Das erste Element hat die Nummer 0

While-Schleifen Mit einer Schleife kann man ein Programmstück beliebig oft wiederholen: while (Bedingung) { Anweisungen ; Die Anweisungen werden wiederholt, solange die Bedingung erfüllt ist Schleife mit Schleife int level = analogread(inputpin); if (level < 100) digitalwrite(led1, LOW); digitalwrite(led1, HIGH); if (level < 200) digitalwrite(led2, LOW); digitalwrite(led2, HIGH); if (level < 300) digitalwrite(led3, LOW); digitalwrite(led3, HIGH); // usw. für 4 weitere LEDs int level = analogread(inputpin); int i = 0; while (i < 7) { if (level < 100 * (i + 1)) digitalwrite(leds[i], LOW); digitalwrite(leds[i], HIGH); i = i + 1; Inkrement Anstelle von x = x + 1 oder x += 1 geht auch ++x oder x++ (analog --x oder x-- für x -= 1) int i = 0; while (i < 7) { pinmode(leds[i], OUTPUT); i++;

For-Schleifen Weiß man, wie oft eine Schleife wiederholt werden soll, setzt man oft for-schleifen ein: for (Initialisierung; Bedingung; Inkrement) { Anweisungen ; ist dasselbe wie Initialisierung; while (Bedingung) { Anweisungen ; Inkrement; Pegel anzeigen void range(int d) { for (int i = 0; i < 7; i++) if (i < d) digitalwrite(leds[i], HIGH); digitalwrite(leds[i], LOW); int level = analogread(inputpin); range(level / 100); Serial.begin(9600); Heartbeat char buffer[10]; char secret[20] = "Joshua"; // Puffer // Geheime Daten while (1) { // Endlosschleife if (Serial.available() > 0) { // Daten verfügbar int n = Serial.parseInt(); // Anzahl Zeichen Serial.readBytes(buffer, n); // Zeichen einlesen for (int i = 0; i < n; i++) // Zeichen ausgeben Serial.print(buffer[i]); Serial.println();