- 7 Segment ve 4 Haneli 7 Segment Görüntüleme Modülü:
- Raspberry Pi ile 4 basamaklı 7 segmentli modülü bağlama:
- Raspberry Pi'nizi programlama:
- Raspberry Pi kullanarak 4 Haneli 7 segmentte görüntüleme süresi:
Raspberry Pi'yi hepimiz biliyoruz ARM mikroişlemciye dayalı harika bir Geliştirme platformudur. Yüksek hesaplama gücü ile elektronik meraklılarının veya öğrencilerin elinde harikalar yaratabilir. Bütün bunlar ancak gerçek dünyayla nasıl etkileşim kuracağımızı bilirsek ve verileri bazı çıktı aygıtları aracılığıyla analiz edersek mümkün olabilir. Gerçek zamanlı dünyadan belirli parametreleri algılayıp dijital dünyaya aktarabilen birçok sensör var ve bunları bir LCD ekranda veya başka bir ekranda görüntüleyerek analiz ediyoruz. Ancak, az miktarda veriyi görüntülemek için PI özellikli bir LCD ekran kullanmak her zaman ekonomik olmayacaktır. Burası 16x2 Alfanümerik LCD ekranı veya 7 Segment ekranı kullanmayı tercih ettiğimiz yerdir. Raspberry pi ile Alfanümerik bir LCD ve tek segmentli 7 segmentli ekranın nasıl kullanılacağını zaten öğrendik. Bugün yapacağızRaspberry Pi ile 4 basamaklı Yedi Segment Ekran Modülü arayüzü ve üzerinde Zaman görüntüleme.
16x2 Alfanümerik LCD, 7 segmentli ekrandan çok daha rahat olmasına rağmen, 7 segmentli bir ekranın bir LCD ekrandan daha kullanışlı olacağı birkaç senaryo vardır. LCD, küçük karakter boyutuna sahip olmanın dezavantajından muzdariptir ve sadece bazı sayısal değerleri görüntülemeyi planlıyorsanız, projeniz için gereğinden fazla olacaktır. 7 segment ayrıca zayıf aydınlatma koşullarına karşı avantaja sahiptir ve normal bir LCD ekrana göre daha büyük açılardan görüntülenebilir. Öyleyse, bilmeye başlayalım.
7 Segment ve 4 Haneli 7 Segment Görüntüleme Modülü:
7 Segment Ekranın içinde yedi segment vardır ve her segmentte karşılık gelen segmentleri aydınlatarak sayıları görüntülemek için bir LED bulunur. Örneğin, 7 segmentin "5" sayısını görüntülemesini istiyorsanız, ilgili pimleri yüksek yaparak a, f, g, c ve d segmentlerini parlatmanız gerekir. İki tür 7 segmentli ekran vardır: Ortak Katot ve Ortak Anot, burada Ortak Katot yedi segmentli ekranı kullanıyoruz. Burada 7 segment görüntüleme hakkında daha fazla bilgi edinin.
Artık tek bir 7 segmentli ekranda istediğimiz sayısal karakterin nasıl görüntüleneceğini biliyoruz. Ancak, birden fazla rakam içeren herhangi bir bilgiyi iletmek için birden fazla 7 segmentli ekrana ihtiyacımız olacağı oldukça açıktır. Dolayısıyla, bu eğitimde aşağıda gösterildiği gibi 4 basamaklı 7 Segmentli Görüntüleme Modülü kullanacağız.
Gördüğümüz gibi birbirine bağlı Dört Yedi Segment Ekran var. Her 7 segmentli modülün 10 pinli olacağını ve 4 yedi segmentli ekran için toplamda 40 pin olacağını biliyoruz ve herhangi birinin bunları bir nokta kartında lehimlemesinin telaşlı olacağını biliyoruz, bu yüzden herhangi birinin bir modül satın almasını şiddetle tavsiye ederim veya 4 basamaklı 7 segmentli bir ekran kullanmak için kendi PCB'nizi yapın. Aynısı için bağlantı şeması aşağıda gösterilmiştir:
4 basamaklı yedi bölümlü modülün nasıl çalıştığını anlamak için yukarıdaki şemalara bakmalıyız, gösterildiği gibi dört ekranın tümünün A pinleri bir A olarak toplanır ve B, C…. için DP'ye kadar aynıdır. Yani, temelde A'yı tetiklerse, dört A'nın tümü yüksek olmalı, değil mi?
Ancak bu olmaz. D0'dan D3'e (D0, D1, D2 ve D3) dört pimden hangisinin yüksek çıkması gerektiğini kontrol etmek için kullanılabilecek ek dört pimimiz var. Örneğin: Çıktımın yalnızca ikinci ekranda mevcut olmasına ihtiyacım varsa, diğer pinleri (D0, D2 ve D3) düşük tutarken yalnızca D1 yüksek yapılmalıdır. Basitçe, D0'dan D3'e pinleri kullanarak hangi ekranın aktif hale gelmesi gerektiğini ve A'dan DP'ye pinleri kullanarak hangi karakterin görüntüleneceğini seçebiliriz.
Raspberry Pi ile 4 basamaklı 7 segmentli modülü bağlama:
Bakalım bu 4 haneli 7 segmentli modülü Raspberry Pi'mize nasıl, nasıl bağlayabileceğimizi görelim. 7 segmentli modül, aşağıda gösterildiği gibi 16 pime sahiptir. Modülünüzde daha az olabilir, ancak endişelenmeyin, kesinlikle aşağıdakilere sahip olacaktır
- 7 veya 8 segment pimi (burada 1'den 8'e kadar pimler)
- Topraklama pimi (burada pim 11)
- 4 basamaklı pimler (burada 13 - 16 arası pimler)
Aşağıda, 4 basamaklı Yedi segmentli ekran modülünü Raspberry Pi ile bağlayarak ahududu pi dijital saat için şematik verilmiştir:
Aşağıdaki tablo ayrıca bağlantıları yapmanıza ve yukarıda gösterilen şemalara göre olduğunu doğrulamanıza yardımcı olacaktır.
S.No |
Rsp Pi GPIO numarası |
Rsp Pi PIN numarası |
7 Segment adı |
7 Segmentli pin numarası (burada bu modülde) |
1 |
GPIO 26 |
PİM 37 |
Segment a |
1 |
2 |
GPIO 19 |
PİM 35 |
Segment b |
2 |
3 |
GPIO 13 |
PİM 33 |
Segment c |
3 |
4 |
GPIO 6 |
PİM 31 |
Segment d |
4 |
5 |
GPIO 5 |
PİM 29 |
Segment e |
5 |
6 |
GPIO 11 |
PİM 23 |
Segment f |
6 |
7 |
GPIO 9 |
PİM 21 |
Segment g |
7 |
8 |
GPIO 10 |
PİM 19 |
DP segmenti |
8 |
9 |
GPIO 7 |
PİM 26 |
Basamak 1 |
13 |
10 |
GPIO 8 |
PİM 24 |
Basamak 2 |
14 |
11 |
GPIO 25 |
PİM 22 |
Basamak 3 |
15 |
12 |
GPIO 24 |
PİM 18 |
Basamak 4 |
16 |
13 |
Zemin |
Zemin |
Zemin |
11 |
Modülünüzdeki pimleri tanımlayın ve bağlantılara devam edebilirsiniz. Raspberry pi'de GPIO pinlerini tespit etmek biraz zor olabilir, bu yüzden size GPIO Pinleri için bu resmi verdim.
Raspberry Pi'nizi programlama:
Burada RPi programlamak için Python Programlama dilini kullanıyoruz. Raspberry Pi'nizi programlamanın birçok yolu vardır. Bu eğitimde en çok kullanılan Python 3 IDE'yi kullanıyoruz. Tam Python programı bu yazının sonunda verilmiştir. Raspberry Pi'de Programlama hakkında daha fazla bilgi edinin ve kodu çalıştırın.
Bu proje için PYHTON programında kullanacağımız birkaç komuttan bahsedeceğiz, Öncelikle kütüphaneden GPIO dosyasını içe aktaracağız, aşağıdaki fonksiyon PI'nın GPIO pinlerini programlamamızı sağlar. Ayrıca "GPIO" yu "IO" olarak yeniden adlandırıyoruz, bu nedenle programda GPIO pinlerine başvurmak istediğimizde "IO" kelimesini kullanacağız. Ayrıca Rsp Pi'den zamanın değerini okumak için zaman ve tarih- saat içe aktardık.
RPi.GPIO'yu GPIO içe aktarma zamanı, tarih saat olarak içe aktar
Bazen kullanmaya çalıştığımız GPIO pinleri başka işlevler yapıyor olabilir. Bu durumda programı çalıştırırken uyarılar alacağız. Aşağıdaki komut PI'ya uyarıları dikkate almamasını ve programa devam etmesini söyler.
IO.setwarnings (False)
PI'nın GPIO pinlerini, kart üzerindeki pin numarasına veya fonksiyon numaralarına göre yönlendirebiliriz. Tahtadaki 'PIN 29' gibi 'GPIO5'. Yani burada ya buradaki pimi '29' veya '5' ile temsil edeceğimizi söylüyoruz. GPIO.BCM, GPIO5 pin 29 için 5 kullanmayı temsil edeceğimiz anlamına gelir.
IO.setmode (GPIO.BCM)
Her zaman olduğu gibi , pinleri başlatarak başlamalıyız, burada hem segment pinleri hem de rakam pinleri çıkış pinleridir. Programlama amacıyla, segment pinleri için diziler oluşturuyoruz ve bunları GPIO olarak ilan ettikten sonra '0' olarak başlatıyoruz.
segment8 = (26,19,13,6,5,11,9,10) segment8'deki segment için: GPIO.setup (segment, GPIO.OUT) GPIO.output (segment, 0)
Benzer şekilde, rakam pinleri için onları çıkış pinleri olarak ilan ediyoruz ve varsayılan olarak '0' yapıyoruz
#Digit 1 GPIO.setup (7, GPIO.OUT) GPIO.output (7, 0) #Off başlangıçta #Digit 2 GPIO.setup (8, GPIO.OUT) GPIO.output (8, 0) #Off başlangıçta #Digit 3 GPIO.setup (25, GPIO.OUT) GPIO.output (25, 0) #Off başlangıçta #Digit 4 GPIO.setup (24, GPIO.OUT) GPIO.output (24, 0) # Başlangıçta kapalı
Her sayıyı yedi segmentli bir ekranda görüntülemek için diziler oluşturmalıyız. Bir sayıyı görüntülemek için, 7 segment pinini (nokta pin hariç) kontrol etmeliyiz, yani ya kapatılmalı ya da açılmalıdır. Örneğin 5 sayısını görüntülemek için aşağıdaki düzenlemeyi yaptık
S.No |
Rsp Pi GPIO numarası |
7 Segment adı |
Durum '5' gösterilecek. (0-> KAPALI, 1-> AÇIK) |
1 |
GPIO 26 |
Segment a |
1 |
2 |
GPIO 19 |
Segment b |
1 |
3 |
GPIO 13 |
Segment c |
0 |
4 |
GPIO 6 |
Segment d |
1 |
5 |
GPIO 5 |
Segment e |
1 |
6 |
GPIO 11 |
Segment f |
0 |
7 |
GPIO 9 |
Segment g |
1 |
Benzer şekilde , tüm sayılar ve alfabeler için sıra numaramız var. Kendi başınıza yazabilir veya aşağıdaki tabloyu kullanabilirsiniz.
Bu verilerle python programımızdaki her sayı için aşağıda gösterildiği gibi diziler oluşturabiliriz.
null = sıfır = bir = iki = üç = dört = beş = altı = yedi = sekiz = dokuz =
Programı takip ederseniz, her bir karakteri 7 segmentli ekranımıza görüntülemek için bir işlev olacaktır, ancak bunu şimdilik atlayalım ve süre sonsuz döngüsüne girelim. Burada Ahududu Pi, bu zaman okuma ve dört değişken arasındaki zaman değerini bölme. Örneğin zaman 10.45 ise h1 değişkeni 1, h2 0, m1 4v ve m2 5 olacaktır.
şimdi = datetime.datetime.now () saat = şimdi.hour dakika = şimdi.dakika h1 = saat / 10 h2 = saat% 10 m1 = dakika / 10 m2 = dakika% 10 baskı (h1, h2, m1, m2)
Bu dört değişken değeri sırasıyla dört hanemizde göstermeliyiz. Bir rakama değişken değeri yazmak için aşağıdaki satırları kullanabiliriz. Burada 1. basamakta onu yükseğe çıkararak görüntülüyoruz, ardından segment göstergesinde değişkendeki değeri görüntülemek için print_segment (değişken) işlevi çağrılacak . Bundan sonra neden geciktiğimizi ve bundan sonra bu rakamı neden kapattığımızı merak ediyor olabilirsiniz.
GPIO.output (7, 1) # Bir Basamağı Aç print_segment (h1) # h1'i segmentte yazdır. Uyku (gecikme_süresi) GPIO.output (7, 0) # Bir Basamağı kapat
Bunun nedeni, bir seferde yalnızca bir basamak görüntüleyebileceğimizi bildiğimiz gibi, görüntülenecek dört basamağımız var ve yalnızca dört basamağın tümü görüntüleniyorsa, dört basamaklı sayının tamamı kullanıcı tarafından görülebilir.
Öyleyse, 4 hanenin tümünü aynı anda nasıl görüntülerim ?
MPU'muz insan gözünden çok daha hızlı bizim için şanslı, yani aslında yaptığımız şey: her seferinde bir rakam görüntüleriz, ancak yukarıda gösterildiği gibi bunu çok hızlı yaparız.
MPU ve 7 segmentin bunu işleyebilmesi için 2ms (değişken gecikme süresi) beklediği bir basamaklı ekranı seçiyoruz ve sonra bu basamağı kapatarak bir sonraki basamağa geçip son basamağa ulaşana kadar aynısını yapıyoruz. Bu 2 ms'lik gecikme insan gözü tarafından görülemez ve dört hanenin tamamı aynı anda AÇIK görünür.
Bunu öğrenmeniz gereken son şey, print_segment (değişken) işlevinin nasıl çalıştığını bilmektir . Bu fonksiyonun içinde şimdiye kadar tanımladığımız dizileri kullanıyoruz. Yani bu işleve gönderdiğimiz değişken ne olursa olsun (0-9) arasında bir değere sahip olmalıdır, değişken karakter bu değeri alacak ve onu gerçek değerle karşılaştıracaktır. Burada değişken '1' ile karşılaştırılır. Benzer şekilde, 0'dan 9'a kadar olan tüm sayılarla karşılaştırırız. Eğer bir eşleşme ise dizileri kullanırız ve her bir değeri, aşağıda gösterildiği gibi ilgili segment pinlerine atarız.
def print_segment (karakter): eğer karakter == 1: aralıktaki i için (7): GPIO.output (segment8, bir)
Raspberry Pi kullanarak 4 Haneli 7 segmentte görüntüleme süresi:
Bağlantıları yapmak ve ahududu pi'nizi buna göre programlamak için burada verilen şematik ve kodu kullanın. Her şey tamamlandıktan sonra, sadece programı başlatın ve yedi bölümlü ekranda görüntülenen geçerli saati bulmalısınız. Ancak bundan önce kontrol etmeniz gereken birkaç şey var
- Raspberry Pi'nizi çevrimdışı zamanda çalışıyorsa, geçerli zamana ayarladığınızdan emin olun.
- Raspberry pi'nize bir Adaptörle güç verin, Dizüstü bilgisayarınız / bilgisayarınızla değil, çünkü 7 segmentli ekran tarafından çekilen akım miktarı yüksek ve USB bağlantı noktanız bunu kaynaklayamıyor.
Her şey beklendiği gibi çalışıyorsa, aşağıda buna benzer bir şey bulmalısınız.
Bu ahududu pi saatinin tam çalışması, aşağıda verilen videodan da kontrol edilebilir. Umarım projeyi beğenmişsinizdir ve bir tane oluşturmaktan zevk almışsınızdır. Ne düşündüğünüzü veya yardıma ihtiyacınız olursa bana bildirin.