Tosba ile grafik çizmek

C# ile basit bir grafik çizmek için ne yapabilirim diye bakınırken Nakov diye hayırsever birinin ücretsiz kütüphanesini buldum. Turtle, kaplumbağa veya tosba diye bildiğimiz hayvan demek.



Ekrandaki tosba ilk olarak kafası yukarı bakacak şekilde duruyor. Turtle.forward(200) komutuyla ileriye yani yukarı doğru 200 pixel gidiyor. Turtle.Rotate(45) komutuyla saat yönünde 45 derece dönüyor. Tekrar Turtle.forward(200) komutuyla yukarı ama 45 derece açıyla gitmiş oluyor. Bu kadar basit bir çizim yöntemi. Kalem rengi ve uç kalınlığı ayarlanabiliyor. Turtle.PenUp() , Turtle.penDown() komutları sırasıyla kalem yukarı ve kalem aşağı demek. Kalemi yukarı kaldırıyoruz ki hayvan istemediğimiz yerde çizgi çizmesin diye. Gençlere yada ruhu genç olanlara programlamayı öğretmek için hazırlanmış güzel bir kütüphane yani. 

Önceki yazımdaki SharpDevelop ve NuGet kurulumunu yaptıysan başlayabiliriz. SharpDevelop u açınca ortadaki New Solution a tıklıyoruz. Ardından açılan pencerede üstte .NET Framework 4.5.2, ortada Windows Application ı seçip altta Name kutusuna proje ismini yazıyoruz ardından create butonuna tıklıyoruz.
En üstteki menüde Project -> Manage Packages... tıklıyoruz, sağdaki boş kutuya Nakov yazıp enter yapıyoruz. Solda Nakov.TurtleGraphics i seçip Add e tıklıyoruz.



Artık kütüphaneyi kullanabiliriz. Source tab ın daki using lerin altına Nakov kütüphanesini aşağıdaki gibi ekleyelim :

using System;
using System.Collections.Generic;
using System.Drawing;
using System.Windows.Forms;
using Nakov.TurtleGraphics;

Bu kütüphaneyi kullan diyoruz yani. Source tab ından Design tab ına geçelim :


Sol alt köşede Projects değil yanındaki Tools seçili olsun, Tools panelinde üstte Windows Forms a tıklayıp 3 tane buton oluşturalım. Solda Button a tıklayın sonra boş olan form penceresine tıklayın.. Bir butonu oluşturup kopyala yapıştır ile de butonu çoğaltabilirsin


Formda bir buton seçiliyken sağdaki Properties (özellikler) penceresinden Appearance altında Text içeriğini değiştirip buton üstündeki yazıları değiştirelim.


Çiz butonuna çift tık yapınca açılan Source tab ında en alta inelim ve aşağıdaki gibi kodları yazalım :
(Çift tık ile zaten void Button1Click satırı ve altındaki süslü parantezler otomatik yazılıyor. Süslü parantezlerin arasına Turtle ile başlayan alttaki 3 satırı yazalım)

void Button1Click(object sender, EventArgs e)
{
    Turtle.Forward(50);
    Turtle.Rotate(45);
    Turtle.Forward(50);
}

Klavyeden F5 tuşuna basıp Çiz butonuna tıklayınca tosba aşağıdaki gibi gözükmeli :




Reset butonuna bu kodu yazalım :

void Button2Click(object sender, EventArgs e)
{
    Turtle.Reset(); // veya Turtle.Dispose()
}

// ile başlayan yer yorum yazmasan da olur. Yorumlar programla ilgili bir not yada hatırlatma yazmak için kullanılır.

Saklan butonuna bunu yazalım :

void Button3Click(object sender, EventArgs e)
{
    if (Turtle.ShowTurtle)
    {
        Turtle.ShowTurtle = false;
        this.button3.Text = "Çık";
    }
    else
    {
        Turtle.ShowTurtle = true;
        this.button3.Text = "Saklan";
    }
}

Formu biraz büyütüp, Çiz butonuna fazlaca tıklayın, sonuçta aşağıdaki sekizgen oluşacaktır..



Şimdi Çiz butonunun içindeki kodu şu şekilde değiştirelim :

void Button1Click(object sender, EventArgs e) 
{
    Turtle.Rotate(30);
    Turtle.Forward(150);
    Turtle.Rotate(120);
    Turtle.Forward(150);
    Turtle.Rotate(120);
    Turtle.Forward(150);
}

Tanıdık, bir şekil çıktı değil mi, eşkenar üçgen...




Şimdi Çiz butonunun içindeki kodu şu şekilde değiştirelim :

void Button1Click(object sender, EventArgs e)
{
    Turtle.Forward(150);
    Turtle.Rotate(90);
    Turtle.Forward(150);
    Turtle.Rotate(90);
    Turtle.Forward(150);
    Turtle.Rotate(90);
    Turtle.Forward(150);
}

Yine tanıdık birşey çıktı...





Bu tosba işi burda bitmez... Daha sonra, tosbayı  S7-1200 ile tanıştırarak simülasyon
 yapacağız..



PLC eğitimi işi, sanal bir model olmadan, telefon rehberini okumak gibi sıkıcı olur


if eğer (Yahu bu ne işe yarayacak dersen söyleyeyim) { Öncelikle abi olarak tavsiyem; düşünme şeklini değiştirip, ben bunu nerede kullanabilirim demelisin..} else { yok hiç öyle şey dermiyim abi } bu soğuk espriden sonra amacımı açıklamak gerekirse; Siemens S7-1200 plc için Tia Portal ile bir program yazıp, tosba ve PLCSIM i haberleştirip simülasyon yapacağız. Böylece örneğin elinizde plc ve gerekli pnömatik aksam olmadan otomasyon işimiz bitmiş olacak yani PLC programı ve proje kafanızda canlanmış olacak.
Bu şekilde simülasyon, PLCSIM deki sadece rakamların ve true false ların göründüğü simtable dan çok daha anlaşılır ve eğlenceli olacak.

PLC de ne ola ki diyenler için; Programlanabilir Logic Controller denen fabrikalarda otomasyon işlerinde kullanılan sistemin beyni olarak çalışan elektronik bir cihazdır. Örneğin bu sensör konveyör bantta giden koliyi görünce bu piston koliyi şu tarafa ittirsin gibi senaryoları gerçekleştirmek için kullanılır.

Bu işler için Factory I/O yada PLC-LAB (MHJ software) gibi ücretli yazılımlar mevcut, ama ne gerek var hem C# öğrenmek hem de bilgisayar a virüs bulaştırmadan yaşamak varken. Factory I/O da görsellik süper ama çok esnek bir yazılım değil yani istediğiniz herşey içinde yok, örneğin küçük bir pnömatik piston, buna karşılık PLC-LAB epey gelişmiş durumda. Tosba ve C# ile simülasyon ise tamamen ücretsiz. 

Bu arada C#, Unity ve Godot gibi oyun motorlarında da kullanılıyor.. Kim bilir belki android market e bir oyun yapıp milyon satarsınız.. Yok yok espri yaptım o işler öyle kolay olmasa gerek.

Yazılım, bambaşka bir dünya, onu iyi bilmek insanı şüphesiz ki meslek sahibi yapar fakat benim amacım “işimi görecek kadar” öğrenmek felsefesini hayata geçirmek. 

Yorumlar

Bu blogdaki popüler yayınlar

VBA - Mscomm (seri port) ile veri loglama

RJ45 2 - Novexx barkod yazıcıya, S7-1200 plc ile etiket yazdırma

Uzak I/O modülü olarak PLC kullanmak