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 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
#include
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
#include
#include
#include
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
#include
#include
#include
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
//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("");
client.println("");
client.println("Hello world!
");
//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
//Bibliothek, Objekt und Variable für den Sensor BMP180
#include
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("");
client.println("");
client.println("");
client.println("Die aktuelle Temperatur
");
client.println("");
client.println(temp);
client.println("°C
");
client.println("");
//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
//Bibliothek, Objekt und Variable für den Sensor BMP180
#include
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("");
client.println("");
client.println("");
client.println("Die aktuelle Temperatur
");
client.println("");
client.println(temp);
client.println("°C
");
client.println("Die LED ist " + ledState + ".
");
if (ledState == "aus") {
client.println("");
} else {
client.println("");
}
client.println("");
//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
//Bibliothek, Objekt und Variable für den Sensor BMP180
#include
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("");
client.println("");
client.println("");
client.println("");
client.println("");
client.println("Raumtemperatur
");
client.println("");
client.println(temp);
client.println("°C
");
client.println("LED
");
if (ledState == "aus") {
client.println("");
} else {
client.println("");
}
client.println("");
//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