跳到:
ESP32 教學 1/55 - SunFounder ESP32 IoT 學習套件軟件同 Arduino IDE 簡介 ESP32 教學 2/55 - 咩係 ESP32、相機擴展板、開箱 SunFounder 嘅 ESP32 IoT 套件 ESP32 教學 3/55 - 電阻、LED、麵包板項目:Hello LED -ESP32 IoT 學習套件 ESP32 教學 4/55 - 數據類型 定義變量 Int、bool、char、序列監視器 - ESP32 IoT 套件 ESP32 教學 5/55 - LED 漸變,控制 LED 亮度 - ESP32 物聯網學習套件 ESP32 教學 6/55 - 使用 RGB LED 項目 2.3 - SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 7/55 - 使用陣列配合 ESP32 Arduino 程式設計 - SunFounder 嘅 ESP32 IoT 學習套件 ESP32 Tutorial 8/55 -Walking Light 74HC595 Shift register -SunFounder's ESP32 IoT Learning kit ESP32 教學 9/55 - 用按鈕切換 LED,按一下開,按一下關 - SunFounder ESP32 IoT 套件 ESP32 教學 10/55 - 使用七段顯示器 74HC595 嘅數字計數器 - ESP32 IoT 學習套件 ESP32 教學 11/55 - 使用 LCD1602 LCD2004 同 ESP32 - SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 12/55 - WS2812 RGB 燈帶 4 項目,配合 SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 13/55 - Arduino 用有源蜂鳴器發出嗶聲 | SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 14/55 - 使用 SunFounder ESP32 IoT 學習套件播放自訂音樂音符 ESP32 教學 15/55 - 用 ESP32 L293D 控制直流馬達速度 | SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 16/55 - 使用 ESP32 同 L293D 嘅迷你水泵 | SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 17/55 - 使用 ESP32 同電位器控制伺服馬達 - ESP32 IoT 學習套件 ESP32 教學 18/55 - 使用 ESP32 偵測傾斜 | SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 19/55 - 使用紅外線感測器偵測障礙物 | SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 20/55 - 循線模組 | SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 21/55 - 用 PIR 動作感應器偵測人體 | SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 22/55 - 用 LED Arduino 感受光線 | SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 23/55 - 使用 ESP32 讀取電位器電壓 | SunFounder 嘅 ESP32 IoT 套件 ESP32 教學 24/55 - 量度土壤濕度用於灌溉 | SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 25/55 - 使用 NTC 同 LCD 測量溫度 | SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 26/55 - 使用搖桿配合 Arduino 採取行動 | SunFounder 嘅 ESP32 IoT 套件 ESP32 教學 27/55 - 用超聲波感測器量度距離 | SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 28/55 - DHT11 溫度感測器配合 LCD | SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 29/55 - 用 ESP32 讀取紅外線遙控器按鍵| SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 30/55 - 使用 Adafruit IO 服務透過 MQTT 喺網頁上控制伺服摩打 | SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 31/55 - 專案 LED 燈帶配合避障功能 | SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教程 32/55 - 汽车倒车距离警告(带LCD同蜂鸣器)| SunFounder嘅物联网学习套件 ESP32 教學 33/55 - 使用 SunFounder 嘅 ESP32 IoT 學習套件整數碼骰仔 ESP32 教學 34/55 - 用 RGB LED 同旋鈕整顏色漸變 | SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 35/55 - 植物監測器,土壤、溫度同光線 | SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 36/55 - 猜數字遊戲 | SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 37/55 - 使用藍牙應用程式配合 ESP32 BLE | SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 38/55 - 用手機控制 RGB LED | SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 39/55 - 用 ESP32 做藍牙音樂播放器 | SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 40/55 - 讀寫 Micro SD 卡 | SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 41/55 - 使用 Micro SD 卡嘅 MP3 播放器 | SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 42/55 - 用相機影相並儲存喺 Micro SD CAM-1 | SunFounder 嘅 ESP32 套件 ESP32 教程 43/55 - 物聯網互聯網天氣站 | SunFounder 嘅 ESP32 物聯網學習套件 ESP32 教學 44/55 - ESP32 相機網絡伺服器透過 WiFi 傳輸視頻串流 CAM-2 | SunFounder 嘅 ESP32 套件 ESP32 教學 45/55 - 自訂串流伺服器配合 LED 控制 CAM-3 l SunFounder 嘅 ESP32 學習套件 ESP32 教學 46/55 - 使用 HiveMQ MQTT 進行遠程溫度監控 | SunFounder 嘅 ESP32 套件 ESP32 教學 47/55 - 使用 MQTT 透過互聯網嘅 WS2812 CheerLights | SunFounder 嘅 ESP32 IoT 套件 ESP32 教學 48/55 - 遠程溫度監控同 LED 控制 MQTT | SunFounder 嘅 ESP32 IoT 套件 ESP32 教學 49/55 - 透過 Adafruit IoT 控制直流摩打 | SunFounder 嘅 ESP32 套件 ESP32 教學 50/55 - 喺世界任何地方控制 RGB LED | SunFounder 嘅 ESP32 套件 ESP32 Tutorial 51/55 - Temperature and Humidity over WiFi with DHT | SunFounder's ESP32 IoT Learning Kit ESP32 教學 52/55 - WS2812 CheerLights MQTT 全球同步連 LCD | SunFounder ESP32 IoT 套件 ESP32 教學 53/55 - 建立 LCD 網絡時鐘 | SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 54/55 - 透過 Wi-Fi 設定 WS2812 LED 燈條顏色 | SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 55/55 - 點樣量度 12V、24V 或者 100V 直流電壓 | SunFounder 嘅 ESP32 IoT 學習套件
ESP32 教學 10/55 - 使用七段顯示器 74HC595 嘅數字計數器 - ESP32 IoT 學習套件
喺呢個教學入面,我哋會用ESP32微控制器控制一個七段顯示器嚟整一個數字計數器。個計數器會由0數到9,然後再倒數返去0,清楚咁展示成個計數過程。我哋仲會探討點樣逐個段開著,同埋喺七段顯示器上面顯示英文字母。
ESP32_Animte7Segment-segments
呢個項目用咗一個74HC595移位暫存器嚟控制個顯示器,等我哋可以有效率咁管理啲段,唔使用到ESP32太多GPIO腳位。透過將二進制數值送去移位暫存器,我哋可以點亮相應嘅段嚟顯示數字同字母。想深入了解個過程嘅話,可以參考條片(片入面03:15嘅位置)。
ESP32_Animte7Segment-letters
硬件解說
呢個項目嘅主要零件包括ESP32微控制器、一個74HC595移位暫存器,同埋一個七段顯示器。ESP32係一個功能強大嘅微控制器,內置Wi-Fi同藍牙功能,好啱用喺物聯網項目。74HC595係一個移位暫存器,等我哋可以用好少輸入腳位嚟控制好多個輸出。佢嘅原理係將串行數據轉換成並行輸出,啱晒用嚟驅動七段顯示器。
七段顯示器由七粒獨立LED組成,排成一個8字形。每一段都可以透過向移位暫存器發送相應嘅二進制數值嚟開或關。例如,要顯示數字0,除咗中間嗰段(G)之外,所有段都要點亮。
ESP32_Animte7Segment-counter-up-down
ESP32_Animte7Segment-counter-1
數據手冊細節
製造商
Texas Instruments
零件編號
74HC595
邏輯/IO電壓
2 V 至 6 V
供電電壓
2 V 至 6 V
輸出電流(每通道)
6 mA
峰值電流(每通道)
35 mA
PWM頻率指引
最高 1 kHz
輸入邏輯閾值
0.3 VCC 至 0.7 VCC
電壓降 / RDS(on) / 飽和
最高 0.2 V
熱限制
125 °C
封裝
DIP-16
備註 / 變體
有多種封裝可供選擇
確保供電電壓正確(2 V 至 6 V)。
限制輸出電流以防過熱。
每一段用獨立電阻嚟達到最佳亮度。
小心接線,避免短路同錯誤連接。
小心跟住引腳定義,避免配置錯誤。
接線指示
ESP32-10-seven-segment-wiring
首先設定好你嘅麵包板。連接接地軌(藍線)同電源軌(紅線)。接地應該連接去麵包板一邊嘅藍線,而電源就連接去另一邊嘅紅線。用一條黑線將ESP32嘅接地連接去接地軌,再用一條紅線將ESP32嘅3.3V腳連接去電源軌。
跟住,將74HC595移位暫存器插入麵包板,確保凹口方向正確。將第11腳(DS)連接去ESP32嘅第25腳,第12腳(SH_CP)連接去第26腳,第14腳(ST_CP)連接去第27腳。將移位暫存器嘅接地(第8腳)連接去接地軌,第10腳(MR)連接去電源軌嚟啟動佢。
至於七段顯示器,將對應段(a-g)嘅腳連接去移位暫存器嘅輸出腳。每一段串聯一個電阻(220歐姆)嚟限制電流。確保公共腳連接正確,根據你嘅顯示器類型,可以係共陽極或者共陰極。
代碼示例同講解
喺setup函數入面,我哋首先將連接去移位暫存器嘅腳定義為輸出。咁樣確保我哋嘅ESP32可以控制發送去顯示器嘅數據。
void setup ()
{
//將腳設為輸出
pinMode(STcp,OUTPUT);
pinMode(SHcp,OUTPUT);
pinMode(DS,OUTPUT);
}
呢度,我哋定義STcp、SHcp同DS分別係連接去移位暫存器ST_CP、SH_CP同DS嘅腳。將呢啲腳設為輸出,等我哋可以控制個移位暫存器。
程式嘅主循環由0數到9,用shiftOut函數將相應嘅數值發送去顯示器。
for(int num = 0; num <10; num++)
{
digitalWrite(STcp,LOW); //接地ST_CP,傳輸期間保持低電平
shiftOut(DS,SHcp,MSBFIRST,datArray[num]);
digitalWrite(STcp,HIGH); //拉高ST_CP嚟儲存數據
delay(1000);
}
呢個迴圈會遞增num變數,每秒將datArray入面對應嘅值發送去顯示器。shiftOut函數會將數據傳送去移位暫存器,然後點亮相應嘅段。
示範/預期效果
接好線並上載代碼之後,你應該會見到七段顯示器由0數到9,短暫停頓之後再倒數返去0。每個數字會顯示一秒。如果你想加快數數速度,可以調整迴圈入面嘅延遲(影片15:30有講)。
當你單獨控制每一段嘅時候,記得要傳送正確嘅二進制值嚟顯示字母或者特定嘅段。如果顯示器睇落好暗,可以考慮為每一段加獨立電阻,確保成個顯示器嘅亮度一致。
影片時間戳
00:00 開始
1:53 七段顯示器介紹
4:38 接線講解
13:15 Arduino代碼-1
17:01 選擇COM端口同ESP32開發板
18:43 示範-1
20:13 只顯示一個數字
21:38 上落計數器
23:07 逐段開/關
24:53 顯示A、B、C、D、E同F
圖片
ESP32_Animte7Segment-counter-1
ESP32_Animte7Segment-counter-up-down
ESP32_Animte7Segment-letters
ESP32_Animte7Segment-segments
ESP32-10-seven-segment-schematic
ESP32-10-seven-segment-wiring
ESP32_Animte7Segment-counter-1
ESP32_Animte7Segment-counter-up-down
ESP32_Animte7Segment-letters
ESP32_Animte7Segment-segments
ESP32-10-seven-segment-schematic
ESP32-10-seven-segment-wiring
代碼
809-ESP32 Tutorial 10/55 - Arduino code for 2.5 7 segment
語言: C++
檢視程式碼
const int STcp = 27;//ST_CP
const int SHcp = 26;//SH_CP
const int DS = 25; //DS
int datArray[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
void setup ()
{
//set pins to output
pinMode(STcp,OUTPUT);
pinMode(SHcp,OUTPUT);
pinMode(DS,OUTPUT);
}
void loop()
{
for(int num = 0; num <10; num++)
{
digitalWrite(STcp,LOW); //ground ST_CP and hold low for as long as you are transmitting
shiftOut(DS,SHcp,MSBFIRST,datArray[num]);
digitalWrite(STcp,HIGH); //pull the ST_CPST_CP to save the data
delay(1000);
}
}