Robotik Kodlama

Robotik Kodlama
Ana Sayfa

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

7 segment etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
7 segment etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

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.

30 Nisan 2021 Cuma

TM1637 Modül 4 Haneli 7 Segment Display ve Arduino

 

TM1637 Modül 4 Haneli 7 Segment Display ve Arduino





Bir sonraki projenizde bir saat, zamanlayıcı veya sayaç tasarlamak istiyorsanız, 4 basamaklı yedi bölümlü bir ekrana ihtiyacınız olacak. Ancak, çıplak 4 basamaklı 7 segmentli bir ekran genellikle 12 bağlantı pini gerektirir. Bu oldukça fazladır ve diğer modüllere ve sensörlere yer bırakmaz.

Sonuçta, tonlarca kablo olmadan 4 basamaklı yedi segmentli bir ekranı kontrol edebilseydiniz harika olmaz mıydı? TM1637 modülünün devreye girdiği yer burasıdır. TM1637 modülü, pin bağlantılarını dörde düşürür. Güç bağlantıları için iki pin kullanılır ve diğer iki pin segmentleri kontrol etmek içindir.



7 Segmentli Görüntü Temelleri

7 segmentli ekranlar, aslında belirli bir düzende ('8' şekli) sıralanan yedi LED'dir. Yedi LED'in her birine segment adı verilir, çünkü yandığında segment sayısal bir basamağın (hem ondalık hem de onaltılık) bir parçasını oluşturur.

7 segmentli dahili led oluşumu

Bu ayrı segmentler, her bir LED'i temsil eden "A" dan "G" ye kadar etiketlenmiştir. Belirli segmenti YÜKSEK veya DÜŞÜK olarak ayarlayarak, istenen bir karakter modeli oluşturulur.

7 segment karakter üretimi


TM1637 Modüle Genel Bakış

Modülün merkezinde, Titan MicroElectronics - TM1637'den ucuz bir seri LED sürücüsü bulunmaktadır .

tm1637 donanım genel bakış çipi

TM1637, LED'lerin AÇIK / KAPALI ve parlaklık kontrolünün yanı sıra her bir segmente erişim dahil olmak üzere birçok işlevi destekler. Ayrıca, LED'lerin parlaklığını yazılım düzeyinde ayarlamanıza da olanak tanır.

Ve bir başka güzel şey de, ekran mikro denetleyici tarafından güncellendiğinde, TM1637 daha sonra ekranı yenilemek için gereken tüm işi hallediyor. Böylece mikrodenetleyiciden ek yük kaldırılır, bu da diğer önemli şeyleri yapmayabilir.

tm1637 donanıma genel bakış led ekran

TM1637 modülü, sensör verilerini veya sıcaklığı görüntülemek için dört adet 0.36 segmentli 7 segmentli ekran içerir. Dört 7 segmente ek olarak, modülün merkezinde saat veya zaman tabanlı projeler oluşturmayı çok kolaylaştıran bir 'kolon' vardır.

TM1637 modülü, 3,3 ila 5 voltluk bir besleme voltajında ​​çalışır ve iki kablolu bir veri yolu üzerinden iletişim kurar, bu nedenle yalnızca iki veri pini artı VCC ve toprak gerektirir. Veri yolu bu cihaza özeldir, ancak Arduino için karmaşıklıkları gizleyen ve ekranla iletişim kurmayı kolaylaştıran kitaplıklar vardır.

TM1637 Modül Bağlantı Düzeni

Modül üzerinde bağlantı yapmak için 4 pinli dik açılı erkek başlık bulunmaktadır.

tm1637 4 basamaklı 7 segmentli ekran modülü pin çıkışı

CLKbir saat giriş pinidir. Arduino'daki herhangi bir dijital pime bağlayın.

DIObir Veri G / Ç pinidir. Arduino'daki herhangi bir dijital pime bağlayın.

VCCpin modüle güç sağlar. 3.3V ila 5V güç kaynağına bağlayın.

GND bir toprak pimidir.

Arduino UNO ile Bağlantı TM1637 Modülü

TM1637'yi bir Arduino'ya bağlamak çok basit. Yalnızca dört kabloyu bağlamanız gerekir: ikisi güç için ve ikisi ekranı kontrol etmek için.

Modül, Arduino'nun 5 voltluk çıkışından güvenli bir şekilde beslenir. CLK ve DIO pinleri, Arduino'nun 2 ve 3 numaralı dijital pinlerine bağlanır.

TM1637 ile deneyler için bağlantı aşağıdadır:

arduino ile kablolama tm1637 modülü

Arduino'da kullanılan pinlerin hiçbiri kritik değildir çünkü modül herhangi bir pime özgü özellik gerektirmez, bu nedenle farklı pinler kullanmak istiyorsanız bunu güvenle yapabilirsiniz. Kablolardaki herhangi bir değişikliği yansıtmak için koddaki pin numaralarını değiştirdiğinizden emin olun.

Kütüphane Kurulumu

TM1637 yongasıyla konuşmak için bir kitaplık kullanmanız gerekir. Avishay Orpaz, TM1637 ekranlar için mükemmel bir kütüphane olan TM1637 Ekran kütüphanesi yazmıştır . Bu kitaplık, ekranı kontrol etmeyi oldukça kolaylaştıran birçok yerleşik işleve sahiptir. Sadece hangi numaranın görüntüleneceğini belirlersiniz ve sizin için işlenir.

Kitaplığı kurmak için Sketch> Dahil Et> Kitaplıkları Yönet'e gidin  Kitaplık Yöneticisinin kitaplıklar dizinini indirmesini ve kurulu kitaplıkların listesini güncellemesini bekleyin.

Arduino Kitaplığı Kurulumu - Arduino IDE'de Kitaplıkları Yönetmeyi Seçme

Aramanızı ' tm1637 ' yazarak filtreleyin Avishay Orpaz'ın kütüphanesini arayın . Bu girişe tıklayın ve ardından Yükle'yi seçin.

tm1637 ekran kitaplığı kurulumu

Temel Arduino Kodu

Aşağıda, bir dizi farklı rutinden geçen temel bir test programı bulunmaktadır. Devam edin ve Arduino'nuza yükleyin.

// Include the library
#include <TM1637Display.h>

// Define the connections pins
#define CLK 3
#define DIO 4

// Create a display object of type TM1637Display
TM1637Display display = TM1637Display(CLK, DIO);

// Create an array that turns all segments ON
const uint8_t allON[] = {0xff, 0xff, 0xff, 0xff};

// Create an array that turns all segments OFF
const uint8_t allOFF[] = {0x00, 0x00, 0x00, 0x00};

// Create an array that sets individual segments per digit to display the word "dOnE"
const uint8_t done[] = {
  SEG_B | SEG_C | SEG_D | SEG_E | SEG_G,           // d
  SEG_A | SEG_B | SEG_C | SEG_D | SEG_E | SEG_F,   // O
  SEG_C | SEG_E | SEG_G,                           // n
  SEG_A | SEG_D | SEG_E | SEG_F | SEG_G            // E
};

// Create degree celsius symbol
const uint8_t celsius[] = {
  SEG_A | SEG_B | SEG_F | SEG_G,  // Degree symbol
  SEG_A | SEG_D | SEG_E | SEG_F   // C
};

void setup() {

}

void loop() {
	// Set the brightness to 5 (0=dimmest 7=brightest)
	display.setBrightness(5);

	// Set all segments ON
	display.setSegments(allON);

	delay(2000);
	display.clear();

	// Show counter 0-9
	int i;
	for (i = 0; i < 10; i++) {
		display.showNumberDec(i);
		delay(50);
	}

	delay(2000);
	display.clear();

	display.showNumberDec(-12);			// Prints _-12
	delay(2000);
	display.clear();
	
	display.showNumberDec(-999);		// Prints -999
	delay(2000);
	display.clear();
	
	display.showNumberDec(31, false);	// Prints __31
	delay(2000);
	display.clear();
	
	display.showNumberDec(31, true);	// Prints 0031
	delay(2000);
	display.clear();
	
	display.showNumberDec(14, false, 2, 1);	// Prints _14_
	delay(2000);
	display.clear();
	
	display.showNumberDec(-5, false, 3, 0);	// Prints _-5_
	delay(2000);
	display.clear();

	// Prints 12:34
	display.showNumberDecEx(1234, 0b11100000, false, 4, 0);

	delay(2000);
	display.clear();

	// Prints 15°C
	int temperature = 15;
	display.showNumberDec(temperature, false, 2, 0);
	display.setSegments(celsius, 2, 2);

	delay(2000);
	display.clear();
	
	// Prints dOnE
	display.setSegments(done);

	while(1);
}

Kod Açıklaması:

Çizim, kitaplığın dahil edilmesi ve TM1637 ekranını bağlamak için kullanılan pimlerin tanımlanmasıyla başlar.

#include <TM1637Display.h>

#define CLK 3
#define DIO 4

Ardından, işlevle TM1637Display sınıfının yeni bir örneği oluşturulur TM1637Display()Bu fonksiyon iki parametre gerektirir, ilki CLK pini ve ikincisi DIO pini.

TM1637Display display = TM1637Display(CLK, DIO);

Ekranın ayrı bölümlerini ayarlamanın iki yolu vardır. Görüntünün ayrı bölümlerini ayarlayan kodun kurulum bölümünden önce birkaç dizi tanımlanır. Fonksiyonu setSegments()daha sonra ekrana yazmak için kullanacağız.

Ayrı segmentleri ayarlamak için ilk seçenek, onaltılık sayılar kullanmaktır. Onaltılık 0xFF, ikili olarak 11111111'e çevrilir ve tüm segmentleri AÇIK hale getirir. Örneğin 0xEF, 11101111'e çevirir ve E segmenti dışındaki tüm segmentleri AÇIK hale getirir, 0x00 ise tüm segmentleri KAPATIR.

Saymanın sağdan sola gittiğini, bu nedenle 11111111 segmentinin (nokta) GFEDCBA'ya karşılık geldiğini unutmayın.

// Create an array that turns all segments ON
const uint8_t allON[] = {0xff, 0xff, 0xff, 0xff};

// Create an array that turns all segments OFF
const uint8_t allOFF[] = {0x00, 0x00, 0x00, 0x00};

Ayrı segmentleri ayarlamak için başka bir seçenek, açmak istediğiniz segmentleri belirlemektir. Bu seçenek biraz daha kolaydır. Aşağıdaki koda bakın. İlk parçacık "dOnE" sözcüğünün ekranda yazdırılmasına yardımcı olurken, ikinci parçacık ekranda "° C" yazdırılmasına yardımcı olur.

// Create an array that sets individual segments per digit to display the word "dOnE"
const uint8_t done[] = {
  SEG_B | SEG_C | SEG_D | SEG_E | SEG_G,           // d
  SEG_A | SEG_B | SEG_C | SEG_D | SEG_E | SEG_F,   // O
  SEG_C | SEG_E | SEG_G,                           // n
  SEG_A | SEG_D | SEG_E | SEG_F | SEG_G            // E
};

// Create °C symbol
const uint8_t celsius[] = {
  SEG_A | SEG_B | SEG_F | SEG_G,	// °
  SEG_A | SEG_D | SEG_E | SEG_F		// C
};

Ayarlanacak hiçbir şey olmadığından kurulum bölümü boş tutulur.

void setup() {
}

Kodun döngü bölümünde birçok kütüphane işlevi kullandık. Onları tek tek öğrenelim.

setBrightness ( parlaklık , açık )

Bu işlev, ekranın parlaklığını ayarlamak için kullanılır. 0 (en düşük parlaklık) ile 7 (en yüksek parlaklık) arasında bir parlaklık seviyesi belirleyebilirsiniz. İkinci argüman isteğe bağlıdır ve ekranı AÇMAK veya KAPATMAK için kullanılabilir. Doğru (ekran AÇIK) veya yanlış (ekran KAPALI) olarak iletebilirsiniz.

Örneğin , ekranı kapatırken display.setBrightness(5)parlaklığı 5 olarak ayarlar display.setBrightness(5, false).

setSegments ( segmentler [] , uzunluk , konum )

Bu işlev, bir ekranın ayrı bölümlerini ayarlamak için kullanılabilir. İlk argüman, segment bilgilerini içeren dizidir. İkinci bağımsız değişken güncellenecek basamak sayısını (0-4) belirtir. "DOnE" kelimesini yazdırmak istiyorsanız, 4 olacaktır, "° C" sembolü için 2 olacaktır. Üçüncü bağımsız değişken, yazdırmak istediğiniz konumu belirler (0-en sol, 3-en sağ) .

İşlevin ikinci ve üçüncü bağımsız değişkeninin isteğe bağlı olduğuna dikkat edin. Bu nedenle, ekranın tüm rakamlarını güncellemek istiyorsanız, bunları atlayabilirsiniz. Örneğin, aşağıdaki kod parçacığı önce ekranın tüm bölümlerini açacak ve ardından "dOnE" yazdıracaktır.

// Set all segments ON
display.setSegments(allON);

// Prints dOnE
display.setSegments(done);

Bununla birlikte, "° C" sembolünü yazdırmak için ekranın yalnızca son iki basamağını güncellemek istiyorsanız, şunu kullanmalısınız:

// Prints __°C
display.setSegments(celsius, 2, 2);

showNumberDec ( sayı , baştaki_ sıfır , uzunluk , konum )

Bu, en çok kullanacağınız işlevdir. İlk argüman, ekranda görüntülemek istediğiniz bir sayıdır. Argümanların geri kalanı isteğe bağlıdır.

Örneğin, aşağıdaki kod parçacığı 0'dan 9'a kadar sayacak ve ardından ekranda -12 ve -999 yazdıracaktır.

// Show counter 0-9
int i;
for (i = 0; i < 10; i++) {
	display.showNumberDec(i);
	delay(50);
}

display.showNumberDec(-12);			// Prints _-12

display.showNumberDec(-999);		// Prints -999

İkinci bağımsız değişken, bir sayıyı baştaki sıfırlarla doldurmak için kullanılabilir. Bunu true olarak ayarlamak bir sayıya baştaki sıfırları ekler ve bunu false olarak ayarlamak sayıyı olduğu gibi yazdırır. Örneğin,

display.showNumberDec(31, false);	// Prints __31

display.showNumberDec(31, true);	// Prints 0031

Üçüncü ve dördüncü argüman, önceki işlevdeki ile aynıdır. uzunluk güncellenecek basamak sayısını (0-4) belirtir ve konum yazdırmak istediğiniz konumu belirler (0-en sol, 3-en sağ).

Bu nedenle, sayıyı ekranın ortasında göstermek isterseniz şunu yazarsınız:

display.showNumberDec(14, false, 2, 1);	// Prints _14_

display.showNumberDec(-5, false, 3, 0);	// Prints _-5_

showNumberDecEx ( sayı , noktalar , baştaki_ sıfırlar , uzunluk , konum )

Bu, showNumberDec()işlevin genişletilmiş bir sürümüdür Sadece ikinci argümanın farklı olduğunu görebilirsiniz. Bu argüman, ekranın noktalarını kontrol etmenizi sağlar. Aşağıdaki değerleri kullanabilirsiniz.

Her rakam arasında noktalar bulunan TM1637 ekranlar için:

ArgümanNoktalarMisal
0b10000000 .   1.234
0b01000000  .  12.34
0b00100000   . 123.4
0b11100000 . . . 1.2.3.4

Yalnızca iki nokta üst üste işaretli TM1637 ekranlar için:

ArgümanNoktalarMisal
0b01000000  :  12:34

Nokta ve iki nokta üst üste bulunan TM1637 ekranlar için:

ArgümanNoktalarMisal
0b11100000 . : . 1.2: 3.4

Bu nedenle, orta kolon etkinleştirilmiş bir saat görüntülemek istiyorsanız, aşağıdaki gibi bir şey kullanırsınız:

// Prints 12:34
display.showNumberDecEx(1234, 0b11100000, false, 4, 0);

Arduino Projesi - TM1637 ve DHT11 / DHT22 ile Termometre Oluşturma

TM1637 ekranının en iyi kullanımı sıcaklık, nem, voltaj veya hız gibi sensör okumalarını görüntülemektir. Aşağıdaki proje, TM1637 ekranında DHT11 / DHT22'den sıcaklık okumalarını görüntüler.

DHT11 / DHT22 modülüne aşina değilseniz, bu öğreticiyi okumayı (en azından gözden geçirmeyi) düşünün.

Aşağıdaki bağlantı şeması, DHT11 / DHT22 sensörünü TM1637 ekranıyla birlikte Arduino'ya nasıl bağlayabileceğinizi gösterir.

arduino ile dijital termometre kablolama tm1637 ve dht11 modülü

Aşağıdaki çizim DHT11 / DHT22 sensörüyle iletişim kurar ve ekranda sıcaklık okumalarını gösterir. Sıcaklık, 2 saniye aralıklarla Celius ve Fahrenheit cinsinden görüntülenir. Kod, Adafruit DHT sensörünü ve Adafruit Birleşik Sensör kitaplıklarını kullanır, bu nedenle lütfen bunları da kurun.

// Include the libraries
#include <TM1637Display.h>
#include <Adafruit_Sensor.h>
#include <DHT.h>

// Define the connections pins
#define CLK 3
#define DIO 4
#define DHTPIN 5

// Create variable
int temperature_celsius;
int temperature_fahrenheit;

// Create °C symbol
const uint8_t celsius[] = {
	SEG_A | SEG_B | SEG_F | SEG_G,  // Circle
	SEG_A | SEG_D | SEG_E | SEG_F   // C
};

// Create °F symbol
const uint8_t fahrenheit[] = {
	SEG_A | SEG_B | SEG_F | SEG_G,  // Circle
	SEG_A | SEG_E | SEG_F | SEG_G   // F
};

// Uncomment whatever type you're using!
//#define DHTTYPE DHT11   // DHT 11 
#define DHTTYPE DHT22   // DHT 22  (AM2302)

// Create display object of type TM1637Display
TM1637Display display = TM1637Display(CLK, DIO);

// Create dht object of type DHT:
DHT dht = DHT(DHTPIN, DHTTYPE);

void setup() {
	// Set the display brightness (0-7)
	display.setBrightness(5);
	
	// Clear the display
	display.clear();
	
	// Setup sensor
	dht.begin();
}

void loop() {
	// Read the temperature as Celsius and Fahrenheit
	temperature_celsius = dht.readTemperature();
	temperature_fahrenheit = dht.readTemperature(true);

	// Display the temperature in celsius format
	display.showNumberDec(temperature_celsius, false, 2, 0);
	display.setSegments(celsius, 2, 2);
	delay(1000);

	// Display the temperature in fahrenheit format
	display.showNumberDec(temperature_fahrenheit, false, 2, 0);
	display.setSegments(fahrenheit, 2, 2);
	delay(1000);
}

Arduino Projesi - TM1637 ve DS3231 ile saat oluşturma

TM1637 ekranının diğer bir tipik kullanımı, onu DS3231 RTC modülüyle eşleştirmek ve 24 saatlik bir saat oluşturmaktır.

DS3231 RTC modülüne aşina değilseniz, öğreticiyi okumayı düşünün.

Ardından, aşağıda gösterildiği gibi DS3231'e bir bağlantı yapmamız gerekiyor. TM1637 ekranının öncekiyle aynı şekilde bağlandığını unutmayın.

arduino ile dijital 24 saat saat kablolama tm1637 ve ds3231 modülü

Aşağıdaki çizim, saati 24 saatlik zaman biçiminde göstermektedir. Kod, RTClib ' arayarak Arduino IDE'deki Kitaplık Yöneticisi aracılığıyla kurabileceğiniz Adafruit RTC kitaplığını kullanır .

// Include the libraries
#include "RTClib.h"
#include <TM1637Display.h>

// Define the connections pins
#define CLK 3
#define DIO 4

// Create rtc and display object
RTC_DS3231 rtc;
TM1637Display display = TM1637Display(CLK, DIO);

void setup() {
	// Begin serial communication
	Serial.begin(9600);

	// Check if RTC is connected correctly
	if (! rtc.begin()) {
		Serial.println("Couldn't find RTC");
		while (1);
	}
	// Check if the RTC lost power and if so, set the time
	if (rtc.lostPower()) {
		Serial.println("RTC lost power, lets set the time!");
		// The following line sets the RTC to the date & time this sketch was compiled:
		rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
		// This line sets the RTC with an explicit date &

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.