91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

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

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

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

用ESP8266做一個高顏值的RGB時鐘的項(xiàng)目

GReq_mcu168 ? 來源:DF創(chuàng)客社區(qū) ? 作者:sainisagar7294 ? 2022-07-28 14:17 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

給大家分享一個用ESP8266做一個高顏值的RGB時鐘的項(xiàng)目!

這個時鐘還具有自動亮度控制功能并配備了溫度傳感器!

材料準(zhǔn)備

  • PCB
  • ESP8266或Nodemcu
  • 跳線
  • 焊接工具

第1步: 準(zhǔn)備工作

2a1d8b40-0e3b-11ed-ba43-dac502259ad0.png2a39a56e-0e3b-11ed-ba43-dac502259ad0.png

Neo Pixel是可尋址的LED,我們可以通過編程,讓它顯示任何一種顏色或者數(shù)字。

Neo Pixel有不同的smd封裝,這個項(xiàng)目使用的是Ws2812b-5050 mini RGB。

這種迷你LED的額定電壓為3.0V到5.5V,電流為16mA(每個LED)。

NodeMCU有3.3V的穩(wěn)壓器,可以正常驅(qū)動所有的LED。

第2步:使用Neo Pixel Led制作7段顯示器

2a4ed074-0e3b-11ed-ba43-dac502259ad0.png2a5c04f6-0e3b-11ed-ba43-dac502259ad0.png2a79c8a6-0e3b-11ed-ba43-dac502259ad0.png

在這里,我們需要把所有的電源并聯(lián)起來,把所有的數(shù)據(jù)連接串聯(lián)起來,使用7段顯示方法,如上圖連接所有的LED。

每段有2個LED,整個面板總共有14個LED。

我們需要4個面板來顯示時間(2個顯示小時,2個顯示分鐘)。

當(dāng)然還可以再連接兩個面板來顯示秒/任何其他數(shù)值,或者溫度。

不管怎么連接,記住總是要把第一個面板的DOUT連接到第二個面板的DIN。

第3步:連接儀表盤

2a888080-0e3b-11ed-ba43-dac502259ad0.gif2b4f0336-0e3b-11ed-ba43-dac502259ad0.png

為了連接小時和分鐘面板,在兩面板之間有一個小的PCB板,名為Dash,包含了2個LED作為二進(jìn)制數(shù)字,這2個LED燈每隔一秒就會發(fā)光一次。

第4步:NodeMCU/ESP8266介紹

2b76c498-0e3b-11ed-ba43-dac502259ad0.png

ESP8266集成了一個32位Tensilica處理器,標(biāo)準(zhǔn)的數(shù)字外圍接口。

我們的ESP8266具有板載Wi-Fi支持,通過它我們可以連上互聯(lián)網(wǎng)調(diào)整時間,而不需要任何RTC(實(shí)時時鐘)模塊。

這樣子的話可以減少連接,使整個項(xiàng)目變得更簡單一些。

第5步:代碼中支持的功能

2b85489c-0e3b-11ed-ba43-dac502259ad0.png

如果使用本文提供的代碼,那么我們可以在這個7段時鐘中增加2個額外的功能:

  1. 使用觸覺開關(guān)的溫度和濕度顯示

在13號針腳上添加一個DHT11傳感器,在12號針腳上添加一個觸覺按鈕,可以在屏幕上獲得攝氏或華氏的溫度值。

用一個10k電阻將按鈕的第12針腳連接到5V,另一端連接到GND。也就是說,當(dāng)按鈕針腳被拉到GND時,顯示器將顯示溫度讀數(shù)。如果沒有這個溫度傳感器,代碼也可以工作,所以如果你想讓項(xiàng)目簡單一點(diǎn),也可以不需要這些連接。

  1. 使用引腳A0的LDR傳感器進(jìn)行亮度控制
2b99f6f2-0e3b-11ed-ba43-dac502259ad0.png

通過在A0引腳上做一個電阻分壓器網(wǎng)絡(luò),添加一個帶有10k電阻的LDR傳感器,可以相應(yīng)地改變亮度。

白天的亮度高,晚上的亮度低。如果你不想要可調(diào)節(jié)亮度,這部分代碼也可以在沒有這些傳感器的情況下工作,它將會鎖定在默認(rèn)設(shè)置。

第6步:視頻演示

第7步:7段時鐘

2bb13fb0-0e3b-11ed-ba43-dac502259ad0.gif2c12d07c-0e3b-11ed-ba43-dac502259ad0.png

現(xiàn)在,我們有4個面板和一個Dash(儀表盤)。

根據(jù)上面GIF圖來連接面板和儀表盤;將2個面板串聯(lián)在一起。

然后使用上面給出的原理圖連接NodeMCU。

第8步:代碼

  1. 首先使用庫來初始化代碼:
#include
#include
#include
#include
#include
#include
#include
  1. 定義所有像素、I/O引腳、傳感器引腳:
#definePIXEL_PER_SEGMENT2//NumberofLEDsineachSegment
#definePIXEL_DIGITS4//NumberofconnectedDigits
#definePIXEL_PIN2//GPIOPin
#definePIXEL_DASH1//Binarysegment
#defineLDR_PINA0//LDRpin
#defineDHT_PIN13//DHTSensorpin
#defineBUTTON_PIN12//Buttonpin

3. 對于時間格式,使用Wi-Fi把ESP8266連接到互聯(lián)網(wǎng):

WiFi.begin(ssid,password);
Serial.print("Connecting.");
while(WiFi.status()!=WL_CONNECTED)
  1. 時間設(shè)置:
voiddisp_Time(){
clearDisplay();
writeDigit(0,Hour/10);
writeDigit(1,Hour%10);
writeDigit(2,Minute/10);
writeDigit(3,Minute%10);
writeDigit(4,Second/10);
writeDigit(5,Second%10);
disp_Dash();

5. 面板上的顏色設(shè)置:

if(index==0||index==1)color=strip.Color(0,Brightness,0);
if(index==2||index==3)color=strip.Color(0,Brightness,0);
if(index==4||index==5)color=strip.Color(Brightness,0,0);

這只是一個簡單的介紹,同時代碼還有溫度和自動時間選項(xiàng)。

溫度模式可以通過數(shù)字針腳12的開關(guān)來選擇。

第9步:完整代碼

#include
#include
#include
#include
#include
#include
#include

#definePIXEL_PER_SEGMENT2//NumberofLEDsineachSegment
#definePIXEL_DIGITS4//NumberofconnectedDigits
#definePIXEL_PIN2//GPIOPin
#definePIXEL_DASH1//Binarysegment

#defineLDR_PINA0//LDRpin
#defineDHT_PIN13//DHTSensorpin
#defineBUTTON_PIN12//Buttonpin

//Uncommentthetypeofsensorinuse
#defineDHT_TYPEDHT11//DHT11
//#defineDHT_TYPEDHT22//DHT22(AM2302)
//#defineDHT_TYPEDHT21//DHT21(AM2301)

#defineTIME_FORMAT12//12=12hoursformat||24=24hoursformat

Adafruit_NeoPixelstrip=Adafruit_NeoPixel((PIXEL_PER_SEGMENT*7*PIXEL_DIGITS)+(PIXEL_DASH*2),PIXEL_PIN,NEO_GRB+NEO_KHZ800);
DHTdht(DHT_PIN,DHT_TYPE);

//setWi-FiSSIDandpassword
constchar*ssid="Hackster";
constchar*password="Sainisagar7294";

WiFiUDPntpUDP;
//'time.nist.gov'isused(defaultserver)with+1houroffset(3600seconds)60seconds(60000milliseconds)updateinterval
NTPClienttimeClient(ntpUDP,"time.nist.gov",19800,60000);//GMT+5:30:5*3600+30*60=19800

intperiod=2000;//Updatefrequency
unsignedlongtime_now=0;
intSecond,Minute,Hour;

//setdefaultbrightness
intBrightness=40;
//currenttemperature,updatedinloop()
intTemperature;

boolShow_Temp=false;

//Digitsarray
bytedigits[12]={
//abcdefg
0b1111110,//0
0b0110000,//1
0b1101101,//2
0b1111001,//3
0b0110011,//4
0b1011011,//5
0b1011111,//6
0b1110000,//7
0b1111111,//8
0b1110011,//9
0b1001110,//C
0b1000111,//F
};

//ClearallthePixels
voidclearDisplay(){
for(inti=0;i0,0,0));
}
strip.show();
}

voidsetup(){
Serial.begin(115200);
strip.begin();
strip.show();

dht.begin();
pinMode(BUTTON_PIN,INPUT);

WiFi.begin(ssid,password);
Serial.print("Connecting.");
while(WiFi.status()!=WL_CONNECTED){
delay(500);
Serial.print(".");
}
Serial.println("connected");
timeClient.begin();
delay(10);
}

voidloop(){
if(WiFi.status()==WL_CONNECTED){//checkWiFiconnectionstatus
intsensor_val=analogRead(LDR_PIN);
Brightness=40;
timeClient.update();
intHours;
unsignedlongunix_epoch=timeClient.getEpochTime();//getUNIXEpochtime
Second=second(unix_epoch);//getseconds
Minute=minute(unix_epoch);//getminutes
Hours=hour(unix_epoch);//gethours

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

if(digitalRead(BUTTON_PIN)==LOW){
Show_Temp=true;
}
else
Show_Temp=false;

if(Show_Temp){
Temperature=dht.readTemperature();
Serial.println(Temperature);
clearDisplay();
writeDigit(0,Temperature/10);
writeDigit(1,Temperature%10);
writeDigit(2,10);
strip.setPixelColor(28,strip.Color(Brightness,Brightness,Brightness));
strip.show();
delay(3000);
clearDisplay();
Show_Temp=false;
}
while(millis()>time_now+period){
time_now=millis();
disp_Time();//ShowTime
}
}

voiddisp_Time(){
clearDisplay();
writeDigit(0,Hour/10);
writeDigit(1,Hour%10);
writeDigit(2,Minute/10);
writeDigit(3,Minute%10);
writeDigit(4,Second/10);
writeDigit(5,Second%10);
disp_Dash();
strip.show();
}

voiddisp_Dash(){
intdot,dash;
for(inti=0;i2;i++){
dot=2*(PIXEL_PER_SEGMENT*7)+i;
for(intj=0;j2*(PIXEL_PER_SEGMENT*7)+2);
Second%2==0?strip.setPixelColor(dash,strip.Color(0,Brightness,0)):strip.setPixelColor(dash,strip.Color(0,Brightness,0));
}
}
}

voidwriteDigit(intindex,intval){
bytedigit=digits[val];
intmargin;
if(index==0||index==1)margin=0;
if(index==2||index==3)margin=1;
if(index==4||index==5)margin=2;
for(inti=6;i>=0;i--){
intoffset=index*(PIXEL_PER_SEGMENT*7)+i*PIXEL_PER_SEGMENT+margin*2;
uint32_tcolor;
if(digit&0x01!=0){
if(index==0||index==1)color=strip.Color(Brightness,0,Brightness);
if(index==2||index==3)color=strip.Color(Brightness,0,Brightness);
if(index==4||index==5)color=strip.Color(Brightness,0,0);
}
else
color=strip.Color(0,0,0);

for(intj=offset;j>1;
}
}

第10步:完整電路圖(高清版本文末下載)

2c25a1f2-0e3b-11ed-ba43-dac502259ad0.png2c38a4f0-0e3b-11ed-ba43-dac502259ad0.png

第11步:PCB設(shè)計(面板部分)

2c646e6e-0e3b-11ed-ba43-dac502259ad0.png

主要的PCB設(shè)計,用于顯示數(shù)字和其他字母。

點(diǎn)擊閱讀原文可以下載源文件。

第12步:PCB設(shè)計(Dash部分)

2c735316-0e3b-11ed-ba43-dac502259ad0.png2c8430aa-0e3b-11ed-ba43-dac502259ad0.png

第13步:故障排除

  • DIN總是與DOUT串聯(lián)在一起,如果接反了或從任何地方斷開了,整個裝置就會停止工作;

  • 按上面的圖連接Dash;

  • 確保所有的連接都焊接好,干焊會導(dǎo)致數(shù)據(jù)值和顏色的改變;

  • 在焊接時,不要把印刷電路板加熱太多,溫度保持在300度。

第14步:完整展示

2c91e2d6-0e3b-11ed-ba43-dac502259ad0.gif

2cd82f20-0e3b-11ed-ba43-dac502259ad0.png

喜歡大家喜歡這個項(xiàng)目!

審核編輯 :李倩


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

    關(guān)注

    244

    文章

    24637

    瀏覽量

    691520
  • pcb
    pcb
    +關(guān)注

    關(guān)注

    4411

    文章

    23904

    瀏覽量

    425011
  • 穩(wěn)壓器
    +關(guān)注

    關(guān)注

    24

    文章

    4948

    瀏覽量

    100114

原文標(biāo)題:酷,用ESP8266做一個高顏值的RGB時鐘!

文章出處:【微信號:mcu168,微信公眾號:硬件攻城獅】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

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

    ESP32/ESP8266開發(fā)板單向對多ESP-NOW無線通信

    通過ESP-NOW無線通信協(xié)議實(shí)現(xiàn)ESP32開發(fā)板向多個ESP32/ESP 8266開發(fā)板發(fā)送數(shù)據(jù)。
    的頭像 發(fā)表于 03-13 09:23 ?112次閱讀
    <b class='flag-5'>ESP</b>32/<b class='flag-5'>ESP8266</b>開發(fā)板單向<b class='flag-5'>一</b>對多<b class='flag-5'>ESP</b>-NOW無線通信

    ESP8266系列】WT8266-S3模組規(guī)格書

    核心處理器ESP8266在較小尺寸封裝中集成了業(yè)界領(lǐng)先的TensilicaL106超低功耗32位微型MCU,帶有16位精簡模式,主頻支持80MHz和160MHz,支
    的頭像 發(fā)表于 02-05 18:04 ?153次閱讀
    【<b class='flag-5'>ESP8266</b>系列】WT<b class='flag-5'>8266</b>-S3模組規(guī)格書

    ESP8266系列】WT8266-S5模組規(guī)格書

    處理器ESP8266在較小尺寸封裝中集成了業(yè)界領(lǐng)先的TensilicaL106超低功耗32位微型MCU,帶有16位精簡模式,主頻支持80MHz和160MHz,支持
    的頭像 發(fā)表于 02-05 18:03 ?193次閱讀
    【<b class='flag-5'>ESP8266</b>系列】WT<b class='flag-5'>8266</b>-S5模組規(guī)格書

    ESP8266系列】WT8266-S6模組規(guī)格書

    處理器ESP8266在較小尺寸封裝中集成了業(yè)界領(lǐng)先的TensilicaL106超低功耗32位微型MCU,帶有16位精簡模式,主頻支持80MHz和160MHz,支持R
    的頭像 發(fā)表于 02-05 18:03 ?198次閱讀
    【<b class='flag-5'>ESP8266</b>系列】WT<b class='flag-5'>8266</b>-S6模組規(guī)格書

    ESP8266系列】WT8266-S1模組產(chǎn)品介紹

    WT8266-S1WiFi模塊是由啟明云端科技開發(fā)的、低功耗高性價比的嵌入式無線網(wǎng)絡(luò)控制模塊。可滿足智能電網(wǎng)、樓宇自動化、安防、智能家居、遠(yuǎn)程醫(yī)療等物聯(lián)網(wǎng)應(yīng)用的需求。該模塊核心處理器ESP8266
    的頭像 發(fā)表于 01-29 18:22 ?511次閱讀
    【<b class='flag-5'>ESP8266</b>系列】WT<b class='flag-5'>8266</b>-S1模組產(chǎn)品介紹

    ESP8266系列】WT8266-S6模組產(chǎn)品介紹

    處理器ESP8266在較小尺寸封裝中集成了業(yè)界領(lǐng)先的TensilicaL106超低功耗32位微型MCU,帶有16位精簡模式,主頻支持80MHz和160MHz,支持R
    的頭像 發(fā)表于 01-29 18:22 ?343次閱讀
    【<b class='flag-5'>ESP8266</b>系列】WT<b class='flag-5'>8266</b>-S6模組產(chǎn)品介紹

    無需安裝!在瀏覽器里就能玩轉(zhuǎn)ESP32/ESP8266,這個神器絕了!

    無需安裝!在瀏覽器里就能玩轉(zhuǎn)ESP32/ESP8266,這個神器絕了!【往期精選】十年嵌入式最深的痛,不是Bug,而是抓不到日志!vivo宣布原生支持HomeAssistant生態(tài)設(shè)備接入(含
    的頭像 發(fā)表于 01-10 10:01 ?1039次閱讀
    無需安裝!在瀏覽器里就能玩轉(zhuǎn)<b class='flag-5'>ESP</b>32/<b class='flag-5'>ESP8266</b>,這個神器絕了!

    晶科鑫 | 國產(chǎn)26MHz晶振匹配Espressif(樂鑫) ESP8285/ESP8266芯片案例

    本,兩者可以共用同套SDK,只是ESP8285內(nèi)部集成了1MBFlash,SPIMode設(shè)置為DOUT,而ESP8266則需要外接Flash,并且是Din模式。除此之外,ESP828
    的頭像 發(fā)表于 11-21 15:37 ?4754次閱讀
    晶科鑫 | 國產(chǎn)26MHz晶振匹配Espressif(樂鑫) <b class='flag-5'>ESP</b>8285/<b class='flag-5'>ESP8266</b>芯片案例

    ESP8266ESP32開發(fā)板常見的2種下載方式

    ESP32和ESP8266是性價比很高而且使用較為廣泛的的Wi-Fi模塊,在物聯(lián)網(wǎng)(IoT)領(lǐng)域的DIY項(xiàng)目中可以首先考慮這2款產(chǎn)品。 兩款芯片都屬于32位處理器。ESP32是低功耗
    的頭像 發(fā)表于 11-10 20:30 ?1117次閱讀
    <b class='flag-5'>ESP8266</b>和<b class='flag-5'>ESP</b>32開發(fā)板常見的2種下載方式

    ESP8266ESP32開發(fā)板常見的2種下載方式

    開發(fā)板時需要注意網(wǎng)絡(luò)哦,可以用手機(jī)發(fā)熱點(diǎn))。這里已經(jīng)是安裝好的ESP8266開發(fā)板,第次搜索會在右下角刪除那里顯示安裝。 3.點(diǎn)擊項(xiàng)目-加載庫-管理庫,添加開發(fā)板所需要的庫文件
    發(fā)表于 10-24 18:04

    請問下我想用ESP8685直接替換ESP8266而不用寫程序,可以讓ESP8685直接通過之前ESP8266的外掛的flash運(yùn)行程序嗎

    請問下我想用ESP8685直接替換ESP8266而不用寫程序,可以讓ESP8685直接通過之前ESP8266的外掛的flash運(yùn)行程序嗎
    發(fā)表于 09-17 12:06

    ESP8266】進(jìn)入透傳模式后,數(shù)據(jù)間隔怎么調(diào)整,

    01.TCP客戶端ESP8266透傳模式發(fā)送數(shù)據(jù)是10ms發(fā)送次,(連續(xù)發(fā)送) 02.TCP服務(wù)器接收到的數(shù)據(jù)是200ms左右接收次,數(shù)據(jù)未丟失,但是更新不及時; 03.通過TC
    發(fā)表于 09-15 10:16

    STM32+esp8266連接機(jī)智云,上傳溫濕度數(shù)據(jù)并控制繼電器開關(guān)(平臺配置、代碼生成、代碼移植)

    本教程將詳細(xì)介紹如何將STM32微控制器與ESP8266Wi-Fi模塊連接到機(jī)智云平臺,實(shí)現(xiàn)溫濕度數(shù)據(jù)的上傳與繼電器的遠(yuǎn)程控制。通過此過程,您將學(xué)會如何配置機(jī)智云平臺,燒錄ESP8266固件,移植
    的頭像 發(fā)表于 07-15 18:54 ?1151次閱讀
    STM32+<b class='flag-5'>esp8266</b>連接機(jī)智云,上傳溫濕度數(shù)據(jù)并控制繼電器開關(guān)(平臺配置、代碼生成、代碼移植)

    單片機(jī)實(shí)例項(xiàng)目ESP8266串口WIFI

    單片機(jī)實(shí)例項(xiàng)目ESP8266串口WIFI,推薦下載!
    發(fā)表于 06-03 21:01

    ESP8266燒錄與機(jī)智云鍵配網(wǎng)教程

    ESP8266模塊因其低成本和高性能,廣泛應(yīng)用于智能家居和工業(yè)自動化等領(lǐng)域。機(jī)智云平臺提供了鍵配網(wǎng)功能,簡化了設(shè)備的聯(lián)網(wǎng)過程。本教程將詳細(xì)介紹如何使用ESP8266進(jìn)行燒錄,并通過機(jī)智云實(shí)現(xiàn)
    的頭像 發(fā)表于 05-24 11:04 ?2105次閱讀
    <b class='flag-5'>ESP8266</b>燒錄與機(jī)智云<b class='flag-5'>一</b>鍵配網(wǎng)教程