3801|5

1万

帖子

25

TA的资源

版主

楼主
 

使用 ESP8266 的 NeoPixel 时钟 [复制链接]

来自:https://www.hackster.io/palsayantan/neo ... ock-5bd11c

图片

EspRing 带有2位 ws2812b RGB LED,并且内置有ESP12E模块来控制LED。因此,您会得到一个带有板载微控制器的neopixel环。由于WS2812B led灯可单独寻址,因此我们只需要微控制器的一个数据引脚以及VCC和GND即可控制。顾名思义,我们可以控制每个像素的颜色和亮度。您可以为每个像素分配不同的颜色,并使用它创建令人着迷的动画和效果。由于该模块具有可访问wifi的功能,因此您可以通过无线对其进行重新编程或更改效果。它具有稳压器,可将esp8266的电压从5v降至3.3v。

因此,ESP模块连接到wifi网络,并从NTP服务器获取当前时间。请注意,您需要相应地更改时区,以获取您所在位置的当地时间。板上有12个LED连接到GPIO5。为直观显示时间,我为HOUR,MINUTE和SECOND选择了不同的颜色。
在获得时间之后,我们需要将Minute和Second除以5,因为我们有12个led和60/5 = 12。小时是24小时制,因此我们也需要更改它。最后,我根据时间设置LED的颜色。可以轻松更改。

原理图(PCB)

图片

代码

#include <ESP8266WiFi.h>
#include <Adafruit_NeoPixel.h>
#include <WiFiUdp.h>
#include <NTPClient.h>          // include NTPClient library
#include <TimeLib.h>            // include Arduino time library

// set Wi-Fi SSID and password
const char *ssid     = "SSID";
const char *password = "PASSWORD";

WiFiUDP ntpUDP;
// 'time.nist.gov' is used (default server) with +1 hour offset (3600 seconds) 60 seconds (60000 milliseconds) update interval
NTPClient timeClient(ntpUDP, "time.nist.gov", 19800, 60000); //GMT+5:30 : 5*3600+30*60=19800

#define PIN        5
#define NUMPIXELS  12
Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);

int Second, Minute, Hour, hour_;

int period = 1000;
unsigned long time_now = 0;

void setup(void)
{
  Serial.begin(115200);
  delay(10);
  pixels.begin();
  pixels.clear();
  for (int i = 0; i < 12; i++) {
    pixels.setPixelColor(i, pixels.Color(  0,   0,   0)); //Black
  }
  pixels.show();
  WiFi.begin(ssid, password);

  Serial.print("Connecting.");

  while ( WiFi.status() != WL_CONNECTED )
  {
    delay(500);
    Serial.print(".");
  }

  Serial.println("connected");
  timeClient.begin();
  delay(10);
}


void loop()
{
  if (WiFi.status() == WL_CONNECTED)  // check WiFi connection status
  {
    timeClient.update();
    unsigned long unix_epoch = timeClient.getEpochTime();   // get UNIX Epoch time
    Second = second(unix_epoch) / 5;      // get seconds from the UNIX Epoch time
    Minute = minute(unix_epoch) / 5;    // get minutes (0 - 59)
    hour_   = hour(unix_epoch);        // get hours   (0 - 23)

    if (hour_ > 12) {
      Hour = hour_ - 12;
    }
    else
      Hour = hour_;

    while (millis() > time_now + period) {
      time_now = millis();
      pixels.clear();
      pixels.setPixelColor(Second, pixels.Color(  0,   0, 32)); // Blue
      pixels.setPixelColor(Second - 1, pixels.Color(  0,   0, 16)); // Bluee
      pixels.setPixelColor(Second - 2, pixels.Color(  0,   0, 8)); // Blueee
      pixels.setPixelColor(Minute, pixels.Color(  0, 128,   0)); // Green
      pixels.setPixelColor(Hour, pixels.Color(128,   0,   0)); // Red
      pixels.show();
    }
  }
}

 

最新回复

现在很多网站都是英文版的,基础不好,还得翻译,浪费了很多时间,只能慢慢研究了   详情 回复 发表于 2019-11-25 21:56
点赞 关注
 

回复
举报

1305

帖子

0

TA的资源

纯净的硅(高级)

沙发
 

只是想想中的好看,等你做出来会发现很丑。

 
 

回复

1万

帖子

25

TA的资源

版主

板凳
 
yang_alex 发表于 2019-11-25 12:23 只是想想中的好看,等你做出来会发现很丑。

 
 
 

回复

4817

帖子

4

TA的资源

版主

4
 

似乎网上很多类似的,但是总觉得做出一个小实验出来,需要写出来的文章估计都得几万字了

点评

国外有一些这样的网站,主要是给初学者和业余爱好者交流、展示的,有时也有一些不错的作品。  详情 回复 发表于 2019-11-25 20:00
 
 
 

回复

1万

帖子

25

TA的资源

版主

5
 
led2015 发表于 2019-11-25 17:14 似乎网上很多类似的,但是总觉得做出一个小实验出来,需要写出来的文章估计都得几万字了

国外有一些这样的网站,主要是给初学者和业余爱好者交流、展示的,有时也有一些不错的作品。

点评

现在很多网站都是英文版的,基础不好,还得翻译,浪费了很多时间,只能慢慢研究了  详情 回复 发表于 2019-11-25 21:56
 
 
 

回复

4817

帖子

4

TA的资源

版主

6
 
dcexpert 发表于 2019-11-25 20:00 国外有一些这样的网站,主要是给初学者和业余爱好者交流、展示的,有时也有一些不错的作品。

现在很多网站都是英文版的,基础不好,还得翻译,浪费了很多时间,只能慢慢研究了

 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表