IIC veri yolu üzerinden LCD görüntüleme bağlantısı

semaver

New member


  1. IIC veri yolu üzerinden LCD görüntüleme bağlantısı

Geçmiş bölümde, sıcaklık sensörlerine dikkat edildi. Bu bölümde, bir LCD ekranda ölçülen değerleri üretmek için devreyi genişletmek istiyoruz.



Son bölümde TMP36 sıcaklık sensörü ile veya alternatif olarak DS18B20 sensorpip ile sıcaklık ölçümleri için devre oluşturduk. Arduino, ölçülen değerleri seri monitör aracılığıyla ana bilgisayara gönderdi. Aşağıdaki devre kullanılmıştır:





DS18B20 ile 1 tel ile sıcaklık ölçümü



Örnek: DS18B20 sıcaklık sensörü ile 1 tel ile sıcaklık ölçümü




Yakışıklı. Ancak, çıktı için bir LCD ekran kullanabilirsek daha da etkileyici olurdu.

Arduino için, fiyatı sadece birkaç Euro olan, özellikle 16×2 ve 20×4 varyantları olan bir dizi ucuz LCD ekran var. Ancak, bağlantınız bir dizi dijital giriş gerektirir.





16x2 LCD ekranın Arduino kartına bağlantısı



16×2 LCD ekranın Arduino kartına bağlantısı



LCD çıkışının Arduino tarafından programlanması bir sorun değil, çünkü kimlik bunun için kütüphanesini zaten getirdi. Yukarıdaki devredeki potansiyometre, ekran parlaklığını ayarlamak için kullanılır.



Not: Bir potansiyometre (potansiyometre), direnç değeri düğmeyi döndürerek düzenlenebilen değişken bir dirençtir.

İşte 16x2LCD ekran kullanmak için örnek bir taslak:

#include <LiquidCrystal.h> // Benötigte Bibliothek für LCDs
// Angabe der angeschlossenen Arduino-Pins
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

void setup() {
// Das Display ist ein 16 x 2 Display
lcd.begin(16, 2);
// Nachricht am Display ausgeben
lcd.print("Hallo, iX!");
}

void loop() {
// Cursor auf zweite Zeile, 0. Spalte bewegen
lcd.setCursor(0, 1);
// Ausgabe der vergangenen Sekunden seit dem letzten Reset
lcd.print(millis()/1000);
}


Devrenin dezavantajı tam olarak Arduino bağlantılarının ekonomik yönetimi değildir. Ekranı kontrol etmek için yalnızca altı veri bağlantısına ihtiyacımız var. Herhangi bir çare var mı? Evet, kurtarmaya IIC veya bana denir2C (kare c). Arduino/ahududu/beaglebone'a dayanan IoT sistemleri için bir otobüs sistemi ve bu nedenle bir başka önemli blok.

BEN2B Otobüs


Yukarıda belirtilen otobüs sistemi, bugün NXP adıyla çalışan Philips'in eski yarı iletken bölümünden geliyor. 1982'de şirket, çeşitli IC'leri devrelere daha iyi bağlamak için IIC otobüsünü (entegre devre) geliştirdi. Bazen Kısalt Twi (iki weire arayüzü)2C.

BEN2C, 5 mbyte/saniyeye kadar destekler ve Master/Slave prensibine göre çalışır. Master ve köleler birbirine dört çizgi ile bağlanır: güç kaynağı voltajı, toprak, saat (SCL) ve veriler (SDA).





IIC-Bus, Master ve Köleleri 4 satıra bağlar



IIC-Bus, Master ve Köleleri 4 satıra bağlar


(Resim: wikipedia.org)



Üstat otobüsü ayarlar. Bayt transferi için tanımladım2C Başlangıç ve durdurma işaretlerinin yanı sıra bir ACK veya Nack onay sinyali. Öğretmen bir köle ile iletişim kurmak ister olmaz, 7 alt biti istenen köle adresini içeren bir bayt gönderir ve en yüksek bit, veri göndermek (=> sinyal işareti) veya almak isterse (üstte => sinyal) köle bilgilendirir. Verilerin master ile iletimi köle için çok hızlıysa, bireysel baytların aktarılması sırasında düşük saat çizgisini tutar.

Benim2C Açık drenaj girişleri için. Bu nedenle, usta ve kölelerde uygun çekme dirençlerine ihtiyaç vardır.

Wikipedia'da I2C hakkında bilgi bulabilirsiniz.





wikipedia.org



I²C veri yolu üzerindeki zamanın davranışı: B1'den BN'ye verilerin bitleri, başlangıç sinyali (E) ile tutuklama sinyali (P) arasında iletilir.


(Resim: wikipedia.org)



I üzerinden LCD görüntüleme bağlantısı2C


Arduino'dan I aracılığıyla bir LCD ekrana2C kontrol edebilmek için, uygun i ile 16×2 ekran var2Adaptör C kullanılır. Zaten bensiz bir ekranın var2C, yapabilirsin2C adaptörünü eBay, AliExpress veya Amazon üzerinden ayrı olarak satın alın. Fiyat birkaç Euro. Ekran satan tüccarlar genellikle bu tür adaptörler sunar. Gerekli kaynak işleri sınırlıdır ve aynı zamanda mümkündür. Tabii ki, örneğin 20×4 LCD şeklinde biraz daha fazla olabilir.

Bağlantı için2C-kabiliyeti bileşenleri, verilerin iletimi için Arduino ATS A4 ve A5 Pin'e ve I'in bir bağlantısına ihtiyacımız var2GND ve 5V Arduino çıkışlı bileşen C. Diğer Arduino kartlarıyla, SCL ve SDA için bağlantı noktaları başka yerlerde de olabilir.

LCD ekranda sıcaklık çıkışı


Aşağıdaki devre, sıcaklık sensörü dahil toplam yapıyı göstermeyi amaçlamaktadır. Bir taban olarak, bilinen devreyi DS18B20 sıcaklık sensörü ile kullanıyorum (yukarıdaki resme bakın). Bunun yerine, son bölümün devresini TMP36 (veya başka bir sıcaklık sensörü) ile de kullanabilirsiniz. Sıcaklık ve ekran gösterme devreleri bağımsız olarak tasarlanmıştır. Orada2Ekranda C adaptörünü çizmedim. Bu nedenle, belirli bağlantılar hakkında daha ayrıntılı bilgi için altyazıya dikkat edin.





LCD ekranın I2C bağlantısı olan devre (aşağıdaki kırmızı çizgi = 5V, siyah çizgi = GND, I2C adaptörünün A4 ve SDA'sının sarı yönü, A5'ten SCL DES I2C adaptörüne yeşil yönetim)



LCD ekranın I2C bağlantısı olan devre (aşağıdaki kırmızı çizgi = 5V, siyah çizgi = GND, I2C adaptörünün A4 ve SDA'sının sarı yönü, A5'ten SCL DES I2C adaptörüne yeşil yönetim)



Bir taslağın kodu altında görünebilir. LCD'yi kontrol etmek için yağ ile işaretlenmiş parçalar kullanılır. Diğer parçalar sıcaklık kaydı için orijinal çizimin bir parçasıdır. TMP36 gibi farklı bir sıcaklık sensörü kullanıyorsanız, kodu buna göre ayarlamanız gerekir.

Ben2Arduino fikrinde C-Library zaten dahil edildi, I aracılığıyla bir LCD ekranı yönetmeliyiz2C Bu bağlantıyı geçtiğimiz başka bir kütüphane. Her zaman olduğu gibi, zip dosyası eskiz menüsü aracılığıyla Arduino fikrine entegre edilir.

#include <OneWire.h>
#include <DallasTemperature.h>
#include <Wire.h>
// IIC-Bibliothek
#include <LiquidCrystal_I2C.h>
// LCD-Bibliothek für IIC
#define ONE_WIRE_BUS 2 // Data wire => Digitaler Pin 2 des Arduino
LiquidCrystal_I2C lcd(0x27,16,2);
// IIC-ID LCD: 0x27, Größe: 16x2
OneWire oneWire(ONE_WIRE_BUS); // Initialisieren des 1-Wire Bus
DallasTemperature sensors(&oneWire); // Übergabe der 1-Wire Info
void setup(void) {
lcd.init();
// LCD initialisieren
lcd.backlight(); // Hintergrundlicht einschalten
sensors.begin();
}

void loop(void) {
// Nun starten die eigentlichen Abfragen
sensors.requestTemperatures();

lcd.setCursor(0,0); // Cursor auf Beginn der 1. Zeile
lcd.print
("Temperatur in C");
lcd.setCursor(0,1);
// Cursor auf Beginn der 2. Zeile
lcd.print(sensors.getTempCByIndex(0)); // Temperatur ausgeben
}

İ2c cihazlar bul


En yakın listeyi incelerseniz, altıncı kod satırında kesinlikle ifade edersiniz. LCD (0x27.16.2) değer 0x27 İlk parametreyi bulabilirsiniz – 16 satır başına karakter sayısı, 2 satır sayısıdır. İLE 0x27 Ben mi2Kullandığım LCD ekran türünün tanımlayıcısı C. LCD ekranınız için ilgili kimliği bilmiyorsanız, aşağıdaki taslakta size yardımcı olabilirsiniz:

#include <Wire.h> // I2C einbinden
int count = 0; // Zahl der gefundenen I2C-Geräte
void setup() {
Serial.begin (9600); // Ausgaben erfolgen über seriellen Monitor
Wire.begin(); // Kommunikation starten (Arduino als Master)
} // end setup
void loop(){
count = 0; // Zahl gefundener Geräte
for (int i = 0; i < 128; i++){ // alle möglichen IDs scannen
Wire.beginTransmission (i);// Kommunikation mit Gerät(ID=i) testen
if (Wire.endTransmission () == 0) { // Erfolg!
Serial.print (”Gerät gefunden, ID = "); // Erfolgsmeldung
Serial.print (" 0x");
Serial.println(i, HEX);
count++;
} // end if
delay (10); // Kleine Pause
} // end for
Serial.print ("Gefundene Geräte insgesamt: ");
Serial.println (count);
} // end loop

Çok ben2C İnternet tarayıcılarının örnekleri 0 ila 255 arasında yukarıdaki döngüyü gerçekleştirir. Bu Arduino için gerekli değildir, çünkü tanımlama için sadece en düşük 7 bit kullanılır. Bu nedenle 127'ye kadar tanımlayıcılar için bir arama yeterlidir.

Özet


Bu bölüm esas olarak2B Otobüs ve I'in bağlantısı2LCD ekran olarak CS cihazları. Gelecekte en spartan hava istasyonunu diğer sensörler tarafından genişleteceğiz. İlgili blog yayınları hazırlanıyor.

Bununla birlikte, bir sonraki baskı ultrason ve kızılötesi sensörlerle ilgilenir. Çeşitlilik olmalı.


()
 
Üst