15 Haziran 2016 Çarşamba

Hello Raspberry Pi via Lazarus

Raspberry Pi üzerinden 6. (GND) ve 7. pinleri kullanarak lazarus ile oluşturduğumuz gui tabanlı uygulama ile bir led'i aç/kapa yaptıracağız. WiringPi kütüphanesi sisteme kurulu olmalıdır. Link olarak vereceğim uygulama dosyası içinde olsa da wrapper olarak lazarusta kullanmak için https://github.com/laz2wiringpi/laz2wiringpi bağlantısındaki pascal dosyası gereklidir.




Resimdeki gibi Raspberry Pi 2, BreadBoard, 1 LED ve 1 K direnç bağlantıları yapılır. Kod kısmına geçelim Lazarus'ta yeni bir proje oluşturun. Objeleri form üzerine aşağıdaki gibi yerleştirin. Button gibi görünenin ToggleBox olduğunu söylemem gerek ki kaynak kodu incelediğiniz de farkedeceksiniz.






Kaynak Kodlarımız:

unit main;

{$mode delphi}

interface

uses
  Classes, SysUtils, FileUtil, Forms, Controls, 
  Graphics, Dialogs, StdCtrls,
  ExtCtrls, h2wiringpi;

{ TForm1 }

type
  TForm1 = class(TForm)
    Image1: TImage;
    Label1: TLabel;
    Label2: TLabel;
    Shape1: TShape;
    ToggleBox1: TToggleBox;
    procedure FormCreate(Sender: TObject);
    procedure ToggleBox1Change(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
  end;

var
  Form1: TForm1;
  wiringPiSetupDone: boolean;

implementation

{$R *.lfm}

{ TForm1 }

procedure TForm1.ToggleBox1Change(Sender: TObject);
begin
  if not wiringPiSetupDone then wiringPiSetup;
  pinMode(7, OUTPUT);

  if (ToggleBox1.Checked) then
  begin
    digitalWrite(7, HIGH);
    Shape1.Brush.Color := clLime;
    Label2.Caption := 'LED durumu ON';
  end
  else
  begin
    digitalWrite(7, LOW);
    Shape1.Brush.Color := clGray;
    Label2.Caption := 'LED durumu OFF';
  end;

end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  if not wiringPiSetupDone then wiringPiSetup;
  wiringPiSetupDone:= true;
end;

end.



uses olarak h2wiringpi belirtmeyi unutmamak üzere kısaca açıklama yapmak gerekirse form create olayı ile wiringPiSetup fonksiyonunu modülü aktive etmek için çağırıyoruz. Program içinde aktive edildiği halde tekrar çağrılma durumunda hata vermemesi için wiringSetupDone boolean değişkeni kullanıldı bir nevi önlem. Bu basit proje için belki gereksiz olabilir ama olay karmaşık hale geldikçe işinize yarayacağı kesin.

pinMode fonksiyonu ile wiringPi 7 pini OUT yani çıkış moduna ayarlanır.

ToggleBox'a her tıklandığında aldığı checked değeri kontrol edilir duruma göre digitalWrite fonksiyonu çağırılır. İlk parametresi wiringPi isimlendirmesine göre pin no girilir. İkinci parametre ise LOW yada HIGH yani açık-kapalı olarak ilgili pine değer atamak olacaktır.

Programı derledikten sonra ilgili dizin içinden terminal açıp sudo komutu ile uygulamayı çalıştırmalısınız. ToogleBox'ın check durumuna göre ledin açık/kapalı konuma geçtiğini göreceksiniz.

İlgili projeyi aşağıdaki linkten indirebilirsiniz.
Link: LedOnOff folder from https://github.com/emartisoft/LazarusRaspberryPi

h2wiringpi.pas dosyası için link: https://yadi.sk/d/KF6nqss6sWn5a  veya https://github.com/laz2wiringpi/laz2wiringpi 

Hiç yorum yok:

Yorum Gönder