VSCode ile Arduino için Intellisense kullanımı
Arduino IDE gerçekten çok yararlı bir araç, ancak Arduino (ya da WeMos, NodeMCU, ESP8266) ile yapmanız gerekenler LED yakıp söndürmekten fazlası ise, gerçek anlamda intellisense (kod tamamlama) desteği veren bir editöre ihtiyacınız var demektir. Intellisense, kod yazımını oldukça kolaylaştıran bir yardımcı araç. Modern yazılım dünyasında intellisense olmadan yazılım geliştirmek oldukça zahmetli ve maliyetli olacaktır.
Visual Studio Code; Microsoft'un açık kaynak kodlu, zengin eklentilere sahip bir kod editörü. Pek çok yazılımcı NodeJS olsun, Python, Javascript, Lua vs. geliştirirken Visual Studio Code (kısaca VsCode) kullanmakta. VsCode, Visual Studio Professional gibi örneklerin aksine komple bir IDE değil, bir kod editörü. Bu sebeple oldukça hızlı çalışabilmekte. Ancak kod tamamlama desteği, hata ayıklama gibi pek çok özelliği de destekliyor. Bu sebeple ben de Arduino ya da ESP8266 kodlarken halihazırda kullandığım editörün bu desteğinden yararlanmak istedim.
Daha önce de dediğim gibi, LED yakıp söndürme gibi uygulamalar Arduino kod yöneticisi üzerinde oldukça kolay. Ancak çoklu sensör sistemleri ya da OLED gibi görece daha karmaşık çıkış birimleri ile çalışacaksanız, biraz daha kapsamlı 3. parti kütüphaneler kullanmanız gerekecek (Adafruit veya U8GLib gibi). Bu sebeple sisteminiz biraz daha karmaşıklaşacak. İnternet'ten bulup kopyaladığınız kod parçacıkları ile spagetti programlama yapmaktan öteye geçemeyeceksiniz. Anlaşılabilir ve genişletilebilir bir mimari kurmak için intellisense desteğine ihtiyacımız var.
Bu desteği eklemek aslında çok zor değil. Ama ilk seferde de beceremedim. Karşılaştığım zorlukları ve çözüm yollarını not aldım. Belki birilerine yardımcı olur:
VScode yalnızca bir kod editörü, bu yüzden tek başına Arduino programlamak için kullanılamaz. Sistemde Arduino IDE'nin kurulu olması gerekiyor. Daha sonra Visual Studio Code üzerinde Arduino eklentisini kurmamız gerekiyor.
Bu kurulumu yaptıktan sonra, .ino uzantılı dosyaların vscode tarafından tanındığını göreceksiniz. Ancak işimiz bitmedi. "File>Preferences>Settings" üzerinden aşağıdaki ayarları eklememiz gerekiyor:
"arduino.path": "C:\\Program Files (x86)\\Arduino", "arduino.additionalUrls": "", "arduino.logLevel": "info", "arduino.enableUSBDetection": true, "C_Cpp.intelliSenseEngine": "Tag Parser"
Eğer AdaFruit gibi 3. parti kütüphaneler eklediysek, bu kütüphaneler çalıştığımız dizinin dışında olacaktır. Bu sebeple VsCode editörüne bu dizinlerin yerini bildirmemiz gerekiyor. Aksi taktirde "Include file not found in browser.path" hatasını alıyoruz:
Eğer lamba ikonuna tıklarsanız "Edit browse.path setting" düğmesini göreceksiniz.
Bu düğmeye tıkladığımızda, çalıştığımız klasöre .vscode alt klasörü eklenecek ve bu klasörün içerisinde de"c_cpp_properties.json" adında bir dosya yaratılacaktır. Bu dosyaya kullandığımız bütün .h dosyalarının yerini eklememiz gerekiyor. Ben ESP8266Wifi.h ve SSD1306.h dosyalarını kullandığım için bu dosyaların yerini bulup browse.path seçeneğine eklemem gerekiyor. İstediğimiz kadar dosya ekleyebiliriz.
Klasörleri ekledikten sonra intellisense desteğinin aktif olduğunu görüyoruz.
Tüm bunları yaptıktan sonra kodu derlemek ve entegre devrenize yüklemek için tekrar Arduino'yu kullanabilirsiniz. Ancak ben her işimi VsCode üzerinden görmek istiyorum. Bunun için board tipimizi ve seri portumuzu seçmemiz gerekiyor. Eğer sağ alt köşeye bakarsanız, iki tane düğme göreceksiniz:
- Select Board Type
- Select Serial Port
Eğer bunlardan ilgili seçenekleri seçerseniz kodunuzu derleme işlemine de hazırsınız.
Ancak editör üzerinde Compile
ya da Upload
gibi seçenekler direk olarak bulunmuyor. Bunlar eklenti olduğu için Ctrl + Shift + P
ile eklenti komutlarının olduğu listeyi kullanmamız lazım. Bu liste üzerinde "Arduino: Upload" şeklinde arama yaparsak ilgili komutu göreceğiz. Bu komutu seçtikten sonra eğer ayarlarınız doğruysa programın kartınıza yüklendiğini göreceksiniz.