社区导航

 

搜索
查看: 217|回复: 5

[讨论] 使用 ESP8266 的 NeoPixel 时钟

[复制链接]

9210

TA的帖子

14

TA的资源

版主

Rank: 6Rank: 6

测评达人

发表于 2019-11-25 11:20 | 显示全部楼层 |阅读模式

来自: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();
    }
  }
}

 



回复

使用道具 举报

1143

TA的帖子

0

TA的资源

纯净的硅(中级)

Rank: 5Rank: 5

发表于 2019-11-25 12:23 | 显示全部楼层

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



回复

使用道具 举报

9210

TA的帖子

14

TA的资源

版主

Rank: 6Rank: 6

测评达人

 楼主| 发表于 2019-11-25 15:54 | 显示全部楼层
yang_alex 发表于 2019-11-25 12:23 只是想想中的好看,等你做出来会发现很丑。



回复

使用道具 举报

1542

TA的帖子

0

TA的资源

版主

Rank: 6Rank: 6

发表于 2019-11-25 17:14 | 显示全部楼层

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

点评

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


回复

使用道具 举报

9210

TA的帖子

14

TA的资源

版主

Rank: 6Rank: 6

测评达人

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

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

点评

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


回复

使用道具 举报

1542

TA的帖子

0

TA的资源

版主

Rank: 6Rank: 6

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

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



回复

使用道具 举报

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

关闭

站长推荐上一条 /8 下一条

  • 论坛活动 E手掌握

    扫码关注
    EEWORLD 官方微信

  • EE福利  唾手可得

    扫码关注
    EE福利 唾手可得

Archiver|手机版|小黑屋|电子工程世界 ( 京ICP证 060456 )

GMT+8, 2019-12-8 14:17 , Processed in 0.197830 second(s), 17 queries , Gzip On, MemCache On.

快速回复 返回顶部 返回列表