Robotik Kodlama

Robotik Kodlama
Ana Sayfa

İLGİNİZİ ÇEKEBİLECEK LİNKLER :

28 Haziran 2021 Pazartesi

7 Segmentli Display Nasıl Çalışır ve Arduino

 

7 Segmentli Display Nasıl Çalışır ve Arduino




Birinin bir bombayı etkisiz hale getirmesi gereken bir filmi kaç kez izlediniz? Kahraman, her saniye bir öncekinden daha değerli olan zaman geçtikçe ekranı izler. Dikkat ederseniz, filmlerdeki tüm bu bombaların yedi bölümlü ekranı var. Olmak zorunda! Aksi takdirde, bir kahraman ne kadar zamanının kaldığını nasıl bilebilir? Belki yedi bölümlü ekranlar sizin için yeterince modern görünmüyor, ancak sayıları göstermenin en pratik yolu bunlar. Hem sınırlı ışık koşullarında hem de güçlü güneş ışığında kullanımı kolay, uygun maliyetli ve yüksek oranda okunabilir.

Yedi segmentli ekranı kullanan gerçek bir dünya örneği , NASA'nın Apollo inişi için kullandığı Florida, Cape Canaveral'daki ünlü geri sayım saatidir .

Fotoğraf kredisi: NASA / Jim Grossmann
Donanıma Genel Bakış

Arduino'ya bağlamadan önce 7 segmentli ekranın özelliklerini ve işlevselliğini kısaca tartışalım.

7 segmentli ekranlar, belirli bir düzende sıralanmış yedi LED'den ibarettir. Bu durumda hepimizin aşina olduğu '8' şekli. Yedi LED'in her birine segment adı verilir, çünkü segment aydınlatıldığında görüntülenecek sayısal bir rakamın (hem Ondalık hem de Onaltılık) bir parçasını oluşturur. Bazen bir ondalık noktanın belirtilmesi için ek bir 8. LED kullanılır.

7 Segment İç LED Formasyon Yapısı ve Pin Çıkışı

Ekrandaki yedi LED'in her birine, bağlantı pimlerinden biri doğrudan dikdörtgen plastik paketten çıkarılmış konumsal bir bölüm verilir. Bu ayrı LED pimleri, her bir LED'i temsil eden a'dan g'ye kadar etiketlenmiştir. Diğer LED pimleri, ortak bir pim oluşturmak için birbirine bağlanır ve kablolanır.

Ekranın belirli bir bölümünü açmak ve kapatmak için, normal bir LED ile yaptığınız gibi uygun pini YÜKSEK veya DÜŞÜK olarak ayarlarsınız. Böylelikle bazı segmentler açık, diğerleri karanlık olacak ve ekranda istenen numaranın karakter deseninin oluşturulmasına izin verilecek. Bu, daha sonra 0'dan 9'a kadar on ondalık basamağın her birini aynı 7 segmentli ekranda görüntülememize olanak tanır.

7 Segment Ekran Pin Çıkışı

Şimdi segment konfigürasyonunun üzerinden geçelim, böylece hangi pinlerin hangi segmentleri aydınlattığını bilelim. 7 segmentli ekran için pin çıkışı aşağıdaki gibidir.

7 Segment Ortak Anot Ortak Katot Pin Çıkışı

ag ve DP10 üzerinden 8 pin yani a, b, c, d, e, f, g ve DP segmenti (ondalık nokta) Arduino'nun dijital pinlerine bağlanır. Bağlı segmentteki her bir LED kontrol edilerek sayılar görüntülenebilir.

COMPim 3 ve 8, ortak bir pim oluşturmak için dahili olarak bağlanmıştır. Bu pin, ekranın tipine bağlı olarak GND'ye (ortak katot) veya 5V'ye (ortak anot) bağlanmalıdır.

Ortak Katot (CC) Vs Ortak Anot (CA)

Yedi segmentli ekran iki tiptedir: Ortak Katot (CC) ve Ortak Anot (CA). Her iki tipin de iç yapısı hemen hemen aynıdır. Aradaki fark, LED'lerin ve ortak terminalin polaritesidir. Adından da anlaşılacağı gibi, ortak katot birbirine bağlı bir 7 segmentte LED'lerin tüm katotlarına sahiptir ve ortak anot, birbirine bağlı bir 7 segmentteki LED'lerin tüm anotlarına sahiptir.

Ortak katot ekranında, LED segmentlerinin tüm katot bağlantıları birlikte 'mantık 0' / GND'ye bağlanır. Ayrı bölümler daha sonra, ayrı Anot terminallerine (ag) YÜKSEK / 'mantık 1' sinyali uygulanarak aydınlatılır.

Ortak Katot 7 Segment Ekranı Dahili Çalışma Animasyonu
Ortak Katot 7 Segment Çalışması

Ortak anot göstergesinde, LED segmentlerinin tüm anot bağlantıları mantık "1" ile birleştirilir. Ayrı bölümler, belirli bölümün (ag) Katoduna bir toprak, mantık “0” veya “DÜŞÜK” sinyali uygulanarak aydınlatılır.

Ortak Anot 7 Segment Ekranı Dahili Çalışma Animasyonu
Ortak Anot 7 Segment Çalışması

Genel olarak, ortak anot ekranları (aşağıdaki deneylerde kullandığımız) daha popülerdir çünkü birçok mantık devresi, kaynaklayabileceklerinden daha fazla akım çekebilir.

Ayrıca, ortak bir katot ekranının, ortak bir anot ekranı için bir devrede doğrudan bir ikame olmadığını ve bunun tersi olduğunu unutmayın, çünkü bu, LED'leri tersine bağlamakla aynıdır ve dolayısıyla ışık yayımı gerçekleşmez.

7 Segment Görüntüleme Nasıl Çalışır?    Görüntülenecek ondalık basamağa bağlı olarak, belirli LED'ler yanar. Örneğin, 4 numaralı rakamı görüntülemek için, b, c, f ve g'ye karşılık gelen dört LED segmentini aydınlatmamız gerekecek. Böylece, '0'dan 9'a kadar çeşitli rakamlar ve' A'dan F'ye kadar olan karakterler gösterildiği gibi 7 bölümlü bir ekran kullanılarak görüntülenebilir.7 Segment Ekran Numarası Oluşumu Segment Contol

Aşağıdaki doğruluk tablosu, rakamlar ve karakterler üretmek için aydınlatılması gereken ayrı segmentleri göstermektedir. Lütfen ortak anot 7 segmentli ekran için doğruluk tablosunun ortak katot 7 segmentli ekranın tam tersi olduğunu unutmayın.

Ortak Katot 7 Segment Görüntüleme Doğruluk Tablosu
Ortak Anot 7 Segment Ekran Doğruluk Tablosu

Kablolama - 7 Segment Ekranı Arduino UNO'ya Bağlama

Artık 7 segmentli ekranın nasıl çalıştığını anladığımıza göre, onu Arduino'ya kablolamaya başlayabiliriz!

7 segmentli ekranı devre tahtanıza yerleştirerek başlayın ve ekranın her iki tarafının devre tahtasının ayrı bir tarafında olmasını sağlayın. Ondalık nokta aşağıya bakarken, pimler aşağıdaki şekilde görüldüğü gibi soldan sağa alt tarafta 1-5 ve üst tarafta soldan sağa 10-6'dır.

Başlamak için, 3 veya 8 numaralı ortak pinlerden birini Arduino'daki 5V pinine (ortak bir anot 7 segmentli ekran kullanıyorsanız) veya Arduino'daki GND pinine (ortak bir katot 7 kullanıyorsanız) bağlayalım. segment ekranı). Üst konumdaki kalan 4 pim dijital pim 2'ye dijital pim 5'e bağlanır. Alt konumdaki diğer 4 pim, ondalık noktalı dijital pim 6'dan 9'a bağlanır.


Ekran, akım sınırlayıcı dirençler olmadan çalışabilirken, ekranınızın yanmasını önlemek için bunları devrenizde bulundurmak her zaman iyi bir fikirdir.

Tipik olarak standart kırmızı renkli 7 segmentli bir ekran için, her bir LED segmenti doğru aydınlatmak için yaklaşık 15 mA çekebilir, bu nedenle 5 voltluk bir dijital mantık devresinde akım sınırlama direncinin değeri yaklaşık 200Ω (5v - 2v) / 15mA olacaktır. veya 220Ω en yakın daha yüksek tercih edilen değere.

Ortak Anot Yedi Segment Ekranlı Arduino Kablolama Fritzing Bağlantıları


Ortak Anot Yedi Segment Ekranını Arduino UNO'ya Kablolama


Ortak Katot Yedi Segment Ekranlı Arduino Kablolama Fritzing Bağlantıları

Ortak Katot Yedi Segment Ekranını Arduino UNO'ya Kablolama
7 segmentli ekranları kontrol etmek için kod yazmaya başlamadan önce SevSeg Arduino Kitaplığını indirmeniz gerekir Bunu GitHub deposunu ziyaret ederek ve kitaplığı manuel olarak indirerek yapabilirsiniz veya zip dosyasını indirmek için bu düğmeyi tıklamanız yeterlidir:
Kurmak için Arduino IDE'yi açın, Sketch> Include Library> Add .ZIP Library'ye gidin ve ardından indirdiğiniz SevSeg ZIP dosyasını seçin. Bir kitaplık kurma konusunda daha fazla ayrıntıya ihtiyacınız varsa, bu Arduino Kitaplığı Kurma öğreticisini ziyaret edin .

Kitaplığı kurduktan sonra, bu çizimi Arduino IDE'ye kopyalayabilirsiniz. Aşağıdaki test taslağı 0'dan 9'a kadar sayılacaktır. Krokiyi deneyin; ve sonra onu biraz detaylı olarak açıklayacağız.

#include "SevSeg.h"
SevSeg sevseg;

void setup()
{
	//Set to 1 for single digit display
	byte numDigits = 1;

	//defines common pins while using multi-digit display. Left empty as we have a single digit display
	byte digitPins[] = {};

	//Defines arduino pin connections in order: A, B, C, D, E, F, G, DP
	byte segmentPins[] = {3, 2, 8, 7, 6, 4, 5, 9};
	bool resistorsOnSegments = true;

	//Initialize sevseg object. Uncomment second line if you use common cathode 7 segment
	sevseg.begin(COMMON_ANODE, numDigits, digitPins, segmentPins, resistorsOnSegments);
	//sevseg.begin(COMMON_CATHODE, numDigits, digitPins, segmentPins, resistorsOnSegments);

	sevseg.setBrightness(90);
}

void loop()
{ 
   //Display numbers one by one with 2 seconds delay
   for(int i = 0; i < 10; i++)
   {
     sevseg.setNumber(i);
     sevseg.refreshDisplay(); 
     delay(2000);
   }
}

Kod Açıklaması:

Taslak, kontrolleri ve sinyalleri 7 segmente basitleştiren SevSeg kitaplığını dahil ederek başlar. Daha sonra taslak boyunca kullanabileceğimiz bir SevSeg nesnesi oluşturmalıyız.

#include "SevSeg.h"
SevSeg myDisplay;

Daha sonra, ekranın kaç basamağa sahip olduğunu belirtmeliyiz. Tek haneli bir ekran kullandığımız için 1'e ayarladık. 4 haneli bir ekran kullanıyorsanız, bunu 4'e ayarlayın.

//Set to 1 for single digit display
byte numDigits = 1;

DigitPins dizisi, çok basamaklı bir ekran kullanılırken basitçe 'ortak pinleri' tanımlar. Tek haneli bir ekranınız varsa boş bırakın. Aksi takdirde, tek tek basamakların 'ortak pinlerinin' bağlı olduğu arduino pin numaralarını sağlayın. Onları soldan sağa sıralayın.

//defines common pins while using multi-digit display
//Left empty as we have a single digit display
byte digitPins[] = {};

İlklendirildiğini gördüğümüz ikinci dizi, segmentPins dizisidir. Bu, segmentleri kontrol eden LED ekran üzerindeki pinlere bağlı tüm Arduino pin numaralarının bir dizisidir; bu durumda bunlar, devre tahtasından doğrudan Arduino'ya bağladıklarımızdır. Kütüphane pinlerin aşağıdaki sırada olduğunu varsaydığından, bunların da doğru sıraya konması gerekir: A, B, C, D, E, F, G, DP.

//Defines arduino pin connections in order: A, B, C, D, E, F, G, DP
byte segmentPins[] = {3, 2, 8, 7, 6, 4, 5, 9};

Bu değişkenleri oluşturduktan sonra, onları begin()işlev kullanarak SevSeg yapıcısına iletiriz .

//Initialize sevseg object
sevseg.begin(COMMON_ANODE, numDigits, digitPins, segmentPins, resistorsOnSegments);

'Döngü' bölümünde: Program 'for' döngüsünü ve 'i' değişkenini kullanarak 0'dan 9'a kadar saymaya başlar. Her seferinde, o SevSeg kütüphane işlevini kullanır setNumber()birlikte refreshDisplay ()ekrana üzerine sayısını ayarlamak için.

Ardından, 'i' artırılmadan ve sonraki sayı görüntülenmeden önce ikinci bir gecikme olur.

for(int i = 0; i < 10; i++)
{
     sevseg.setNumber(i);
     sevseg.refreshDisplay(); 
     delay(1000);
}

Arduino Projesi

Zar atmak

Ek olarak, erişilebilirlik teknolojisine ihtiyaç duyan kişilerin zar atmasını sağlayan başka bir proje. Bunu Yahtzee, ludo vb. Oyunları oynamak için kullanabilirsiniz. Hızlı yuvarlanma için dokunsal bir anahtar kullanmamız dışında aynı Arduino kurulumunu kullanır.

Rolling Dice Arduino Oyunu Kablolama Ortak Anot 7 Segmenti ile Fritzing Bağlantıları
Yuvarlanan Zar Arduino Projesi - Ortak Anot Yedi Segment Ekranının Arduino UNO'ya Kablolanması

Bir zarın tüm amacı, 1'den 6'ya kadar rastgele bir sayı bulmanın bir yolunu sağlamaktır. Ve rastgele bir sayı elde etmenin en iyi yolu, yerleşik bir rastgele işlevi (min, max) kullanmaktır . Bu iki parametre alır, ilki rastgele değerin alt sınırını (bu sayı dahil) ve ikinci parametre rasgele değerin üst sınırını belirtir (bu sayı hariç). Min ve max-1 arasında rastgele sayı üretilecek anlam

#include "SevSeg.h"
SevSeg sevseg; 
const int buttonPin = 10;     // the number of the pushbutton pin

// variables will change:
int buttonState = 0;         // variable for reading the pushbutton status

void setup(){
    byte numDigits = 1;
    byte digitPins[] = {};
    byte segmentPins[] = {3, 2, 8, 7, 6, 4, 5, 9};
    bool resistorsOnSegments = true;
 
    sevseg.begin(COMMON_ANODE, numDigits, digitPins, segmentPins, resistorsOnSegments);
    sevseg.setBrightness(90);
	
	// initialize the pushbutton pin as an input:
	pinMode(buttonPin, INPUT);
}

void loop()
{
	// read the state of the pushbutton value:
	buttonState = digitalRead(buttonPin);
  
	if (buttonState == HIGH) 
	{
		sevseg.setNumber(random(1,7));
		sevseg.refreshDisplay(); 
	}
}


Yedi Segment Arduino Projesi Rolling Dice Çıkışı

ANA SAYFAYA DÖN

Bahadır ÖZGEN
Electronic Robotic Coding Research and Development 1975 - ∞
Learn Forever
If you want, let's learn together...
https://roboticcode2020.blogspot.com/
bahadirozgen1975@gmail.com
facebook    robotic.code
instagram    @roboticcode


Sayfalarımı ziyaret ettiğiniz için teşekkür ederim.Bu sitede mevcut olan içerikler kendi oluşturduğum projeler yazı,resim ve videolardan oluşmaktadır.İçerik oluşturmak çok uzun sürdüğü için bazı projelerde yurtdışı kaynaklardan faydalandım.Buradaki amacım ticari değildir.Kaynağı belli olan ve bizim kaynağına ulaşabildiğimiz materyal (yazı, fotoğraf, resim, video v.b.) için ilgili konularda fotoğraflarda logo varsa v.b. not olarak gösterilecektir.Sitemizde yayınlanan tüm içerik, bizim tarafımızdan ve internet üzerinden youtube, facebook ve blog gibi paylaşıma sunulmuş kaynak sitelerden alındığı için, sitemiz yasal yükümlülüğe tabi tutulamaz. Sitemizde telif haklarının size ait olduğu bir içerik varsa ve bunu kaldırmamızı isterseniz, iletişim sayfamızdan bizimle iletişime geçtiğiniz takdirde içerik yayından kaldırılacaktır.Bu konu ve modüller ile uğraşarak, ileride çok güzel makine ve elektronik aletler yapabilirsiniz.

Hiç yorum yok:

Yorum Gönder

Yorum yazdığınız ve üye olduğunuz için Size teşekkür ederim.Burada olduğunuza göre hepimizin ilgi alanı Elektronik ve Programlama sonsuz bir dünyadayız.Hepimize Başarılar...

Not: Yalnızca bu blogun üyesi yorum gönderebilir.