欧美性猛交xxxx免费看_牛牛在线视频国产免费_天堂草原电视剧在线观看免费_国产粉嫩高清在线观看_国产欧美日本亚洲精品一5区

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

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

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

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

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

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

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

你需要什么
ESP8266 與 wifi 一樣非常適合此功能,因此可以通過 WiFi 獲取時間,并且還可以控制 Neopixel Ring。我使用 Wemos D1 Mini,因為它們非常易于使用,具有用于電源和數(shù)據(jù)的微型 USB 連接,只需幾美元,并且可以很容易地與 Arduino IDE 一起使用。這是一個非常簡單的項目,代碼簡單,電路方式不多。

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

poYBAGJNQM6AM6k0AAMl6ulhWYA058.png

對于代碼,您將需要 3 個庫:

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來工作。然后它會抓取網(wǎng)頁的標(biāo)題以從標(biāo)題中獲取時間和日期。

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

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

#define PIN D5

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

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

小時、分鐘和秒存儲在字符串變量中。

String hours, minutes, seconds;

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

int currentSecond, currentMinute, currentHour;

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

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

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

const float UTC_OFFSET = 0;

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

TimeClient timeClient(UTC_OFFSET);

然后創(chuàng)建一個 NeoPixel 對象,將其命名為“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)上什么都不會發(fā)生。

strip.show();

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

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

然后從 timeClient 庫中更新時間。

timeClient.updateTime();

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

updateTime() ;

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

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

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

void loop()
{

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

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

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

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

第 4 步
“手”的顏色是:

紅色 = 小時

綠色 = 分鐘

藍(lán)色 = 秒

.setPixelColor 命令用于設(shè)置“手”的顏色。我使用的戒指有 24 個 RGB LED,因此秒和分鐘除以 2.5,因此它們顯示在戒指的正確象限上,小時(24 小時格式)除以 2。在時間更改之前,我們設(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)在存儲 millis() 的當(dāng)前值。

lastSecond = millis();

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

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

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

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

現(xiàn)在已經(jīng)更新了秒、分和小時,我們可以將相關(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()。這會在開始時更新,然后每 30 分鐘更新一次,以保持準(zhǔn)確的時間。

void updateTime()
{

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

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

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

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

最后,我們希望能夠檢查自上次更新以來是否已經(jīng)過去了 30 分鐘,因此我們再次存儲 millis() 的當(dāng)前值。

lastUpdate = millis();

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

    關(guān)注

    11

    文章

    1747

    瀏覽量

    131828
  • ESP8266
    +關(guān)注

    關(guān)注

    50

    文章

    962

    瀏覽量

    45356
收藏 人收藏

    評論

    相關(guān)推薦

    帶有NeopixelESP8266崩潰的原因?

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

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

    到電腦上的java程序 這一篇 esp8266與STM32連接,電腦通過STM32配置esp8266實現(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明星,還能手機遙控哦!
    的頭像 發(fā)表于 05-23 06:31 ?4288次閱讀

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

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

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

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

    stm32和esp8266上的簡單時鐘

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

    ESP8266 WIFI模擬GPS時鐘信號

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

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

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

    BIM時鐘ESP8266開源項目

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

    SSD1306 OLED上的ESP8266 NTP時鐘

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

    基于ESP8266的NTP時鐘

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

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

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

    ESP8266初次如何實現(xiàn)無線通信(基于電腦與ESP8266)

    一.需要的軟件及硬件 1.軟件 2.硬件 二.ESP8266的使用 .ESP8266的介紹 2.ESP8266進(jìn)行初始AT指令的配置步驟 三.所用軟件安裝分享 ESP8266
    發(fā)表于 05-30 09:53 ?28次下載
    <b class='flag-5'>ESP8266</b>初次如何<b class='flag-5'>實現(xiàn)</b>無線通信(基于電腦與<b class='flag-5'>ESP8266</b>)

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

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

    ESP8266 太空人動畫的 OLED 顯示

    ESP8266 太空人動畫的 OLED 顯示
    的頭像 發(fā)表于 10-08 15:06 ?342次閱讀
    <b class='flag-5'>ESP8266</b> 太空人動畫的 OLED <b class='flag-5'>顯示</b>