Cari Kode

Tutorial ESP32 10/55 - Penghitung digital menggunakan Seven Segment Display 74HC595 - Kit Pembelajaran IoT ESP32

Tutorial ESP32 10/55 - Penghitung digital menggunakan Seven Segment Display 74HC595 - Kit Pembelajaran IoT ESP32

Dalam tutorial ini, kita akan membuat penghitung digital menggunakan tampilan tujuh-segmen yang dikendalikan oleh mikrokontroler ESP32. Penghitung ini akan bertambah dari 0 hingga 9 dan kemudian berkurang kembali ke 0, memberikan visual yang jelas tentang proses penghitungan. Kita juga akan mengeksplorasi cara menyalakan segmen individual dan menampilkan huruf pada tampilan tujuh-segmen.

ESP32_Animte7Segment-segments

Proyek ini menggunakan register geser 74HC595 untuk mengontrol tampilan, memungkinkan kita mengelola segmen secara efisien tanpa menggunakan terlalu banyak pin GPIO pada ESP32. Dengan mengirimkan nilai biner ke register geser, kita dapat menyalakan segmen yang sesuai untuk mewakili angka dan huruf. Untuk pemahaman yang lebih mendalam tentang proses ini, Anda dapat merujuk ke video (di video pada 03:15).

ESP32_Animte7Segment-letters

Penjelasan Perangkat Keras

Komponen utama dari proyek ini termasuk mikrokontroler ESP32, register geser 74HC595, dan tampilan tujuh-segmen. ESP32 adalah mikrokontroler yang kuat dengan kemampuan Wi-Fi dan Bluetooth bawaan, membuatnya cocok untuk proyek IoT. 74HC595 adalah register geser yang memungkinkan kita mengontrol beberapa output hanya dengan menggunakan beberapa pin input. Ia bekerja dengan mengambil data serial dan mengubahnya menjadi output paralel, yang sempurna untuk menggerakkan tampilan tujuh-segmen.

Tampilan tujuh-segmen terdiri dari tujuh LED individual yang disusun dalam pola angka delapan. Setiap segmen dapat dinyalakan atau dimatikan dengan mengirimkan nilai biner yang sesuai ke register geser. Misalnya, untuk menampilkan angka 0, semua segmen kecuali segmen tengah (G) perlu dinyalakan.

ESP32_Animte7Segment-counter-up-down
ESP32_Animte7Segment-counter-1

Detail Datasheet

Produsen Texas Instruments
Nomor bagian 74HC595
Tegangan logika/IO 2 V hingga 6 V
Tegangan suplai 2 V hingga 6 V
Arus output (per saluran) 6 mA
Arus puncak (per saluran) 35 mA
Panduan frekuensi PWM Hingga 1 kHz
Ambang logika input 0,3 VCC hingga 0,7 VCC
Penurunan tegangan / RDS(on) / saturasi 0,2 V maks
Batas termal 125 °C
Kemasan DIP-16
Catatan / varian Tersedia dalam berbagai kemasan

 

  • Pastikan suplai tegangan yang tepat (2 V hingga 6 V).
  • Batasi arus output untuk mencegah panas berlebih.
  • Gunakan resistor terpisah untuk setiap segmen untuk kecerahan optimal.
  • Berhati-hatilah dengan pengkabelan untuk menghindari korsleting dan koneksi yang salah.
  • Ikuti pinout dengan hati-hati untuk menghindari konfigurasi yang salah.

Instruksi Pengkabelan

ESP32-10-seven-segment-wiring

Mulailah dengan menyiapkan breadboard Anda. Hubungkan rel ground (garis biru) dan rel daya (garis merah). Ground harus terhubung ke garis biru di satu sisi breadboard, sedangkan daya harus terhubung ke garis merah di sisi yang berlawanan. Gunakan kabel hitam untuk menghubungkan ground ESP32 ke rel ground dan kabel merah untuk menghubungkan pin 3.3V ESP32 ke rel daya.

Selanjutnya, masukkan register geser 74HC595 ke dalam breadboard, pastikan takik diorientasikan dengan benar. Hubungkan pin 11 (DS) ke pin 25 pada ESP32, pin 12 (SH_CP) ke pin 26, dan pin 14 (ST_CP) ke pin 27. Hubungkan ground (pin 8) dari register geser ke rel ground dan pin 10 (MR) ke rel daya untuk aktivasi.

Untuk tampilan tujuh-segmen, hubungkan pin yang sesuai dengan segmen (a-g) ke pin output dari register geser. Gunakan resistor (220 ohm) secara seri untuk setiap segmen untuk membatasi arus. Pastikan Anda memiliki koneksi yang tepat untuk pin umum, yang bisa berupa anoda umum atau katoda umum tergantung pada jenis tampilan Anda.

Contoh Kode & Panduan

Dalam fungsi setup, kita mulai dengan mendefinisikan pin yang terhubung ke register geser sebagai output. Ini memastikan bahwa ESP32 kita dapat mengontrol data yang dikirim ke tampilan.

void setup ()
{
  //set pin ke output
  pinMode(STcp,OUTPUT);
  pinMode(SHcp,OUTPUT);
  pinMode(DS,OUTPUT);
}

Di sini, kita mendefinisikan STcp, SHcp, dan DS sebagai pin yang terhubung ke ST_CP, SH_CP, dan DS dari register geser, masing-masing. Mengatur pin-pin ini sebagai output memungkinkan kita untuk mengontrol register geser.

Loop utama dari program menghitung dari 0 hingga 9, mengirimkan nilai yang sesuai ke tampilan menggunakan fungsi shiftOut.

for(int num = 0; num <10; num++)
{
    digitalWrite(STcp,LOW); //ground ST_CP dan tahan rendah selama Anda mengirim
    shiftOut(DS,SHcp,MSBFIRST,datArray[num]);
    digitalWrite(STcp,HIGH); //tarik ST_CPST_CP ke tinggi untuk menyimpan data
    delay(1000);
}

Loop ini menaikkan variabel num, mengirim nilai yang sesuai dari datArray ke tampilan setiap detik. Fungsi shiftOut mengirim data ke register geser, yang kemudian menyalakan segmen yang sesuai.

Demonstrasi / Apa yang Diharapkan

Setelah kabel selesai dan kode diunggah, Anda akan melihat tampilan tujuh segmen menghitung dari 0 hingga 9, berhenti sejenak sebelum menghitung kembali ke 0. Setiap angka akan ditampilkan selama satu detik. Jika Anda ingin mempercepat penghitungan, Anda dapat menyesuaikan delay di dalam loop (di video pada 15:30).

Saat memanipulasi segmen secara individual, ingatlah untuk mengirim nilai biner yang benar untuk menampilkan huruf atau segmen tertentu. Jika tampilan terlihat redup, pertimbangkan untuk menambahkan resistor individual untuk setiap segmen guna memastikan kecerahan yang konsisten di seluruh tampilan.

Stempel Waktu Video

  • 00:00 Mulai
  • 1:53 Pengenalan tujuh segmen
  • 4:38 Penjelasan kabel
  • 13:15 Kode Arduino-1
  • 17:01 Memilih port COM dan papan ESP32
  • 18:43 Demonstrasi-1
  • 20:13 Menampilkan satu digit saja
  • 21:38 Penghitung naik dan turun
  • 23:07 Menyalakan/mematikan setiap segmen
  • 24:53 Menampilkan A, B, C, D, E dan F

Gambar

ESP32_Animte7Segment-counter-1
ESP32_Animte7Segment-counter-1
ESP32_Animte7Segment-counter-up-down
ESP32_Animte7Segment-counter-up-down
ESP32_Animte7Segment-letters
ESP32_Animte7Segment-letters
ESP32_Animte7Segment-segments
ESP32_Animte7Segment-segments
ESP32-10-seven-segment-schematic
ESP32-10-seven-segment-schematic
ESP32-10-seven-segment-wiring
ESP32-10-seven-segment-wiring
809-ESP32 Tutorial 10/55 - Arduino code for 2.5 7 segment
Bahasa: 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);
  }
}

Sumber daya & referensi

Berkas📁

Tidak ada file tersedia.