arduino ethernet kütüphanesi etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

Merhabalar,
Uzun bir süredir arduino ve ethernet shield kullanımı ile ilgili sorular almaktayız.Bu yazımızda arduino ethernet kütüphanesi nasıl kullanacağımızdan ve bunu c# tarafında nasıl okuyabileceğimizden bahsedeceğiz

Arduino IDE yi açtığınızda yukarıdaki file menusunu sırası ile examples + ethernet + chatserver olarak ilerleyin.Aşağıdaki programı göreceksiniz.



#include <SPI.h>
#include <Ethernet.h>


byte mac[] = { 
  0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress ip(192,168,1, 177); //ip adresimiz



// 80 portu açıldı
EthernetServer server(80);
boolean alreadyConnected = false; //bağlı bir client varmı yok mu ?

void setup() {
  // ethernet bağlatısını sağlıyoruz
  Ethernet.begin(mac, ip);
  // bilgisayarı C# tarafından dinliyoruz
  server.begin();
 // Seri haberleşme başlatıldı.
  Serial.begin(9600);
  Serial.print("Chat server address:"); //Serial consola server adresi yazıldı
  Serial.println(Ethernet.localIP());
}

void loop() {
  // client için bekleniyor
  EthernetClient client = server.available();

  //eger ki clienttan haber gelirse merhaba de
  if (client) {
    if (!alreadyConnected) {
      // inputu temizle
      client.flush();    
      Serial.println("We have a new client");
      client.println("Hello, client!"); 
      alreadyConnected = true;
    } 

    if (client.available() > 0) {
      // clienttan gelen verileri oku
      char thisChar = client.read();
      //clienttan ne geliyorsa aynısı geri ilet
      server.write(thisChar);
      
      // clienttan gelen veriyi aynı şekilde seri consola yaz.
      Serial.write(thisChar);
    }
  }
}

Peki biz ne gibi bir değişiklik yaparak C# tarafında arduinodan gelen verileri okuruz?.Örnek olarak 1 nolu analog pinimizde bir potansiyometre bağlı olsun ve ADC den (analog - dijital çevirici ) gelen 0-1023 bilgi aralığındaki değeri C# a gönderelim.

Yukarıdaki örnek kodumuzdaki

  if (client.available() > 0) {
      // clienttan gelen verileri oku
      char thisChar = client.read();
      //clienttan ne geliyorsa aynısı geri ilet
      server.write(thisChar);
      
      // clienttan gelen veriyi aynı şekilde seri consola yaz.
      Serial.write(thisChar);
    }

Aralığında oynamalar yapacağız nasıl mı ?

  if (client.available() > 0) {
      // cleinttan gelen sensör okuma isteğini al
      char thisChar = client.read();
      if(thisCaher=="1") //1. analog pin okuma isteği geldi
      {
         server.write(analoRead(1));
      }
    }

Yukarıdaki kırmızı alanlar değiştirdiğimiz kısımlar.C# tarafında neler yapmamız gerekiyor.Socket programming ile tcp bir bağlantı sağlayacağız ve C# tarafında tcp client oluşturmamız gerekiyor.Bunu oluşturduktan sonra server olan arduinomuz ve client olan ve pc mizde çalışan C#programımız arasında tcp bağlatısı yardımı ile veri aktarımı sağlayacağız.

Özetlersek:

arduino ve bilgisayar programı arasında haberleşmeyi harfler yardımı ile sağlayacağız 1-1nolu analog pin,2-2nolu analog pin oku gibi

Yine digital çıkışlarımıza değer verdirebiliriz."A" gönder 1 nolu dijital 1 high olsun, "a" gönder 1 nolu dijital pin low konumuna geçsin gibi.

Bir sonraki yazımızda işin C# tarafına ve socket programlamaya değineceğiz .

Yazar:Caner ÇAKAR


ELEKTRO BLOGGER A HOŞGELDINIZ

ARAMA YAP

EN COK OKUNANLAR

- Copyright © ELEKTRO-BLOGGER Blogger