// ArduinoJson - arduinojson.org // Copyright Benoit Blanchon 2014-2018 // MIT License // // This example shows how to implement an HTTP server that sends JSON document // in the responses. // It uses the Ethernet library but can be easily adapted for Wifi. // // It sends the value of the analog and digital pins. // The JSON document looks like the following: // { // "analog": [ 0, 1, 2, 3, 4, 5 ], // "digital": [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13 ] // } #include #include #include byte mac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED}; EthernetServer server(80); void setup() { // Initialize serial port Serial.begin(9600); while (!Serial) continue; // Initialize Ethernet libary if (!Ethernet.begin(mac)) { Serial.println(F("Failed to initialize Ethernet library")); return; } // Start to listen server.begin(); Serial.println(F("Server is ready.")); Serial.print(F("Please connect to http://")); Serial.println(Ethernet.localIP()); } void loop() { // Wait for an incomming connection EthernetClient client = server.available(); // Do we have a client? if (!client) return; Serial.println(F("New client")); // Read the request (we ignore the content in this example) while (client.available()) client.read(); // Allocate JsonBuffer // Use arduinojson.org/assistant to compute the capacity. StaticJsonBuffer<500> jsonBuffer; // Create the root object JsonObject& root = jsonBuffer.createObject(); // Create the "analog" array JsonArray& analogValues = root.createNestedArray("analog"); for (int pin = 0; pin < 6; pin++) { // Read the analog input int value = analogRead(pin); // Add the value at the end of the array analogValues.add(value); } // Create the "digital" array JsonArray& digitalValues = root.createNestedArray("digital"); for (int pin = 0; pin < 14; pin++) { // Read the digital input int value = digitalRead(pin); // Add the value at the end of the array digitalValues.add(value); } Serial.print(F("Sending: ")); root.printTo(Serial); Serial.println(); // Write response headers client.println("HTTP/1.0 200 OK"); client.println("Content-Type: application/json"); client.println("Connection: close"); client.println(); // Write JSON document root.prettyPrintTo(client); // Disconnect client.stop(); } // See also // -------- // // https://arduinojson.org/ contains the documentation for all the functions // used above. It also includes an FAQ that will help you solve any // serialization problem. // // The book "Mastering ArduinoJson" contains a tutorial on serialization. // It begins with a simple example, then adds more features like serializing // directly to a file or an HTTP client. // Learn more at https://arduinojson.org/book/ // Use the coupon code TWENTY for a 20% discount ❤❤❤❤❤