ESP32 Eğitimi 10/55 - Yedi Segmentli Gösterge 74HC595 ile Dijital Sayaç - ESP32 IoT Öğrenme Kiti
Bu eğitimde, ESP32 mikrodenetleyicisi tarafından kontrol edilen yedi segmentli bir ekran kullanarak dijital bir sayaç oluşturacağız. Sayaç 0'dan 9'a kadar artacak ve ardından 0'a geri azalacak, böylece sayma işleminin net bir görselini sağlayacaktır. Ayrıca, yedi segmentli ekranda tek tek segmentleri nasıl yakacağımızı ve harfleri nasıl görüntüleyeceğimizi de keşfedeceğiz.

Bu proje, ekranı kontrol etmek için bir 74HC595 kaydırma yazmacı kullanır; bu, ESP32'de çok fazla GPIO pini kullanmadan segmentleri verimli bir şekilde yönetmemizi sağlar. Kaydırma yazmacına ikili değerler göndererek, sayıları ve harfleri temsil etmek için ilgili segmentleri yakabiliriz. Süreci daha derinlemesine anlamak için videoya başvurabilirsiniz (videoda 03:15'te).
Donanım Açıklaması
Bu projenin ana bileşenleri ESP32 mikrodenetleyicisi, bir 74HC595 kaydırma yazmacı ve bir yedi segmentli ekrandır. ESP32, yerleşik Wi-Fi ve Bluetooth özelliklerine sahip güçlü bir mikrodenetleyicidir ve bu da onu IoT projeleri için uygun hale getirir. 74HC595, yalnızca birkaç giriş pini kullanarak birden fazla çıkışı kontrol etmemizi sağlayan bir kaydırma yazmacıdır. Seri veriyi alıp paralel çıkışa dönüştürerek çalışır; bu, yedi segmentli bir ekranı sürmek için mükemmeldir.
Yedi segmentli ekran, sekiz şeklinde bir desende düzenlenmiş yedi ayrı LED'den oluşur. Her segment, kaydırma yazmacına uygun ikili değer gönderilerek açılıp kapatılabilir. Örneğin, 0 sayısını görüntülemek için orta segment (G) hariç tüm segmentlerin yanması gerekir.
Veri Sayfası Ayrıntıları
| Üretici | Texas Instruments |
|---|---|
| Parça numarası | 74HC595 |
| Mantık/IO voltajı | 2 V ila 6 V |
| Besleme voltajı | 2 V ila 6 V |
| Çıkış akımı (kanal başına) | 6 mA |
| Tepe akımı (kanal başına) | 35 mA |
| PWM frekansı yönergesi | 1 kHz'e kadar |
| Giriş mantık eşikleri | 0,3 VCC ila 0,7 VCC |
| Gerilim düşümü / RDS(on) / doyum | 0,2 V maks. |
| Termal sınırlar | 125 °C |
| Paket | DIP-16 |
| Notlar / varyantlar | Çeşitli paketlerde mevcuttur |
- Uygun voltaj beslemesini sağlayın (2 V ila 6 V).
- Aşırı ısınmayı önlemek için çıkış akımını sınırlayın.
- Optimum parlaklık için her segment için ayrı dirençler kullanın.
- Kısa devreleri ve yanlış bağlantıları önlemek için kablolamaya dikkat edin.
- Yanlış yapılandırmayı önlemek için pin düzenini dikkatlice izleyin.
Bağlantı Talimatları

Breadboard'unuzu kurarak başlayın. Toprak rayını (mavi çizgi) ve güç rayını (kırmızı çizgi) bağlayın. Toprak, breadboard'un bir tarafındaki mavi çizgiye bağlanmalıdır; güç ise karşı taraftaki kırmızı çizgiye bağlanmalıdır. ESP32'nin toprağını toprak rayına bağlamak için siyah bir kablo ve ESP32'nin 3.3V pinini güç rayına bağlamak için kırmızı bir kablo kullanın.
Ardından, 74HC595 kaydırma yazmacını breadboard'a yerleştirin ve çentiğin doğru yönde olduğundan emin olun. Pin 11'i (DS) ESP32'deki pin 25'e, pin 12'yi (SH_CP) pin 26'ya ve pin 14'ü (ST_CP) pin 27'ye bağlayın. Kaydırma yazmacının toprağını (pin 8) toprak rayına ve pin 10'u (MR) aktivasyon için güç rayına bağlayın.
Yedi segmentli ekran için, segmentlere (a-g) karşılık gelen pinleri kaydırma yazmacının çıkış pinlerine bağlayın. Akımı sınırlamak için her segment için seri olarak bir direnç (220 ohm) kullanın. Ekran tipinize bağlı olarak ortak anot veya katot olabilen ortak pin için uygun bağlantıları yaptığınızdan emin olun.
Kod Örnekleri ve Açıklaması
Kurulum fonksiyonunda, kaydırma yazmacına bağlı pinleri çıkış olarak tanımlayarak başlıyoruz. Bu, ESP32'mizin ekrana gönderilen verileri kontrol edebilmesini sağlar.
void setup ()
{
//pinleri çıkış olarak ayarla
pinMode(STcp,OUTPUT);
pinMode(SHcp,OUTPUT);
pinMode(DS,OUTPUT);
}
Burada, STcp, SHcp ve DS'yi kaydırma yazmacının sırasıyla ST_CP, SH_CP ve DS pinlerine bağlı pinler olarak tanımlıyoruz. Bu pinleri çıkış olarak ayarlamak, kaydırma yazmacını kontrol etmemizi sağlar.
Programın ana döngüsü 0'dan 9'a kadar sayar ve shiftOut fonksiyonunu kullanarak ilgili değerleri ekrana gönderir.
for(int num = 0; num <10; num++)
{
digitalWrite(STcp,LOW); //ST_CP'yi toprağa çek ve iletim süresince düşük tut
shiftOut(DS,SHcp,MSBFIRST,datArray[num]);
digitalWrite(STcp,HIGH); //veriyi kaydetmek için ST_CP'yi yüksek çek
delay(1000);
}
Bu döngü num değişkenini artırır ve datArray dizisinden karşılık gelen değeri her saniye ekrana gönderir. shiftOut fonksiyonu veriyi shift register'a iletir ve bu da uygun segmentleri yakar.
Gösterim / Ne Beklemeli
Bağlantı tamamlandıktan ve kod yüklendikten sonra, yedi segmentli ekranın 0'dan 9'a kadar saydığını, kısa bir duraklama yapıp tekrar 0'a geri saydığını görmelisiniz. Her sayı bir saniye boyunca görüntülenecektir. Saymayı hızlandırmak isterseniz, döngüdeki gecikmeyi ayarlayabilirsiniz (videoda 15:30'da).
Segmentleri tek tek kontrol ederken, harfleri veya belirli segmentleri görüntülemek için doğru ikili değerleri göndermeyi unutmayın. Ekran loş görünüyorsa, ekran genelinde tutarlı parlaklık sağlamak için her segmente ayrı dirençler eklemeyi düşünün.
Video Zaman Damgaları
- 00:00 Başlangıç
- 1:53 Yedi segmente giriş
- 4:38 Bağlantı açıklaması
- 13:15 Arduino Kodu-1
- 17:01 COM portu ve ESP32 kartı seçimi
- 18:43 Gösterim-1
- 20:13 Sadece bir rakamın görüntülenmesi
- 21:38 Yukarı ve aşağı sayaç
- 23:07 Her segmentin AÇIK/KAPALI yapılması
- 24:53 A, B, C, D, E ve F harflerinin görüntülenmesi
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);
}
}
Common Course Links
Common Course Files
Kaynaklar ve referanslar
-
BelgelendirmeESP32 Tutorial 10/55 - SunFounder page for Seven Segmentdocs.sunfounder.com
Dosyalar📁
Dosya mevcut değil.