Materialien zum Buch "Vom Anfänger zum Maker"

Auf dieser Seite findest du die Sketches zu den Projekten, die für den Abdruck zu lang sind. Außerdem haben wir hier die Bibliotheken verlinkt.

Das Buch als PDF

Für den Download des PDF benötigst du keinen Code mehr. Um es zu erhalten, schreibe einfach eine kurze E-Mail an info@polluxlabs.net – anschließend erhältst du das PDF in dein Postfach.

Vollständige Sketches

Hier findest du die vollständigen Sketches, die zu den Projekten im Buch gehören. Du kannst sie direkt kopieren, anpassen und auf deinen Arduino oder ESP8266 laden.

				
					int piezoPin = 10;

void setup()
{
  pinMode(piezoPin, OUTPUT); //optional, weil Analog nie Input
  
  for (int i = 0; i < 3; i++) {
    // spiele e4
    tone(10, 329.63, 300);
    delay(350);
    // spiele d4#
    tone(10, 311.13, 300);
    delay(350);
    // spiele e4
    tone( 10, 329.63, 300);
    delay(350);
    // spiele d4#
    tone( 10, 311.13, 300);
    delay(350);
    // spiele e4
    tone(10, 329.63, 300);
    delay(350);
    // spiele b3
    tone( 10, 246.94, 300);
    delay(400);
    // spiele d4
    tone(10, 293.66, 300);
    delay(400);
    // spiele c4
    tone(10, 261.63, 300);
    delay(400);
    // spiele a3
    tone(10, 220, 900);
    delay(1000);
    // spiele d3
    tone(10, 146.83, 300);
    delay(350);
    //spiele f3
    tone(10, 174.61, 300);
    delay(400);
    //spiele a3
    tone(10, 220, 300);
    delay(400);
    // spiele b3
    tone(10, 246.94, 900);
    delay(1000);
    // spiele f3
    tone(10, 174.61, 300);
    delay(400);
    // spiele a3#
    tone(10, 233.08, 300);
    delay(400);
    // spiele b3
    tone(10, 246.94, 300);
    delay(400);
    // spiele c4
    tone(10, 261.63, 900);
    delay(1000);
    delay(300);
    // spiele e4
    tone(10, 329.63, 300);
    delay(400);
    // spiele d4#
    tone(10, 311.13, 300);
    delay(400);
    // spiele e4
    tone(10, 329.63, 300);
    delay(400);
    // spiele d4#
    tone(10, 311.13, 300);
    delay(400);
    // spiele e4
    tone(10, 329.63, 300);
    delay(400);
    // spiele b3
    tone(10, 246.94, 300);
    delay(400);
    // spiele d4
    tone(10, 293.66, 300);
    delay(400);
    // spiele c4
    tone(10, 261.63, 300);
    delay(400);
    // spiele a3
    tone(10, 220, 900);
    delay(1000);
    // spiele d3
    tone(10, 146.83, 300);
    delay(400);
    // spiele f3
    tone(10, 174.61, 300);
    delay(400);
    // spiele a3
    tone(10, 220, 300);
    delay(400);
    // spiele b3
    tone(10, 246.94, 900);
    delay(1000);
    // spiele f3
    tone(10, 174.61, 300);
    delay(400);
    // spiele c4
    tone(10, 261.63, 300);
    delay(400);
    // spiele b3
    tone(10, 246.94, 300);
    delay(400);
    // spiele a3
    tone(10, 220, 900);
    delay(1000);
    // spiele b3
    tone(10, 246.94, 300);
    delay(400);
    // spiele c4
    tone(10, 261.63, 300);
    delay(400);
    // spiele d4
    tone(10, 293.66, 300);
    delay(400);
    // spiele e4
    tone(10, 329.63, 900);
    delay(1000);
    // spiele g3
    tone(10, 196, 300);
    delay(400);
    // spiele f4
    tone(10, 349.23, 300);
    delay(400);
    //spiele e4
    tone(10, 329.23, 300);
    delay(400);
    // spiele d4
    tone(10, 293.63, 900);
    delay(1000);
    // spiele e3
    tone(10, 164.81, 300);
    delay(400);
    // spiele e4
    tone(10, 329.63, 300);
    delay(400);
    // spiele d4
    tone(10, 293.63, 300);
    delay(400);
    // spiele c4
    tone(10, 261.63, 900);
    delay(1000);
    // spiele d3
    tone(10, 146.83, 300);
    delay(400);
    // spiele d4
    tone(10, 293.63, 300);
    delay(400);
    // spiele c4
    tone(10, 261.63, 300);
    delay(400);
    // spiele b3
    tone(10, 246.94, 900);
    delay(1000);
    delay(400);
    // spiele e4
    tone(10, 329.63, 300);
    delay(400);
    // spiele d4#
    tone(10, 311.13, 300);
    delay(350);
    // spiele e4
    tone( 10, 329.63, 300);
    delay(350);
    // spiele d4#
    tone( 10, 311.13, 300);
    delay(350);
    // spiele e4
    tone(10, 329.63, 300);
    delay(350);
    // spiele b3
    tone( 10, 246.94, 300);
    delay(400);
    // spiele d4
    tone(10, 293.66, 300);
    delay(400);
    // spiele c4
    tone(10, 261.63, 300);
    delay(400);
    // spiele a3
    tone(10, 220, 900);
    delay(1000);
    // spiele d3
    tone(10, 146.83, 300);
    delay(350);
    //spiele f3
    tone(10, 174.61, 300);
    delay(400);
    //spiele a3
    tone(10, 220, 300);
    delay(400);
    // spiele b3
    tone(10, 246.94, 900);
    delay(1000);
    // spiele f3
    tone(10, 174.61, 300);
    delay(400);
    // spiele a3
    tone(10, 233.08, 300);
    delay(400);
    // spiele b3
    tone(10, 246.94, 300);
    delay(400);
    // spiele c4
    tone(10, 261.63, 900);
    delay(1000);
    delay(300);
    // spiele e4
    tone(10, 329.63, 300);
    delay(400);
    // spiele d4#
    tone(10, 311.13, 300);
    delay(400);
    // spiele e4
    tone(10, 329.63, 300);
    delay(400);
    // spiele d4#
    tone(10, 311.13, 300);
    delay(400);
    // spiele e4
    tone(10, 329.63, 300);
    delay(400);
    // spiele b3
    tone(10, 246.94, 300);
    delay(400);
    // spiele d4
    tone(10, 293.66, 300);
    delay(400);
    // spiele c4
    tone(10, 261.63, 300);
    delay(400);
    // spiele a3
    tone(10, 220, 900);
    delay(1000);
    // spiele d3
    tone(10, 146.83, 300);
    delay(400);
    // spiele f3
    tone(10, 174.61, 300);
    delay(400);
    // spiele a3
    tone(10, 220, 300);
    delay(400);
    // spiele b3
    tone(10, 246.94, 900);
    delay(1000);
    // spiele f3
    tone(10, 174.61, 300);
    delay(400);
    // spiele c4
    tone(10, 261.63, 300);
    delay(400);
    // spiele b3
    tone(10, 246.94, 300);
    delay(400);
    // spiele a3
    tone(10, 220, 900);

    delay(3000);
  }
}

void loop() {

}

				
			
				
					const int trigger = 7;
const int echo = 6;

const int piezo = 10;

int distance = 0;
int distanceHigh = 0;

int lengthOfScale = 0;

int note = 0;

//A-Moll Pentatonik
int scale[] = {
  147, 165, 196, 220, 262, 294, 330, 392, 440,
  523, 587, 659, 784, 880, 1047, 1175, 1319, 1568,
  1760, 2093, 2349
};

//C-Dur Tonleiter
//int scale[] = {
//  131, 147, 165, 175, 196, 220, 247, 262, 294,
//  330, 349, 392, 440, 494, 523, 587, 659, 698,
//  784, 880, 988, 1047
//};


void setup() {
  Serial.begin(9600);
  pinMode(trigger, OUTPUT);
  pinMode(echo, INPUT);

  while (millis() < 3000) {
    digitalWrite(trigger, HIGH);
    digitalWrite(trigger, LOW);
    distance = pulseIn(echo, HIGH);

    if (distance > distanceHigh) {
      distanceHigh = distance;
    }
  }

  for (byte i = 0; i < (sizeof(scale) / sizeof(scale[0])); i++) {
    lengthOfScale += 1;
  }
  Serial.println(lengthOfScale);
}

void loop() {
  digitalWrite(trigger, HIGH);
  delay(10);
  digitalWrite(trigger, LOW);

  distance = pulseIn(echo, HIGH);

  note = map(distance, 100, distanceHigh, scale[0], scale[lengthOfScale - 1]);

  for (byte j = 0; j < (lengthOfScale); j++) {

    if (note == scale[j]) {
      tone(piezo, note);
      break;
    }
    else if (note > scale[j] && note < scale[j + 1]) {
      note = scale[j];
      tone(piezo, note);
      break;
    }
  }
  delay(30);
}
				
			
				
					int ledRed = 11;
int ledGreen = 10;
int ledBlue = 9;

int brightnessRed = 150;
int brightnessGreen = 150;
int brightnessBlue = 150;

int noise = 0;
int sensor = A1;

int piezo = 4;

void setup() {
  
  pinMode(ledRed, OUTPUT);
  pinMode(ledGreen, OUTPUT);
  pinMode(ledRed, OUTPUT);

  pinMode(piezo, OUTPUT);

  Serial.begin(9600);
}

void loop() {

  noise = analogRead(sensor);
  Serial.println(noise);

  if(noise <= 200){
    analogWrite(ledGreen, brightnessGreen);
    analogWrite(ledRed, 0);
    analogWrite(ledBlue, 0);
    digitalWrite(piezo, LOW);
    }
    else if(noise > 200 && noise <= 350){
      analogWrite(ledRed, brightnessRed);
      analogWrite(ledGreen, brightnessGreen);
      analogWrite(ledBlue, 0);
      digitalWrite(piezo, LOW);
      }
      else if(noise > 350){
        analogWrite(ledRed, brightnessRed);
        analogWrite(ledGreen, 0);
        analogWrite(ledBlue, 0);
        digitalWrite(piezo, HIGH);
        delay(10000);
        }
}
				
			
				
					#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

#include "DHT.h"
#define DHTPIN 7
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);

float temp;
float humidity;

void setup() {

  Serial.begin(9600);
  lcd.begin(16, 2);
  dht.begin();
}

void loop() {

  temp = dht.readTemperature();
  humidity = dht.readHumidity();

  Serial.print("Temperatur: ");
  Serial.print(temp);
  Serial.println(" *C");
  Serial.print("Luftfeuchtigkeit: ");
  Serial.print(humidity);
  Serial.println(" %");
  Serial.println();

  //Temperatur ausgeben
  lcd.setCursor(0, 0);
  lcd.print(temp + String(" C"));

  //Luftfeuchtigkeit ausgeben
  lcd.setCursor(0, 1);
  lcd.print(humidity + String(" %"));

  delay(10000);
}
				
			
				
					#include "DHT.h"

#define DHTPIN 7
#define DHTTYPE DHT11

#define ENABLE 5
#define DIRA 3
#define DIRB 4

float temp;
DHT dht(DHTPIN, DHTTYPE);

void setup() {

  pinMode(ENABLE, OUTPUT);
  pinMode(DIRA, OUTPUT);
  pinMode(DIRB, OUTPUT);

  Serial.begin(9600);
  dht.begin();
}

void loop() {

  temp = dht.readTemperature();
  Serial.print("Temperatur: ");
  Serial.print(temp);
  Serial.println(" *C");

  if (temp > 22) {
    digitalWrite(ENABLE, HIGH);
    digitalWrite(DIRA, HIGH);
    digitalWrite(DIRB, LOW);
  }

  else {
    digitalWrite(ENABLE, LOW);
  }

  delay(1000);
}
				
			
				
					#include <Keypad.h>
#include <Servo.h>

const byte ROWS = 4;
const byte COLS = 4;

char hexaKeys[ROWS][COLS] = {
  {'1', '2', '3', 'A'},
  {'4', '5', '6', 'B'},
  {'7', '8', '9', 'C'},
  {'*', '0', '#', 'D'}
};

byte rowPins[ROWS] = {9, 8, 7, 6};
byte colPins[COLS] = {5, 4, 3, 2};
Keypad customKeypad = Keypad( makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS);

char key;
String inputCode;
const String code = "1103A"; //Der von dir festgelegte Code

Servo servo;
int redLED = 12;
int greenLED = 13;


void setup() {
  
  Serial.begin(9600);
  pinMode(redLED, OUTPUT);
  pinMode(greenLED, OUTPUT);
  servo.attach(11);
}

void loop() {

  char key = customKeypad.getKey();

  if (key) {

    if (key == '*') {
      inputCode = "";
      Serial.println("Schloss verriegelt.");
      delay(1000);
      servo.write(90);
      digitalWrite(greenLED, LOW);
      digitalWrite(redLED, HIGH);

    } else if (key == '#') {
      if (inputCode == code) {
        Serial.println("Der Code ist korrekt. Öffne das Schloss...");
        digitalWrite(greenLED, HIGH);
        digitalWrite(redLED, LOW);
        servo.write(0);

      } else {
        Serial.println("Der Code ist falsch!");
        digitalWrite(greenLED, LOW);
        digitalWrite(redLED, HIGH);
      }

      inputCode = "";

    } else {
      inputCode += key;
      Serial.println(inputCode);
    }
  }
}


				
			
				
					#include "IRremote.h"
#include "IR.h"

IRrecv irrecv(RECEIVER);
decode_results results;

int ledRed = 10;
int ledGreen = 9;
int ledBlue = 8;

void setup() {
  
  Serial.begin(9600);
  Serial.println("IR gestartet.");
  irrecv.enableIRIn();
  pinMode(ledRed, OUTPUT);
  pinMode(ledGreen, OUTPUT);
  pinMode(ledRed, OUTPUT);
}

void loop() {
  
  if (irrecv.decode(&results)) {

    switch (results.value) {
      case 0xFF6897:
        Serial.println("0");
        digitalWrite(ledRed, LOW);
        digitalWrite(ledGreen, LOW);
        digitalWrite(ledBlue, LOW);
        break;
      case 0xFF30CF:
        Serial.println("1");
        digitalWrite(ledRed, HIGH);
        digitalWrite(ledGreen, LOW);
        digitalWrite(ledBlue, LOW);
        break;
      case 0xFF18E7:
        Serial.println("2");
        digitalWrite(ledRed, LOW);
        digitalWrite(ledGreen, HIGH);
        digitalWrite(ledBlue, LOW);
        break;
      case 0xFF7A85:
        Serial.println("3");
        digitalWrite(ledRed, LOW);
        digitalWrite(ledGreen, LOW);
        digitalWrite(ledBlue, HIGH);
        break;
    }
    irrecv.resume();
  }
}

				
			
				
					
#include <Wire.h>
#include <TimeLib.h>
#include <DS1307RTC.h>

#include <LiquidCrystal.h>
const int rs = 11, en = 12, d4 = 2, d5 = 3, d6 = 4, d7 = 5; //Anschlüsse LCD -> Arduino
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);

void setup() {
  Serial.begin(9600);
  while (!Serial) ; // wait for serial
  delay(200);
  Serial.println("DS1307RTC Read Test");
  Serial.println("-------------------");
}

void loop() {

  // Festlegen, wie viele Zeichen und Reihen das Display hat:
  lcd.begin(16, 2);

  tmElements_t tm;

  if (RTC.read(tm)) {
    Serial.print("Ok, Time = ");
    print2digits(tm.Hour);
    lcd.setCursor(0, 0);
    lcd.print(tm.Hour);

    Serial.write(':');
    lcd.print(':');

    print2digits(tm.Minute);
    lcd.print(tm.Minute);

    Serial.write(':');
    lcd.print(':');

    print2digits(tm.Second);
    lcd.print(tm.Second);

    Serial.print(", Date (D/M/Y) = ");
    Serial.print(tm.Day);
    lcd.setCursor(0, 1);
    lcd.print(tm.Day);

    Serial.write('/');
    lcd.print('/');
    
    Serial.print(tm.Month);
    lcd.print(tm.Month);

    Serial.write('/');
    lcd.print('/');
    
    Serial.print(tmYearToCalendar(tm.Year));
    lcd.print(tmYearToCalendar(tm.Year));
    
    Serial.println();
  } else {
    if (RTC.chipPresent()) {
      Serial.println("The DS1307 is stopped.  Please run the SetTime");
      Serial.println("example to initialize the time and begin running.");
      Serial.println();
    } else {
      Serial.println("DS1307 read error!  Please check the circuitry.");
      Serial.println();
    }
    delay(9000);
  }
  delay(1000);
}

void print2digits(int number) {
  if (number >= 0 && number < 10) {
    Serial.write('0');
    lcd.print('0');
  }
  Serial.print(number);
}


				
			
				
					#include "LedControl.h"

long number = 1234;

//Variablen für die einzelnen Ziffern
int a;
int b;
int c;
int d;
int e;
int f;
int g;
int h;

LedControl lc=LedControl(12,11,10,1);

void numberIntoDigits() {

  h = number % 10;

  if (number > 9) {
    g = (number / 10) % 10;
  }
  if (number > 99) {
    f = (number / 100) % 10;
  }
  if (number > 999) {
    e = (number / 1000) % 10;
  }
  if (number > 9999) {
    d = (number / 10000) % 10;
  }
  if (number > 99999) {
    c = (number / 100000) % 10;
  }
  if (number > 999999) {
    b = (number / 1000000) % 10;
  }
  if (number > 9999999) {
    a = (number / 10000000) % 10;
  }
}


void displayNumber() {

  lc.setDigit(0, 0, h, false);

  if (number > 9) {
    lc.setDigit(0, 1, g, false);
  }
  if (number > 99) {
    lc.setDigit(0, 2, f, false);
  }
  if (number > 999) {
    lc.setDigit(0, 3, e, false);
  }
  if (number > 9999) {
    lc.setDigit(0, 4, d, false);
  }
  if (number > 99999) {
    lc.setDigit(0, 5, c, false);
  }
  if (number > 999999) {
    lc.setDigit(0, 6, b, false);
  }
  if (number > 9999999) {
    lc.setDigit(0, 7, a, false);
  }
}

void setup() {
  lc.shutdown(0,false);
  lc.setIntensity(0,8);
  lc.clearDisplay(0);
  numberIntoDigits();
  displayNumber();
  }

void loop() { 
}


				
			
				
					#include <ArduinoJson.h>
#include <ESP8266HTTPClient.h>
#include <ESP8266WiFi.h>
#include <WiFiClient.h>

WiFiClient wifiClient;


const char* ssid = "Name deines WLAN-Netzwerks";
const char* password =  "Dein WLAN-Passwort";

void setup() {
  Serial.begin(115200);
  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED) {
    delay(1000);
    Serial.println("Ich verbinde mich mit dem Internet...");
  }
  Serial.println("Ich bin mit dem Internet verbunden!");
}

void loop() {
  if ((WiFi.status() == WL_CONNECTED)) {
    HTTPClient http;
    http.begin(wifiClient,    "http://api.open-notify.org/astros.json");
    int httpCode = http.GET();

    if (httpCode == 200) {
      String input = http.getString();
      StaticJsonDocument<768> doc;
      deserializeJson(doc, input);
      int number = doc["number"];
      Serial.println(number);
    }
  }
  delay(3600000); //1 Stunde delay
}


				
			
				
					//Bibliothek für die WLAN-Verbindung
#include <ESP8266WiFi.h>

//Daten deines WLAN-Netzwerks
const char* ssid     = "Name deines Netzwerks";
const char* password = "Dein WLAN-Passwort";

//Port des Webservers auf 80 setzen
WiFiServer server(80);

void setup() {
  Serial.begin(115200); //Seriellen Monitor starten

  // Mit dem WLAN-Netzwerk verbinden
  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED) {
    delay(1000);
    Serial.println("Ich verbinde mich mit dem Internet...");
  }
  Serial.println("Ich bin mit dem Internet verbunden!");

  //Lokale IP-Adresse im Seriellen Monitor ausgeben und Server starten
  Serial.println("");
  Serial.println("IP-Adresse: ");
  Serial.println(WiFi.localIP());

  server.begin();
}

void loop() {
  WiFiClient client = server.available();   //Auf Clients (Server-Aufrufe) warten

  if (client) {                             //Bei einem Aufruf des Servers...
    Serial.println("Anfrage von Client erhalten.");
    String currentLine = "";                //...String definieren für die Anfrage des Clients

    while (client.connected()) { //Loop, solange Client verbunden ist

      if (client.available()) {
        char c = client.read();             // Ein (1) Zeichen der Anfrage des Clients lesen
        Serial.write(c);                    // und es im Seriellen Monitor ausgeben
        if (c == '\n') {                    // bis eine Neue Zeile ausgegeben wird

          //Wenn der Client eine Leerzeile sendet, ist das Ende des HTTP Request erreicht
          if (currentLine.length() == 0) {

            //Der Server sendet nun eine Antwort an den Client
            client.println("HTTP/1.1 200 OK");
            client.println("Content-type:text/html");
            client.println("Connection: close");
            client.println();

            //Die Webseite anzeigen
            client.println("<!DOCTYPE html><html>");
            client.println("<head><meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"></head>");
            client.println("<body><h1 align=\"center\">Hello world!</h1></body></html>");

            //Die Antwort beenden
            client.println();
            //Den Loop beenden
            break;
          } else { //Bei einer neuen Zeile (keine Leerzeile) die Variable leeren
            currentLine = "";
          }
        } else if (c != '\r') {  //alles andere als eine Leerzeile wird
          currentLine += c;      //der Variablen hinzugefügt
        }
      }
    }
    //Die Verbindung beenden
    client.stop();
    Serial.println("Verbindung beendet.");
    Serial.println("");
  }
}


				
			
				
					//Bibliothek für die WLAN-Verbindung
#include <ESP8266WiFi.h>

//Bibliothek, Objekt und Variable für den Sensor BMP180
#include <Adafruit_BMP085.h>
Adafruit_BMP085 bmp;
float temp;

//Daten des WLAN-Netzwerks
const char* ssid     = "Name deines Netzwerks";
const char* password = "Passwort deines Netzwerks";

// Port des Webservers auf 80 setzen
WiFiServer server(80);

void setup() {
  Serial.begin(115200); //Seriellen Monitor starten

  if (!bmp.begin()) {
    Serial.println("Sensor nicht gefunden!");
    while (1) {}
  }

  //Mit dem WLAN-Netzwerk verbinden
  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED) {
    delay(1000);
    Serial.println("Ich verbinde mich mit dem Internet...");
  }
  Serial.println("Ich bin mit dem Internet verbunden!");

  //Lokale IP-Adresse im Seriellen Monitor ausgeben und Server starten
  Serial.println("");
  Serial.println("IP-Adresse: ");
  Serial.println(WiFi.localIP());

  server.begin();
}

void loop() {
  WiFiClient client = server.available();   //Auf Clients (Server-Aufrufe) warten

  if (client) {                             //Bei einem Aufruf des Servers...
    Serial.println("Anfrage von Client erhalten.");
    String currentLine = "";                //...String definieren für die Anfrage des Clients

    while (client.connected()) { //Loop, solange Client verbunden ist

      if (client.available()) {
        char c = client.read();             //Ein (1) Zeichen der Anfrage des Clients lesen
        Serial.write(c);                    //und es im Seriellen Monitor ausgeben
        if (c == '\n') {                    //bis eine Neue Zeile ausgegeben wird

          //Wenn der Client eine Leerzeile sendet, ist das Ende des HTTP Request erreicht
          if (currentLine.length() == 0) {

            //Der Server sendet nun eine Antwort an den Client
            client.println("HTTP/1.1 200 OK");
            client.println("Content-type:text/html");
            client.println("Connection: close");
            client.println();

            //Die Temperatur ermitteln
            temp = bmp.readTemperature();
            Serial.print("Temperatur = ");
            Serial.print(temp);
            Serial.println(" *C");

            // Die Webseite anzeigen
            client.println("<!DOCTYPE html><html>");
            client.println("<head><meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">");
            client.println("<meta charset=\"utf-8\"></head>");
            client.println("<body><h1 align=\"center\">Die aktuelle Temperatur</h1>");
            client.println("<p align=\"center\">");
            client.println(temp);
            client.println("°C</p>");
            client.println("</body></html>");

            //Die Antwort beenden
            client.println();
            // Den Loop beenden
            break;
          } else { //Bei einer neuen Zeile (keine Leerzeile), die Variable leeren
            currentLine = "";
          }
        } else if (c != '\r') {  //alles andere als eine Leerzeile wird
          currentLine += c;      //der Variablen hinzugefüht
        }
      }
    }
    // Die Verbindung beenden
    client.stop();
    Serial.println("Verbindung beendet.");
    Serial.println("");
  }
}


				
			
				
					//Bibliothek für die WLAN-Verbindung
#include <ESP8266WiFi.h>

//Bibliothek, Objekt und Variable für den Sensor BMP180
#include <Adafruit_BMP085.h>
Adafruit_BMP085 bmp;
float temp;

//Daten des WLAN-Netzwerks
const char* ssid     = "Name deines Netzwerks";
const char* password = "Passwort deines Netzwerks";

//Port des Webservers auf 80 setzen
WiFiServer server(80);

//String für den Header
String header;

//Pin und Status der LED
const int led = 13; //Pin D7 am ESP8266
String ledState = "aus";


void setup() {
  Serial.begin(115200); //Seriellen Monitor starten

  pinMode(led, OUTPUT);
  digitalWrite(led, LOW);

  if (!bmp.begin()) {
    Serial.println("Sensor nicht gefunden!");
    while (1) {}
  }

  //Mit dem WLAN-Netzwerk verbinden
  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED) {
    delay(1000);
    Serial.println("Ich verbinde mich mit dem Internet...");
  }
  Serial.println("Ich bin mit dem Internet verbunden!");

  // Lokale IP-Adresse im Seriellen Monitor ausgeben und Server starten
  Serial.println("");
  Serial.println("IP-Adresse: ");
  Serial.println(WiFi.localIP());

  server.begin();
}

void loop() {
  WiFiClient client = server.available();   //Auf Clients (Server-Aufrufe) warten

  if (client) {                             //Bei einem Aufruf des Servers...
    Serial.println("Anfrage von Client erhalten.");
    String currentLine = "";                //...String definieren für die Anfrage des Clients

    while (client.connected()) { //Loop, solange Client verbunden ist

      if (client.available()) {
        char c = client.read();             //Ein (1) Zeichen der Anfrage des Clients lesen
        Serial.write(c);
        header += c;
        if (c == '\n') {


          //Wenn der Client eine Leerzeile sendet, ist das Ende des HTTP Request erreicht
          if (currentLine.length() == 0) {

            //Der Server sendet nun eine Antwort an den Client
            client.println("HTTP/1.1 200 OK");
            client.println("Content-type:text/html");
            client.println("Connection: close");
            client.println();

            //die Led an- und ausschalten
            if (header.indexOf("GET /led/on") >= 0) {
              Serial.println("Die LED ist an");
              ledState = "an";
              digitalWrite(led, HIGH);
            } else if (header.indexOf("GET /led/off") >= 0) {
              Serial.println("Die LED ist aus");
              ledState = "aus";
              digitalWrite(led, LOW);
            }

            //Die Temperatur ermitteln
            temp = bmp.readTemperature();
            Serial.print("Temperatur = ");
            Serial.print(temp);
            Serial.println(" *C");

            //Die Webseite anzeigen
            client.println("<!DOCTYPE html><html>");
            client.println("<head><meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">");
            client.println("<meta charset=\"utf-8\"></head>");
            client.println("<body><h1 align=\"center\">Die aktuelle Temperatur</h1>");
            client.println("<p align=\"center\">");
            client.println(temp);
            client.println("°C</p>");

            client.println("<p align=\"center\">Die LED ist " + ledState + ".</p>");

            if (ledState == "aus") {
              client.println("<p align=\"center\"><a href=\"/led/on\">ANSCHALTEN</a></p>");
            } else {
              client.println("<p align=\"center\"><a href=\"/led/off\">AUSSCHALTEN</a></p>");
            }

            client.println("</body></html>");

            //Die Antwort beenden
            client.println();
            //Den Loop beenden
            break;
          } else { // Bei einer neuen Zeile (keine Leerzeile), die Variable leeren
            currentLine = "";
          }
        } else if (c != '\r') {  //alles andere als eine Leerzeile wird
          currentLine += c;      //der Variablen hinzugefüht
        }
      }
    }
    //Variable header leeren
    header = "";
    // Die Verbindung beenden
    client.stop();
    Serial.println("Verbindung beendet.");
    Serial.println("");
  }
}


				
			
				
					//Bibliothek für die WLAN-Verbindung
#include <ESP8266WiFi.h>

//Bibliothek, Objekt und Variable für den Sensor BMP180
#include <Adafruit_BMP085.h>
Adafruit_BMP085 bmp;
float temp;

//Daten des WLAN-Netzwerks
const char* ssid     = "Name deines Netzwerks";
const char* password = "Passwort deines Netzwerks";

//Port des Webservers auf 80 setzen
WiFiServer server(80);

//String für den Header
String header;

//Pin und Status der LED
const int led = 13; //Pin D7 am ESP8266
String ledState = "aus";


void setup() {
  Serial.begin(115200); //Seriellen Monitor starten

  pinMode(led, OUTPUT);
  digitalWrite(led, LOW);

  if (!bmp.begin()) {
    Serial.println("Sensor nicht gefunden!");
    while (1) {}
  }

  //Mit dem WLAN-Netzwerk verbinden
  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED) {
    delay(1000);
    Serial.println("Ich verbinde mich mit dem Internet...");
  }
  Serial.println("Ich bin mit dem Internet verbunden!");

  //Lokale IP-Adresse im Seriellen Monitor ausgeben und Server starten
  Serial.println("");
  Serial.println("IP-Adresse: ");
  Serial.println(WiFi.localIP());

  server.begin();
}

void loop() {
  WiFiClient client = server.available();   // uf Clients (Server-Aufrufe) warten

  if (client) {                             //Bei einem Aufruf des Servers...
    Serial.println("Anfrage von Client erhalten.");
    String currentLine = "";                //...String definieren für die Anfrage des Clients

    while (client.connected()) { //Loop, solange Client verbunden ist

      if (client.available()) {
        char c = client.read();             //Ein (1) Zeichen der Anfrage des Clients lesen
        Serial.write(c);
        header += c;
        if (c == '\n') {


          //Wenn der Client eine Leerzeile sendet, ist das Ende des HTTP Request erreicht
          if (currentLine.length() == 0) {

            //Der Server sendet nun eine Antwort an den Client
            client.println("HTTP/1.1 200 OK");
            client.println("Content-type:text/html");
            client.println("Connection: close");
            client.println();

            //die Led an- und ausschalten
            if (header.indexOf("GET /led/on") >= 0) {
              Serial.println("Die LED ist an");
              ledState = "an";
              digitalWrite(led, HIGH);
            } else if (header.indexOf("GET /led/off") >= 0) {
              Serial.println("Die LED ist aus");
              ledState = "aus";
              digitalWrite(led, LOW);
            }

            //Die Temperatur ermitteln
            temp = bmp.readTemperature();
            Serial.print("Temperatur = ");
            Serial.print(temp);
            Serial.println(" *C");

            // Die Webseite anzeigen
            client.println("<!DOCTYPE html><html>");
            client.println("<head><meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">");
            client.println("<meta charset=\"utf-8\">");
            client.println("<style>");
            client.println("html { font-family: Helvetica;} h1, p {text-align: center;}");
            client.println("a { color: black; text-decoration: none;}");
            client.println("div { margin: 10px auto 10px auto; padding: 10px; height: 80px; width: 200px; background-color: aliceblue; border: 1px solid lightgray;}");
            client.println("</style>");
            client.println("</head>");
            
            client.println("<body><div><p>Raumtemperatur</p>");
            client.println("<p>");
            client.println(temp);
            client.println("°C</p></div>");

            client.println("<div><p>LED</p>");
            if (ledState == "aus") {
              client.println("<button style=\"margin-left:50px;\"><a href=\"/led/on\">ANSCHALTEN</a></button>");
            } else {
              client.println("<button style=\"margin-left:45px;\"><a href=\"/led/off\">AUSSCHALTEN</a></button>");
            }

            client.println("</div></body></html>");

            //Die Antwort beenden
            client.println();
            // Den Loop beenden
            break;
          } else { //Bei einer neuen Zeile (keine Leerzeile) die Variable leeren
            currentLine = "";
          }
        } else if (c != '\r') {  //alles andere als eine Leerzeile wird
          currentLine += c;      //der Variablen hinzugefüht
        }
      }
    }
    //Variable header leeren
    header = "";
    //Die Verbindung beenden
    client.stop();
    Serial.println("Verbindung beendet.");
    Serial.println("");
  }
}


				
			

Bibliotheken

Hier findest du die benötigten Bibliotheken, die du nicht über den Bibliotheksverwalter in der Arduino IDE installieren kannst. Lade sie hier herunter und binde sie wie im Buch beschrieben ein.

Updates

Noch gibt es keine Updates zum Buch. Hast du einen Fehler gefunden oder eine Idee für die Optimierung eines Sketchs oder eines Projekts? Dann schreibe uns gerne an info@polluxlabs.net