arduino tcp 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
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