2 Temmuz 2016 Cumartesi

Instant Read Photocell Value on RaspberryPi via Lazarus

Lazarus ile derlenmiş ve kaynak dosyasını https://github.com/emartisoft/LazarusRaspberryPi/tree/master/PhotoCell adresinde bulabileceğiniz proje. Elektronik devreyi resimdeki elemanları ile kurduktan sonra projeyi çalıştırınız.





Çalışma mantığı şu şekilde: 

Timer nesnesi interval değeri nedeni ile her yarım saniyede bir değeri bir sayaç yardımı ile (counter değişkeni) sonucu sayısal forma dönüştürmemize yardım eder. Şöyle ki:

function TForm1.ReadPhotoCellValue(pin: integer): integer;
var
  counter: integer;
begin
  counter := 0;
  pinMode(pin, OUTPUT);
  digitalWrite(pin, LOW);
  delay(100);
  pinMode(pin, INPUT);

  repeat
    inc(counter);
  until (digitalRead(pin) = HIGH);

  result:= counter;
end;



Bu fonksiyon Timer ile belli periyotta tetiklenir. Fotoselden okunacak değeri counter değişkeni ile belirlememiz gerekiyor. İlgili Raspberry Pi pininin ilk önce OUTPUT ve LOW olarak ayarlıyor delay(100) ile bekleme yaptırıp pini tekrar INPUT hale çeviriyoruz. Amacımız ne kondansatörü doldur-boşalt arası geçen sürede counter değişkeninde artışa neden olarak bir değer döndürmek. Bu değer bize fotosel için anlık bir değer okuma verecektir.










Hiç yorum yok:

Yorum Gönder