아두이노와 친구들

arduino plus

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

작성자
T
작성일
2022-07-07 13:44
조회
190



입력

출력

실습내용

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";

//StaticJsonDocument<2048> doc;

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 ddelay = 0;

int LED = D14;


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();

  }

  ddelay = 1000 - wind_speed;

  ddelay = round(ddelay);

  Serial.println(ddelay);

  if (ddelay < 0) {

    digitalWrite(LED, HIGH);

    delay(30); //0.5초 딜레이

    digitalWrite(LED, LOW);

    delay(30); //0.5초 딜레이

  }

  digitalWrite(LED, HIGH);

  delay(ddelay); //0.5초 딜레이

  digitalWrite(LED, LOW);

  delay(ddelay); //0.5초 딜레이

}

전체 0

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