제가 미세먼지에 따른 LED 무드등과 한글시계조명을 하나로 만들려고 하는데요
#include <ESP8266WiFi.h> // ESP 8266 와이파이 라이브러리
#include <ESP8266HTTPClient.h> // HTTP 클라이언트
String city = "서울"; // 서울, 부산, 대구, 인천, 광주, 대전, 울산, 경기, 강원, 충북, 충남, 전북, 전남, 경북, 경남, 제주, 세종 중 입력
String key = "";
String url = "http://openapi.airkorea.or.kr/openapi/services/rest/ArpltnInforInqireSvc/getCtprvnMesureSidoLIst?sidoName=" + city + "&searchCondition=HOUR&pageNo=1&numOfRows=200&ServiceKey=" + key;
void setup()
{
// 시리얼 세팅
Serial.begin(115200);
Serial.println();
// 와이파이 접속
WiFi.begin("SSID", "00000000"); // 공유기 이름과 비밀번호
Serial.print("Connecting");
while (WiFi.status() != WL_CONNECTED) // 와이파이 접속하는 동안 "." 출력
{
delay(500);
Serial.print(".");
}
Serial.println();
Serial.print("Connected, IP address: ");
Serial.println(WiFi.localIP()); // 접속된 와이파이 주소 출력
}
void loop() {
if (WiFi.status() == WL_CONNECTED) // 와이파이가 접속되어 있는 경우
{
WiFiClient client; // 와이파이 클라이언트 객체
HTTPClient http; // HTTP 클라이언트 객체
if (http.begin(client, url)) { // HTTP
// 서버에 연결하고 HTTP 헤더 전송
int httpCode = http.GET();
// httpCode 가 음수라면 에러
if (httpCode > 0) { // 에러가 없는 경우
if (httpCode == HTTP_CODE_OK || httpCode == HTTP_CODE_MOVED_PERMANENTLY) {
String payload = http.getString(); // 받은 XML 데이터를 String에 저장
Serial.println(payload);
}
} else {
Serial.printf("[HTTP] GET... 실패, 에러코드: %s\n", http.errorToString(httpCode).c_str());
}
http.end();
} else {
Serial.printf("[HTTP] 접속 불가\n");
}
delay(600000);
}
}
이 미세먼지 조명 소스랑
#include <Wire.h>
#include <Time.h>
#include <DS1307RTC.h>
#include <Adafruit_NeoPixel.h>
#include <avr/power.h>
#define PIN 6
Adafruit_NeoPixel strip = Adafruit_NeoPixel(25, PIN, NEO_GRB + NEO_KHZ800);
uint32_t color = strip.Color(232, 101, 12);
void hoursFilter(int hours, int minutes) {
if (hours == 0 && minutes == 0) { //00:00
strip.setPixelColor(18, color);
strip.setPixelColor(19, color);
}
else if (hours == 12 && minutes == 0) {
strip.setPixelColor(18, color);
strip.setPixelColor(21, color);
}
else if (hours == 1 || hours == 13) {
strip.setPixelColor(1, color);
strip.setPixelColor(14, color);
}
else if (hours == 2 || hours == 14) {
strip.setPixelColor(9, color);
strip.setPixelColor(14, color);
}
else if (hours == 3 || hours == 15) {
strip.setPixelColor(3, color);
strip.setPixelColor(14, color);
}
else if (hours == 4 || hours == 16) {
strip.setPixelColor(4, color);
strip.setPixelColor(14, color);
}
else if (hours == 5 || hours == 17) {
strip.setPixelColor(2, color);
strip.setPixelColor(7, color);
strip.setPixelColor(14, color);
}
else if (hours == 6 || hours == 18) {
strip.setPixelColor(7, color);
strip.setPixelColor(8, color);
strip.setPixelColor(14, color);
}
else if (hours == 7 || hours == 19) {
strip.setPixelColor(5, color);
strip.setPixelColor(6, color);
strip.setPixelColor(14, color);
}
else if (hours == 8 || hours == 20) {
strip.setPixelColor(10, color);
strip.setPixelColor(11, color);
strip.setPixelColor(14, color);
}
else if (hours == 9 || hours == 21) {
strip.setPixelColor(12, color);
strip.setPixelColor(13, color);
strip.setPixelColor(14, color);
}
else if (hours == 10 || hours == 22) {
strip.setPixelColor(0, color);
strip.setPixelColor(14, color);
}
else if (hours == 11 || hours == 23) {
strip.setPixelColor(0, color);
strip.setPixelColor(1, color);
strip.setPixelColor(14, color);
}
else if (hours == 12 || hours == 24) {
if (minutes > 0) {
strip.setPixelColor(0, color);
strip.setPixelColor(9, color);
strip.setPixelColor(14, color);
}
}
else ;
}
void minutesFilter(int minutes) {
if (minutes > 4 && minutes < 10) {
strip.setPixelColor(21, color);
strip.setPixelColor(24, color);
}
else if (minutes > 9 && minutes < 15) {
strip.setPixelColor(22, color);
strip.setPixelColor(24, color);
}
else if (minutes > 14 && minutes < 20) {
strip.setPixelColor(22, color);
strip.setPixelColor(23, color);
strip.setPixelColor(24, color);
}
else if (minutes > 19 && minutes < 25) {
strip.setPixelColor(17, color);
strip.setPixelColor(22, color);
strip.setPixelColor(24, color);
}
else if (minutes > 24 && minutes < 30) {
strip.setPixelColor(17, color);
strip.setPixelColor(22, color);
strip.setPixelColor(23, color);
strip.setPixelColor(24, color);
}
else if (minutes > 29 && minutes < 35) {
strip.setPixelColor(15, color);
strip.setPixelColor(16, color);
strip.setPixelColor(24, color);
}
else if (minutes > 34 && minutes < 40) {
strip.setPixelColor(15, color);
strip.setPixelColor(16, color);
strip.setPixelColor(23, color);
strip.setPixelColor(24, color);
}
else if (minutes > 39 && minutes < 45) {
strip.setPixelColor(20, color);
strip.setPixelColor(22, color);
strip.setPixelColor(24, color);
}
else if (minutes > 44 && minutes < 50) {
strip.setPixelColor(20, color);
strip.setPixelColor(22, color);
strip.setPixelColor(23, color);
strip.setPixelColor(24, color);
}
else if (minutes > 49 && minutes < 55) {
strip.setPixelColor(21, color);
strip.setPixelColor(22, color);
strip.setPixelColor(24, color);
}
else if (minutes > 54 && minutes < 60) {
strip.setPixelColor(21, color);
strip.setPixelColor(22, color);
strip.setPixelColor(23, color);
strip.setPixelColor(24, color);
}
else;
}
void ledReset() {
for (int i = 0; i < 25; i++) {
strip.setPixelColor(i, 0, 0, 0);
strip.show();
}
}
void setup() {
Serial.begin(9600);
#if defined (__AVR_ATtiny85__)
if (F_CPU == 16000000) clock_prescale_set(clock_div_1);
#endif
strip.begin();
strip.show();
while (!Serial) ; // 시리얼 통신이 가능할 때까지 대기한다.
delay(200);
}
void loop() {
tmElements_t tm; // RTC 객체 선언
if (RTC.read(tm)) { //RTC 모듈로 부터 데이터가 들어온다면
int hours = tm.Hour; //시(hour) 데이터를 hours 변수에 담는다.
int minutes = tm.Minute; //분(minute) 데이터를 minutes 변수에 담는다.
int seconds = tm.Second; //초(second) 데이터를 seconds 변수에 담는다.
// 시, 분, 초 출력
Serial.print(hours);
Serial.print("\t");
Serial.print(minutes);
Serial.print("\t");
Serial.println(seconds);
// 5분에 한번씩 led 초기화
if ((minutes % 5) == 0 && seconds == 0) {
ledReset();
}
hoursFilter(hours, minutes); // 시(hour) LED 출력
minutesFilter(minutes); // 분(minute) LED 출력
strip.show();
}
else {
if (RTC.chipPresent()) {
Serial.println("The DS1307 is stopped. Please run the SetTime");
Serial.println("example to initialize the time and begin running.");
Serial.println();
}
else {
Serial.println("DS1307 read error! Please check the circuitry.");
Serial.println();
}
delay(9000);
}
delay(1000);
}
이 한글시계 조명 소스를 합치려고 합니다... 아두이노 초보라 소스를 합치는 법을 몰라서... 고수분들 알려주시면 감사하겠습니다
|