跳到:
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 教學 33/55 - 使用 SunFounder 嘅 ESP32 IoT 學習套件整數碼骰仔
喺呢個教學入面,我哋會用SunFounder嘅IoT學習套件入面嘅七段顯示器同ESP32嚟整一個數碼骰仔。呢個項目會容許你撳一個掣嚟擲虛擬骰仔,生成1至6嘅數字。呢個係一個好好嘅方法去探索ESP32嘅能力,同時學習點樣同顯示器同掣互動。為咗更加清楚,記得睇吓條片(喺片入面0:00嘅位置)。
ESP32-33_digital-dice-main
硬件講解
呢個項目嘅主要組件包括ESP32微控制器、一個74HC595移位暫存器、一個七段顯示器同一個按鈕。ESP32係一個功能強大嘅微控制器,內置Wi-Fi同藍牙,好適合IoT應用。74HC595移位暫存器容許我哋用少啲引腳去控制七段顯示器,而唔使直接連接每一段。
七段顯示器用嚟顯示數字,係透過從移位暫存器發送數據嚟控制。按鈕用嚟觸發擲骰仔,生成一個隨機數字並顯示出嚟。當撳落去嘅時候,按鈕會連接到ESP32嘅第13引腳,呢個引腳有內部上拉電阻,令到冇撳嘅時候保持高電平狀態。
數據表詳情
製造商
Texas Instruments
零件編號
74HC595
邏輯/IO電壓
2 V至6 V
供電電壓
4.5 V至5.5 V
輸出電流(每通道)
最大6 mA
峰值電流(每通道)
最大35 mA
PWM頻率指引
唔適用
輸入邏輯閾值
VIH ≥ 2 V,VIL ≤ 0.8 V
電壓降 / RDS(on) / 飽和
最大0.5 V
熱限制
150 °C
封裝
DIP-16
備註 / 變體
常用於數碼顯示器
確保電壓水平正確(4.5 V至5.5 V)以可靠運作。
限制輸出電流以避免損壞移位暫存器。
喺電源引腳附近使用去耦電容嚟穩定電壓。
正確連接七段顯示器以避免數字顯示錯誤。
檢查接線有冇鬆脫,以免導致意外行為。
接線指示
ESP32-33_digital-dice-wiring
要接線數碼骰仔,首先設定電源連接。將麵包板上嘅接地(藍色線)連接到ESP32嘅接地引腳,並確保所有接地點都互相連接。跟住,將ESP32嘅一個3.3V引腳連接到麵包板上嘅電源軌(紅色線)。
ESP32-33_digital-dice-schematic
對於74HC595移位暫存器,確保引腳1連接到3.3V電源軌,引腳8連接到接地。將數據輸出引腳(DS)連接到ESP32嘅第25引腳,移位時鐘引腳(SHCP)連接到第26引腳,儲存時鐘引腳(STCP)連接到第27引腳。按鈕應該連接喺ESP32嘅第13引腳同接地之間,令到撳落去嘅時候將引腳拉低。
代碼示例同講解
喺代碼入面,我哋首先定義用於移位暫存器同按鈕嘅引腳。按鈕引腳定義為buttonPin,並設定為ESP32嘅第13引腳。數據陣列datArray包含咗七段顯示器用嚟顯示數字0-9嘅二進制表示。
const int STcp = 27;//ST_CP
const int SHcp = 26;//SH_CP
const int DS = 25; //DS
const int buttonPin = 13;
int datArray[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
喺setup()函數入面,我哋將按鈕引腳設定為輸入模式,並將移位暫存器引腳設定為輸出模式。咁樣準備好引腳去讀取按鈕嘅輸入同發送數據去顯示器。
void setup ()
{
pinMode(buttonPin,INPUT);
pinMode(STcp,OUTPUT);
pinMode(SHcp,OUTPUT);
pinMode(DS,OUTPUT);
}
程式嘅主要邏輯喺loop()函數入面。佢檢查按鈕係咪被撳咗,生成一個隨機數字,並呼叫show_number()函數去將數字顯示喺七段顯示器上。
void loop()
{
if(digitalRead(buttonPin) == LOW)
{
int diceNumber = random(1, 7);
show_number(diceNumber);
delay(50);
}
}
show_number()函數會將數據陣列入面嘅適當數值發送到移位暫存器,然後控制顯示器嘅段嚟顯示生成嘅數字。呢個函數對於撳掣時嘅視覺反饋好重要。
74HC595 LED顯示器:七段講解
示範 / 預期效果 當設定完成同埋代碼上傳之後,撳掣就會生成一個1至6之間嘅隨機數字,並且會顯示喺七段顯示器上面。如果接線正確嘅話,每次撳掣都應該顯示一個數字。要小心浮動輸入;確保掣正確連接到地線,避免出現唔穩定嘅行為(喺影片1:30位置)。
影片時間標記
00:00 開始
1:48 項目介紹
3:40 數碼骰仔接線講解
13:16 數碼骰仔Arduino代碼講解
19:19 喺Arduino IDE入面選擇ESP32板同COM埠
21:00 數碼骰仔示範
22:15 修正Arduino代碼
圖片
74HC595 LED Display: Seven Segment explained
ESP32-33_digital-dice-wiring
ESP32-33_digital-dice-main
ESP32-33_digital-dice-schematic
74HC595 LED Display: Seven Segment explained
ESP32-33_digital-dice-wiring
ESP32-33_digital-dice-main
ESP32-33_digital-dice-schematic
代碼
834-ESP32 Tutorial 33/55- Arduino code for digital dice
語言: C++
檢視程式碼
// Define the pins used for the 74hc595 and button
const int STcp = 27;//ST_CP
const int SHcp = 26;//SH_CP
const int DS = 25; //DS
const int buttonPin = 13;
// Define an array of values to display numbers on a 7-segment display
int datArray[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
int buttonState = false;
void setup ()
{
// Set the button pin to input mode
pinMode(buttonPin,INPUT);
//Set pins to 74hc595
pinMode(STcp,OUTPUT);
pinMode(SHcp,OUTPUT);
pinMode(DS,OUTPUT);
}
void loop()
{
// Check if the button is pressed
if(digitalRead(buttonPin) == LOW)
{
// Generate a random number between 1 and 6
int diceNumber = random(1, 7);
// Display the number on the 7-segment display
show_number(diceNumber);
// Delay for 50 milliseconds
delay(50);
}
}
// Function to display a number on a 7-segment display
void show_number(int num)
{
// Ground ST_CP and hold low for as long as you are transmitting
digitalWrite(STcp, LOW);
// Send the data for the number to the shift register
shiftOut(DS, SHcp, MSBFIRST, datArray[num]);
// Pull the ST_CP to save the data
digitalWrite(STcp, HIGH);
}