Kayıtlar

free pascal

  Free pascal , ücretsiz ve açık kaynaklı bir bilgisayar yazılımı derleyicisidir. Derleyicisi, kısaca FPC olarak anılmaktadır. (Üniversite 1. sınıfta Fortran 77 dersimiz vardı. Bizden sonraki dönemlerde pascal'a geçilmişti.) Pascal programlama dili ile ilgili birçok türkçe veya ingilizce kaynak internette bulunmaktadır. Derleyici : Yazılımcının yazdığı programı, bilgisayarın anlayacağı  makine koduna dönüştürür. Pascal ailesinin diğer derleyicileri olan Turbo Pascal veya Delphi için youtube eğitim videolarını izlersen pascal programlama dilinin temel komutlarını öğrenebilirsin. Örneğin bu listede ve burada bulunan türkçe videolarda geçen kodları free pascal ile rahatlıkla test edebilirsin. Diğer taraftan, Delphi ticari bir yazılım olarak satılmakta ve bu dil ile yazılan her program, free pascal ile de çalışır diye de bir kural yoktur..  Lazarus Lazlarla veya ruslarla ilgisi yoktur. Free pascal ile kolayca program oluşturmanızı sağlayan bir Cross-Platform IDE'sid...

NodeMCU ile Lua ve MicroPython

Resim
  NodeMCU, üzerinde ESP8266-12E/F modülünü içeren bir geliştirme kartıdır. Daha önce bu kartı Arduino IDE ile programlayarak modbus TCP slave yapmıştık. Bacak özellikleri, usb sürücü yükleme gibi detaylar için o yazıya bakabilirsin. Kartın fiyatı oldukça düşük 3$ civarında bulunabiliyor. Daha gelişmiş özelliklere sahip ESP32 ise 6$ civarında piyasada bulunabiliyor. NodeMCU, Arduino IDE dışında Lua ve Micropython ile de programlanabiliyor. Dosya sisteminin kolay bir şekilde kullanılması ve utf-8 formatını desteklediğinden Micropython ortamı daha çok hoşuma gitti. Diğer taraftan örneğin kartı, tcp-seri port çevirici yapan Lua kodu  ( tcp2uart.lua )  gerçekten işe yarıyor. Benzer bir kodu Micropython için internette bulamadım.  Gereken dosya kurulumlarını Windows 10 ortamında yaptım ama dosyalar Linux veya Mac ortamına da kurulabiliyor. Kart üzerinde wifi, seri port, GPIO, I2C, SPI, PWM, ADC gibi özellikler bulunuyor. Cihaz, access point veya station modunda çalışabil...

Bonsai3D yazıcı

Resim
  Youtube'da izle..  (sesi açmayı unutma) Yeni bir Reprap tarzı 3D yazıcı montajı yaptım.  Orjinal tasarımı , parçaların daha kolay basılabilmesi açısından ve elimdeki malzemelere göre biraz değiştirdim. Bonsai3D parçalarını thingiverse'den indirip basabilirsin. Burada da yazıcının bir kaç resmini görebilirsin. Reprap yazıcı, parayla satılmayan kendimizin yaptığı yazıcılardır. Baskı alanının, dolayısıyla kendisinin küçük ve taşınabilir olması, elimde yazıcı yapacak malzemelerin olması beni bu yazıcıyı yapmaya teşvik etti. Yazıcının baskı alanı 130x140x100mm dir.  Yazıcı yapılırken 20x20 alüminyum sigma profil kullanılıyor. Profil boylarını, orjinal tasarım dosyalarını indirdiğinde, Bonsai_BOM dizininde görebilirsin. Benim tasarım farklı olduğundan x ekseni profilleri 190mm, z ekseni profilleri (2 adet), 230mm olmalıdır. Y ekseni profilleri 220mm olarak kalabilir. Filament rulosunun oturduğu en üstteki profil 300mm olabilir. Yatak (Bed.stl 120x140mm) için ısıtı...

Durum Makineleri (State Machines)

Resim
  Durum makinesi, önceki durumlardan gelen değerlere veya sistem girdilerine bağlı olarak durumlara dinamik akış sağlayan bir programlama mimarisidir. Bu mimari, aşağıdakilerin bir kombinasyonu olarak tanımlanabilecek uygulamalar için uygundur: Durumlar (states) Belirli bir duruma ne zaman geçileceğini belirleyen karar verme mantığı Bir durum, programın genel görevini yerine getirirken program içindeki durum olarak tanımlanabilir. Durum örnekleri başlatma, bekleme, bir hesaplama çalıştırma, durumu kontrol etme vb. olabilir. Mantıksal ifadeler yeni bir duruma ne zaman geçileceğini ve hangi duruma geçileceğini belirlemeye yardımcı olur. Olaylar bir durumdan diğerine geçişi tetiklemek için kullanılabilir. Bunlar programatik olaylar olabileceği gibi bir butona basmak gibi kullanıcı tanımlı olaylar da olabilir. Durum Makinesindeki her durum benzersiz bir şey yapar ve diğer durumları çağırır. Böylece işlemler belli bir sırayla yapılabilir. Örneğin, resimde gördüğünüz state şemasına ...

PureBasic - GUI Yanıt Vermiyor

Resim
  Resimde, pencerenin başlık bölümünde (Yanıt Vermiyor) yazdığını fark etmemiş olabilirsiniz. Aşağıda yanlış kodlanmış bir program örneği göreceksiniz. Bu programı, çalıştırıp, Check me kutucuğuna tıklarsanız veya pencereyi başlık kısmından tutup sürüklerseniz (taşırsanız) herhangi bir sorun olmayacaktır. Start butonuna tıkladıktan sonra bir şey yapmadan beklerseniz yine bir sorun olmayacaktır.  Amma velakin, Start butonuna tıkladıktan sonra aynı işlemleri yapmayı denerseniz, yapamadığınızı görürsünüz. Program size tepki veremeyecek ve çakılacaktır. Program, 20 saniye sonra loop (döngü) bittiğinde normale dönecektir. Start butonuna tıklayınca program Test_LongLoop() prosedürüne gider. Orada zaman alan bir For-Next döngüsüne girer. Bu esnada pencerede veya formda oluşan olaylarla ilgilenemez ve çakılır. Formda oluşan, butona tıklama veya pencereyi taşıma olayları'nı ihmal etmemek gerekiyor. Program yazarken sürekli olarak, oluşan olayları tüketmemiz gerekiyor. Tüketmez, ih...

PureBasic 4 - GUI programlama

Resim
  PureBasic ile resimdekine benzer arayüzleri komutlarla oluşturabiliyoruz. Aşağıdaki programda #ANA_PENCERE ve #BAYRAK bizim tanımladığımız sabit değerlerdir. #PB_Event_CloseWindow gibi PB ile başlayan sabitler, PureBasic içinde önceden tanımlı olan değerlerdir. Editörde menüden Tools -> Structure Viewer a tıklayın. Burada Constants (sabitler) sekmesine gelin. P harfine basıp bu sabiti bulun. Değerinin 13116 olduğunu görürsünüz. Programı çalıştırınca (F5), Event (oluşan olaylar) numaralarını, Debug penceresinde görürsünüz. Merhaba Dünya pencerisini kapattığınız anda Debug penceresinde en son 13116 yazdığını göreceksiniz. #ANA_PENCERE = 1 #BAYRAK = #PB_Window_SystemMenu | #PB_Window_ScreenCentered OpenWindow(#ANA_PENCERE, 0, 0, 300, 200, "Merhaba Dünya", #BAYRAK) Repeat Event = WaitWindowEvent() Debug Event Until Event = #PB_Event_CloseWindow End OpenWindow() komutu tahmin ettiğiniz gibi pencereyi açıyor. Editörde bu komuta tıklayın ve F1 tuşuna basın. Yardım dosyası a...