Seri bağlantı kurunca Arduino resetleniyor (Çözüldü)
  • Yaptığım en basit sayaçta bile seri port ekranını açınca sayaç sıfırlanıyor ve yeniden saymaya başlıyor. Seri ekranı tekrar kapatıp açınca yine sıfırlanıyor. Aynı şey c# la bağlanınca da geçerli. LCD de sayaç duruyor ve sıfırdan başlıyor. Bana pek normal gelmedi. Beslemeyi usb den yapıyorum acaba onunla mı alakalı. Elimde uygun adaptör olmadığı için harici beslemeyle deneyemedim.

    #include < LiquidCrystal_I2C.h>
    LiquidCrystal_I2C lcd(0x3f , 16 , 2);
    int a;

    void setup () {
    lcd.begin();
    a = 1;
    }

    void loop () {
    lcd.setCursor(0, 0);
    lcd.print (a = a + 1);
    }
  • sırasıyla yaptıkların

    #include < LiquidCrystal_I2C.h> //lcd kutuphanesini cagırmışsın,
    LiquidCrystal_I2C lcd(0x3f , 16 , 2); //kullandıgın lcdnin adresini ve boyutlarını tanımlamışsın,
    int a; //a diye tamsayı turunde bir değişken tanımladın,

    void setup () {
    lcd.begin(); //lcd yi surup
    a = 1;
    }

    void loop () {
    lcd.setCursor(0, 0); //imleci en sol uste çekmişsin
    lcd.print (a = a + 1); // bu kodun çalışacağından pek emin değilim.
    }

  • - hataların -

    şuan bu kodlarla arduinodan veri okuyamazsın çunki, arduinoya bunu söylememişsin
    dosya/örnekler/basic/analogreadserial örneğini açıp ne yapıldığını 5 dakika anlamaya çalış.

    void setup () {

    }

    setup kısmı arduino boot ettiğinde 1 kez çalışır, (bilgisayarın bios ekranı gibi dusun dugmeye basınca siyah ekranda F1 Bios Ayarları F10 Boot Ayarları fln yazarya 2-3 saniye gözukur sonra kaybolur windows açılır)

    void loop () {

    }

    loop kısmı ise işi yapar surekli başa döner, yani sen arduinoya sırasıyla şu komutu veriyosun

    1 + 1 => Ekrana Yaz
    2 + 1 => Ekrana Yaz
    3 + 1 => Ekrana Yaz
    4 + 1 => Ekrana Yaz
    5 + 1 => Ekrana Yaz
    6 + 1 => Ekrana Yaz
    ...
    ..
    .

    arduino bu işi çok hızlı bir şekilde yapacağından henuz sen ekranda sayı bile goremeden
    a diye tanımladığın o tam sayı değişkeni, alabilecegi en buyuk degere ulasmış ve hata vermiş olacak.

    - çözum -

    setup içine
    Serial.begin(9600);
    komutu koyarak arduniya seriportu kullanacağını söylemen

    loop içine biraz delay koyman birde print ve arttırma olayını bi ayıralım.

    lcd.setCursor(0, 0); //imleci en sol uste çek (eğer yerini değişmiyceksen bu satırı setup içine koy, her döngude tekrar etmeye gerek yok.)
    a = a + 1; // buna kısaca a++ demişler...
    lcd.print(a); // şimdi lcdde gösterelim.
    Serial.println(a); //şimdi de seriale yollayalım (yeni satıda)
    delay(500); // yarım saniye bekle.
  • Kodda sorun yok. Üzerinde çalıştığım kodlar daha uzun ve karmaşık olduğu için sorunu anlatmak kolay olsun diye 2 dk da yazdım bunları. Arduino açıldıktan sonra 1 den başlayıp sayıyor lcd de.

    Benim sorunum lcd de bir değişken gösterirken ( bu değişken pwm pinlerini tetikliyor) seri porttan bağlantı kurunca (seri port ekranı, c# vs) sayaç sıfırlıyor. Dolayısı ile pini de sıfırlıyor ve baştan başlıyor. Bunun nedeni ne olabilir ? Arduino beslemesini usb den bağlandığım için olabilir mi? Sizlerden böyle bir sorunla karşılaşan oldu mu? Seri port ekranını açmak önemli değil aslında ama c# tan bağlanmak çok önemli. Sayaç sayarken c# la bağlanıp arduinoya veri yollayıp almam lazım. Bilmem sorunumu anlatabildim mi?
  • http://playground.arduino.cc/Main/DisablingAutoResetOnSerialConnection

    Çat pat ingilizcemle anladığım kadarı ile uno için reset ve gnd pinleri arasına 10μF'lik bir kapasitör bağlamak sorunu çözüyormuş. Gören duyan deneyen bilen varmı ?

    Edit: Denedim Oldu
    Edit2 : Kapasitör bağlıyken kod yüklenmiyor. Kod yükleneceği zaman kapasitörü sökmek lazım.
  • yazdığın şey bir problem değil arduino nun kendi özelliği ancak reset istemiyorsan GND ve Reset arasına 10 uF koymak işini görecektir diye umuyorum

Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Login with Facebook
Açık kaynak kültürü gereği, çözdüğünüz problemlerin çözümlerini paylaşmayı lütfen unutmayın.