아두이노와 친구들

arduino plus

Wemos D1 R1 - API 데이터로 LED 제어하기 1

작성자
T
작성일
2022-07-07 13:40
조회
356

입력

출력

실습내용

API 데이터

LED

API 데이터가 표시하는 바람의 속도에 따라 서보모터가 움직임


준비물

수량

Wemos D1 R1 보드

1

브레드보드

1

LED

1

저항(220)

1

점퍼케이블

3



  • 결선도

qheMj6pvSl-knHwr8NVAa9QstBARwEZBpnngDriPmW8ZtP5U_zUvKZxRrB3JGFKlUQDCn4sQUJUO0vSZbKc24WMycuSGYcg2AGQ8-98ZTUx1E0IO0OZZqisy8191V4UAm8T0fxTXFcIBGM-0Z0w

  • 코딩


#include <ESP8266WiFi.h>

#include <ESP8266HTTPClient.h>

#include <WiFiClient.h>

#include <ArduinoJson.h>


const char* ssid = "Wifi ID";

const char* password = "Wifi PW";


DynamicJsonDocument doc(1000);


String serverName = "http://yongdo.azurewebsites.net/api/v1/weather/real-time?weather_station=school";

unsigned long lastTime = 0;

unsigned long timerDelay = 5000;

String payload = "";

int wind_deg_index = 0;

int wind_speed = 0;

long mytime = 0;

int LED = D14;  // (SDA/D2)


void setup() {

  Serial.begin(115200);

  WiFi.begin(ssid, password);


  Serial.println("Connecting");

  while (WiFi.status() != WL_CONNECTED) {

    delay(500);

    Serial.print(".");

  }


  //LED D14;  (SDA/D2)

  pinMode(LED, OUTPUT);

  Serial.println("");

  Serial.print("Connected to WiFi network with IP Address: ");

  Serial.println(WiFi.localIP());

  Serial.println("Timer set to 5 seconds (timerDelay variable), it will take 5 seconds before publishing the first reading.");

}


void loop() {


  if ((millis() - lastTime) > timerDelay) {

    if (WiFi.status() == WL_CONNECTED) {

      WiFiClient client;

      HTTPClient http;

      String serverPath = serverName;

      http.begin(client, serverPath.c_str());

      int httpResponseCode = http.GET();


      if (httpResponseCode > 0) {

        Serial.print("HTTP Response code: ");

        Serial.println(httpResponseCode);

        payload = http.getString();

        char buf[1000];

        payload.toCharArray(buf, payload.length() + 1);

        Serial.println(payload.length());

        Serial.println(buf);

        DeserializationError error = deserializeJson(doc, buf);


        if (error) {

          Serial.print("deserializeMsgPack() failed: ");

          Serial.println(error.f_str());

          return;

        }


        wind_deg_index = doc["wind_deg_index"];

        wind_speed = doc["wind_speed"];

        Serial.print("wind_deg_index = " + String(wind_deg_index)); Serial.print('t');

        Serial.print("wind_speed = " + String(wind_speed)); Serial.println("");

      }


      else {

        Serial.print("Error code: ");

        Serial.println(httpResponseCode);

      }

      http.end();

    }


    else {

      Serial.println("WiFi Disconnected");

    }

    lastTime = millis();

  }


  if (wind_speed < 50) {

    digitalWrite(LED, HIGH);

    delay(1000);

    digitalWrite(LED, LOW);

    delay(1000);

  }


  else if (wind_speed < 100) {

    digitalWrite(LED, HIGH);

    delay(750);

    digitalWrite(LED, LOW);

    delay(750);

  }


  else if (wind_speed < 200) {

    digitalWrite(LED, HIGH);

    delay(500);

    digitalWrite(LED, LOW);

    delay(500);

  }


  else if (wind_speed < 300) {

    digitalWrite(LED, HIGH);

    delay(300);

    digitalWrite(LED, LOW);

    delay(300);

  }


  else if (wind_speed < 500) {

    digitalWrite(LED, HIGH);

    delay(150);

    digitalWrite(LED, LOW);

    delay(150);

  }


  else if (wind_speed < 700) {

    digitalWrite(LED, HIGH);

    delay(100);

    digitalWrite(LED, LOW);

    delay(100);

  }


  else if (wind_speed < 1000) {

    digitalWrite(LED, HIGH);

    delay(50);

    digitalWrite(LED, LOW);

    delay(50);

  }

  else {

    digitalWrite(LED, HIGH);

    delay(30);

    digitalWrite(LED, LOW);

    delay(30);

  }

}

전체 0

©2021 (주)지능디자인. ALL RIGHTS RESERVED.