- Gerekli Bileşenler
- 4 Haneli 7 Segment Ekran
- 74HC595 Shift Register IC
- DS3231 RTC Modülü
- Devre şeması
- Yedi Segment Göstergesini Çoğullama için Arduino UNO Programlama
Dijital duvar saatleri günümüzde daha popüler hale geliyor ve saat, dakika ve saniye olarak doğru zamanı sağladığı ve değerleri okuması kolay olduğu için analog saatten daha iyi. Bazı dijital saatler ayrıca sıcaklık, nem görüntüleme, birden fazla alarm ayarlama vb. Gibi birçok özelliğe sahiptir. Dijital saatlerin çoğu yedi bölümlü ekran kullanır.
Daha önce, 7 segmentli ekran kullanarak veya 16x2 LCD kullanarak birçok dijital saat devresi inşa ettik. Burada AVR tabanlı Dijital saatin eksiksiz PCB tasarımlarını bulabilirsiniz. Bu eğitim, Arduino UNO kullanarak dört-7 segmentli ekranı çoklayarak ve saati HH: MM formatında görüntüleyerek bir Dijital saat yapmakla ilgilidir.
Gerekli Bileşenler
- 4 Haneli 7 Segment Ekran
- 74HC595 IC
- DS3231 RTC Modülü
- Arduino UNO
- Breadboard
- Bağlantı telleri
4 Haneli 7 Segment Ekran
4 haneli 7 Segment ekran, birleştirilmiş dört yedi segment ekrana sahiptir veya birlikte çoklanmış diyebiliriz. Sayısal değerleri ve ayrıca ondalık ve iki nokta üst üste ile bazı alfabeleri görüntülemek için kullanılırlar. Ekran her iki yönde de kullanılabilir. Dört basamak, dijital saatler veya 0'dan 9999'a kadar sayma sayıları yapmak için kullanışlıdır. Aşağıda 4 Haneli 7 Segmentli ekran için dahili şema verilmiştir.
Her bölümün ayrı LED kontrollü bir LED'i vardır. Ortak Anot ve Ortak Katot gibi iki tür yedi segmentli ekran vardır. Yukarıdaki görüntü, ortak anot tipi 7 segment ekranını göstermektedir.
Ortak Anot
Ortak Anotta, tüm 8 LED'in tüm pozitif terminalleri (Anotlar) COM olarak adlandırılan birbirine bağlanır. Ve tüm negatif terminaller tek başına bırakılır veya mikro denetleyici pimlerine bağlanır. Mikrodenetleyici kullanarak, lojik DÜŞÜK belirli LED segmentini aydınlatacak şekilde ayarlanırsa ve LED'i KAPALI konuma getirmek için Yüksek mantığı ayarlayın.
Ortak Katot
Ortak Katotta, tüm 8 LED'in tüm Negatif terminalleri (katot) COM adı verilen birbirine bağlanır. Ve tüm pozitif terminaller tek başına bırakılır veya mikro denetleyici pimlerine bağlanır. Mikrodenetleyiciyi kullanarak, lojik YÜKSEK'i LED'i yakacak şekilde ve DÜŞÜK'ü LED'i KAPALI konuma getirecek şekilde ayarlayın.
Burada 7 segmentli ekranlar hakkında daha fazla bilgi edinin ve diğer mikro denetleyicilerle nasıl arayüzlenebileceğini kontrol edin:
- Arduino ile 7 Segment Ekran Arayüzü
- Raspberry Pi ile 7 Segment Ekran Arayüzü
- ARM7-LPC2148 ile Yedi Segment Ekranı Arayüzü
- PIC Mikrodenetleyici ile 7 Segment Ekran Arayüzü
- 8051 Mikrodenetleyici ile 7 Segment Ekran Arayüzü
74HC595 Shift Register IC
IC 74HC595 ayrıca 8-Bit Serial IN olarak bilinen - Paralel OUT Shift Kayıt. Bu IC, veri girişini seri olarak alabilir ve 8 çıkış pinini paralel olarak kontrol edebilir. Bu, mikrodenetleyiciden kullanılan pimlerin azaltılmasında yararlıdır. 74HC595 vardiya kaydı ile ilgili tüm projeleri burada bulabilirsiniz.
74HC595 IC'nin Çalışması:
Bu IC, IC'nin 8 çıkış pinini kontrol etmek için mikrodenetleyiciyle birlikte Saat, Veri ve Mandal gibi üç pin kullanır. Saat, mikro denetleyiciden sürekli darbeler sağlamak için kullanılır ve veri pini, ilgili saat saatinde çıkışın AÇIK veya KAPALI konuma getirilmesi gerektiği gibi verileri göndermek için kullanılır.
Pin yapısı:
PIN numarası |
Pin Adı |
Açıklama |
1,2,3,4,5,6,7 |
Çıkış Pimleri (Q1 - Q7) |
74HC595, 7'si bu pin olan 8 çıkış pinine sahiptir. Seri olarak kontrol edilebilirler |
8 |
Zemin |
Mikrodenetleyicinin zeminine bağlı |
9 |
(Q7) Seri Çıkış |
Bu pin, birden fazla 74HC595'i kademeli olarak bağlamak için kullanılır |
10 |
(MR) Ana Sıfırlama |
Tüm çıkışları düşük olarak sıfırlar. Normal çalışma için yüksek tutulmalıdır |
11 |
(SH_CP) Saat |
Bu, saat sinyalinin MCU / MPU'dan sağlanması gereken saat pinidir. |
12 |
(ST_CP) Mandal |
Mandal pimi, verileri çıkış pinlerine güncellemek için kullanılır. Aktif yüksek |
13 |
(OE) Çıkışı Etkinleştir |
Çıkışı Etkinleştirme, çıktıları kapatmak için kullanılır. Normal çalışma için düşük tutulmalıdır |
14 |
(DS) Seri Veriler |
Bu, 8 çıkışın kontrol edildiği, verinin gönderildiği pindir. |
15 |
(Q0) Çıkış |
İlk çıkış pini. |
16 |
Vcc |
Bu pin IC'ye güç sağlar, tipik olarak + 5V kullanılır. |
DS3231 RTC Modülü
DS3231 bir RTC modülüdür. RTC, Gerçek Zamanlı Saat anlamına gelir. Bu modül, devreye enerji verilmediğinde bile saati ve tarihi hatırlamak için kullanılır. Modülü harici güç olmadığında çalıştırmak için pil yedeği CR2032'ye sahiptir. Bu modül ayrıca bir sıcaklık sensörü içerir. Modül, sıcaklık göstergesi ile dijital saat yapmak gibi gömülü projelerde kullanılabilir. İşte onu kullanan bazı faydalı projeler:
- Arduino kullanarak Otomatik Evcil Hayvan Besleyici
- RTC Modülünü (DS3231) PIC Mikrodenetleyici ile Arayüz: Dijital Saat
- RTC modülünü (DS3231) MSP430 ile arayüzleme: Dijital Saat
- DS3231 Modülünü kullanan ESP32 Gerçek Zamanlı Saat
- AVR Mikrodenetleyici Atmega16 ve DS3231 RTC kullanan PCB üzerinde Dijital Duvar Saati
DS3231'in pin çıkışı:
Pin Adı |
Kullanım |
VCC |
Pozitif güç kaynağına bağlı |
GND |
Zemine bağlı |
SDA |
Seri veri pini (I2C) |
SCL |
Seri saat pimi (I2C) |
SQW |
Kare Dalga çıkış pimi |
32 bin |
32K osilatör çıkışı |
Özellikler ve Özellikler:
- RTC saniye, dakika, saat ve yılı sayar
- ± 3ºC hassasiyetli dijital sıcaklık sensörü
- Yaşlandırma trimine kaydolun
- 400Khz I2C arayüzü
- Düşük güç tüketimi
- İki ila üç yıllık ömre sahip CR2032 pil yedeği
- Çalışma Gerilimi: 2.3 - 5.5V
Devre şeması
DS3231 RTC ve Arduino UNO arasındaki Devre Bağlantısı:
DS3231 |
Arduino UNO |
VCC |
5V |
GND |
GND |
SDA |
A4 |
SCL |
A4 |
74HC595 IC ve Arduino Uno arasındaki Devre Bağlantıları:
74HC595 IC |
Arduino UNO |
11-SH_CP (SRCLK) |
6 |
12-ST_CP (RCLK) |
5 |
14-DS (Veri) |
4 |
13-OE (Mandallı) |
GND |
8-GND |
GND |
10-MR (SRCLR) |
+ 5V |
16-VCC |
+ 5V |
IC 74HC595 ve 4 Haneli Yedi Segment ve Arduino UNO arasındaki Devre Bağlantıları:
4 Haneli YediSegment |
IC 74HC595 |
Arduino UNO |
Bir |
Q0 |
- |
B |
Q1 |
- |
C |
S2 |
- |
D |
S3 |
- |
E |
Q4 |
- |
F |
S5 |
- |
G |
S6 |
- |
D1 |
- |
10 |
D2 |
- |
11 |
D3 |
- |
12 |
D4 |
- |
9 |
Yedi Segment Göstergesini Çoğullama için Arduino UNO Programlama
Kodun tamamı ve çalışma videosu bu eğitimin sonuna eklenmiştir. Programlama bölümünde 24 saatlik formatta RTC modülünden saatin (saat ve dakika) nasıl alındığı ve daha sonra 4 haneli 7 Segment göstergede gösterilmesi için ilgili formata dönüştürüldüğü anlatılacaktır.
DS3231 RTC modülünü Arduino UNO ile arayüzlemek için Arduino UNO'nun I2C veriyolu kullanılır. Adlı bir kütüphane
Bu konseptte saat ve dakika önce RTC'den alınır ve 0930 (21:30) gibi birleştirilir ve daha sonra tek tek haneler bin, yüz, onlar, birim gibi ayrılır ve tek tek rakamlar 0 gibi ikili biçime dönüştürülür 63'e (0111111). Bu ikili kod, bir kaydıran yazmacıya ve daha sonra kaydıran yazmacıdan yedi bölüme gönderilir ve Basamağı 0 yedi bölümlü ekranda başarıyla görüntüler. Bu şekilde, dört basamak çoklanır ve saat ve dakika görüntülenir.
Başlangıçta, DS3231 kitaplığı ve Wire kitaplığı (I2C kitaplığı) gibi gerekli kitaplık dahil edilmiştir.
#Dahil etmek
Pimler, yedi segment kontrolü için tanımlanmıştır. Bu kontroller , ekranı çoklamada önemli bir rol oynayacaktır.
#define latchPin 5 #define clockPin 6 #define dataPin 4 #define dot 2
Değişkenler, RTC'den alınan dönüştürülmüş veya ham sonucu depolamak için bildirilir.
int h; // Değişken saat için bildirildi int m; // Dakika int binler için bildirilen değişken ; int yüzler; int onlarca; int birim; bool h24; bool PM;
Daha sonra, DS3231 sınıfının nesnesi, diğer satırlarda kullanımı basitleştirmek için RTC olarak bildirilir.
DS3231 RTC;
RTC modülü I2C iletişimi kullanılarak Arduino ile arayüzlendiğinden. Bu nedenle, başka I2C modülü olmadığından, wire.begin () RTC'nin varsayılan adresinde I2C iletişimini başlatmak için kullanılır.
Wire.begin ();
Pim modu tanımlanmıştır GPIO giriş veya çıkış olarak davranacaktır olup,.
pinMode (9, ÇIKIŞ); pinMode (10, ÇIKIŞ); pinMode (11, ÇIKIŞ); pinMode (12, ÇIKIŞ); pinMode (latchPin, OUTPUT); pinMode (clockPin, OUTPUT); pinMode (dataPin, OUTPUT); pinMode (nokta, ÇIKIŞ);
Döngü sonsuz çalışır ve zamanı, RTC DS3231 modülünden saat ve dakika olarak alır. "h24", 24 saatlik format değişkenini belirtir.
int h = RTC.getHour (h24, PM); int m = RTC.getMinute ();
Daha sonra saat ve dakika tek bir sayı olarak birleştirilir (örneğin saat 10 ve dakika 60 ise, sayı 10 * 100 = 1000 + 60 = 1060).
int sayı = h * 100 + m;
Sayıda tek tek basamaklı elde edilir (1 onuncu ve 0 son basamak olan, 0 hundered olup, 1060- 1000 olan örnek). Basamakları ayırmak için modül operatörü kullanılır. Örneğin, 1060'ta 1 elde etmek için sonra 1060/1000 =% 1,06 10 = 1). Dolayısıyla, ayrı rakamlar ayrı değişkenlerde saklanır.
int binler = sayı /% 1000 10; int yüzlerce = sayı /% 100 10; int onlar = sayı /% 10 10; int birim = sayı% 10;
Bundan sonra, her bir hane için bir anahtar durumu ifadesi, bunları ilgili formata (ikili format) dönüştürmek ve 7 segmentte görüntülenmek üzere kaydırma yazmacı aracılığıyla göndermek için tanımlanır. Örneğin (1 hane için 06 (0000 0110) olarak değiştirilmiştir). Böylece öteleme yoluyla gönderilir ve 1 hane 7 segmentte görüntülenir (DÜŞÜK için 0, YÜKSEK için 1).
anahtar (t) { durum 0: birim = 63; kırmak; durum 1: birim = 06; kırmak; durum 2: birim = 91; kırmak; durum 3: birim = 79; kırmak; durum 4: birim = 102; kırmak; durum 5: birim = 109; kırmak; durum 6: birim = 125; durum 7: birim = 07; kırmak; durum 8: birim = 127; kırmak; durum 9: birim = 103; kırmak; }
Daha sonra ikili formattaki münferit rakam önce MSB ile 'shiftout' fonksiyonu ile gönderilir ve ilgili rakam pini HIGH yapılır ve mandal pimi HIGH yapılır.
digitalWrite (9, DÜŞÜK); digitalWrite (latchPin, DÜŞÜK); shiftOut (dataPin, clockPin, MSBFIRST, binlerce); digitalWrite (latchPin, YÜKSEK); digitalWrite (9, YÜKSEK); gecikme (5);
Bu, kodun tamamını bitirir. İşlev açıklamalarının çoğu, kod satırının hemen yanındaki kod açıklaması bölümünde verilmiştir. Saatin frekansı, Zamanın görüntüsüne ve çoklama kalitesine, yani eğer düşük saat kullanılırsa, o zaman titreme görülebilecek, saat hızı yüksekse, o zaman bu kadar titreme olmayacak ve sabit bir zaman görülebilecek..
RTC modülüne erişmek için I2C veriyolu voltajının korunması gerektiğini unutmayın. Herhangi bir öneride bulunmak için veya herhangi bir şüpheniz varsa, lütfen aşağıya yorum yapın.