Herkese merhabalar. Bu yazımızda sizlere Arduino programlama esnasında sıkça karşılaşılan hatalardan bahsedeceğim. Bunlardan bahsetmeden önce şu konuya bir açıklık getirelim. Her işte olduğu gibi bu işle uğraşırken de hata yapmak çok normal. Hata yapmak ve bunu kısa sürede çözememek motivasyonunuzun kaybolmasına neden olabilir fakat buna izin vermemeniz gerekir. Çünkü hata yaptıkça aslında tecrübe kazanmış, uğraştığımız şeyle ilgili daha çok bilgi sahibi oluruz. Karşılaştığımız hatalar, bazen onları nasıl çözebileceğimiz konusunda çalışmamız için bize fırsat verir ve bu sayede de kendimizi geliştirebiliriz. Hadi sıkça karşımıza çıkan bazı hatalardan bahsedeyim.

Arduino IDE

Arduino Hata Mesajları

Arduino’da karşılaştığımız hata mesajlarının birçok sebebi olabilir. Bu sorunlar genellikle Arduino ile bilgisayar arasındaki haberleşme sorunlarından, klon Arduino’ların sürücülerinin yüklü olmamasından, Arduino’nun veya bilgisayardaki USB portlarının arızalı olmasından kaynaklanabilir. Bunların haricinde derleme ve programlama öncesinde kullanıcının gerekli ayarları yapmaması da bazen hata mesajı gelmesine yol açmaktadır. Örneğin programlamak için bilgisayarınıza Arduino Nano bağladınız fakat Arduino IDE’de Arduino Uno programlayacağınızı belirttiniz. Bunun sonucunda bir hata mesajı almanız kaçınılmazdır.

Arduino IDE’de tüm kurulum ayarlarını doğru yaptınız, Arduino’nuz da bilgisayarınız ile haberleşmede sorun yaşamıyor fakat IDE’de belli bir satır belirtilerek hata mesajı alıyorsunuz… Bu, çözümü en kolay sorun. IDE’de gösterilen satırda bir yazım hatası yapmışsınız demektir. Yanlış yere parantez koyma, satır sonuna ‘;‘ koymama gibi hatalardan dolayı böyle bir geri bildirim alırsınız. Fakat yazım yanlışlarının çözülmesi veya kodlamada herhangi bir yazım yanlışı yapılmaması, programın tamamen sizin istediğiniz gibi çalışacağı anlamına gelmez. Bunun için kurduğunuz algoritmanın doğru olması gerekir.

Arduino IDE’de derleme ve programlama esnasında karşılaşılan yaygın bazı hataları ve çözümlerini yazının devamında bulabilirsiniz.

Arduino Karta Yüklenirken Sorun Oluştu – Taslak Yüklenirken Bir Hata Oluştu

avrdude: ser_open(): can't open device "\\.\COM1: Access is denied.
avrdude stk500_recv() programmer is not responding
avrdude stk500_getsync() attempt 1 of 10 not in sync resp=0x01
avrdude stk500_recv() programmer is not responding
avrdude stk500_getsync() attempt 2 of 10 not in sync resp=0x01
...

Bu sorunla karşılaştıysanız, muhtemel sebeplerini ve çözümlerini inceleyebilirsiniz. Böylece port sorununu, driver hatalarını aşmış, kartınızı kontrol etmiş olursunuz. Ayrıca bazen bu çeşit bir hatayı “taslak yüklenirken bir hata oluştu” şeklinde de alabilirsiniz, aynı çözüm yollarını denemenizi tavsiye ederim.

  • Yanlış COM Portu veya yanlış Arduino kartı seçilmiş olabilir

Arduino’nuzu bilgisayarın bir portuna bağlayın. IDE’de Araçlar>Kart kısmından bağlı olan Arduino modelini seçin. Sonrasında Arduino Araçlar>Port kısmına gelip bağlı olan portu işaretleyin (Örnek: COM3). COM portu doğru belirlenmişse Arduino’yu bilgisayarınızın farklı bir portuna takarak tekrar deneyin.

  • Gerekli sürücüler yüklenmemiş olabilir

Arduino kartları bazen sürücü yüklemesi sebebiyle hata verebilmektedir. Gerekli sürücüler bilgisayarınızda yüklü değil ise blog sayfamızda yer alan, Arduino Uno’yu örnek göstererek anlattığımız Arduino Sürücüleri Bilgisayara Nasıl Yüklenir? yazımızı ve eğer CH340 çipli klon Arduino kullanıyorsanız Klon Arduino Uno Sürücüleri Nasıl Yüklenir? yazılarımızı okuyarak bu sorunu çözebilirsiniz.

  • Extra: Arduino’nun 0.pininde (RX) bir bağlantı var mı?

Bu her zaman için geçerli bir kural olmasa da bazen Arduino’nun 0. pininde bir bağlantı olduğunda bu sorunla karşılaşabiliyorsunuz. Programlama esnasında bu pinde herhangi bir bağlantı olmadığından emin olun.

Arduino Karta Yüklerken Sorun OluştuTaslak Yüklenirken Bir Hata Oluştu

Arduino Derleme Sırasında Bir Hata Oluştu (Exit status 1, Error compiling for board Arduino/Genuino Uno)

Bu hata ile karşılaşıyorsanız Arduino IDE’de yazdığınız program derlenirken, yani henüz daha program karta atılmadan önce hazırlanırken bir sorun olmuş demektir. Genellikle bu sorunun birkaç sebebi vardır.

  • Gerekli kütüphanelerin bulunmaması

Yazdığınız programda kullandığınız elektronik ekipmana göre farklı kütüphanelere ihtiyacınız olabilir. Her kütüphane Arduino IDE’de hazır olarak bulunmaz. Bu yüzden ihtiyacınız olan kütüphaneleri belirleyip indirmeniz gerekir. İndirdiğiniz kütüphaneyi bilgisayarınızda C:\Program Files\Arduino\Library dosyasına aktardığınızda başarıyla bu kütüphaneyi elde edebiliyorsunuz. Sonrasında ise yazdığınız programın ilk satırına #include <kutuphane.h> yazarak kütüphanenizi programınızda kullanabilirsiniz. Örnek:

Servo motorların kontrolü için Servo kütüphanesini indirdik ve kütüphaneyi az önce belirttiğim Library dosyasının içine aktardık. Yazacağımız Arduino programının örneği şu şekilde olmalıdır:

#include <Servo.h>

void setup()
{
...
}

void loop()
{
...
}

Arduino’nun referans olduğu bütün kütüphanelere buradan ulaşabilirsiniz.

  • “Syntax” hatası (Yazım yanlışı)

Belki de karşılaştığınız sorun çok daha basit bir şey olabilir. Örneğin syntax hatası, yani yanlış sözdizimi… Açılan her parantez, köşeli parantez ve süslü parantezin kapatılması, komut sonlarına ‘;‘ konması, büyük/küçük harf uyumu gibi temel kurallara uyulmadığı takdirde yazılan program derlenmez. Bu sebeple programı yazarken yazım yanlışı yapmamaya dikkat etmek gerekir. Böyle bir durumda Arduino IDE hangi satırda hata yaptığınızı karşınıza çıkartabiliyor, bir diğer yandan da aşağıda çıkan hata raporunda belirtiyor.

Syntax Error

Yukarıdaki görselde örnek bir hata inceleyebilirsiniz. Döngünün son satırındaki delay(1000) komutunun sonuna ‘;‘ getirilmediği için komut algılanmamış, dolayısıyla döngü tamamlanmamıştır. Bu yüzden de döngünün sonundaki ‘}‘ bulunan satırda hata bildirilmektedir. Aslında sorun kodun sonuna ‘}‘ getirilmesi değildir, bu yüzden hata bildirimini doğru anlamaya çalışın. IDE’nin alt kısmındaki hata raporunda da “expected ‘;’ before ‘}’ token” yazıyor, yani ‘}‘ öncesinde ‘;‘ getirilmesi belirtiliyor.

Siz de bu hatalar gibi Arduino programlarken hatalar ile karşılaşıyorsanız yorum yaparak bunları bizimle paylaşabilirsiniz. Bu hataların çeşitli çözüm yollarını da bizimle paylaşarak yazımıza katkı sağlayabilirsiniz. Hata yapmaktan korkmayın, hatalardan ders çıkarabildikten sonra… 🙂

 


8 Yorumlar

  1. Merhabalar
    Bende exit status 1
    ‘else’ without a previous ‘if’
    diye bir hata çıkıyor
    yardımcı olabilir misiniz?

  2. Merhaba Arkadaşlar herkese kolay gelsin benim sorunum http://www.instructables.com/id/Simple-PS3-Arduino-Project/ bu sitedeki projeyi yaptım çalıştırdım fakat ufak bir sorunum kaldı program kodu ile ilgili aracım ileri ve geri gitmiyor bunun sebebininde projede kullanılan orjinal motor sürücü kartı olduğunu düşünüyorum çünkü farklı bir kart kullanmış bende türkiyede en çok kullanılan motor sürücü kartı kırmızı renkli l298n çin malı motor sürücü kartını kullandım aracım sağa ve sola dönüyor fakat ileri ve geri gitmiyor program kodunda ne gibi bir değişiklik yapmam gerekiyor bana bu konuda yardımcı olabilirmisiniz.

  3. merhabalar ben bunlara yeni basladım bu koddaki yaptıgım hataları bilemiyorum yardımcı olurmusunuz
    void setup() {
    pinMode(trig,OUTPUT);
    pinMode(echo,INPUT);
    pinMode(led_1,OUTPUT);
    pinMode(led_2,OUTPUT);
    pinMode(motor_1,OUTPUT);
    pinMode(motor_2,OUTPUT);

    }

    void loop() {

    kelime();
    int sayı = analogRead(yol);
    if(10< sayı<13){
    digitalWrite(led_1,HIGH);}
    else
    { digitalWrite(led_1,LOW);}
    kelime();
    if(5<sayı<9){
    digitalWrite(motor_1,126);}
    else{
    digitalWrite(motor_1,LOW);}
    kelime();
    if(1<sayı<8){
    digitalWrite(motor_2,126)&&digitalWrite(led_2, HIGH);}
    else{
    digitalWrite(motor_2,LOW);}
    }

  4. void setup()
    {
    pinMode(6, OUTPUT); //Enable
    pinMode(5, OUTPUT); //Step
    pinMode(4, OUTPUT); //Direction

    digitalWrite(6,LOW);
    }

    void loop()
    {
    digitalWrite(4,HIGH);

    for(Index = 0; Index < 2000; Index++)
    {
    digitalWrite(5,HIGH);
    delayMicroseconds(500);
    digitalWrite(5,LOW);
    delayMicroseconds(500);
    }
    delay(1000);

    digitalWrite(4,LOW);

    for(Index = 0; Index < 2000; Index++)
    {
    digitalWrite(5,HIGH);
    delayMicroseconds(500);
    digitalWrite(5,LOW);
    delayMicroseconds(500);
    }
    delay(1000);
    } burda ne hata var nolur yardımcı nolun

CEVAP VER

Please enter your comment!
Please enter your name here