LCD üzerinde metin görüntüleme

LCD karakterli ekranlar, harici monitöre gerek kalmadan bilgileri görüntülemek için kullanışlıdır. Yaygın LCD karakterli ekranlar doğrudan GPIO pinlerine bağlanabilir, ancak böyle bir yaklaşım için en fazla 10 GPIO pini kullanılması gerekir. Bir cihaz birleşimine bağlanmayı gerektiren senaryolar için GPIO üst bilgisinin büyük bir kısmını bir karakter ekranına ayırmak genellikle pratik değildir.

Birçok üretici entegre GPIO genişletici ile 20x4 LCD karakterli ekranlar satıyor. Karakter ekranı doğrudan GPIO genişleticisine bağlanır ve daha sonra Inter-Integrated Bağlantı Hattı (I2C) seri protokolü aracılığıyla Raspberry Pi'ye bağlanır.

Bu konuda, I2C GPIO genişletici kullanarak LCD karakter ekranında metin görüntülemek için .NET kullanacaksınız.

Önkoşullar

  • ARM tabanlı (ARMv7 veya üzeri) tek kartlı bilgisayar (SBC)
  • I 2 C arayüzlü 20x4 LCDKarakter Ekranı
  • Jumper telleri
  • Breadboard (isteğe bağlı/önerilen)
  • Raspberry Pi GPIO tartışma panosu (isteğe bağlı/önerilen)
  • .NET SDK 7 veya üzeri

Not

Bu öğretici, hedef cihazın Raspberry Pi olduğu varsayılarak yazılmıştır. Ancak bu öğretici Orange Pi, ODROID ve daha fazlası gibi .NET'i destekleyen linux tabanlı SBC'ler için kullanılabilir.

Not

LCD karakter ekranları birçok üretici vardır. Çoğu tasarım aynıdır ve üreticinin işlevsellik açısından hiçbir fark oluşturmaması gerekir. Başvuru için bu öğretici SunFounder LCD2004 ile geliştirilmiştir.

SBC'yi hazırlama

SBC'nizin aşağıdaki hizmetleri destekleyecek şekilde yapılandırıldığından emin olun:

  • SSH
  • I2C

Birçok cihaz için ek yapılandırma gerekmez. Raspberry Pi için komutunu kullanın raspi-config . hakkında raspi-configdaha fazla bilgi için Raspberry Pi belgelerine bakın.

Donanımı hazırlama

I2C GPIO genişleticideki dört raptiyeyi Raspberry Pi'ye bağlamak için jumper tellerini kullanın:

  • GND'yi yere
  • VCC'yi 5V'ye
  • SDA-SDA (GPIO 2)
  • SCL'yi SCL'ye (GPIO 3)

Gerektiğinde aşağıdaki şekillere bakın:

I2C arabirimi (ekranın arkası) Raspberry Pi GPIO
Karakter ekranının arka kısmının I2C GPIO genişleticisini gösteren görüntüsü. Raspberry Pi GPIO üst bilgisinin sabitlemesini gösteren diyagram. Görüntü, Raspberry Pi Foundation'ın izniyle.
Görüntü, Raspberry Pi Foundation'ın izniyle.

İpucu

GPIO üst bilgisine bağlantıları kolaylaştırmak için bir içerik panosuyla birlikte GPIO tartışma panosu önerilir.

Uygulama oluşturma

Tercih ettiğiniz geliştirme ortamında aşağıdaki adımları tamamlayın:

  1. .NET CLI veya Visual Studio kullanarak yeni bir .NET Konsol Uygulaması oluşturun. Ona LcdTutorial adını verin.

    dotnet new console -o LcdTutorial
    cd LcdTutorial
    
  2. Iot.Device.Bindings paketini projeye ekleyin. Proje dizininden veya Visual Studio'dan.NET CLI kullanın.

    dotnet add package Iot.Device.Bindings --version 2.2.0-*
    
  3. Program.cs dosyasının içeriğini aşağıdaki kodla değiştirin:

    using System;
    using System.Device.Gpio;
    using System.Device.I2c;
    using System.Threading;
    using Iot.Device.CharacterLcd;
    using Iot.Device.Pcx857x;
    
    Console.WriteLine("Displaying current time. Press Ctrl+C to end.");
    
    using I2cDevice i2c = I2cDevice.Create(new I2cConnectionSettings(1, 0x27));
    using var driver = new Pcf8574(i2c);
    using var lcd = new Lcd2004(registerSelectPin: 0, 
                            enablePin: 2, 
                            dataPins: new int[] { 4, 5, 6, 7 }, 
                            backlightPin: 3, 
                            backlightBrightness: 0.1f, 
                            readWritePin: 1, 
                            controller: new GpioController(PinNumberingScheme.Logical, driver));
    int currentLine = 0;
    
    while (true)
    {
        lcd.Clear();
        lcd.SetCursorPosition(0,currentLine);
        lcd.Write(DateTime.Now.ToShortTimeString());
        currentLine = (currentLine == 3) ? 0 : currentLine + 1; 
        Thread.Sleep(1000);
    }
    

    Yukarıdaki kodda:

    • using bildirimi, çağrısı deviceAddress yaparak ve parametreleriyle yeni I2cConnectionSettings bir öğesini geçirerek I2cDevice.Create örneğini I2cDevicebusId oluşturur. Bu I2cDevice , I2C veri yolunu temsil eder. Bildirimi, using nesnenin atılmasını ve donanım kaynaklarının düzgün bir şekilde serbest bırakılmasını sağlar.

      Uyarı

      GPIO genişleticisinin cihaz adresi, üretici tarafından kullanılan yongaya bağlıdır. PCF8574 ile donatılmış GPIO genişleticileri adresini 0x27kullanırken, PCF8574A yongaları kullananlar adresini kullanır 0x3F. LCD'nizin belgelerine bakın.

    • Başka bir using bildirim, öğesinin bir örneğini Pcf8574 oluşturur ve oluşturucuya geçirir I2cDevice . Bu örnek GPIO genişleticisini temsil eder.

    • Başka bir using bildirim, ekranı temsil etmek için bir örneği Lcd2004 oluşturur. GPIO genişleticisiyle iletişim kurmak için kullanılacak ayarları açıklayan birkaç parametre oluşturucuya geçirilir. GPIO genişletici parametre olarak controller geçirilir.

    • Döngü while süresiz olarak çalışır. Her yineleme:

      1. Ekranı temizler.
      2. İmleç konumunu geçerli satırdaki ilk konuma ayarlar.
      3. Geçerli saati geçerli imleç konumundaki ekrana yazar.
      4. Geçerli satır sayacını yineler.
      5. 1000 ms uyuyor.
  4. Uygulamayı oluşturun. .NET CLI kullanıyorsanız komutunu çalıştırın dotnet build. Visual Studio'da derlemek için Ctrl+ ShiftBtuşlarına+ basın.

  5. Uygulamayı SBC'ye bağımsız bir uygulama olarak dağıtın. Yönergeler için bkz. Raspberry Pi'ye .NET uygulamaları dağıtma. kullanarak chmod +xyürütülebilir yürütme izni verdiğinizden emin olun.

  6. Raspberry Pi'de uygulamayı çalıştırmak için dağıtım dizinine geçin ve yürütülebilir dosyayı çalıştırın.

    ./LcdTutorial
    

    Her satırda geçerli saat görüntülenirken LCD karakter ekranını gözlemleyin.

    İpucu

    Ekran yanıyorsa ancak metin görmüyorsanız, ekranın arka tarafındaki karşıtlık kadranını ayarlamayı deneyin.

  7. Ctrl+C tuşlarına basarak programı sonlandırın.

Tebrikler! I2C ve GPIO genişletici kullanarak LCD'de metin görüntülediniz!

Kaynak kodunu alma

Bu öğreticinin kaynağı GitHub'da kullanılabilir.

Sonraki adımlar