在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何利用ESP8266和Neopixel Ring實(shí)現(xiàn)時(shí)鐘的彩色顯示

科技觀察員 ? 來源:Mike McRoberts ? 作者:Mike McRoberts ? 2022-04-06 15:30 ? 次閱讀

本文將介紹一個(gè)基于 ESP8266(從 NTP 服務(wù)器獲取時(shí)間)和 Neopixel Ring 的簡(jiǎn)單時(shí)鐘,以彩色顯示小時(shí)、分鐘和秒。

介紹
為了做出這個(gè)簡(jiǎn)單的時(shí)鐘,我買了一個(gè) 24 LED Neopixel Ring 。我最初計(jì)劃將它用于 Cheerlights 項(xiàng)目,但在制作了 Cheerlight 之后,我認(rèn)為這是對(duì) Neopixel Ring的嚴(yán)重浪費(fèi)。因此,在一周后我下定了決心。我最終決定用 Ring 制作一個(gè)時(shí)鐘。

你需要什么
ESP8266 與 wifi 一樣非常適合此功能,因此可以通過 WiFi 獲取時(shí)間,并且還可以控制 Neopixel Ring。我使用 Wemos D1 Mini,因?yàn)樗鼈兎浅R子谑褂茫哂杏糜?a target="_blank">電源和數(shù)據(jù)的微型 USB 連接,只需幾美元,并且可以很容易地與 Arduino IDE 一起使用。這是一個(gè)非常簡(jiǎn)單的項(xiàng)目,代碼簡(jiǎn)單,電路方式不多。

Neopixel 環(huán)有 3 個(gè)連接:5v、接地和數(shù)據(jù)。您需要做的就是將 3 根電線焊接到環(huán)上的這 3 個(gè)焊盤上。D1 Mini 上的 VCC 和 Gnd 連接到 5v 和接地,數(shù)據(jù)引腳可以連接到任何輸出引腳。

poYBAGJNQM6AM6k0AAMl6ulhWYA058.png

對(duì)于代碼,您將需要 3 個(gè)庫:

pYYBAGJNQNSAS1ZsAAAWRDKs56o103.png

Adafruit_NeoPixel庫可以從https://github.com/adafruit/Adafruit_NeoPixel下載

TimeClient庫是 Squix 氣象站代碼的一部分,可以從https://github.com/squix78/esp8266-weather-station下載

只需將TimeClient.cpp和 TimeClient.h 文件復(fù)制到您的草圖文件夾中。

TimeClient 庫通過 WiFi 連接到互聯(lián)網(wǎng)并訪問www.google.com來工作。然后它會(huì)抓取網(wǎng)頁的標(biāo)題以從標(biāo)題中獲取時(shí)間和日期。

當(dāng)您將 ESP8266 安裝為可識(shí)別的板時(shí),ESP8266WiFi庫隨 Arduino IDE 一起提供。在開始項(xiàng)目之前,不要忘記使用 Arduino IDE Boards Manager 安裝 ESP8266 文件。

第 1 步
我們將使用 D1 Mini 上的 Pin 5 作為數(shù)據(jù)線。

#define PIN D5

我們需要在我們的代碼中跟蹤最后一次來自互聯(lián)網(wǎng)的時(shí)間更新是什么時(shí)候發(fā)生的,以及自一秒前以來已經(jīng)過了多長(zhǎng)時(shí)間(以跟蹤秒數(shù))。

long lastUpdate = millis();
long lastSecond = millis();

小時(shí)、分鐘和秒存儲(chǔ)在字符串變量中。

String hours, minutes, seconds;

以及我們跟蹤的當(dāng)前秒、分和小時(shí)。

int currentSecond, currentMinute, currentHour;

字符數(shù)組用于存儲(chǔ)您的 WiFi SSID 和密碼。在此處輸入您自己的詳細(xì)信息:

char ssid[] = "xxxxxxx"; // your network SSID (name)
char pass[] = "xxxxxxx"; // your network password

我住在倫敦,所以我與 UTC 有 0 小時(shí)的偏移,但夏令時(shí)除外,它是 1 小時(shí)。為您自己的時(shí)區(qū)設(shè)置偏移量。

const float UTC_OFFSET = 0;

我們創(chuàng)建一個(gè) timeClient 對(duì)象并將 UTC 偏移量傳遞給它。

TimeClient timeClient(UTC_OFFSET);

然后創(chuàng)建一個(gè) NeoPixel 對(duì)象,將其命名為“strip”,并將 LED 的數(shù)量和我們用于數(shù)據(jù)線的引腳傳遞給它。

Adafruit_NeoPixel strip = Adafruit_NeoPixel(24, PIN);

第 2 步
在設(shè)置功能中,我們將首先打開串行通信以進(jìn)行調(diào)試。

void setup()
{
Serial.begin(115200);

然后需要初始化 NeoPixel 環(huán),我們將亮度設(shè)置為 50%

strip.begin();
strip.setBrightness(128);

在我們執(zhí)行 .show 命令之前,環(huán)上什么都不會(huì)發(fā)生。

strip.show();

接下來我們連接到您的 WiFi:

WiFi.begin(ssid, pass);
while (WiFi.status() != WL_CONNECTED) {

然后從 timeClient 庫中更新時(shí)間。

timeClient.updateTime();

接下來我們運(yùn)行我們自己的函數(shù) updateTime(); 它調(diào)用庫函數(shù)來獲取當(dāng)前的小時(shí)、分鐘和秒。

updateTime() ;

最后,在主循環(huán)之前,我們檢索并存儲(chǔ) millis() 的當(dāng)前值,以便我們可以跟蹤自上次從互聯(lián)網(wǎng)更新時(shí)間以來已經(jīng)過去了多長(zhǎng)時(shí)間,并且還可以跟蹤經(jīng)過的秒數(shù),因此第二個(gè)可以更新。

lastUpdate = millis();
lastSecond = millis();
}

第 3 步
設(shè)置功能完成。接下來主循環(huán)函數(shù)將運(yùn)行。

void loop()
{

如果距離我們上次更新時(shí)間已經(jīng)過去了 1,800,000 毫秒(30 分鐘),我們將再次從 Internet 更新時(shí)間。

if ((millis() - lastUpdate) > 1800000) updateTime();

顯示器上的小時(shí)、分鐘和秒每秒都會(huì)更新一次,因此我們需要檢查自上次更新顯示器以來是否經(jīng)過了 1000 毫秒。如果是,則執(zhí)行 if 語句中的代碼。

if ((millis() - lastSecond) > 1000)
{

第 4 步
“手”的顏色是:

紅色 = 小時(shí)

綠色 = 分鐘

藍(lán)色 = 秒

.setPixelColor 命令用于設(shè)置“手”的顏色。我使用的戒指有 24 個(gè) RGB LED,因此秒和分鐘除以 2.5,因此它們顯示在戒指的正確象限上,小時(shí)(24 小時(shí)格式)除以 2。在時(shí)間更改之前,我們?cè)O(shè)置當(dāng)前'hands' 到 OFF 以清除最后的位置。

strip.setPixelColor(currentSecond / 2.5, 0, 0, 0);
strip.setPixelColor(currentMinute / 2.5, 0, 0, 0);
strip.setPixelColor(currentHour * 2, 0, 0, 0);
strip.show();

現(xiàn)在存儲(chǔ) millis() 的當(dāng)前值。

lastSecond = millis();

接下來,存儲(chǔ)在 currentSecond 中的值增加 1。然后我們檢查秒數(shù)是否超過 59,如果是,則將它們?cè)O(shè)置回 0。發(fā)生這種情況時(shí),我們還將分鐘數(shù)增加 1 并執(zhí)行相同的檢查。如果分鐘超過 59,那么我們也將小時(shí)增加 1。

currentSecond++;
if (currentSecond > 59)
{ currentSecond = 0;
currentMinute++;
if (currentMinute > 59) {
currentMinute = 0;
currentHour++;
if (currentHour > 12) currentHour = 0;
}
}

雖然沒有必要,但我將當(dāng)前時(shí)間打印到串行監(jiān)視器窗口以進(jìn)行調(diào)試。我使用 String 對(duì)象來生成時(shí)間字符串。

String currentTime = String(currentHour) + ':' + String(currentMinute) + ':' + String(currentSecond);
Serial.println(currentTime);

現(xiàn)在已經(jīng)更新了秒、分和小時(shí),我們可以將相關(guān)的“指針”設(shè)置為它們各自的 RGB 值。

strip.setPixelColor(currentSecond / 2.5, 0, 0, 255);
strip.setPixelColor(currentMinute / 2.5, 0, 255, 0);
strip.setPixelColor(currentHour * 2, 255, 0, 0);
strip.show();

最后,我們創(chuàng)建了自己的函數(shù) updateTime()。這會(huì)在開始時(shí)更新,然后每 30 分鐘更新一次,以保持準(zhǔn)確的時(shí)間。

void updateTime()
{

我們從 timeClient 庫中獲取小時(shí)、分鐘和秒。

hours = timeClient.getHours();
minutes = timeClient.getMinutes();
seconds = timeClient.getSeconds();

并將這些值存儲(chǔ)為整數(shù)(它們從 timeClient 庫作為字符串返回)。24 小時(shí)轉(zhuǎn)換為 12 小時(shí)格式。

currentHour = hours.toInt();
if (currentHour > 12) currentHour = currentHour - 12;
currentMinute = minutes.toInt();
currentSecond = seconds.toInt();

最后,我們希望能夠檢查自上次更新以來是否已經(jīng)過去了 30 分鐘,因此我們?cè)俅未鎯?chǔ) millis() 的當(dāng)前值。

lastUpdate = millis();

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 時(shí)鐘
    +關(guān)注

    關(guān)注

    11

    文章

    1886

    瀏覽量

    132916
  • ESP8266
    +關(guān)注

    關(guān)注

    51

    文章

    965

    瀏覽量

    47037
收藏 人收藏

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    帶有NeopixelESP8266崩潰的原因?

    - IDE:Arduino IDE首先我嘗試了一些通用的 WiFi 演示代碼來解決連接問題 -它運(yùn)行良好——ESP8266 連接到我的 wifi——所以我轉(zhuǎn)向了 Neopixel 控件——那就是出現(xiàn)問題
    發(fā)表于 02-23 07:41

    使用esp8266實(shí)現(xiàn)STM32聯(lián)網(wǎng)(最簡(jiǎn)單USART方法)

    到電腦上的java程序 這一篇 esp8266與STM32連接,電腦通過STM32配置esp8266實(shí)現(xiàn)聯(lián)網(wǎng)發(fā)送數(shù)據(jù)具體流程如下圖 2= esp8266怎么和STM32連接(引腳連
    發(fā)表于 11-22 11:51 ?1.3w次閱讀

    利用ESP8266 WiFi模塊打造科進(jìn)行遙控的圣誕之星

    ESP8266 WiFi模塊、WS2812、LED(“NeoPixel”)、木材和鋁制造了幾顆LED明星,還能手機(jī)遙控哦!
    的頭像 發(fā)表于 05-23 06:31 ?4447次閱讀

    使用ESP8266模塊和12864顯示實(shí)現(xiàn)網(wǎng)絡(luò)時(shí)鐘的資料合集

    本文檔的主要內(nèi)容詳細(xì)介紹的是使用ESP8266模塊和12864顯示實(shí)現(xiàn)網(wǎng)絡(luò)時(shí)鐘的資料合集。
    發(fā)表于 11-02 08:00 ?27次下載
    使用<b class='flag-5'>ESP8266</b>模塊和12864<b class='flag-5'>顯示</b>屏<b class='flag-5'>實(shí)現(xiàn)</b>網(wǎng)絡(luò)<b class='flag-5'>時(shí)鐘</b>的資料合集

    ESP8266

    優(yōu)點(diǎn)1.性能穩(wěn)定ESP8266EX 的工作溫度范圍大,且能夠保持穩(wěn)定的性能,能適應(yīng)各種操作環(huán)境。2.低功耗ESP8266EX 專為移動(dòng)設(shè)備、可穿戴電子產(chǎn)品和物聯(lián)網(wǎng)應(yīng)用而設(shè)計(jì),通過多項(xiàng)專有技術(shù)實(shí)現(xiàn)
    發(fā)表于 11-07 10:36 ?26次下載
    <b class='flag-5'>ESP8266</b>

    詳細(xì)實(shí)現(xiàn)ESP8266WIFI時(shí)鐘(基于51單片機(jī))

    寫了一下詳細(xì)教程時(shí)鐘還是用51單片機(jī)的定時(shí)器,esp8266只是用來實(shí)現(xiàn)校時(shí)的所以需要先實(shí)現(xiàn)一個(gè)51單片機(jī)的本地時(shí)鐘然后添加網(wǎng)絡(luò)校時(shí)功能就行
    發(fā)表于 11-23 16:51 ?45次下載
    詳細(xì)<b class='flag-5'>實(shí)現(xiàn)</b><b class='flag-5'>ESP8266</b>WIFI<b class='flag-5'>時(shí)鐘</b>(基于51單片機(jī))

    stm32和esp8266上的簡(jiǎn)單時(shí)鐘

    電子發(fā)燒友網(wǎng)站提供《stm32和esp8266上的簡(jiǎn)單時(shí)鐘.zip》資料免費(fèi)下載
    發(fā)表于 07-27 11:24 ?4次下載
    stm32和<b class='flag-5'>esp8266</b>上的簡(jiǎn)單<b class='flag-5'>時(shí)鐘</b>

    ESP8266 WIFI模擬GPS時(shí)鐘信號(hào)

    電子發(fā)燒友網(wǎng)站提供《ESP8266 WIFI模擬GPS時(shí)鐘信號(hào).zip》資料免費(fèi)下載
    發(fā)表于 08-04 14:33 ?15次下載
    <b class='flag-5'>ESP8266</b> WIFI模擬GPS<b class='flag-5'>時(shí)鐘</b>信號(hào)

    ESP8266矩陣時(shí)鐘PCB設(shè)計(jì)

    電子發(fā)燒友網(wǎng)站提供《ESP8266矩陣時(shí)鐘PCB設(shè)計(jì).zip》資料免費(fèi)下載
    發(fā)表于 08-05 10:24 ?7次下載
    <b class='flag-5'>ESP8266</b>矩陣<b class='flag-5'>時(shí)鐘</b>PCB設(shè)計(jì)

    BIM時(shí)鐘ESP8266開源項(xiàng)目

    電子發(fā)燒友網(wǎng)站提供《BIM時(shí)鐘ESP8266開源項(xiàng)目.zip》資料免費(fèi)下載
    發(fā)表于 08-16 11:18 ?2次下載
    BIM<b class='flag-5'>時(shí)鐘</b><b class='flag-5'>ESP8266</b>開源項(xiàng)目

    SSD1306 OLED上的ESP8266 NTP時(shí)鐘

    電子發(fā)燒友網(wǎng)站提供《SSD1306 OLED上的ESP8266 NTP時(shí)鐘.zip》資料免費(fèi)下載
    發(fā)表于 11-09 11:28 ?0次下載
    SSD1306 OLED上的<b class='flag-5'>ESP8266</b> NTP<b class='flag-5'>時(shí)鐘</b>

    基于ESP8266的NTP時(shí)鐘

    電子發(fā)燒友網(wǎng)站提供《基于ESP8266的NTP時(shí)鐘.zip》資料免費(fèi)下載
    發(fā)表于 11-11 10:06 ?5次下載
    基于<b class='flag-5'>ESP8266</b>的NTP<b class='flag-5'>時(shí)鐘</b>

    使用ESP8266驅(qū)動(dòng)WS2812彩燈

    本篇介紹ESP8266使用NeoPixel庫來驅(qū)動(dòng)IOT Kit板載WS2812彩燈。
    的頭像 發(fā)表于 05-19 14:31 ?3907次閱讀
    使用<b class='flag-5'>ESP8266</b>驅(qū)動(dòng)WS2812彩燈

    ESP8266網(wǎng)絡(luò)天氣時(shí)鐘OLED顯示

    基于ESP8266實(shí)現(xiàn)網(wǎng)絡(luò)獲取天氣和時(shí)鐘并OLED顯示
    的頭像 發(fā)表于 06-28 04:46 ?2114次閱讀
    <b class='flag-5'>ESP8266</b>網(wǎng)絡(luò)天氣<b class='flag-5'>時(shí)鐘</b>OLED<b class='flag-5'>顯示</b>

    ESP8266 太空人動(dòng)畫的 OLED 顯示

    ESP8266 太空人動(dòng)畫的 OLED 顯示
    的頭像 發(fā)表于 10-08 15:06 ?648次閱讀
    <b class='flag-5'>ESP8266</b> 太空人動(dòng)畫的 OLED <b class='flag-5'>顯示</b>
    主站蜘蛛池模板: 一区二区三区免费视频播放器 | 国产精品国产三级国产普通话对白 | 男女视频在线观看免费 | 一级视频在线观看免费 | 久久久久女人精品毛片 | 免费一级特黄 | 天天操狠狠操 | 浮荡视频在线观看免费 | 黄.www| 国产精品女人在线观看 | 亚洲精品欧洲久久婷婷99 | 欧美成人一区二区三区在线视频 | 三级黄色一级视频 | 成年人在线网站 | 久久久久久久久久免观看 | 日本噜噜影院 | 天天摸日日 | 日本人69xxxxxxxx69 | 日本人xxxxxxxx6969| 深爱五月激情五月 | 日韩图区| 黄色小视频免费 | 人人射人人射 | 五月婷婷综合激情网 | 2级毛片| 韩国三级视频在线观看 | 2020欧美极品hd18| 欧美一区二区高清 | 桃色婷婷 | 国产在线视频网站 | 黄色网页在线观看 | 你懂的在线免费观看 | 色人岛 | 亚洲精品蜜桃久久久久久 | 傲视影院午夜毛片 | 色综合久久88 | 一级午夜免费视频 | 天堂成人 | 亚洲乱码一区二区三区在线观看 | 在线国产播放 | 伊人精品视频在线 |