pıc programlamaya nereden başlamalıyım / PIC Programlamaya Nasıl Başlamalı? – Faz Farkı

Pıc Programlamaya Nereden Başlamalıyım

pıc programlamaya nereden başlamalıyım

Yazılıma Nereden Başlamalıyım?

Yazılım öğrenmek istiyorum ancak,

  • Yazılım ile daha önce hiç ilgilenmedim, yazılıma nereden başlamalıyım?
  • Yazılımda başarılı olmak için üniversite mezunu olmam gerekiyor mu?
  • Yazılımın hangi alanında kendimi geliştirmeliyim?
  • Yazılım dilleri nelerdir?
  • Yazılım dili öğrenmek için nasıl çalışmalıyım?

Gibi sorular aklınızı mı kurcalıyor?

O halde "Yazılıma Nereden Başlamalıyım?" yazısını okuyun, yazılım dilleri nelerdir, öğrenin ve zaman kaybetmeden kendinize bir yazılım öğrenme yol haritası çizin.

Yazılıma nereden başlamalıyım?

Yazılım öğrenmek aslında zor değil ancak bilgi karmaşasından ve neyi ne zaman öğrenmemiz gerektiğini bilmiyor olmamızdan dolayı kolay olan bu süreci çok zor olarak görüyoruz ki; bana göre önümüzdeki en büyük engel bu, yani yazılım öğrenme sürecini zor olarak görmemizdir. 

Bundan dolayı doğru bir yönlendirme ve doğru bir kaynağa ihtiyacımız var, aksi halde yanlış yönlendirme ve yanlış kaynaklardan dolayı yazılım öğrenme süreci çok fazla uzuyor hatta çoğu zaman da kolay olan bu süreci zor gibi görüp vazgeçmemize neden olabilir.

Özetle beklentilerimize göre bir yazılım alanı seçip, alanın gerekliliklerini yerine getirmemiz ve bu süreçte de doğruluğu kanıtlanmış bir kaynak seçiminde bulunmamız yazılım açısından hayati önem taşımaktadır.

Yazılım dilleri nelerdir, her hangi bir ön bilgiye sahip değilseniz, yazılıma nereden başlamalıyım hiç bir fikriniz yoksa sakın endişelenmeyin. Öncelikle kendinize güveninizin tam olması gerekiyor çünkü yazılım dillerini öğrenme sürecinde sürekli sorunlarla karşılaşıyoruz ve bu sorunlara cevap ararken de sürekli yeni konular öğreniyoruz ayrıca bildiğimiz konulara da daha farklı bakmaya başlıyoruz. İşte yazılım öğrenmeyi tanımlayan kelimeler sorun ve soruna cevap arama...

Herkes bu yoldan geçiyor ve karşılaştığımız sorunlar, problemler bizim gelişmemizi sağlıyor. Bu yüzden öncelikle sorunların bizi yıldırmaması gerekiyor. Bu da başta kendimize güvenmemizi gerektiriyor.

Üniversite mezunu olmam gerekiyor mu?

Yazılım ile ilgileniyorsanız mutlaka mesleki bilginiz her şeyden önde olmalıdır. Yani Üniversite mezunu olup etkin bir yazılım bilgisine sahip değilseniz iş bulma sürecinde zorlanmanız çok doğaldır. Bu aslında sadece yazılım için değil her mesleki beceri isteyen meslek dalı içinde bu şekildedir. 

Eğer ki; yazılım ile alakalı bir Üniversite mezuniyetiniz yoksa bu durumda kurumsal firma başvurularında çok iyi bilginiz olsa bile çoğu zaman göz ardı edilebilirsiniz çünkü kurumsal firmalar için yazılım bilgisinin yanında üniversite mezuniyeti de çoğunlukla önemlidir.

Çok iyi yazılım bilginiz var bu durumda iş bulamaz mıyım? 

Kesinlikle bir çok iş fırsatına sahip olabilirsiniz. Orta ölçekli firmalar sizin neler yapabildiklerinizle ilgilenirler. İyi bir yazılım bilgisi size iyi ücretli bir çok iş fırsatı getirebilir. Üstelik her hangi bir firmaya bağlı olmadan kendi başınıza da bir çok müşteri bulup güzel gelir elde edebilirsiniz. Bu şekilde her hangi bir firmadan bağımsız çalışan kişiler "freelancer" olarak adlandırılır.

Yazılımın hangi alanında kendimi geliştirmeliyim?

Genel olarak yazılımı 3 ana grup altında ele alabiliriz. Tabi ki her grup altında bir çok alt başlık sayabiliriz. Hatta farklı gruplardan da bahsedebiliriz ancak biz yazılım öğrenmeye yeni başlıyoruz ve en genel haliyle,

  • Web geliştirme,
  • Mobil uygulama geliştirme,
  • Masaüstü uygulaması geliştirme,

şeklinde bir gruplama yapabiliriz.

Her hangi bir platform odaklı yani web, mobile ya da masa üstü için yazılım geliştirmeye başlamadan önce bu platformalar için kullanacağınız programlama dili seçimini yapmanız gerekiyor. Çünkü her kullandığınız programlama diliyle genellikle web geliştirme, mobile uygulama geliştirme ya da masa üstü uygulama geliştirme yapabilirsiniz. Bu yüzden önce hangi programlama dilini kullanmak istiyorsunuz bunu seçmelisiniz.

Seçebileceğiniz bazı popüler yazılım dilleri;

Yazılım dilleri nelerdir?

Bir programlama dili ile yapabileceklerinizi diğer programlama diliyle de çoğu zaman yapabilirsiniz. Çünkü her programlama diline özel farklı platformlar için geliştirilmiş kütüphaneler hazırlanmıştır.

Örneğin; C# programlama dilini öğrendiğinizde asp.net mvc ile web projeleri, winform ya da WPF ile masa üstü projeleri ya da Xamarin ile android ve IOS mobile uygulamaları geliştirebilirsiniz. Burada önemli olan bir programlama dilini iyi öğrenmenizdir.

Bu aşamada eğer seçiminiz C# ise, sıfırdan programlama mantığını öğrendikten sonra C# programlama dilini detaylı bir şekilde öğrenebileceğiniz "Uygulamalı C# Programlama Eğitimi : Yeni Başlayanlar"  isimli kursuma katılabilirsiniz.

Programlama mantığını öğrenip kullanacağınız dili seçtikten sonraweb geliştirme, mobile uygulama geliştirme ya da masa üstü uygulama geliştirme alanına geçiş yapabilirsiniz. 

Web Geliştirme ile mi ilgilenmek istiyorsunuz? 

Web Geliştirmenin popülerliği ve iş fırsatları tartışılmaz bir gerçektir. Web geliştirme alanındaki gelişmeler, güncellemeler çok fazla olduğundan, sürekli yeni teknolojiler çıktığından dolayı bu alan ile ilgilenecek kişilerin bilgilerini sürekli güncel tutmasıyla çok iyi iş fırsatlarına sahip olmaları yüksek ihtimaldir. 

İsterseniz kurumsal bir firmaya girip çalışabilirsiniz, isterseniz de freelancer olarak çalışıp güzel gelir elde edebilirsiniz. Hatta kendi sitelerini kurup Google adsense reklamlarıyla çok güzel gelir elde eden bir çok kişiden biri olabilirsiniz.

Web Geliştirme alanı 3 ana alt başlık altında ele alınabilir.

  1. Frontend
  2. Backend
  3. Full-Stack Web Geliştirici

Frontend geliştiriciler hangi konuları öğrenmelidir?

Eğer seçiminiz Frontend ise daha çok görsel yaratıcılık kabiliyeti ön plana çıkmaktadır. Çünkü tasarım yeteneği bir görüntünün web sayfası üzerinde nasıl yapıldığı ile çok alakalı değil. Bir görüntünün web sayfasına nasıl aktarılacağını bilmekten başka bir de görsel bakış açısının varlığı ile de alakalıdır. En basitiyle hangi renk hangisiyle daha uyumlu görünür. Ya da tasarım nasıl olsa kullanıcıya daha güzel görünür gibi.

Web tasarım alanında başarılı olmak için görsel yeteneğinizi html ve css bilgisi ile birleştirip güzel tasarımlar yapabiliyor olmalısınız. Scss ve sass öğrenmeniz daha etkin css yazmanızı sağlayacaktır.

Frontend alanında sistemli bir şekilde zaman kaybetmeden başarılı olmak için "Komple Uygulamalı Web Geliştirme" kursuma katılabilirsiniz. Bu kursa katılarak web tasarım konularından olan Html, Css, Javascript, Bootstrap ve JQuery kullanımını iyi bir şekilde bol uygulama yaparak öğrenebilirsiniz.

Html ve css bilgisini herkes yapar beni frontend alanında öne çıkaracak konu ne olur derseniz de; size tavsiyem javascript dilini çok iyi öğrenmenizdir.  

Son zamanlarda Javascript'in popülerliği ile çıkan bir çok Javascript türevi kütüphane ile birlikte artık web sayfaları üzerinde mobile uygulama tarzında çalışan Single Page Application (SPA) diye isimlendirilen tek sayfalık web uygulamaları ile mutlaka karşılaşmışınızdır. Javascript tabanlı bu yapıların en başında Angular, React ve VueJs gelmektedir ve Javascript tamamen Frontend alanında değerlendiriliyor. 

Backend geliştiriciler hangi konuları öğrenmelidir?

Web Programlama alanı tasarımdan çok daha farklı bir alandır. Statik bir web site tasarımı yapmaktan öte sitenize bir yönetim paneli hazırlayıp içerikleri gene bir web site üzerinden düzenlemek isteyebilirsiniz ki bu tip siteler daha çok tercih edilir. Örneğin sosyal medya hesaplarındaki bilgi güncellemesini hesabımız üzerinden girip yaptığımız gibi.

Web Programlama alanında başarılı olacak kişilerin daha çok algoritma mantığına sahip olmaları gerekir. Matematiksel zekâ sayesinde muhakeme gücünün daha iyi olması bu alandaki kişileri çok daha ön plana çıkarıp daha başarılı hale getirmektedir.

Matematiksel zekâm çok iyi değil programlama alanında başarılı olamaz mıyım diye düşünüyor olabilirsiniz.  Evet, matematiksel zekâsı iyi olan kişiler dediğimiz gibi programlama alanında daha başarılı olurlar ancak bu hiç başarılı olunmayacağı anlamını kesinlikle taşımıyor. Normal zekâya sahip her kişi bu alanda başarı sahibi olabilirler önemli olan düzenli ve doğru kaynak ile çalışmaktır.

Backend geliştirici olmak istiyorum tüm web programlama dillerinin hepsini bilmek zorunda mıyım?

Kesinlikle hayır. Sadece bir web programlama dilinde başarılı olmanız sizi sonuca götürür. Sonuçta yapacağımız web sitesi son kullanıcı için hep aynıdır. Bu web sitesinin asp.net mvc ile mi, nodejs ile mi ya django ile mi geliştirildiği hiç önemli değildir. Tüm web programlama dilleriyle dinamik yönetim paneli olan bir web uygulaması geliştirebilirsiniz.

Birçok web programlama dilini aynı anda öğrenmeye çalışmak hedefe ulaşma zamanımızı uzatır. Bir dili iyicene öğrendikten sonra başka bir dil öğrenebilirsiniz ancak aynı anda çalışmak süreci uzatabileceği gibi sizi başarıya götürecek olan çalışma hevesinizi kaçırabilir. Bu yüzden bir web programlama dilini iyicene öğrendikten sonra eğer arzu ederseniz başka bir web programlama dili öğrenmeniz çok daha iyi olacaktır.

Sonuç olarak her web programlama dili Http protokolü üzerinde işletilen istek ve talepleri işleten bir mekanizmadır yani arka taraftaki işlemler hep aynıdır dolayısıyla bir web programlama dilinin mantığını iyi anlayan biri diğer web programlama dilini de kısa zamanda anlayacaktır.

Eğer ki hedefiniz freelancer olarak çalışmak ise bu durumda hangi web programlama dilini öğrendiğinizin çok bir önemi yoktur çünkü web sitesi yaptırmak isteyen kişi için önemli olan sitenin kullanımı ve görüntüsüdür.

Özetle; bir web programcısı olmak istiyorsanız web tasarım alanı ile ilgilenmenize çoğu zaman gerek olmayabilir. Kurumsal bir firmada çalışıyorsanız web tasarım zaten ekibiniz tarafından yapılır siz sadece programlama kısmında kod yazarsınız. Eğer ki freelancer olarak çalışacaksanız bu durumda web tasarımını ücretsiz ya da küçük bir ücret karşılığında satın alıp programlamasını yapabilirsiniz.

Hangi web programlama dilini kullanacaksanız kullanın ilk başta programlama mantığınızı geliştirmeniz ve iyi bir algoritma kurma yeteneğine sahip olmalısınız. Programlama mantığı üzerine hazırlamış olduğum geniş kapsamlı bir kursum mevcut. Bu kursa katılmanızı tavsiye ederim.

"Uygulamalı C# Programlama Eğitimi : Yeni Başlayanlar" isimli kursuma katılmanız size büyük fayda sağlayacaktır. Kursta sıfırdan programlama mantığı dahil olmak üzere bir çok programlama konusunu öğrenip her hangi bir web programlama platformunu öğrenebilecek alt yapıya fazlasıyla sahip olacaksınız.

Full-Stack Web Geliştirici hangi konuları öğrenmelidir?

Full-Stack Web Geliştirici olmak istiyorum çünkü bir web sitesinin tasarımı ve programlaması dahil her ayrıntısını kendim yapmak istiyorum diyorsanız öğreneceğiniz konular fazlaşıyor.

Full Stack Web Developer 'lar daha çok freelancer olarak çalışan kişiler ile küçük-orta ölçekli şahıs firmalarında çalışan kişilerden oluşmaktadır.

Freelancer çalışanlar yaptıkları sitelerin web tasarım ve web programlama kısımlarını olduğu gibi kendileri düşünmesi gerekir ve aynı şekilde şahıs firmalarında çalışan kişilerde genellikle aynı pozisyondadırlar ki; firmalar hem tasarım için hemde programlama için ayrı kişiler çalıştırmak istemezler.

Full-Stack Web Geliştiricilerin iş fırsatları çok daha fazladır. Bu alan tam bana göre diyorsanız size önerebileceğim muhteşem bir full stack web geliştirici kursum var. Üstelik a’dan z’ye her hangi bir ön koşula sahip olmadan planlı bir şekilde ilerleyebileceğiniz tam 62 saatlik "Komple Uygulamalı Web Geliştirme" Kursuma kayıt olursanız bir full stack web geliştiricinin bilmesi gereken tüm konuları ortalama 6-8 ayda, günde 2-3 saatinizi ayırarak planlı bir şekilde ilerlemeniz durumunda öğrenebilirsiniz. Bir web sitesinin a’dan z’ye her aşamasını kendiniz hazırlayıp muhteşem web sitelerini hazırlayabilirsiniz.

Ayrıca udemy üzerinde hazırlamış olduğum bir başka Full-stack web geliştirme kursu olan Nodejs Kursu: Baştan Sona FullStack Web Geliştirme kursuma da katılabilirsiniz. "Komple Uygulamalı Web Geliştirme" kursu ile Nodejs Kursu: Baştan Sona FullStack Web Geliştirme kurslarım arasındaki fark backend dillerinin farklı olmasıdır. Yani her iki kursun fronend kısmı aynı ancak kullandıkları web programlama dilleri farklıdır. Tercihiniz C# ile asp.net mvc mi yoksa Javascript ile Nodejs mi ?

Full-stack web geliştirici hem web tasarıma hakim hemde en az bir web programlama diline hakim kişilerden oluşur. Dolayısıyla web tasarım açısından baktığımızda bilmemiz gereken en temel konular Html ve Css olmalıdır.

Html ve Css bilmemiz en gereken temel konulardır ve eğer ki web tasarım konusunda çok daha hızlı ilerlemek kısacası tasarım için çok vakit harcamak istemezseniz hazır css kütüphaneleri kullanmanızı şiddetle tavsiye ederim.

Hazır css kütüphanelerinden en bilinenleri Twitter firmasının hazırladığı Boostrap kütüphanesi ve Google firmasının hazırladığı Material kütüphanesidir. Bu kütüphanelerin bir başka avantajı ise sundukları Javascript bileşenleridir. Örneğin bir image slider'i saniyeler içinde yapabilirsiniz.

Bir Full-stack web geliştiricinin sıfırdan tasarımlar yapması genellikle zaman kaybettirir. Dolayısıyla tasarımı sıfırdan yapmak yerine hazır template kullanımı yapmak büyük avantaj sağlar. Bazı örnek tasarımları indirip bu tasarımlara program yazarak dinamik hale getirdiğimiz sitemizi kısa sürede yayına hazır hale getirebiliriz.

Peki bir full-stack web geliştirici olarak web tasarım işimizi ister sıfırdan başlayarak hazır hale getirebiliriz istersek de hazır css (bootstrap,material) kütüphanesi ile tasarımı kısa sürede oluşturabiliriz. Ya da tasarım aşamasıyla hiç uğraşmadan hazır bir template üzerinden programlama işimize geçiş yapabiliriz.

Tasarımları daha etkileşimli ve hareketli hale getirmek için mutlaka Javascript bilmeliyiz. Javascript tarayıcıda çalışan (NodeJs'i düşünmezsek) bir programlama dilidir. Örneğin bir butona tıkladığımızda bir pencerenin açılması Javascript ile olmaktadır. 

Web tasarımlarınıza hareketlilik ve yetenek kazandırmak için mutlaka iyi bir javascript bilgisine ihtiyacımız vardır. Modern Javascript Kursu : Sıfırdan İleri Seviyeye isimli kursuma katılarak detaylı bir Javascript bilgisine sahip olabilirsiniz.

Javascript dili son zamanlarda çok popüler hale geldi çünkü artık Javascript sadece tarayıcıda çalışan bir programlama dili değildir artık Javascript'i NodeJs sayesinde server tabanlı bir dil olarakta kullanabiliyoruz. Yani aynen C# dili neyse, Java dili neyse Javasscript dilini de aynı amaçla kullanabiliyoruz. Javascript dilini kullanarak web geliştirme yapmak istiyorsanız nodejs kullanabilirsiniz. Nodejs bir derleyicidir ve nodejs bünyesinde kullandığımız yazılım dili tamamıyla Javascript in kendisidir.

Son zamanlarda Javascript'in popülerliği ile çıkan bir çok Javascript türevi kütüphane ile birlikte artık web sayfaları üzerinde mobile uygulama tarzında çalışan Single Page Application (SPA) diye isimlendirilen tek sayfalık web uygulamaları ile mutlaka karşılaşmışınızdır. Javascript tabanlı bu yapıların en başında Angular, React ve VueJs gelmektedir.

Modern Javascript Kursu : Sıfırdan İleri Seviyeye isimli kursuma katılarak, güzel bir Javascript programlama bilgisi edindikten sonra özellikle ES6/ES7 Javascript programlama dili kullanımını öğrendikten sonra Angular kütüphanesi öğrenmeniz size kesinlikle artı katacaktır. Angular Dersleri: Baştan Sona Uygulamalı Projelerle Öğrenin isimli kursuma katılmanız Angular 8'i kısa zamanda öğrenmenizi sağlayacaktır.

Javascipt tabanlı kütüphaneler ile yapabildiğimiz mobile tarzında, web sayfalarında çalışan uygulamaların ios ve android uygulamasına da kolaylıkla çevirilebilmesi ve android, ios için native kod yazmak zorunda olmamamızdan dolayı bu kütüphanelerin popülerliliği çok fazla artmıştır. Dolayısıyla son zamanlardaki en popüler programlama dillerinden birinin Javascript olduğunu kolaylıkla söyleyebiliriz.

Yıllardır bildiğimiz ve sadece tarayıcı bünyesinde çalışan Javascript programlama dili artık Nodejs yapısıyla tarayıcı dışında da çalışabilir hale geldi bu durumunda Javascript'in popüler hale gelmesindeki etkisi çok büyük.

Modern Javascript tekniklerini ayrıntılı bir şekilde ele alarak hazırlamış olduğum ayrıntılı Modern Javascript Kursu : Sıfırdan İleri Seviyeye  isimli kursuma katılıp angular, react ve daha bir çok Javascript türevi yapılar için güzel bir temel oluşturabilirsiniz.

Modern Javascript Kursu : Sıfırdan İleri Seviyeye  kursumuzda Javascript'in temel dil özelliklerini, tarayıcıdaki Javascript yani Dom yapısını ve tüm modern Javascript tekniklerini öğreniyoruz. Yaklaşık 22 saatlik Modern Javascript Kursu : Sıfırdan İleri Seviyeye  kursuma kayıt olmanızı tavsiye ederim.

FullStack web geliştiriciler hangi web programlama dillerini kullanabilirler?

Bir çok web programlama platformu mevcuttur. Bunlardan en çok bilinenleri;

  • Asp.net Web Form
  • Asp.net Mvc
  • Asp.net Core Mvc
  • Php
  • Java
  • NodeJs
  • Ruby on Rails
  • Python (Django, Flask)

Şeklindedir.

Eğer hedefiniz kurumsal bir firmada çalışmak ise bu durumda daha popüler olan web programlama dillerini tercih etmeniz gerekir ki; Türkiye şartlarında en popüler web programlama dillerinden biri asp.net mvc ‘dir.

Asp.Net Web form ile Asp.Net Mvc platformlarını karıştırmamak gerekiyor. Asp.net Mvc yapısı birçok popüler web programlama alternatifleri ile aynı yapıyı yani "model-view-controller" yapısını kullanmaktadır.

Web tasarım ve Web Programlama derslerini içeren 62 saatlik "Komple Uygulamalı Web Geliştirme" kursuma kayıt olarak bir full-stack web geliştirici olabilirsiniz. Asp.net derslerini ayrıntılı bir şekilde anlattığım bu kurs size asp.net platformunu detaylı bir şekilde öğretecektir.

Kursumuzda bir çok dinamik uygulama yapmaktayız. Öne çıkan uygulamalardan bazıları Blog ve Ürün katalog uygulamasıdır. Yönetim paneli dahil üyelik sistemlerini, alışveriş süreçlerini, ürün ekleme, silme, güncelleme ve listeleme işlemlerini anlattığım bu uygulama örnekleri ile vakit kaybetmeden asp.net yapısını öğrenin.

Microsoft, asp.net mvc nin yanında cross platform olarak yani windows haricindeki işletim sistemlerinde de asp.net uygulamalarının geliştirilmesi ve host edilebilmesi için asp.net core yapısını geliştirmeye başlamıştır.

Eğer ki asp.net core ile ister IOS ister Linux ortamında uygulama geliştirmek isterseniz sadece asp.net core platformuna özel detaylı 34 saatlik Asp .Net Core 2 Mvc Kursu : Sıfırdan İleri Seviyeye kursuma katılabilirsiniz.

Asp.net Core yapısını öğrenenler için bir diğer tavsiye ettiğim kurs ise Katmanlı Mimari ile E-Ticaret Kursu: Core Mvc isimli kursumdur. Katmanlı Mimari ile E-Ticaret Kursu: Core Mvc kursumda core mvc projelerimizi katmanlı mimari ile Repository Pattern' ını kullanarak geliştirmeyi öğreniyoruz ve kursumuzda baştan sona bir e-ticaret projesini katmanlı mimari ile geliştirip ödeme sistemi dahil her aşamasını yönetiyoruz.

Dinamik web uygulamaları için iyi bir veritabanı bilgisine ihtiyacımız vardır ve Microsoft ürünlerini kullanarak web, masaüstü,mobil uygulamalar için kullanabildiğimiz Entity Framework Core yapısını detaylı bir şekilde anlattığım Baştan Sona Entity Framework Core Dersleri isimli bir kursum daha mevcut.

Yazılım dili öğrenmek için nasıl çalışmalıyım?

Yazılım öğrenmek için doğru kaynağa ulaştım ve ne öğrenmem gerektiğine karar verdim diyorsanız artık yazılım öğrenme sürecine disiplinli bir şekilde başlayabilirsiniz. Size bazı tavsiyelerim olacak;

  • Konuyu ilk başta çalışın ve mutlaka öğrendiklerinizi yazıp deneyin.
  • Ezberleme yolunu asla tercih etmeyin. Sadece anlayın ve yaptığınız uygulamaları mutlaka arşivleyin ve ihtiyaç halinde kendi kaynaklarınızdaki örneklerden yardım alın bunda hiç bir sorun yok önemli olan anlamanız zaten zamanla bakmadan da yapabiliyor olacaksınız. Bu yüzden en başta konuları iyicene özümsemeden ezberlemenizin size hiç bir faydası olmaz hatta sizi yavaşlatıp bu işten soğutabilir.
  • Bir gün de saatlerce çalışmak yerine gün içinde daha az vakit ayırarak çalıştığınız gün sayısını arttırın. Zamana yayarak çalıştığınızda mutlaka anlamanız daha kolaylaşır.
  • Anlamadığınız bir konunun üzerine mutlaka gidin sakın vazgeçmeyin.
  • Youtube ya da başka kaynaklardan düzensiz olarak farklı farklı kaynaklara bakarsanız kafanız çok kolay bir şekilde karışabilir bu yüzden doğru kaynak üzerinden ilerleyin.
  • Karşılaştığınız bir problemde hemen sormak yerine mutlaka araştırma yapıp sorunu kendiniz halletmeye çalışın.

Umarım "yazılıma nereden başlamalıyım" yazımız size faydalı olmuştur.

PIC Programlamaya Nasıl Başlamalı?

Posted in yucomp.org Yazıları - Ekim 22, 2006 - 13 Comments

Son güncellenme 9 Ekim 2009, 8 Kasım 2009
Merhaba arkadaşlar!
Bu yazımızda PIC programlamaya başlamak isteyen arkadaşlara yardımcı olmaya çalışacağız. Öncelikle PIC nedir sorusuyla girelim. PIC, Microchip firmasının üretimi olan mikrodenetleyicilerin model ismidir. PIC 18F2550, PIC 18F4550, PIC 16F877, PIC 16F84, PIC 16F628A gibi, bunlar birer entegre ismi. Microchip firmasının PIC mikrodenetleyicileri o kadar yaygın kullanılıyor ki peçete yerine selpak ifadesinin kullanılması gibi PIC denilince akla mikrodenetleyici geliyor. Neden yaygın kullanılıyor derseniz kolay bulunması ve internette ilgili doküman ve projelerin çok olması hemen söyleyebileceğimiz iki sebep. PIC haricinde piyasada farklı yeteneklere sahip mikrodenetleyiciler bulunabilir. Projeye, fiyatlara göre uygun mikrodenetleyici seçimi yapmak gerekir. Mikrodenetleyici seçiminde geliştirme araçlarının lisans ücretleri de dikkat edilmesi gereken bir durumdur. Benim görebildiğim kadarıyla PIC ile uygulama geliştirme biraz pahallı, örneğin ATMEL gibi mikrodenetleyicilerin gelişmiş ve ücretsiz derleyicileri bulunurken PIC için mevcut gelişmiş derleyicilerin bırakın ücretsiz olmasını lisans ücretleri oldukça yüksek. Şu sıralar ben de geç de olsa geliştirme araçlarının ücretsiz olanlarına doğru kaymaya çalışıyorum. Ayrıca kullanmak istediğiniz PIC modeline muadil diğer firmaların daha düşük fiyatlı mikrodenetleyicileri piyasada bulunabiliyor.
Programlama cihazlarının ucuzluğu veya kolay yapılabilmesi de dikkat edilmesi gereken başka bir durum, özetle PIC ile uygulama geliştirelim ama diğer mikrodenetleyicileri de bir kenara bırakmayalım.

PIC le neler yapabiliriz?
Bu soruya tam bir cevap vermek veya PIC le yapılabilecek uygulamalara bir sınır koymak oldukça zor, elektronik tecrübeniz arttıkça verebileceğiniz cevaplar da artacaktır. Ancak basitçe; mikrodenetleyiciler bizim için karar verirler, ne zaman ne yapması gerektiğini program aracılığıyla söylersiniz ve PIC bunu sizin için yapar. Örn: PIC e ne zaman hangi ledleri yakacağını söylerseniz led panelde kayan yazı yapabilirsiniz veya tuş takımından girilen şifrenin doğruluk kontrolünü yapmasını isterseniz röle yardımıyla şifreli kapı yapabilirsiniz. Çok basit kalan, belki de komik duran iki örnek 🙂

Genel olarak PIC li bir sistem ne yapar?
Her şeyden önce PIC li bir sistem bir bilgisayar sistemidir, programcı tarafından yapacağı uygulamaya uygun olarak geliştirilmiş ve PIC in içine yüklenmiş bir yazılım vardır ve bu yazılım icra edilir. İçinde yazılımı olmayan bir PIC hiçbir işe yaramaz, açılmayan bir bilgisayar gibi. PIC in çalışması için yazılımın haricinde gereken 2 temel donanım şartı vardır, besleme gerilimi ve osilatör. Aslında saydığımız bu üç unsur (yazılım, besleme, osilatör) tüm bilgisayar sistemlerinin olmazsa olmazıdır.

PIC programlamaya hangi model PIC le başlayalım?
Yeni başlayacak arkadaşlar için en uygun modelin 16F628 veya 16F628A( 16F628A nın resmi için buraya tıklayınız) olduğunu düşünüyorum. Bu model PIC lerde dahili osilatör olduğu için harici osilatör bağlamak durumunda kalmayacaksınız. Bu durumda mikrodenetleyicimizi çalıştırmak için sadece VDD ucuna +5V ve VSS ucunu toprağa bağlamamız yeterli olacaktır. Yani besleme gerilimini vererek ve dahili osilatörü kullanarak(iki donanım şartını sağladık) bu PIC i çalıştırabiliriz.(Tabi ki PIC in içine yazılımı yükledikten sonra)

-Harici osilatör bağlamadık, peki dahili osilatörü nasıl aktif edeceğiz? Bunu PIC nerden bilecek?
–Yazdığınız programda ilgili konfigürasyonu aktif hale getirerek PIC e dahili osilatör kullanmak istediğimizi söylüyoruz. Bu ve benzeri konfigürasyonlar program içerisinde yapılacağı gibi yazdığınız kodun PIC e aktarılmasını sağlayan yazılım aracılığıyla da yapılabilir ama birinci yöntem daha güvenlidir. Bu yazılım ve araçları yazının devamında tanıyacağız.

PIC 16F628 modelinde toplam 18 adet pin bulunur, bunlardan 16 tanesi giriş-çıkış pini olarak kullanılabilir kalan 2 pin ise PIC in çalıştırılmasıyla ilgilidir(Besleme pinleri). Bu 16 giriş-çıkış pinimizden 8 tanesi A portuna 8 tanesi de B portuna ait pinlerdir. Hangi pin nerdedir(kaçıncı bacak), ne işe yarar gibi soruların cevabını PIC i üreten firmanın hazırladığı kataloglardan(datasheet) öğreniyoruz, kataloglar uzun uzadıya anlatıyor her şeyi, güzel de anlatıyor ama biz yeni başlarken -içerisinde pin diagramlarının olduğu- sadece ilk sayfaları kullanacağız. Hatta bu pin diagramını bir defalığına yazdırıp masanızın karşısına asarsanız rahat edersiniz. Örn pin diagramı. Kataloglara ulaşmanın en kolay yolu, aradığınız PIC modelinin ismini google a yazıp “enter”lamak. Ya da üretici firma olan Microchip in sitesinden ulaşabilirsiniz. Örn: PIC16F628 in kataloguna burdan direkt ulaşabilirsiniz. Her model PIC için farklı katalog oluyor.

-Giriş-çıkış pinleriyle ne yapacağız?
–Led yakalım mesela, yanıp sönen led yapalım, bir pini giriş olarak kullanıp düğmeye basıldı mı basılmadı mı anlayıp çıkış yaptığımız başka bir pindeki ledi yakalım. Fena mı? Sadece led mi yakacağız! Hayır tabii ki, yukarıda da söylediğim gibi uygulama dünyası çok geniş. Üstelik her pin aynı değil, bazı pinler daha yetenekli. Olaylarla tanıştıkça bana hak vereceksiniz 🙂 İlk uygulama olarak led yakmak ideal, alışveriş listenize kablo, led, direnç, deney tablası, pil ve regülatör gibi malzemeleri eklemeyi unutmayın böylece PIC i programladıktan sonra deneme yapabileceğiniz bir devre kurabilirsiniz. Ayrıntılı araç-gereç ve malzeme listesine burdan bakabilirsiniz.

(Bu arada hep mikrodenetleyici tabirini kullanıyoruz, mikrodenetleyici ile mikroişlemci terimlerinin farkını hatırlayalım:
mikrodenetleyici = mikroişlemci + bellek + giriş-çıkış birimi(port) + diğer çevresel birimler)

Fiilen PIC programlamaya başlamak için gereken asgari gereçler:
Donanım Olarak:
1) Herhangi bir model PIC Mikrodenetleyicisi
2) PIC Programlama Cihazı (PIC Programlama Devresi=PIC Programlayıcı)
3) Bilgisayar
Yazılım olarak:
4) Derleyici (Seçtiğiniz programlama diline bağlı olarak size bir derleyici(compiler) gerekir)
5) Programlayıcıyla irtibatı kuracak olan yani yazdığınız kodu entegrenize yüklemenizi sağlayan yazılım.(Bu yazılım çoğunlukla programlayıcı cihazla(devreyle) birlikte verilir)

Burada PIC Programlayıcı maddesinden biraz bahsetmek istiyorum:
Seriportu olan bilgisayalar için -ki artık seri port günümüz masaüstü bilgisayarlarında bile pek olmuyor- PIC programlayıcı yapmak oldukça kolay veya 10 TL civarı bir fiyat karşılığında satın alınabilir. Ancak eğer bilgisayarınızda seri portunuz yoksa size bir USB PIC programlayıcı gerekir ki fiyatları 45-80 TL arasında değişen farklı modeller piyasada mevcut. Ben şimdiye kadar K128 model USB programlayıcı kullandım fiyatı bir zamanlar 70 TL idi, sonra 45 TL ye clone PIC KIT2 aldım, ikisinden de memnunum. Siz de kendinize uygun gelen bir USB PIC programlayıcı alarak bu işe başlayabilirsiniz. PIC programlamaya başlarken yaptığım en büyük harcamam bir programlayıcı almak olmuştu.
Bazı USB programlayıcılar ev ortamında üretilebilir(Örn:burdaki arkadaşların yaptığı gibi), sonuçta onlar da birer elektronik devre. Ev üretimi olanların maliyeti satın alınanlardan daha düşük olacaktır ancak verdiğimiz emek ve yaptığımız devrenin çalışmama riski, arızanın aranması gibi durumlara girmek istemeyen arkadaşlar için uygun bir tane satın almak daha doğru olacaktır.

Şimdi internette pek sık duyduğumuz bazı isimleri yukarıda sıraladığımız asgari gereçler listesindeki yerlerine koyalım (terimlerden kafası karışan arkadaşlar için):
ICPROG: 5. maddemizle ilgili; yazdığımız kodları PIC e yüklemek için kullanabileceğimiz aracı yazılımlardan bir tanesidir. Bilgisayarımızda derleme sonucu oluşan .hex uzantılı dosyanın PIC in ROM una aktarılmasını sağlayan alternatif yazılımlardan biridir. PIC programlayıcınızla beraber verilen yazılımı kullanmanız önerilir. Bu bağlantıda IC-PROG ile ilgili bilgiler verilmiş, inceleyebilirsiniz.

PicBasic: 4. maddemizle ilgili, PIC programlama yapabilmek için alternatif programlama dillerinden bir tanesi, bu dille programlamak istiyorsanız PicBasic derleyicisine ihtiyacınız var demektir. PIC Basic Demo Compiler için buraya tıklayabilirsiniz.

Pic C: Yine 4. maddemizle ilgili, PIC C de pic programlamada kullanılabilecek alternatif dillerden birisidir. Aslında kendisi bir dil değil kategoridir, PIC C denilince çeşitli firmalar tarafından geliştirilmiş CCS C, HI-TECH C veya Micro C gibi PIC programlama yapmamızı sağlayan ek kodlar barındıran C dilleri kast edilir. Geçtiğimiz haftalarda(Mart 09) Microchip firması, HI-TECH firmasını satın aldığını duyurdu, bu da tabii HI-TECH C yi rakip PIC C lere göre öne çıkardı. HI-TECH C nin ücretsiz versiyonu(lite) ve kısıtlamalarla ilgili sayfaya buradan gidebilirsiniz.

JAL: PIC programlama dillerinden bir tanesi, en önemli özelliği ücretsiz olması. Türkiye’deki fedakar arkadaşlarımız jalı alıp daha da geliştirerek jalturk adında bir derleyici ortaya koymuşlardır. jalturk derleyicisini bu adresten indirebilirsiniz.

– C dilini (veya Visual Basic) biliyorum, pic programlamada nasıl yardımı olabilir?
–PIC programlama için kullanılan PIC C, PIC Basic gibi dillerde standart C ve Visaul Basic gibi dillerde kullandığınız komutlar kullanılır ama ek olarak PIC donanımıyla alakalı bazı komutlar da vardır. Standart dilleri kullanmış biri olarak sadece bazı yeni fonksiyonları ve biraz PIC konfigürasyon ayarları hakkında bilgi edinerek kullandığınız standart dilin PIC versiyonunda uygulama geliştirmeye başlayabilirsiniz.

Pic Assembly: Her mikrodenetleyicinin bir yazılım dili olmak zorundadır, yoksa mikrodenetleyici çalışmayan bilgisayar gibi olur. Microchip de PIC leri üretirken yazılım dili olarak PIC assembly yi üretmiştir. PIC in anadilidir, mikrodenetleyici ve kendisine has asm(assembly) dili birbirine girmiş iki unsurdur. Aslına bakarsanız assembly haricindeki tüm PIC dilleri bazı yazılım şirketlerinin asm ile program yazım zorluğunu ortadan kaldırma amaçlı alternatifler olarak geliştirilmiştir. Assembly dili bize diğer dillerle karşılaştırılamayacak kadar geniş bir yetki sağlar. Çünkü sistemin kendi dilini kullanıyoruz, C veya Basic gibi bir tercüman kullanmıyoruz. Assembly kullanmanın sağladığı geniş yetkilerin yanında dezavantajları da vardır. En büyük dezavantajı: çok temel komutları kullandığınız için program geliştirme süreci yavaş işler.
Örnek vermezsem olmaz(!) Bir binayı prefabrik gibi hızlıca yapmak var tuğla tuğla yapmak var; yavaş gelişim süreci. Buna karşın duvarda bir sorun olunca ne oluyor bu duvara demek var, sorun şu tuğlada olabilir demek var; sisteme hakimiyet. Umarım anlatabilmişimdir.
Assembly programcıları da çeşitli imkanları kullanarak nispeten hızlanabilirler(makro veya altprogramcıkları saklayarak) ancak olayın genel görüntüsü bu şekildedir.

Hangi dili seçelim derseniz(yani bana sorarsanız)? Ben CCS C ile başladım, epeyce uygulama geliştirdikten sonra Assembly öğrenmeye başladım ve birçok şeyi Assembly ile daha iyi öğrendim. Ben hemen bir şeyler yapmak istiyorum derseniz C, basic gibi yüksek seviyeli dillerden başlayabilirsiniz. Derinlemesine öğreneyim sonra uygulama geliştiririm diyorsanız-ki biraz sabır istiyor- assembly derim.

CCS C nin 30 günlük deneme sürümünü bu bağlantıyı takip ederek temin edebilirsiniz, kısa bir anket doldurmamızı istiyor 😐

Şöyle de bir gerçek var: PIC donanımını iyi tanıyan biri için dil çok fazla fark etmiyor, donanımı iyi tanımanın en güzel yolu assembly ile yazılım geliştirmektir. Donanımı tanıdıktan sonra dillerin herhangi birinde düzgün bir “help” kısmı olmak şartıyla sadece “help” kısmına veya örnek dosyalara bakarak uygulama geliştirmek mümkün. Bu konuda kendinizi geliştirdikçe kullanılan dilin önem derecesini daha iyi anlayacaksınız.

Pic Assembler: Pic assembly kodlarını makine koduna(hex) çeviren yazılım, compiler gibi. Compiler ve assembler in amacı aynıdır(makine kodu) ama “input” dosyaları farklıdır. Güçlü bir hata ayıklama yeteneğine sahip ve ücretsiz olan MPLAB yazılım geliştirme aracını Microchip’in sitesinden indirebilirsiniz. Microchip assembler olan mpasm MPLAB ile birlikte gelmektedir. MPLAB en yalın haliyle asm yazımı-derlenmesi ve hata ayıklama içindir ancak farklı derleyiciler kurduğunuz taktirde (CCS C veya HI-TECH C gibi mesela) bu derleyicilerle uyumlu olarak çalışabilir, hata ayıklama özelliğini kullanabilirsiniz.

Yukarıda saydığımız 5 şarta sahip olduğunuzda PIC programlamak için yapmanız gerekenler sırasıyla şöyle olacaktır.
1) Bilgisayarımızı açar, PIC C Derleyicimizi çalıştırırız(PIC C dillerinden birini kullandığımızı varsayalım). Yapmak istediğimiz uygulamaya ve mikrodenetleyicimize göre kodumuzu yazarız.

2) Kodu derleyip, hex dosyası oluşturduktan sonra hex dosyasını PIC e yükleyecek olan ve yukarıda da asgari listede 5.maddede bahsettiğimiz yazılımı çalıştırırız.

3) Mikrodenetleyicimizi PIC Programlayıcıya yerleştirdiysek yazdığımız kodun hex uzantılı dosyasını bu yazılım aracılığıyla PIC imize yükleyebiliriz ve artık PIC i programlayıcıdan çıkarıp devremizde kullanabiliriz. Bu 3 adımda bilgisayarla ilgili olan kısmı geride bırakmış oluyoruz. Artık PIC i devremizde çalıştırabiliriz.

Ancak tüm bunları sağlamak ve hatasız uygulamalar geliştirmek yeni başlayan arkadaşlar için epeyce zor olacaktır. Bu yüzden en uygun başlama yönteminin simülasyon programlarıyla olduğunu düşünüyorum. Simülasyon programı kullandığımız durumda yukarıdaki listenin donanım bölümündeki 1)”Herhangi bir model PIC Mikrodenetleyicisi”
2)”PIC Programlayıcı” maddelerinden kurtuluyoruz ve daha da önemlisi yanlış bağlantı sonucu parçaların bozulma riskinden veya çalışmayı önleyebilecek donanım hatalarından kurtuluyoruz.

Yazılım çevresinde elektronik simülasyonu yapan bir çok program var ancak PIC simülasyonu yapabilen pek yok. PIC simülasyonu yapan PROTEUS adında gayet güzel bir simülasyon programı var. Bu programın demo versiyonu-şu anda dosyaya ulaşamadım!- işimizi görecektir, firma: labcenter. (PIC simülasyonunu mümkün kılan programların özelliği yazdığınız kodları bu programlar sayesinde bilgisayar ortamında PIC e yükleme ve çalıştırma imkanı vermesidir. )
Bu işlemleri fiilen yapmak istediğimizde 1. PIC i programlamak için bir takım işlemler 2. çalıştırmak için birtakım işlemler yapmak durumundasınız, ancak simülasyon programları sayesinde programlamak için PIC inize sağ tıklayıp derleme sonucu oluşan hex dosyasını kaynak olarak göstermek, çalıştırmak için de simülasyon programınızın çalıştır düğmesine basmak yeterli olacaktır.

PIC programlamak için gereken asgari gereçlerin yeni bir listesini yapmamız gerekirse:
1) Yazacağınız kodları derleyip, hex dosyasına çevirecek derleyici. (Seçeceğiniz dile göre değişir, PIC C Dili, PIC Basic dilleri için derleyiciler internette mevcut)
2) Proteus Simülasyon Programı
olacaktır.

Bu şekilde PIC programlama dünyasına hızlı giriş yapabilirsiniz, bu işlemlere illa da fiilen başlamak istiyorsanız birkaç denemeden sonra yine simülasyon ortamına döneceksiniz çünkü yazdığınız kodları gerçek bir PIC de denemeniz için gereken işlemler sürekli yapıldığında çok can sıkıcı olur, genelde kodumuzdan emin olduğumuzda son işlem olarak gerçek PIC e yükleme yaparız, ha bir aksilik olursa en fazla birkaç defa değiştirip yükleriz. Kod geliştirme işlemini simülasyon üzerinden ilerletiyoruz son aşamada gerçek bir PIC e yüklüyoruz (hazır olduğunu düşündüğümüzde), bu her seviyeden PIC programcısı için böyledir.

NOTLAR:
CCS C ile kodlanmış ve Proteus ile simülasyon yapılmış örnek ‘yanıp sönen led uygulaması’nın dosyaları için buraya tıklayınız.
Yanıp sönen led uygulamasının proteustaki görüntüsü:
led_sim1

led_sim
Gerçekteki görüntüsü(gerçekte 5V luk gerilimi 7805 regülatör yardımıyla elde ediyoruz, proteus simülasyonda 5V bağlanmasına gerek olmadığından yukarıdaki şemada bu eleman gösterilmedi): Arkadaşlar bu resimlerdeki devreyi ben çalıştırdım. Yani aynen kurarsanız çalışır.
gercek_1

Breadboard’ı henüz tanımamış olan arkadaşlar bu bağlantı dan öğrenebilir.
gercek_2

Yukarıdaki gerçek devrelerde deney tablasının sağ tarafında 9V bulunmaktadır. Eğer devrede 9V kullanılmayacaksa bu 9V un ortalıkta olması pek sağlıklı bir iş değildir. 9V luk gerilimi sadece regülatör girişine bağlamak daha mantıklıdır. Resmi çekerken bu durum aklıma gelmediğinden resim böyle kaldı.

Bir diğer resim ve kısa bir video.
Regülatör kısmında kafası karışan arkadaşlar için:
7805

Kaynağı bağladıktan sonra çıkış 5V mu değil mi diye voltmetrenizle kontrol etmeyi unutmayınız.
Devrelerde “toprak” olarak tabir edilen uç pilimizin veya adaptörümüzün eksi ucu demektir. Bu tabir elektrik mühendisliğinden geçme geleneksel bir tabirdir.

Proteusta yapılmış “Yanıp Sönen Led” uygulamasını izlemek için tıklayınız (Dil olarak CCS C seçildi ve dolayısıyla CCS C Compiler kullanıldı). Videodaki bazı yerleri ne yazık ki net ve anlaşılır çekemedik:) (Link eksik, video youtube.com da)

Programla ilgili partik bilgilere ve dosyalara picproje.org forumlarından ulaşabilirsiniz.
http://www.picproje.org/main/modules.php?name=Forums&file=viewforum&f=44

Arkadaşlar şimdilik bu kadar, yeni başlayacak arkadaşlara yardımcı olmaya çalıştım, umarım faydalı olmuştur. İyi çalışmalar dilerim.

Tags : PIC programlama

nest...

oksabron ne için kullanılır patates yardımı başvurusu adana yüzme ihtisas spor kulübü izmit doğantepe satılık arsa bir örümceğin kaç bacağı vardır