아두이노와 친구들
arduino plus
Wemos D1 R1 - API 데이터로 LED 제어하기 1
입력 | 출력 | 실습내용 |
API 데이터 | LED | API 데이터가 표시하는 바람의 속도에 따라 서보모터가 움직임 |
준비물 | 수량 |
Wemos D1 R1 보드 | 1 |
브레드보드 | 1 |
LED | 1 |
저항(220) | 1 |
점퍼케이블 | 3 |
결선도
- 코딩
#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);
}
}