Hinter dem heutigen Türchen befindet sich ein Piezzo Schallwandler. Mit ihm ist es möglich, Töne zu generieren, wie im heutigen Versuch deutlich wird. Sie basteln heute eine Art Klavier, das über eine Webseite bedient werden kann. Doch zunächst der Aufbau:

Der Piezzo richtig angeschlossen
Der Piezzo richtig angeschlossen
Das Programm: A16_P16_WebserverPiano.ino
/*
  TCP-Server Piano
  Change SSID and PASSWORD.
*/

#include <NanoESP.h>
#include <NanoESP_HTTP.h> //special library for http-connection
#include <SoftwareSerial.h>
#include "Websites.h" //websites in a special file as progmem

#define SSID "YourSSID"
#define PASSWORD "YourPassword"

#define LED_WLAN 13

NanoESP nanoesp = NanoESP();
NanoESP_HTTP http = NanoESP_HTTP(nanoesp);

void setup() {
  Serial.begin(19200);
  nanoesp.init();

  //! Only if you want to change the ACCESPOINT configuration
  //nanoesp.configWifi(ACCESSPOINT, "NanoESP", "");
  
  //! Only if you use a new Network
  // nanoesp.configWifi(DUAL, SSID, PASSWORD);
    
  //Dual Mode
  nanoesp.configWifiMode(DUAL);
  //delay(1000);
  
  // Wait till Connected to WiFi
  if (nanoesp.wifiConnected())digitalWrite(LED_WLAN, HIGH); else Serial.println(F("Error WLAN Connect"));

  //Start TCP Server
  if (nanoesp.startTcpServer(80))    Serial.println(F("TCP Server Activ")); else   Serial.println(F("TCP Server Error"));

  //Print IP in Terminal
  Serial.println(nanoesp.getIp());
}

void loop() {
  String method, ressource, parameter;
  int id;

  if (http.recvRequest(id, method, ressource, parameter)) { //Incoming request, parameters by reference

    Serial.println("New Request from id :" + String(id) + ", method: " + method +  ", ressource: " + ressource +  " parameter: " + parameter);

    if (ressource == "/") {
      http.sendFromFlash(id, index, sizeof(index));
      nanoesp.closeConnection(id);
    }

    else if (ressource == "/dataonly") {  //only data is recieved on this url, no need to send a website
      nanoesp.closeConnection(id);
    }

    else {
      http.sendFromFlash(id, error404, sizeof(error404));
      nanoesp.closeConnection(id);
    }

    if (parameter != "")      //the request included parameters
    {
      String strTone;
      if (method == GET)  strTone = parameter.substring(6); else   strTone = parameter.substring(5); //get note values
      noTone(8);
      tone(8, strTone.toInt(), 200);    //play note for 200ms
    }

  }
}

(Die frühere Einbettung über Arduino Create ist nicht mehr verfügbar; der Code stammt aus dem Download aller Programme.)

Wenn Sie das Programm hochgeladen haben, können Sie die Webseite des Boards über die IP im Browser öffnen. Es ist heute egal ob Sie sich über Ihr Heimnetzwerk oder über den AccessPoint mit dem Board verbinden, denn es werden keine externen Daten geladen. Auf der Webseite finden Sie dann einige Buttons mit deren Betätigung Sie einen Ton auslösen. Die Übertragung ist recht schnell, aber dennoch sollten Sie dem Board eine Viertelsekunde Zeit geben um den Ton zu spielen, bevor Sie einen weiteren Ton senden. Ansonsten hört sich der Ton sehr seltsam an. Probieren Sie doch einmal den Klassiker unter den Anfängerliedern: Alle meine Entchen. Die Töne lauten:

C D E F G G A A A A G A A A A G F F F F E E G G G G C

Die Piano Webseite
Die Piano Webseite