Tutorial ESP32 33/55 - Dadu Digital menggunakan kit Pembelajaran IoT ESP32 SunFounder
Dalam tutorial ini, kita akan membuat dadu digital menggunakan tampilan tujuh segmen dan ESP32 dari kit pembelajaran IoT SunFounder. Proyek ini akan memungkinkan Anda melempar dadu virtual, menghasilkan angka dari 1 hingga 6 dengan menekan sebuah tombol. Ini adalah cara yang fantastis untuk mengeksplorasi kemampuan ESP32 sambil belajar tentang antarmuka dengan tampilan dan tombol. Untuk kejelasan tambahan, pastikan untuk menonton video di (di video pada 0:00).
Penjelasan Perangkat Keras
Komponen utama untuk proyek ini termasuk mikrokontroler ESP32, register geser 74HC595, tampilan tujuh segmen, dan tombol tekan. ESP32 adalah mikrokontroler yang kuat yang mengintegrasikan Wi-Fi dan Bluetooth, membuatnya cocok untuk aplikasi IoT. Register geser 74HC595 memungkinkan kita untuk mengontrol tampilan tujuh segmen menggunakan lebih sedikit pin daripada menghubungkan setiap segmen secara langsung.
Tampilan tujuh segmen menampilkan angka dan dikendalikan dengan mengirim data dari register geser. Tombol tekan digunakan untuk memicu lemparan dadu, menghasilkan angka acak yang akan ditampilkan. Saat ditekan, tombol terhubung ke pin 13 pada ESP32, yang memiliki resistor pull-up internal untuk menjaganya dalam keadaan tinggi saat tidak ditekan.
Detail Datasheet
| Produsen | Texas Instruments |
|---|---|
| Nomor bagian | 74HC595 |
| Tegangan logika/IO | 2 V hingga 6 V |
| Tegangan suplai | 4,5 V hingga 5,5 V |
| Arus keluaran (per saluran) | 6 mA maks |
| Arus puncak (per saluran) | 35 mA maks |
| Panduan frekuensi PWM | Tidak berlaku |
| Ambang logika masukan | VIH ≥ 2 V, VIL ≤ 0,8 V |
| Penurunan tegangan / RDS(on) / saturasi | 0,5 V maks |
| Batas termal | 150 °C |
| Kemasan | DIP-16 |
| Catatan / varian | Umumnya digunakan dalam tampilan digital |
- Pastikan tingkat tegangan yang tepat (4,5 V hingga 5,5 V) untuk operasi yang andal.
- Batasi arus keluaran untuk menghindari kerusakan pada register geser.
- Gunakan kapasitor decoupling di dekat pin daya untuk menstabilkan tegangan.
- Hubungkan tampilan tujuh segmen dengan benar untuk menghindari representasi angka yang salah.
- Periksa kabel untuk koneksi longgar yang dapat menyebabkan perilaku tak terduga.
Instruksi Pengkabelan

Untuk mengkabel dadu digital, mulailah dengan mengatur koneksi daya. Hubungkan ground (garis biru) pada breadboard Anda ke pin ground pada ESP32 dan pastikan semua titik ground saling terhubung. Selanjutnya, hubungkan pin 3.3V dari ESP32 ke rel daya (garis merah) pada breadboard.
Untuk register geser 74HC595, pastikan pin 1 terhubung ke rel 3.3V, dan pin 8 ke ground. Hubungkan pin keluaran data (DS) ke pin 25 pada ESP32, pin jam geser (SHCP) ke pin 26, dan pin jam penyimpanan (STCP) ke pin 27. Tombol tekan harus dihubungkan antara pin 13 pada ESP32 dan ground, memungkinkannya untuk menarik pin ke rendah saat ditekan.
Contoh Kode & Penjelasan
Dalam kode, pertama-tama kita mendefinisikan pin yang digunakan untuk register geser dan tombol. Pin tombol didefinisikan sebagai buttonPin dan diatur ke pin 13 pada ESP32. Array data datArray berisi representasi biner dari angka 0-9 untuk tampilan tujuh segmen.
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};
Dalam fungsi setup(), kita mengatur pin tombol ke mode masukan dan pin register geser ke mode keluaran. Ini menyiapkan pin untuk membaca masukan dari tombol dan untuk mengirim data ke tampilan.
void setup ()
{
pinMode(buttonPin,INPUT);
pinMode(STcp,OUTPUT);
pinMode(SHcp,OUTPUT);
pinMode(DS,OUTPUT);
}
Logika utama program ditemukan dalam fungsi loop(). Ini memeriksa apakah tombol ditekan, menghasilkan angka acak, dan memanggil fungsi show_number() untuk menampilkan angka pada tampilan tujuh segmen.
void loop()
{
if(digitalRead(buttonPin) == LOW)
{
int diceNumber = random(1, 7);
show_number(diceNumber);
delay(50);
}
}
Fungsi show_number() mengirim nilai yang sesuai dari array data ke register geser, yang kemudian mengontrol segmen tampilan untuk menampilkan angka yang dihasilkan. Fungsi ini sangat penting untuk umpan balik visual saat tombol ditekan.
Demonstrasi / Apa yang Diharapkan
Ketika pengaturan selesai dan kode telah diunggah, menekan tombol akan menghasilkan angka acak antara 1 dan 6, yang akan ditampilkan pada layar tujuh segmen. Jika semua terhubung dengan benar, layar akan menampilkan angka setiap kali tombol ditekan. Waspadai input mengambang; pastikan tombol terhubung dengan benar ke ground untuk menghindari perilaku yang tidak menentu (di video pada 1:30).
Stempel Waktu Video
- 00:00 Mulai
- 1:48 Pengenalan proyek
- 3:40 Penjelasan Pengkabelan untuk Dadu Digital
- 13:16 Penjelasan Kode Arduino untuk Dadu Digital
- 19:19 Memilih Papan ESP32 dan Port COM di Arduino IDE
- 21:00 Demonstrasi Dadu Digital
- 22:15 Mengoreksi Kode Arduino
// 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);
}
Common Course Links
Common Course Files
Sumber daya & referensi
-
DokumentasiESP32 Tutorial 33/55 - SunFounder doc page for digital dicedocs.sunfounder.com
Berkas📁
Tidak ada file tersedia.