Arduino & C#. NET HaberleÅŸmesi

Herkese merhabalar! Arduino Türkiye ekibi olarak Arduino ile farklı programlama dillerinin haberleşmesi üzerine yazdığımız yazılarımıza devam ediyoruz. Yepyeni ve farklı bir Arduino projesiyle sizlerle birlikteyim. Daha önce pek değinmediğimiz C# .NET ve Arduino üzerine bir uygulama hazırladım. Umarım beğenirsiniz.

Arduino ile haberleşen arayüzler tasarlamak ve bu arayüzlerden fiziksel dünya ile etkileşim kurmak en çok aranılan konulardan biri haline gelmiştir. Microsoft firmasının geliştirdiği .NET dil ailesinin en güçlü programlama dili olan C# .NET, arayüz tasarlama konusunda en uygun dillerden bir tanesidir.

Yeni bir konu olduÄŸu için en basit uygulama olan “LED yakıp söndürme (Blink)” uygulamasını gerçekleÅŸtirdim. Ä°lerleyen günlerde bu konuya olan ilginin arttığına inanırsam daha karmaşık uygulamaları sizlerle paylaÅŸacağım.

Uygulamamızda C# .NET ile “LED Yak” ve “LED Söndür” isimli iki butona bastığımızda LED yanması ve sönmesi durumlarını kontrol edeceÄŸiz. Arduino ile Seri HaberleÅŸme iÅŸlemlerinde kullanılan Serial Monitor penceremize harici olarak “1” ve “0” bilgilerini gönderdiÄŸimizde LED yanması ve sönmesi durumlarını etkileyeceÄŸiz. Farklı bir uygulama olduÄŸu için isterseniz hiç vakit kaybetmeden baÅŸlayalım 🙂

Arduino Kodları

Arduino kartımızın üzerinde hazır bulunan 13 nolu LEDin durumunu Serial Monitor penceresinden gönderilen “1” deÄŸerine göre HIGH, “0” deÄŸerine göre LOW yapan kodlarımızı yazalım.

Untitled

C# .NET Arayüzü Oluşturma

C# .NET’de arayüzümüzü oluÅŸturuken “LED Yak” ve “LED Söndür” isminde iki buton kullanacağız. Butonlardan birine bastığımızda diÄŸerinin pasif olmasını saÄŸlayacağız. Ayrıca arayüzümüzde LED Yak butonuna bastığımızda “LED Yanıyor!” ve LED Söndür butonuna bastığımızda “LED Sönük!” ifadelerinin yazdırılacağı bir TextBox kullanacağız.

Untitled

C# .NET Kodları

Seri Port Bilgilerini Tanımlama

Bu adımda Arduino kartımızı bilgisayarımıza tanıttığımıza Aygıt Yöneticisi üzerinden görebildiğimiz port ismini, seri haberleşme hızını belirtip portu kullanıma açan kodlarımızı yazıyoruz.

Untitled

Form Kapandığında Seri Portu Kapatma

C#. NET üzerindeki form kapandığında seri portu kapatan kodlarımızı yazıyoruz.

Untitled

LED Yak Butonu

LED Yak Butonuna bastığımızda veya Arduino Serial Monitor penceresinden “1” bilgisi geldiÄŸinde, text kutusuna “LED Yanıyor” yazdırıp LED Söndür butonunu pasif yapan kodlarımızı yazıyoruz.

Untitled

LED Söndür Butonu

LED Söndür Butonuna bastığımızda veya Arduino Serial Monitor penceresinden “0” bilgisi geldiÄŸinde, text kutusuna “LED Sönük” yazdırıp LED Yak butonunu pasif yapan kodlarımızı yazıyoruz.

Untitled

 

C# .NET arayüzündeki butonlar veya Serial Monitor pencersinden gönderdiÄŸimiz “1” ve “0” bilgilerine göre 13 nolu pine ait LEDin durum deÄŸiÅŸtirdiÄŸini görebilirsiniz 🙂

Bir Arduino Türkiye yazımın sonuna geldim. Konu ile ilgili yorumlarınızı bekliyorum.

Kendinize iyi bakın! Arduino‘suz kalmayın!

Volkan Kanat

Embedded Software Engineer @MakelSirketler. BSc. Mechatronics Engineer. Technical Author @dikeyeksen.

165 comments

  1. Mustafa dedi ki:

    Güzel yazı için teÅŸekkürler. Arduino devre kartına program kodunu yükledikten sonra, LED’in kontrolünü Arduino IDE’yi kullanmadan sadece Form1 penceresiyle saÄŸlaya biliyor muyuz?

  2. Volkan Kanat dedi ki:

    LED Yakma ve Söndürme işlemlerini Arduino IDE kullanmadan sadece C# üzerinde hazırladığımız butonlarla yapabiliriz.

    • Misafir dedi ki:

      led yakma ve söndürme işlemlerini arduino kullanmadan sadece c# ve rs232 kullanarak nasıl yapabiliriz.Bununla ilgili bir kaynak önerebilirmisiniz

      • Ömer Koman dedi ki:

        rs232 deki rts cts gibi kontrol pinlerini c#ile set veya clear yaparak o pinlere bağlı bir ledi surebılırsınız.

  3. Yavuz dedi ki:

    merhaba başlangıç için çok iyi olmuş. Bluetooth veya rf haberleşme kullanarak c# üzerinden bir proje paylaşma şansınız var mı?

  4. Ozan dedi ki:

    Merhaba , yazılarınızı takip ediyorum. C# ‘a giriÅŸ yaptığınız için teÅŸekkürler. Umarım devamı gelir.

  5. Volkan dedi ki:

    Öncelikle konu hakkında sunduğunuz bilgiler için teşekkürler. Yalnız arayüz programını çalıştırdığımda system.nullreferenceexception hatası alıyorum ve sanırım bu hatanın kaynağı olarak PortName kısmını gösteriyor. Bu değeri aygıt yöneticisinden bakarak söylediklerinize uygun biçimde giriyorum. Sorunu nasıl aşacağım konusunda yardımcı olabilirseniz, ya da PortName dışında herhangi bir alternatif kullanım varsa söyleyebillirseniz sevinirim.

  6. ÖZAY YILMAZ dedi ki:

    verdiğiniz örnek için teşekkür ederim elinize emeğinize sağlık
    visual studio 2010 ile örneği yaptım başarı ile çalıştı

  7. Hocam paylaşım için çok teşekkür ederim. Fark ettiğim kadarıyla eğer cihaz bilgisayara bağlı değilse, bağlantı gönderdiğimiz port yok ise .exe dosyamız hiç açılmıyor. Bunu engellemek için nasıl bir şey yapmalıyız bilginiz var mı? Port kontrolünü form açıldıktan sonra yapsın ve port boş ise uyarı döndürsün gibi mesela.

    • kaanceyhan dedi ki:

      buradaki örnekte uygun durumdaki portları kontrol ederek çalıştırmayı gerçekleştirmişler. yardımcı olabilir.
      http://playground.arduino.cc/Csharp/SerialCommsCSharp

    • Volkan Kanat dedi ki:

      Merhaba OÄŸuzhan,
      Port kontrolünü form açıldıktan sonra yapmak istiyorsan;
      serialPort1.PortName = ?COM13?;
      serialPort1.BaudRate = 9600;
      serialPort1.Open();
      kod bloklarını yukarıda anlattığım gibi,
      public Form1() {
      InitializeComponent(); }
      kod bloğundan sonra yazmamalısın, onun yerine buton1 ve buton 2?ye ait kod bloklarının içerisine yazmalısın. Seri port boş olduğunda uyarı döndürüp sistemi çalıştırmayacaktır.

  8. ilhan dedi ki:

    emeğinize sağlık. Örnek için tşk ederim
    Arduino pc ye baÄŸladığımda görmedi. Driverlarını yükledim ama hala hata veriyor.”Board at COM1 is not available” hatası alıyorum . yardımcı olursanız sevinirim.?

    • Volkan Kanat dedi ki:

      Merhaba Ä°lhan,
      Bilgisayarının Aygıt Yöneticisi kısmında Arduino çeÅŸidinin baÄŸlı olduÄŸu COM adresi ile Arduino-> Tools-> Serial Port üzerindeki Arduino’nun baÄŸlı olduÄŸu COM adreslerinin aynı olmasına dikkat etmelisin.

  9. mustafa dedi ki:

    hocam ben bunu yaptım çalıştırdım ama şöyle bir sorun var ben gelen mesela sıcaklık değerini label ın üzerine nasıl yazdırabilirim 2 gündür ugraşıyorum ama hala bütün c# kodlarını denedim olmuyor bi yardımcı olabilirseniz çok sevinirim

    • Volkan Kanat dedi ki:

      Merhaba Mustafa,
      Sıcaklık sensörü uygulaması farklı bir uygulama ancak eÄŸer herhangi bir label üzerine yazı yazdırmak istiyorsan labelismi.Text=”ifade”; ÅŸeklinde bir kod satırı yazman gereklidir. ÖrneÄŸin; label1.Text=sıcaklıkDegeri; gibi…

  10. mustafa dedi ki:

    hocam tan anlayamadım ama ben label1.text=seriport.read().tostring(); yazıyorum olmuyor yanlış nerde

    • özay yılmaz dedi ki:

      using System;
      using System.Collections.Generic;
      using System.ComponentModel;
      using System.Data;
      using System.Drawing;
      using System.Linq;
      using System.Text;
      using System.IO.Ports;
      using System.Windows.Forms;

      namespace WindowsFormsApplication1
      {
      public partial class Form1 : Form
      {
      bool LEDDurum;

      public Form1()
      {
      InitializeComponent();
      serialPort1.PortName = (“COM12”);
      serialPort1.BaudRate = 9600;
      serialPort1.Open();

      progressBar1.Value = 100; // PORT AÇIKKEN PROGRES BAR YEŞİL OLUYOR
      serialPort1.DataReceived += serialPort1_DataReceived; //PORT AÇIKKEN DEĞERİ OKUMASI İÇİN
      }

      private void Form1_FormClosing(object sender, FormClosingEventArgs e)
      {
      if (serialPort1.IsOpen) serialPort1.Close();
      }

      private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
      {
      string line = serialPort1.ReadLine();
      this.BeginInvoke(new LineReceivedEvent(LineReceived), line); // PORTTAN DEĞERİ OKUMAK İÇİN
      }

      private delegate void LineReceivedEvent(string line);
      private void LineReceived(string line)
      {
      //What to do with the received line here
      textBox1.Text = line; // PORTTAN OKUNAN DEĞERİ TEXTBOX1 İÇİNE YAZDIRMAK İÇİN

      }

      private void button1_Click(object sender, EventArgs e) // PORTA 1 DEĞERİ GÖDERMEK İÇİN
      {
      serialPort1.Write(“1”);
      textBox2.Text = “LED YANIYOR”;
      button1.Enabled = false;
      button2.Enabled = true;
      LEDDurum = true;

      }

      private void button2_Click(object sender, EventArgs e) // PORTA 0 DEĞERİ GÖNDERMEK İÇİN
      {
      serialPort1.Write(“0”);
      textBox2.Text = “LED SÖNDÃœ”;
      button1.Enabled = true;
      button2.Enabled = false;
      LEDDurum = false;
      }

      private void button3_Click(object sender, EventArgs e) //PORTU KAPATMAK İÇİN KOD
      {
      serialPort1.Close();
      progressBar1.Value = 0;
      textBox1.Text=(“PORT KAPALI”);
      textBox2.Text=(“PORT KAPALI”);

      }

      private void button4_Click(object sender, EventArgs e) // PORTU AÇMAK İÇİN KOD
      {

      serialPort1.PortName = (“COM12”);
      serialPort1.BaudRate = 9600;
      serialPort1.Open();

      progressBar1.Value = 100;
      serialPort1.DataReceived += serialPort1_DataReceived;

      }

      }

      }
      merhabalar mustafa ben volkan kanatın verdiği örnek koda internette bulduğum bir kod örneği ile arduniodan lm 35 ısı sensörünün değerini textboxa yazdırdım aynı zamanda led yakmak için 1 ve 0 değeri gönderdim yukardaki kod alıntıdır .

      • emrah dedi ki:

        hocam bana bu konuda yardım edermisiniz arduino esplora üzerindeki lm35 sensörü ile okuduğum sıcaklık değerini c# yazdırmam gerekiyor

  11. mustafa dedi ki:

    hocam yazdıramadım bir türlü herşeyi deniyorum ama

  12. Eyüp dedi ki:

    Volkan Bey,
    Böyle güzel bir örneği paylaştığınız için çok teşekkür ederim. Gayet açık bir örnek elinize sağlık.

  13. Halil dedi ki:

    hangi arduino kartını kulanıcaz

    • Volkan Kanat dedi ki:

      İstediğiniz Arduino kartını kullanabilirsiniz. Ben örnek için Arduino Mega kartını kullandım. Ancak diğer kartlarla da bu işlemi gerçekleştirebilirsiniz.

  14. […] dahili ledi yani 13 numaralı pine baÄŸlı leddir. Bu programı yazarken esinlendiÄŸim çalışma buradadır. Ben oradaki kodları kullanırken C#’ın sürümünden kaynaklanan bazı aksaklıklar […]

  15. ertan dedi ki:

    kolay gelsin volkan bey çalışmanız çok iyi. benim sorum ÅŸu benim tez ile ilgili ben bir ateÅŸ (mum alevi) gibi bunu kameraya gösterecem ve ısı sensöründede var yanıtı alacam kameraya rgb deÄŸriyle oynayarak gösterdim ama ısı sensörü ile c# ile bu taktikle nasıl yapabilirim bide kamerada görünecek ve ısı sensörüde evet dedimi yangın var yazacak bunu nasıl yaabilirim bir yardımcı olurmusunuz teÅŸekkürler…

  16. semih kıral dedi ki:

    Merhaba
    SerialPort1.Open kısmında
    unauthorizedAccessException was unhandled hatası alıyorum
    ek olarak Access to the port COM8 is denied diyor.
    Lütfen cevaplarınızı bekliyorum.
    Teşekkürler.

    • kadir dedi ki:

      visal studioyu açarken yönetici olarak çalıştır ile aç. (run administrator). ben de de aynı hata vardı. cüzeldi. sen de olur mu bilmem.

  17. Tarık dedi ki:

    Merhabalar c#’a bu yazı ile baÅŸladım bu yüzden size çok teÅŸekkür ediyrorum. yazınızda verdiiniz kodları yazarken serialPort1 kısımlarının altını çiziyor ve hata veriyor sebebi ne olabilir?

    SS:

  18. mustafa dedi ki:

    tarık bey aygıt yöneticisinde bağlandığınız port numarası ile ardunio ve c# da ki port numarasının aynı olmasına dikkat ediniz

  19. mustafa dedi ki:

    volkan bey ben aynısını gerçekleştirdim ancak çalışmadı. acaba sizler ilk yaptığınızda nelere dikkat ettiniz ? portlar tamam hiç bir şekilde bir hata almıyorum ancak c#dan ledi yak dediğim zaman ardunio da sadece rx ışığı yanıyor. acaba hız ile alakalı bir problem olabilir mi

  20. aknc03 dedi ki:

    Volkan bey sayın hocam bu örneği visual basic içinde uygulayabilirmisiniz anlatımınız biraz daha açık olursa çok seviniriz. Teşekkürler

  21. yunusoft dedi ki:

    gercekten bu aciklayici ders icin tesekkur ederiz. Devamini bekleriz hocam. . .

  22. Muhammed Özby dedi ki:

    Paylaşımınız için teşekkürler C# ile arduinoya nasıl serial port ile bilgi göndere bilineceğini çok iyi ve anlaşılabilir sade bir şekilde anlatmışsınız.

  23. OsmanBerke dedi ki:

    Merhabalar benim sorum ÅŸu ÅŸekilde olacak;
    c# ta yapmış olduğum bi yazılımı ardunio r3 modelinde bağlı olan dokunmatik ekran modülünde çalıştırmak istiyorum. Ardunio yu almış bulunmaktayım ve yazılım işlerimide bitirmiş olup sadece yükleme aşaması kaldı. Ardunio ile hiç bir bilgim yok nasıl bi yol izlemeliyim yardımlarınız için şimdiden teşkkürler..

  24. Ömer Koman dedi ki:

    c# ile pc nin seriportundan yolladığınız komutları arduinoda yorumlayıp arduino ekranına yazabilirsiniz veya arduino ile okuduğunuz analog voltaj değerlerini, anahtar on/off durumlarını alıp c# ile yazdığınız pc deki programa yollayıp orada yorumlayıp birşeyler yapabilirsiniz. burada volkanın yazdığı c# kodunu ve arduino kodunu inceleyip birlikte nasıl çalışıyor anlamanız yeterli. arduinoya program yükleme için şu anlatımla başlayabilirsiniz http://arduinoturkiye.com/arduinoya-baslarken-neler-gerekli/ ayrıcı şuradaki örnekler arduinoda yapacağınız ilk denemeler olmasında fayda var http://arduinoturkiye.com/arduino-ogrenirken-yol-haritasi-1

  25. Erdem dedi ki:

    C#’dan seri port yoluyla 0-255 arası sayıları string olarak gonderıyorum , arduinodan verileri alıp string to int iÅŸlemi yapıyorum ancak istedıgım gıbı calısmıyor, sanıyorumki string to int iÅŸleminde hatam var yardım edermisiniz ?

  26. Hasan dedi ki:

    Merhabalar,
    C# da yazmış olduğum bir web servisle.mobile cihazlar ve arduino arasında wireless shield ile bağlantı kurabilirmiyim?Ben kurabileceğimi düşünüyorum fakat daha mantıklı ve hızlı bir çözüm de olabilirmi?İnternette baktığım projelerde genelde aynı ağda haberleşiyor mobil cihazla arduino yada bluetooth shield var.Benim yapmak istediğim ikiside internete sahipse ben arduinoyu nikaraguadan bile yönlendirebilirmiyim.

  27. Ömer Koman dedi ki:

    lokal networkte rooter veya modemde NAT servisin konfigürasyonunu yaparsanız her turlu tcp/ip iletiÅŸimi mümkündür. arduinodadan internete doÄŸru yapılacak trafikte herhengi bir modem ayarına gerek yok, ama dış networkden lokala akış dediÄŸim gibi IP Forwarding ile yapılabilir…

  28. BuÄŸra dedi ki:

    Merhabalar kodu c# üzerinden denedim olmadı sadece kırmızı led yakıcaktım ama herneyse kaç gündür internet bakıorumm ama arduino başlangıç setinde olan dc motoru C# üzerinden ileri geri yapmak istiorum şuanda tek istedigim bu ve nası yapıcagımı merak ediorum açıkcası yazdıgım kodla motor ileri çalışıyor C# dışında peki ileri geri yapmam mümkünmü digital 12 ye baglıyorum bir ucu dieri ise 5 v seri haberleşmeyle ardunio programında çalıştırdım 1üerindentekrar bastım durdu peki geri hareketi olurmu?açıkcası konuyu farklı biryerde yazdım özür dilerim bu konuda ama kaç gündür uğraştıgım için cevabı burdan öğrenirim umudu ile yazdımm buraya çok teşekkürler şimdiden

  29. metin dedi ki:

    hocam merhaba arduino due de haberleşme kesmesini kullanarak veri alımını yapmak istiyorum. ana döngüde yazınca sıkıntı yok fakat kodu kesmede yazınca kesmeye girmiyor. nerde hata yapıyorum

    kod :
    #include
    Servo myservo;
    int val1=90;
    String x;
    void seri() // KESME
    {
    if (Serial.available())
    {
    int a =Serial.read();
    if (a==’1′)
    {
    digitalWrite(13,HIGH);
    x=Serial.readStringUntil(‘,’);
    val1=x.toInt();
    }
    else if (a==’0′)
    {
    digitalWrite(13,LOW);
    val1=0;
    }
    }
    }
    void setup()
    {
    attachInterrupt( 0, seri,RISING);
    Serial.begin(9600);
    pinMode(13,OUTPUT);
    myservo.attach(8);
    }
    void loop()
    {
    myservo.write(val1);
    }

  30. mehmet akdaÄŸ dedi ki:

    hocam örnekteki gibi c# ile arduinodaki ledi on/off yapıyorum fakat arayüz proğramı kapatıp tekrar açtığımda butonun son durumu gelmiyor bunu nasıl çözebilirim.(butona paralel txbox1 ve resim eklidir).

  31. ibrahim dedi ki:

    merhaba hocam ben arduino ile QTRC ile 8 li sensör grubu ile çizgi izleyen yapmaya çalışıyorum. arduinonun “QTRSensors.h” kütüphanesini kullanıyorum. fakat örneklerde beyaz zemin üzerine siyah yolu izleyen bir örnek var. ben tam tersini istiyorum bnunu içinde “QTRSensors.h” içerisinde şöyle bir açıklama var.

    “By default, this function assumes a dark line (high values)
    // surrounded by white (low values). If your line is light on
    // black, set the optional second argument white_line to true. In
    // this case, each sensor value will be replaced by (1000-value)
    // before the averaging.
    int QTRSensors::readLine(unsigned int *sensor_values,
    unsigned char readMode, unsigned char white_line)”

    benim yapmam gereken kütüphane içerisindeki whiteline =1 mi yapmak. yada programda bir değişiklik mi yapmak. bunun için bir opsiyon vermiş sanırım.

  32. beril dedi ki:

    Merhaba burada C# dan veri gonderdiginizde veri arduino nun usb baglantı kablosu uzerinden mi gitti.
    Yoksa Seri haberlesmek icin rs232 gibi herhangi bir seri haberlesme cihazi mi kullandiniz ?

  33. cevheri dedi ki:

    Yazı için teşekkürler. Çok faydalı oldu.
    Devamını bekliyoruz 🙂

  34. Fethi Murat dedi ki:

    Öncelikle paylaşım için çok teÅŸekkürler. Arduino konusunda henüz pekte tecrübe sahibi deÄŸilim. Paylaşımınız tek bir led kontrolü için. Benim sorum ise aynı port üzerinden 1’den fazla led’in kontrolünü nasıl yapabiliriz ?

  35. mehmet coskun dedi ki:

    Merhaba ben arduino ile c# arasında seriport kurarak analog giriş değerleri almak istiyorum.çok araştırdım ama istediğim bilgileri bulamadım nasıl yapabilirim

    • Ömer Koman dedi ki:

      arduinodan analog değerleri analoread ile alıp serial.print ile dışarıya vereceksiniz. yukarıda c# ile nasıl okunuyor anlatılmış.

  36. Mehmet YeÅŸilyurt dedi ki:

    öncelikle yazı için teşekkürler. benim şöyle bi sorum olacak c# da tanımladığımız bir double yada float değeri arduinoya nasıl aktarabiliriz. yaptığım araştırma sonunda c#da degeri stringe çevirmemiz gerektiğini anladım fakat bu değeri arduinoda tekrar nasıl float yada double cevirebiliriz. bi sitede söyle bi kod buldum:
    int lf = 10; // Linefeed in ASCII
    String myString = null;
    Serial myPort; // Serial port you are using
    float num;

    void setup() {
    myPort = new Serial(this, Serial.list()[0], 9600);
    myPort.clear();
    }

    void draw() {
    while (myPort.available() > 0) {
    myString = myPort.readStringUntil(lf);
    if (myString != null) {
    print(myString); // Prints String
    num=float(myString); // Converts and prints float
    println(num);
    }
    }
    myPort.clear();
    }
    denedim ancak çalışmıyor. şimdiden teşekkürler

  37. Mustafa dedi ki:

    Merhabalar,çok basit bir sorunum var. serialPort1.Portname yazdığımda serialPort1 yazımında hata olduğunu söylüyor. Nasıl çözeceğime yardım ederseniz çok sevinirim.

    • Ömer Koman dedi ki:

      c# da kullandığınız formda serialPort1 nesnesi olması lazım , varsa bilgisayarınızda arduino baÄŸlı olduÄŸunda bir seriport belirir arduino idede de saÄŸ altta bunun adı görünür. orada görünen portu c# ta mesela serialPort1.Portname=”COM49″ gibi yazacaksınız. gerçi program otomatik olarak ilk seri portu getiriyor deÄŸiÅŸkene ama arduino pcye aÄŸlıysa kodun çalışması lazım…

  38. Berk B. dedi ki:

    İlk öncellikle detaylı anlatımınız için teşşekürler,
    Ben c#’den saat ve tarihi alıp 5110 ekranında yazdırmak istedim
    fakat,şöyle bir hata alıyorum:”conversion from ‘int’ to ‘String’ is ambigous”
    şimdiden yardımlarınız için teşşekür ediyorum.

  39. Ömer Koman dedi ki:

    int tipli değişkeni string değişkene direk eşitleyemezsiniz dönüştürmeniz lazım hata mesajını tercüme ettim
    şununla dönüştür
    String myString = String(n);

    şurada daha fazla dönüşüm örneği var http://arduino.cc/en/Reference/StringConstructor

    sorduğunuz konunun c# ile alakası yok konu dışı soruları forumdan sormanızda fayda var.

  40. Sefa dedi ki:

    Merhabalar hocam öncelik olarak çok teÅŸekkür ediyorum bu bilgilerinizi bizimle paylaÅŸtığınız için benim bir sorum olacaktı Arduino’ya yeni baÅŸlamış bulunmaktayım bir sorum olacaktı. Arduino ile sinyal kesici bir makina yapmam mümkün mü acaba? Mümkünse ne kadar zamanımı alır, ve bunun için neler yapamam gerekli? Bir de uzun mesafeli istemiyorum 10-15 metre bile yeterli benim açımdan.

  41. Onur dedi ki:

    Merhabalar,
    Arduino wifi modülü ile C# da yazdığımız arayüz ile led kontrolü yapmak nasıl olur acaba yardımcı olur musunuz bir türlü beceremedim?

    • Ömer Koman dedi ki:

      normal zamanda c# ile bir tcp/ip uygulaması yazdıysanız hiç farkı yok.

  42. Hüseyin DEMİRBİLEK dedi ki:

    Merhabalar Ben birkaç defa Arduino IDE’sini kurdum. Her kurulumdan sonra seri port COM numarasının bir artığını gördum bunu düzeltmenin bir yolu var mıdır? TeÅŸekkürler Kolay gelsin.

    • Ömer Koman dedi ki:

      sistem windows ise comm numarasının değişmesi için her seferinde farklı bir usb porta takmışınız demektir. yada arduinonuz klonsa ve usb surucu değişiktir huyu suyu değişiktir onların. windowsda usb ye ayrılan com numarasını değiştirebilirsiniz aygıt ayarlarını kurcalayın

  43. burak dedi ki:

    merhaba konuyla alakalı bi sorum var ben 50 ledi hangi datayla kontrol yapabilirim yani 1 ve 0 gibi degilde 50 ceşit yani yak söndür yapcamız için 100 adet dataya ihtiyacım var bunu nasıl yapabilirim

    • Ömer Koman dedi ki:

      serialden led01=1 led01=0 led50=1 led50=0 şeklinde gelecek verileri ayrıştırısanız olur.

  44. Burak Güneş dedi ki:

    int led=2;//ledin bağlandığı pin
    int led1=3;
    int led2=4;
    int led3=5;
    int led4=6;
    char data ;//pcden gelen veriyi saklayacak deÄŸiÅŸken
    void setup()
    {
    Serial.begin(9600);
    pinMode(led,OUTPUT);
    pinMode(led1,OUTPUT);
    pinMode(led2,OUTPUT);
    pinMode(led3,OUTPUT);
    pinMode(led4,OUTPUT);

    }

    void loop()
    {
    //serial buffera veri gelirse işlem yapılacaktır
    if(Serial.available())
    {
    data=Serial.read();//gelen veriyi oku, sonucu data deÄŸiÅŸkenine aktar.
    if(data==’1′)
    {
    digitalWrite(led,HIGH);
    Serial.println(“Led acik”);
    }
    else if (data==’0′)
    {
    digitalWrite(led,LOW);
    Serial.println(“Led Kapali”);
    }
    if(Serial.available())
    data=Serial.read();//gelen veriyi oku, sonucu data deÄŸiÅŸkenine aktar.
    if(data==’2′)
    {
    digitalWrite(led1,HIGH);
    Serial.println(“Led1 acik”);
    }
    else if (data==’3′)
    {
    digitalWrite(led1,LOW);
    Serial.println(“Led1 Kapali”);
    }
    if(Serial.available())
    data=Serial.read();//gelen veriyi oku, sonucu data deÄŸiÅŸkenine aktar.
    if(data==’4′)
    {
    digitalWrite(led2,HIGH);
    Serial.println(“Led2 acik”);
    }
    else if (data==’5′)
    {
    digitalWrite(led2,LOW);
    Serial.println(“Led2 Kapali”);
    }
    if(Serial.available())
    data=Serial.read();//gelen veriyi oku, sonucu data deÄŸiÅŸkenine aktar.
    if(data==’6′)
    {
    digitalWrite(led3,HIGH);
    Serial.println(“Led3 acik”);
    }
    else if (data==’7′)
    {
    digitalWrite(led3,LOW);
    Serial.println(“Led3 Kapali”);
    }
    if(Serial.available())
    data=Serial.read();//gelen veriyi oku, sonucu data deÄŸiÅŸkenine aktar.
    if(data==’8′)
    {
    digitalWrite(led4,HIGH);
    Serial.println(“Led4 acik”);
    }
    else if (data==’9′)
    {
    digitalWrite(led4,LOW);
    Serial.println(“Led4 Kapali”);
    }
    }
    }
    BAK abicim böle yazdım ama olmuyor serial pencereye led50=1 led50=0 mı yazıcaz abi ama olmuyo denedim ??

  45. Burak Güneş dedi ki:

    KAÇ DEFA YAZDIM KİMSE YARDIMCI OLMUYOR ACIKCASI

    • Ömer Koman dedi ki:

      serialread ile herzaman 1 kararkter okuyabilirsiniz, kendinize önce bir format belirleyin diyelim “A” harfi yolladığınınzda bu led1=1 olsun “B” yolladığinizda led2=1 olsun bunu da bir sayisal deÄŸere dönüştürmek kolay “A” nın asc deÄŸeri decimal 65 tir gelen her harften 64 çıkarırsanız led i bulmuÅŸ olursunuz yapacağınız iÅŸ sadece ledi set etmek. “a” gelince buda led1=0 anlamında olsun. “a” nın asc deÄŸeri 97dir. böyle böyle kodu geliÅŸtireceksiniz. daha farkı bir formatta veri atayım diyoranız serialevent ile galan dataları biriktirip toplu halde içinden gelen string arataaksiniz. arduinoda en kötü yan insanları copy/past alışkanlığına itiyor kod yazma alışkanlığı saÄŸlamıyor. dünya bir proje bir diÄŸerine benzemiyor hepsi farklı, kod yazmayı c++ ile düşünmeyi öğrenmek kolay deÄŸil bol bol yazmak gerek baÅŸka türlü olmuyor.

  46. Ceyhun YILMAZ dedi ki:

    Merhabalar,
    Yazınız için teşekkür ederim.
    Arduinoyu internet üzerinden kontrol etmek için nasıl bir yol izlenir.

    • Ömer Koman dedi ki:

      sitedeki ethernet ve web sunucu konularını okuyabilirsiniz foruma da gelin sorun.

  47. taylan dedi ki:

    emeklerinizden dolayı herkese çok teşekkür ederim
    c# tcp/ip ve arduino haberleşmesiyle ilgili bir örnek paylaşmanız mümkünmüdür veya paylaşılmış bir örnek varsa linkini paylaşırmısınız

    • Ömer Koman dedi ki:

      projenizi sitenin forum kısmından da sorabilirsiniz. daha fazla katılımcı var orada.

  48. tamer dedi ki:

    merhabalar amacımız c# programı ile projemizi haberleştirmek projemiz ise mini sumo, mini sumo da 3 tane cisim algılayıcı sensör ( mz 80 ) var. sensörlerden bilgi geldiğinde c# ta göstermemiz gerekıyo bu konuda bana yardım edebilirmisiniz

  49. Ömer Koman dedi ki:

    Sitenin forumuna gelin

  50. hasan özgül dedi ki:

    merhaba arkadaşlar keypedle 99 saniyeye kadar leed yakmayı nasıl yapabilirim??

  51. UMUT dedi ki:

    hocam tek pencereli kapı alarm sistemi diye bir projem var programı yazdım isis de deneme yaptım normalde iki butondan birine bastığım zaman çıkış ledimin sürekli yanması gerekiyor ancak çıkış ledi sürekli yanıp sönmekte programın son parçacığı şu şekilde
    TEST_PORTA
    BTFCS PORTA, 0
    BSF PORTB, 0
    BCF PORTB, 0
    BTFCS PORTA, 4
    BSF PORTB, 0
    BCF PORTB, 0
    GOTO TEST_PORTA
    END
    Hocam yardımcı olursanız sevinirim

  52. Abdullah dedi ki:

    MERHABALAR.
    LÃœTFEN BANA YARDIMCI OLUN.!!!!!!!!!!!!!!!!!!!!!!!!!
    BEN ARDUINO UNO R3 LED YAKMA İŞLEMİ YAPMAK İSTİYORUM. COM PORTUM ÇALIŞMASINA VE KODLARIMIN DOĞRU OLMASINA RAĞMEN LED IŞIĞI NE YANIYOR NEDE SÖNÜYOR. COM PORTUNA 1 YAZDIRDIĞIMDA DEVREDEKİ KÜÇÜK IŞIK UFAK YANIYOR.AMA LED IŞIĞI YANMIYOR. IDESIYLE İŞLEM YAPTIĞIMDA HİÇ BİR SORUN YOK. ANCAK UYGULAMAMDA NEREDE HATA YAPIYORUM ACABA.
    =============COM PORT ÖZELLİKLERİM=========
    If Sp.IsOpen = False Then
    Sp.PortName = “COM5” ‘change com port to match your Arduino port
    Sp.BaudRate = 9600
    Sp.DataBits = 8
    Sp.Parity = Parity.None
    Sp.StopBits = StopBits.One
    Sp.Handshake = Handshake.None
    Sp.DtrEnable = True
    Sp.RtsEnable = True
    OpenSP()
    End If
    ===========YAZDIRDIÄžIM VERÄ°===========
    LED YAKMAK İÇİN: Sp.Write(“1”)
    LED SÖNDÃœRMEK İÇİN: Sp.Write(“0”)

    • Ömer Koman dedi ki:

      arduinoda led blink ornegını yukledıgınızde calısıyor mu belkı devrenızı dogru kuramadınız.

  53. skr dedi ki:

    merhabalar ben bir quadcopter projesi yapıyorum. sorunum şu motorlar çalışıyor ama herhangibir havalanma söz konusu değil. sorunu bulamadım acaba güç mü yetmiyor yoksa kodlardamı sıkıntı var. Yardımcı olursanız sevinirim.
    Kodlar ÅŸunlar;

    int STATE=2;
    int Arming_Time=50;
    int pin = 4;
    int pin1 =5;
    int pin2 =6;
    int pin3 =7;
    int Pulse=1000;

    void setup()
    {
    pinMode (pin,OUTPUT);
    pinMode (pin1,OUTPUT);
    pinMode (pin2,OUTPUT);
    pinMode (pin3,OUTPUT);
    for(Arming_Time = 0; Arming_Time <500 ; Arming_Time+=1)
    {
    digitalWrite(pin,HIGH);
    digitalWrite(pin1,HIGH);
    digitalWrite(pin2,HIGH);
    digitalWrite(pin3,HIGH);
    delayMicroseconds(1100);
    digitalWrite(pin,LOW);
    digitalWrite(pin1,LOW);
    digitalWrite(pin2,LOW);
    digitalWrite(pin3,LOW);
    delay (50-(Pulse/1000));
    }}

    void loop()
    {
    for(Pulse = 1150; Pulse <=1400; Pulse +=1)
    {
    digitalWrite(pin,HIGH);
    digitalWrite(pin1,HIGH);
    digitalWrite(pin2,HIGH);
    digitalWrite(pin3,HIGH);
    delayMicroseconds(Pulse);
    digitalWrite(pin,LOW);
    digitalWrite(pin1,LOW);
    digitalWrite(pin2,LOW);
    digitalWrite(pin3,LOW);
    delay (50-(Pulse/1000));
    }
    for(Pulse = 1150; Pulse <=1150; Pulse -=1)
    {
    digitalWrite(pin,HIGH);
    digitalWrite(pin1,HIGH);
    digitalWrite(pin2,HIGH);
    digitalWrite(pin3,HIGH);
    delayMicroseconds(Pulse);
    digitalWrite(pin,LOW);
    digitalWrite(pin1,LOW);
    digitalWrite(pin2,LOW);
    digitalWrite(pin3,LOW);
    delay (50-(Pulse/1000));
    }

    }

    • Ömer Koman dedi ki:

      quadcopter teorisi bilmek gerekiyor pervane çapları küçük gelmiş olabilir. hız yeterli olmayabilir. hazır kodları kullanıp onları modifiye ederek daha kolay öğrenebilirsiniz sanırım. ayrıca yazının konusu dışında bir şey sormayın konu dağılıyor. foruma gelin istediğinizi sorun.

  54. Canan dedi ki:

    Hocam saygilar. Arayuzu indirdim fakat hala com’u bulamiyor acaba arayuzu arduinoda ki bi klasore mi atmamiz gerekiyi baya kurcaladim ama bulamadim

    • Ömer Koman dedi ki:

      arayuz .net pcde çalışan program bır yere atmayın pc de calısÅŸtırın. yukarıdaki yazıyı dikkatlice adım adım yapın…

  55. C# Setup dedi ki:

    Merhabalar. Herkese kolay gelsin. Simdiki soracam soru biraz sacma gelebilir. Bana C# setup i nereden indirecegim link verebilecek arkadaslar var midir acaba? Arduino ile haberlesmesi icin hangi surum lazim vs bana tam calisan bir setup verebilir misiniz.
    Tesekkurler

    • Ömer Koman dedi ki:

      visual studyo express i indireceksin onun içinde gelir. 2013 versiyonu şuradan iniyor https://www.visualstudio.com/tr-tr/products/visual-studio-express-vs bilgisayarın eski ise 2010 versiyonu kurmanı öneririm. aslında yazıda nereden indirilebileceği yazılsa iyi olacakmış. herhangi bir microsoft masaüstü programcılık deneyiminiz yoksa size fazla gelebilir kurulumu ve proje oluşturma mantığı. piyasadan bir c# kitabı almanızı da tavsiye ederim.

      • C# Setup dedi ki:

        Omer Hocam tesekkur ederim. Genelde bilgim var. Arduino`da akilli ev, her turlu robot projelerini yaptim. Simdi matlab , C# , proteus vs ile birlikte arduinoyu kullanmak istiyorum. Bunun icin bir oneriniz varsa Omer Bey duymak isterim :).
        Tesekkur ederim.
        Saygilarimla

  56. Ömer Koman dedi ki:

    en iyi bildiÄŸiniz yoldan gidin derim.

  57. C# Setup dedi ki:

    Tekrardan iyi gunler. Ben C# ve Arduino led yak sondur uygulamasi yapacaktim. yukarida belirtilmis C#.Net derken ben Microsoft Visual Studio uygulamasin acarken boyle bir (C#.net) secenegin goremedim. get microsoft azure sdk for .net ve asp.net web application geliyor onume. Hangi secenek uzerine kuracam projeyi onu gostereblr msnz. Tesekkurler. Kolay gelsin.

    • Ömer Koman dedi ki:

      yukarıdaki linkte w studyonun bir çok versiyonu var siz web versiyonunu kurmuş olabilirsiniz desktop versiyonunu indirin kurun. ayarlarda kullanacağınız dil olarak c# seçeceksiniz.

  58. Kadir Öztürk dedi ki:

    Neden kaç aydır yeni c# projesi gelmiyor?
    Led yakıp söndürme sıcaklık bilgisi alma gibi işlemleri yaptım ama daha ileri projelerde zorlanıyorum lütfen yeni yazılar gelsin.Teşekkürler.

    • Ömer Koman dedi ki:

      foruma gelin c# projelerinizi oradan paylaşın. c# konularının yayınlanmasındaki amaç arduino ile dış ortamın ve bir kullanıcı arayüzün nasıl iliÅŸkilendirildiÄŸini anlatmak içindir, genelde hepsi seriport uzerinden gerçekleÅŸtiÄŸiden konunun tekrtarından baÅŸka bir ÅŸey olmuyor, diÄŸer ethernet wifi baÄŸlantılarını denemk istiyorsanız kullanıcının öncelikle tcp network bilgilerini geliÅŸtirmesi gerekiyor. yada bluetooth kullanmak istiyorsanız buradaki bilgiler yine iÅŸinize yarayacaktır. foruma bekleriz…

  59. Kadir Öztürk dedi ki:

    Teşekkürler Ömer hocam.

  60. Serkan dedi ki:

    merhabalar programı çalıştırınca f5 e basıp serialPort1.Write(“1”); kısmını iÅŸaret edip An unhandled exception of type ‘System.InvalidOperationException’ occurred in System.dll hatası alıyorum çözümü bulamadım yardımcı olur musunuz?

  61. Birkan TuÄŸcu dedi ki:

    C# ile com port işlemleri buton okuma dan çevirilere kadar tecrübem var en kısa zamanda arduino alıp kendi kodlarımı yazmak istiyorum önerebileceğiniz bir model var mı?

    • Ömer Koman dedi ki:

      uno ile baÅŸlarsanınız bir çok örneÄŸi çabucak çalıştırabilirsiniz…

  62. Berkan Y YILMAZ dedi ki:

    Merhaba, ben programı yazıorum fakat bu hatayı alıyorum. ” Error 1 The type or namespace name ‘Form1’ could not be found (are you missing a using directive or an assembly reference?)” yardımcı olabilirmisiniz.Programda su sekilde ;
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    using System.IO.Ports;

    namespace Ardunio_Kontrol
    {
    public partial class Form1 : Form
    {
    public Form1()
    {
    InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {

    serialPort1.PortName = “COM4”;
    serialPort1.Open();
    serialPort1.WriteLine(“e”);
    serialPort1.Close();
    label2.Text = “AÇIK”;

    }

    private void button2_Click(object sender, EventArgs e)
    {
    serialPort1.PortName = “COM4”;
    serialPort1.Open();
    serialPort1.WriteLine(“h”);
    serialPort1.Close();
    label2.Text = “KAPALI”;

    }

    private void label1_Click(object sender, EventArgs e)
    {

    }
    }
    }

    • Ömer Koman dedi ki:

      yazıdaki adımları uygulayın doğaçlama yapmayın olacaktır.

  63. Mert dedi ki:

    Elinize sağlık kısa ve öz olmuş.

  64. Sebahattin dedi ki:

    visual studio 2013 kullanıyorum ardunio bağlı com7 üzerinden çalışıyor. c# kodlarım
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.IO.Ports;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    using System.IO.Ports;

    namespace LedyakLedsondur
    {
    public partial class Form1 : Form
    {
    private bool LedDurum = false;
    public Form1()
    {
    InitializeComponent();

    SerialPort1.PortName = “COM7”;
    SerialPort1.BaudRate = 9600;
    SerialPort1.Open();

    }

    private void Form1_Load(object sender, EventArgs e)
    {

    }

    private void Form1_FormClosing(object sender, FormClosingEventArgs e)
    {
    if (SerialPort1.IsOpen) SerialPort1.Close();
    }

    private void button1_Click(object sender, EventArgs e)
    {
    SerialPort1.Write(“1”);
    textBox1.Text = “Led Yanıyor.”;
    button1.Enabled = false;
    button2.Enabled = true;
    LedDurum = true;
    }

    private void button2_Click(object sender, EventArgs e)
    {
    SerialPort1.Write(“0”);
    textBox1.Text = “Led Yanmıyor.”;
    button1.Enabled = true;
    button2.Enabled = false;
    LedDurum = false;
    }
    }
    }

    Bu ÅŸekilde serialPort1 failed veriyor. Hatam nerede acaba ?

    • Ömer Koman dedi ki:

      aynı portu baÅŸka bir cihaz veya arduino ide açıksa oradaki serialmonitor açmıştır o tutuyordur portu. kontrol edin…

      • Sebahattin dedi ki:

        Ömer bey teşekkür ederim hallettim. Ek olarak saat eklemek istiyorum mesela saat 20 ile 21 arasında led yanmasını istesem yapılabilir mi ? yardımcı olusanız çok sevinirim iyi akşamlar dilerim..

  65. Muhammed dedi ki:

    Öncelikle iyi çalışmalar sizden bir konu hakkında bilgi yardımı isteyecektim.Konu şudur ki üniversite projesi olarak arduino kullanarak akıllı ev projesi yapıcaz ve bu akıllı ev kontrollerini c# form ekranından gerçekleştireceğiz. Bunun nasıl olacağı hakkında fikir alış-verişinde bulunursanız sevinirim.

    • Ömer Koman dedi ki:

      foruma gelin bu konudaki konulara bakın uzun uzun konuşulmuştu, bu tip projelerin envai çeşidini yapanlar vardı forumda.

  66. Muhammed dedi ki:

    Ben foruma göz attım lakin akıllı eve dair bir şey göremedim link vermeniz mümkün müdür hocam ? Teşekkürler.

    • Ömer Koman dedi ki:

      direk foruma derdinizi yazın guzel bir başlık açın. kimse size sıfırdan proje yapmayacak ama yapmak istediğiniz çeyi yazın neler lazım nelere dikkat etmeniz lazım yazarlar. forumda yakın zamanda vardı akıllı ev projeji linkleri de vardı birisi kodlarını paylaşmıştı şimdi bende bulamadım ama geçen hafta yazışmıştı millet

  67. Muhammed dedi ki:

    Tesekkurler ıyı calısmalar ..

  68. burak o dedi ki:

    herkese hayırlı günler.
    forumlarda hep “1” gönderirisen yansın “0” gönderirsen sönsün ÅŸeklinde bir uygulama var. benim yazdığım arduino kodunda “@?_herhangi bir metin” yazdığınız zaman bunu
    if koÅŸulu içerisinde okutabiliyorsunuz.yani seri port ekranını açıp “led yansın” yazınca led yanıyor gibi. incelemeniz için arduino ver c# codlarını altta veriyorum .
    ////////////////////////////////////////////
    ////////////////////////////////////////////
    int k = 0;
    void setup()
    {
    Serial.begin(9600);
    pinMode(13 , OUTPUT);
    }

    void loop()
    {

    String veri = “”; //string tipi deÄŸiÅŸken tanımlanıyor
    // döngü başa her dönüşünde veri sıfırlanıyor
    if(Serial.available()>0) // verilerin okunma kısmı
    {
    k = 1;
    while(Serial.available()>0)
    {
    veri += char(Serial.read()); //her bir karakter tek tek okunup string
    delay(10); // tipindeki veri değişkenine aktarılıyor
    }
    }

    Serial.println(veri); // ne yazdığımızı görüyoruz.

    if(k == 1) // okunmuş olan verinin karşılaştırıldığı kısım
    { // k nın 1 olma durumu bir tür anahtarlama gibi.
    // seri haberleşmenin tamamlandığının göstergesi
    if(veri == “naber”)
    {
    digitalWrite(13 , HIGH);
    }

    if(veri == “nassin”)
    {
    digitalWrite(13 , LOW);
    }

    k = 0;
    }
    }

  69. Fehmi YILMAZ dedi ki:

    Teşekkürler güzel çalışma devamını bekliyoruz sabırsızlıkla

  70. kaÄŸan dedi ki:

    hocam ben com portundan deÄŸil kendi yerel ağıma baÄŸlı arduinoyu baÅŸka ip deki bir bilgisayardan c# üzerinden led parlaklığını kontrol etmek istiyorum bu konu hakkında önereceÄŸiniz sayfalar varmı, veya kendi tavsiyeleriniz. paylaşırsanız sevinirim…

    • Ömer Koman dedi ki:

      saydıklarınızdan hangisini yapabiliyrsunuz yani c# la bir bilgisayara bağlı arduino ile haberleştiniz mi bunu hallettiniz mi halletmediyseniz bu yazıyı okuyun. ardunuyu tcp/ip ile kullandınız mı kullanmadıysanız httpclient ve httpserver orneklerini araştırın bunlar aynı network uzerınde karşılıklı haberleşmeyi sağlar, led blink yaptınız mı hiç arduino orneklerındeki ledblink orneğini anlayarak deneyin. bahsettiğim konuları araştırdığınızda projenizi yapabilirsiniz. yapamadığınız nokta olursa foruma gelin şöyle yaptım şu kısmı çalışmadı diye sorun.

  71. Eren Arıcı dedi ki:

    Hocam Arduino programlama diliyle yapılabilecek şeyler java ile de yapılabilir mi?

    • Ömer Koman dedi ki:

      arduino bir donanım hardware aslında, donanımların kontrol edilebilmesi içinde driver/sürücülerinin kullanılan dil için yazılması lazım diyelim bir bellek kullanacaksınız ve bu bellek i2c veya spi pinlerini kullanıyor i2c 3 pin spi 4 pin kullanır ve kullanılacak dilin de realtime yazılması lazım yani zamanlamaların dikkate alınarak şu pini aç kapa şu pin tam hıgh durumdayken şu pini 2ms low yap gibi mantıklar var. java nın bir çok versiyonu var işlemci bazında çalışan versiyonlarını bulmak yetmez birde tum donanımı surecek kodları da yazarsanız java da kullanırsın zahmetine degecekse sen yazmaya başlayabılırsın en azından torunlarına bir mıras bırakmış olursun gerçi torunlar quantum bılgısayarlar kullanacak ama olsun ben hala gramafon dan gelen taş plak sesini severim 🙂

  72. ömer dedi ki:

    nalet olası bir zorluğu var hadi gidelim osman

  73. kadir karaca dedi ki:

    Hocam iyi günler.Önce güzel anlatımınız için teşekkür ederim.Ben sorum şu olacak
    c# da porta arduino bağlanıp bağlanmadığını nasıl kontrol edebiliriz.Örneğin progamı çalıştırdık ama arduino porta bağlamadık.Bu konuda programın bize hata mesajını vermesini nasıl sağlaya biliriz.

    • Ömer Koman dedi ki:

      hata mesajı vermez siz belirli sure cevap gelmezse bağlı olmadıgını anlayacak tımeout rutını yazmanız lazım.

  74. Kemal dedi ki:

    Merhaba;
    COM8 üzerinden Arduino IDE ile 13 pinden LED i yakıyorum. Hiçbir problem yok. Fakat C# tarafından çalıştırınca LED yanmıyor. SerialPort’u toolbox tan da ekledim, Dinamik olarak koddan da eledim fakat çalışmıyor. Visual Studio ya herhangi bir ekleti eklemek mi gerekiyor?

    • Ömer Koman dedi ki:

      yukarıdaki kodları adım adım uygulayın. çalışması lazım

      • Kemal dedi ki:

        C# .NET’de oldukça iyiyimdir, kodlarla ilgili herhangi bir problem yok. LedYak butonuna tıklatınca Arduino RX ışığı yanıp sönüyor. Komut geliyor yani. Fakat LED yanmıyor. Farklı bir makinadan, olmadı farklı bir Arduino’dan deneyeceÄŸim.

        • Ömer Koman dedi ki:

          şöyle yapın arduinoda program yuklu çalışır iken serialmonitor e girin 1 yolladığınıznda ledin yanması lazım 0 yolladığınızda sonmesi lazım. daha sonra c# ile deneyin

  75. Metehan dedi ki:

    Neden leddrum yaptiniz etkinligi kod icinde acaba farkli bir yerde mi kullandiniz

  76. yücel dedi ki:

    merhabalar arduıno ıcerısınde kod yazdım ve gelen verıyı bır degıskene arttım bu degıskenı formaplıcatıon ıle texbox ayazdırmak ıstıyorum bu konu ıle ılgılı bılgısı olan var sa maıl atabılırlermı işin içinde çıkamadım lutfen bı yardım edın ycl17041990@gmail.com

    • Ömer Koman dedi ki:

      c# da textbox a bilgiyi nasıl yazdırıyorsan arduinodan okudugun değeride aynı şekilde yazdırıyorsun bir fark yok

  77. ahmet kaba dedi ki:

    0-99 #c ile arduino ile birlikte lcd de nasıl saydırabilirim hocam?

    • Ömer Koman dedi ki:

      lcd ye sayı yazdırabildim diyorsun yani geriye c# tan bu sayıları yollayıp lcd de göstermek kalmış. foruma da gelin

  78. YÜCEL ÖZCAN dedi ki:

    rfıd uygulamsında textbox1.text=serialport1.readexiting(); ıle kartların kımlıklerını alıyorum ama if ıle kontrol etmek ıstıyorum if (texbox1.text !=null) dıyorum veya if (texbox1.text ==””) yapıyorum ama bır turlu ıcının bosmu degılmı oldugunu gormuyo ıcı doluysa tımer a start verıcem yardımcı olabılırmısınız

  79. erkan dedi ki:

    mrb hocam c# de örneğim lm35 le ultrasonik sensörden tek porttan bilgi alışverişi yapan örnek bulamadım yapmak mümkunmu mesala textbox1den sıcaklık verleri texbox2den mesafe ölçumü gibi

    • Ömer Koman dedi ki:

      bu orenği denedıkten sonra ek sensor ve cıhazlarla ılgılı konuyu forumdan sorun bakalım.

  80. görkem dedi ki:

    hocam bunun için arduinonun kablo ile bilgisayara bağlı olması gerekiyo ama bn kablosuz istiyorum aklımda ftp ile aynı mantıkta çalışması gereken bi işlem var nasıl yapabilirim

    • Ömer Koman dedi ki:

      ftp ptotokolu yeteri kadar rahat olmaz. bu işleme en yakın yontem bluetooth modul ıle yapabilirsin hc05 modulleri araştır. daha hızlı ve esnek olmak istiyorsan da esp8266 lı wifi modulleri araştırın.

  81. Aygün dedi ki:

    Merhabalar asp ile yaptığım bir siteyi sd card tan okumayı nasıl yapabilirim. HTML uzantılı dosyayı okuyabiliyorum ve internette de bir çok örnek html uzantılı dosyaları okuyarak yapılmış.Fakat aspx uzantılı siteyi okuyamıyorum. Yardımcı olursanız sevinirim.

    • Ömer Koman dedi ki:

      arduino ıle ilgili kısmını nasıl halledıyorsunuz.

      • kadir byk dedi ki:

        merhabalar omer bey konuyla alakasiz size bir sorum olacak elimde arduino leonarda var pc ile baglanti kuruyorum aygit yoneticisinden driverin ardiuno micro olarak goruyorum arduino ideyi acip com3 de arduino genineo micro yaziyor yani buraya kadar sorun yok is program yuklemeye geldigi zaman cihaz baglantisini kopariyor tekrar usb kablosunu cikarip takana kadar gormuyor ve bir turlu program attiramadim bilginiz varsa bana nasil yardimci olabilirsiniz.

        • Ömer Koman dedi ki:

          arduino ide nin yeni versiyonunu yukleyın araçlar menusunde leonardo bordu gormenız lazım o şekilde deneyin. foruma gelin sorun sorun çıkarsa

      • Aygün dedi ki:

        Arduinonun ethernet ve sd kütüphanesini kullanarak kartı web server haline getiriyorum.Fakat burada karttan html olarak veya txt uzantılı herhangi bir dosyayı okuyup işlem yapabilirken aspx uzantısını okumuyor.Ve bu bsns çok mantıksız geldi.Türkçe kaynakların hiçbirinde çözümü bulamadım yabancı kaynaklarda da anlayabildiğim kadarıyla şuanlık birşey bulamadım.

        • Ömer Koman dedi ki:

          aspx dosya formatının ıcerıgi binary formatsa ıcındekı kontrol karakterlerı okumayı engelliyordur. txt ve html içeriklerin oldugu dosyaları okutun. bu durum saçma değil arduıno web sunucunun sizden text karakter bazlı ve html e uygun formatta ıcerık beklemesınden kaynaklanmakta. buna uygun çalışın

          • sercan dedi ki:

            Hocam zaten verileri okuyabiliyoruz ve dediğiniz şekilde olan işlemleri yapabiliyoruz ancak html sayfa üzerinden bu işlemler gerçekleşiyor. Amacımız aspx ile yaparak aynı işlemleri kullanıcı arayüzlü çalıştırmak. IOT uygulaması oluşturmak bunun için nasıl bir yol izlemeliyiz. Yani temel olarak arduino c++ c# bilgimiz var.

          • Ömer Koman dedi ki:

            sizin aspx den kastınız nedir tam anlaşılmıyor. arduino icindeki index.html yerine blabla.aspx şeklinde mi çağırılsın istiyorsunuz

      • Aygün dedi ki:

        Kod kısmı da burası.

        #include
        #include
        #include
        byte mac[] = { 0xDE, 0xAE, 0x8E, 0x11, 0xBA, 0x11 };
        IPAddress ip(192, 168, 1, 10); // Ip adresi
        EthernetServer server(80);
        File webArayuz;

        void setup()
        {
        Ethernet.begin(mac, ip);
        server.begin();
        Serial.begin(9600);
        Serial.println(“SD Kart baÅŸlatıldı…”);
        if (!SD.begin(4)) {
        Serial.println(“HATA !”);
        return;
        }
        Serial.println(“SD Kart açıldı”);
        if (!SD.exists(“arduinom.htm”)) {
        Serial.println(“Dosya Bulunamadı…”);
        return;
        }
        Serial.println(“Dosya bulundu…”);
        }

        void loop()
        {
        EthernetClient client = server.available();
        if (client) {
        boolean currentLineIsBlank = true;
        while (client.connected()) {
        if (client.available()) {
        char c = client.read();
        if (c == ‘\n’ && currentLineIsBlank) {
        client.println(“HTTP/1.1 200 OK”);
        client.println(“Content-Type: text/html”);
        client.println(“Connection: close”);
        client.println();
        webArayuz = SD.open(“arduinom.htm”); //burada sd karttaki dosya aciliyor
        if (webArayuz) {
        while(webArayuz.available()) {
        client.write(webArayuz.read());
        }
        webArayuz.close();
        }
        break;
        }
        if (c == ‘\n’) {
        currentLineIsBlank = true;
        }
        else if (c != ‘\r’) {
        currentLineIsBlank = false;
        }
        }
        }
        delay(1);
        client.stop();
        }
        }

        internet üzerinde de bu kodlar kullanılmış fakat asp okutamadım.

        • Ömer Koman dedi ki:

          asp tipi sayfalar windows .net web sunucların desteklediği bir formattır arduinı asp kodunu işlemez. arduinonun yaptığı sayfayı sunarken gereklı ufak bır kaç hesaplama yapıp bunları sunmaktır. uzaktan ıcındekı bır kaç sensorun verısını okumaya yarar daha basit düşünün bir ledin sensorun anahtarın durumunu akuyup bunu sayfada gosterecek projeler yapın.

          • Aygün dedi ki:

            Cevabınız için teÅŸekkürler. ” arduino icindeki index.html yerine blabla.aspx ÅŸeklinde mi çağırılsın istiyorsunuz” demiÅŸsiniz sercan arkadaşıma aynen dediÄŸinz gibi o ÅŸekilde gelsin istiyoruz ve blabla.aspx in içinden arduinoya veri gönderip almak istiyoruz.Cevabınızda anladığım kadarıyla arduino aspx uzantılı sayfadan veri alıp gönderemiyor.DoÄŸru mu anlamışım?

          • Ömer Koman dedi ki:

            .NET web sunuc aspx sayfalar bolcana quikie kullanır(karşı tarafa işaretleme dosyaları yolar sayfa ıle beraber) bunları arduino desteklemez yada bu quikie dosyaları da alıp her seferınde sunucu okumak ıstedıgınde yollamanız lazım yada aspx tarafında bunları kullanmayan yollamayan basit sayfalar yapmaya çalışın, arduino aspx sayfayı açabılır tabiki ama bu mekanızmaları da bılıyor olmanız lazımdı.

  82. sercan dedi ki:

    Arduino kısmında
    #include
    #include
    #include

    // Ethernet shield için mac ve ip tanımlamaları
    byte mac[] = { 0xDE, 0xAE, 0x8E, 0x11, 0xBA, 0x11 };
    IPAddress ip(192, 168, 1, 10); // Ip adresi
    EthernetServer server(80);
    File webArayuz;

    void setup()
    {
    Ethernet.begin(mac, ip);
    server.begin();
    Serial.begin(9600);

    // initialize SD card
    Serial.println(“SD Kart baÅŸlatıldı…”);
    if (!SD.begin(4)) {
    Serial.println(“HATA !”);
    return;
    }
    Serial.println(“SD Kart açıldı”);
    if (!SD.exists(“arduinom.htm”)) {
    Serial.println(“Dosya Bulunamadı…”);
    return;
    }
    Serial.println(“Dosya bulundu…”);
    }

    void loop()
    {
    EthernetClient client = server.available();
    if (client) {
    boolean currentLineIsBlank = true;
    while (client.connected()) {
    if (client.available()) {
    char c = client.read();
    if (c == ‘\n’ && currentLineIsBlank) {
    client.println(“HTTP/1.1 200 OK”);
    client.println(“Content-Type: text/html”);
    client.println(“Connection: close”);
    client.println();
    // arayüzü gönderme…
    webArayuz = SD.open(“arduinom.htm”); //burada sd karttaki dosya aciliyor
    if (webArayuz) {
    while(webArayuz.available()) {
    client.write(webArayuz.read());
    }
    webArayuz.close();
    }
    break;
    }
    if (c == ‘\n’) {
    currentLineIsBlank = true;
    }
    else if (c != ‘\r’) {
    currentLineIsBlank = false;
    }
    }
    }
    delay(1);
    client.stop();
    }
    }

    bu kodları kullanıyoruz ancak htm yerine aspx olarak çalıştıramıyoruz veya html içerisinde birden fazla sayfaya yönlendirme yaptığımızda site içeriği değişmiyor.

  83. Mesut dedi ki:

    Çok teÅŸekkürler…

  84. bulut dedi ki:

    Merhabalar. Ben arduino ile seri haberleşme üzerinde uğraşıyorum. C# arayüzünü oluşturdum. Bağlantı sağlıyorum ancak şöyle bir sorun var. Eğer bilgisayara birden fazla arduino bağlanırsa ya da bir cep telefonu usb ile bağlanırsa program hangi girişi seçecek. Program seçtiğinde veri akışını durduracak arduino programı nasıl olmalı? Şimdiden teşekkürler.

    • Ömer Koman dedi ki:

      c# tarafında comm port seçeçecek şekilde programı duzenlemenız lazım.

      • bulut dedi ki:

        Evet ancak bu yeterli gelmiyor.Yani bluetooth telefon eşleşmesi gibi bir program yazmam gerekiyor. Örneğin bilgisayar a gönderecek arduinoda a değeri ile eşleşince arayüzde connected ifadesi yer alacak ve bağlantı sağlanacak. Ancak kodu yazamadım.

        • Ömer Koman dedi ki:

          arduıno ılk bir bilgisayara bağlandığında işletim sistemi bir usb COMx port atar ve bır daha o değişmez o portu bir şekılde kaydedın ve diğer bağlantılara dikkat etmenıze gerek yok ayrıca c# da bağlantıyı kurmaya çalıştıgınızda usb bağlı değilse hata alacaksınız bu hata olmadığı zaman ıletişimi sağlarsınız.

  85. Bulut dedi ki:

    İşte benim bulmam gereken de tam olarak bu. Ben bir arduino bir de cep telefonumu bilgisayara bağladım. Arduino ile haberleşerek bir connection olmasını istiyorum. Yani birbirini tanıyacakları bir kod yazmam gerekiyor.

  86. Ömer Koman dedi ki:

    şu şekilde arama yapınca bir çok ornek geliyor
    https://www.google.com/search?q=c%23+check+serial+port+available&oq=c%23+comm+port+avai&aqs=chrome.5.69i57j69i58j0l4.18534j0j7&sourceid=chrome&ie=UTF-8

    ÅŸu orenk basit deneyebilirsiniz
    https://stackoverflow.com/questions/21490065/how-to-check-if-com-port-exist-before-opening-connection-in-visual-c-sharp

    bu konular arduınoyu aşıyor devamını c# forumlarında ararsanız iyi olur.

  87. bulut dedi ki:

    çok teşekkür ederim iyi çalışmalar dilerim.

  88. bulut dedi ki:

    Merhabalar. Benim bir sorum daha olacak. Arduinoda titreşim değeri ölçüyorum sonuçlar 1000 200 gibi değerler çıkıyor. Bu değerlerin birimi nedir? Ben bunları mm/s cinsinden nasıl yazarım? Şimdiden teşekkür ederim.

    • Ömer Koman dedi ki:

      nasıl olcuyorsunuz siz yaptıgınıza gore daha ıyı bılmenız lazım. tıtıreşim degerını nasıl olcuyorsunuz

  89. bulut dedi ki:

    sw-420 titreşim sensörü ile ölçüyorum.

  90. Ömer Koman dedi ki:

    oncelikle sordugunuz sorunun yazının konusu ıle ilişkili olmasını tercih edin c# haberleşmesi ile alakası olmayan bir konuyu burada sormmayın forumu kullanın.

    sorunuza gelince

    şuradaki orneğe göre http://www.himix.lt/arduino/arduino-and-sw-420-vibration-sensor/

    pulsin fonksiyonu ile ölçüyor.
    https://www.arduino.cc/en/Reference/PulseIn
    pulsin fonksiyonu bir pine gelen sinyalin microsaniye olarak geniÅŸliÄŸini/suresini verir.

    ÅŸurada sensorun bilgileri de mevcut
    http://www.himix.lt/arduino/arduino-and-sw-420-vibration-sensor/

    şuradada tepedeki linkteki orneği koyayım
    // Watch video here: https://www.youtube.com/watch?v=235BLk7vk00

    /* Vibration sensor connected to Arduino pins as follows:
    Arduino Vibration Sensor
    D9 DOut
    GND GND
    +5V VCC

    D13 Indication LED
    */

    int ledPin = 13;
    int EP =9;

    void setup(){
    pinMode(ledPin, OUTPUT);
    pinMode(EP, INPUT); //set EP input for measurment
    Serial.begin(9600); //init serial 9600
    // Serial.println(“———————-Vibration demo————————“);
    }
    void loop(){
    long measurement =TP_init();
    delay(50);
    // Serial.print(“measurment = “);
    Serial.println(measurement);
    if (measurement > 1000){
    digitalWrite(ledPin, HIGH);
    }
    else{
    digitalWrite(ledPin, LOW);
    }
    }

    long TP_init(){
    delay(10);
    long measurement=pulseIn (EP, HIGH); //wait for the pin to get HIGH and returns measurement
    return measurement;
    }

    kullanılan sensor ıse bir tup içindeki bilye titreştikçe iki ucu kontak ucu kısa devre etmesıne sebep olur ve bunu olcerek tıtreşim hakkında bılgı sahıbı oluruz.

    titreşim suresınce sinyal alırsınız değişik değerler olacaktır kucuk değerler hafif titreşimler yuksek değerler daha şiddetli titreşim olarak düşünebilirsiniz ayrıca sensorun duruş pozizsonu sarsıntıyı alış yönü ile ilişkilidir buna dikkat edin darbenın veya etkini geliş yönüne göre sensorun pozisyonunu ayarlayın.

    SESNORUN OLCU BIRIMI MICROSANIYE DIR. YANI KONTAKLAR KAÇ MIKRASANIYE KISA DEVRE OLMUŞ ONU OLÇMÜŞ OLUYORSUNUZ.

    son söz: proje araştırmanızda kullanılan tum sensor ve kodları ıyıce ınceleyın tum ıp ucları zaten kodun içinde mevcut işleriniz çabuk bıter o zaman.

  91. Sinan dedi ki:

    iyi çalışmalar,
    Arduino ile rfid kart okuyucudan aldığım kart bilgisini database e kaydedip bir yemekhane sistemi oluştırmak istiyorum yardımcı olabilir misiniz?
    Arduino kodlarımda sıkıntı yok C# ve database sıkıntım var.

    • Ömer Koman dedi ki:

      foruma gelin sorun benzer şeylerın peşinde olanlar vardı belkı sıze yardımcı olan çıkar.

  92. Yusuf DURMUÅž dedi ki:

    Arkadaşlar giriş pini olara belirlediğim pinlerden sürekli çıkış olarak 5 volt alıyorum sebebi nedir acaba. Yardımcı olabilirseniz memnun olurum

  93. Emre dedi ki:

    Selam hocam elimde rs232 ile girişli cihazım var araya rs232 çeviriçi takarakta bağlantı yapıyorum. Sorunsuz çalışıyor. Ben bunu bluetooth ile bağlama istiyorum fakat bir kaç kes denedim olmadı hc o5 bluetooth denedim olmadı rs232 blutooth çevirici aldım olmadı.Bir fikriniz varsa yazarmısınız.

  94. Th3CODEhOMMIE dedi ki:

    Arkadaslar merhaba bir proje yapiyorum ve arduinodan degerleri aliyorum aldigim degerler mesela eger b<200 buttonun renki degisiyor nasil yapabilirim bilen var mi lutfen bana yardin edin
    kodum bu
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    using System.IO.Ports;

    namespace WindowsFormsApplication21
    {
    public partial class Form1 : Form
    {
    public Form1()
    {
    InitializeComponent();

    }

    private void label1_Click(object sender, EventArgs e)
    {

    }

    private void button2_Click(object sender, EventArgs e)
    {
    button1.BackColor = Color.Red;
    label1.Text = " OCCUPIED";
    }

    private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
    {
    if (serialPort1.ReadExisting().EndsWith("/n"))

    {

    string a = serialPort1.ReadLine();

    int b = Convert.ToInt32(a);
    label2.Text = b.ToString();
    //this.BackColor = Color.FromArgb(b, 0, 0);

    if (b < 200)
    {
    button1.BackColor = Color.Yellow;
    }

    }

    }

    private void button3_Click(object sender, EventArgs e)
    {
    listBox1.Visible = true;

    listBox1.Items.Add("Değerler alınıyor!");

    if (!serialPort1.IsOpen)

    {

    serialPort1.PortName = "COM11";

    serialPort1.Open();

    }
    }

    private void button4_Click(object sender, EventArgs e)
    {
    serialPort1.Close();
    listBox1.Items.Add("Durduruldu!");
    }

    private void Form1_Load(object sender, EventArgs e)
    {
    listBox1.Visible = false;
    }
    }
    }

  95. Fatih FERÄ°Z dedi ki:

    Yaptığınız uygulamayı paylaştığınız için teşekkür ederim Volkan bey yalnız arduino kodları kısmında ufak bir eksiklik var

E-posta adresiniz gösterilmeyecek. Gerekli alanlar * ile işaretlidir.

*



Sosyal AÄŸlar