Ethernet shield ile Visual basic de yaptığım c# programı üzerinden arduino ya veri aktarma

Hocam şuan işteyim eve geçince size gerekli bilgi kısımlarını ileticem yardımınız için cok tesekkur ederim
 
Hocam resimde gördüğünüz gibi saycın yanında, her +5 input verdimmi 9. pine sayıyo benim istediğim
Oraya eklediğim texbox1 (0- 999) veya daha büyük değer girdimmi, girilen veri sayacın içeriğinden büyükse bir pin çıkış vericek lütfen yardım edebilirminiz sadece bu komutu hem c#a hem arduinoya ekleyebilirmsiniz baya bi eksik bilgiye sahibim yeterli zamana sahip değilim bu öğrenim için lütfen yardım
Kod:
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.Net.Sockets;

namespace WindowsFormsApp14

{

    public partial class Form1 : Form

    {

        public Form1()

        {

            InitializeComponent();

        }

        TcpClient myClient;

        NetworkStream ns;

        bool connected = false;



        //gönderilecek karakterler

        char[] led1 = { 'a' };

        char[] sayacl = { 'b' };

        char[] sıfır= { 'c' };



        byte[] readData = new byte[256];

        string[] stringSeparators = new string[] { "|" };

        private void Form1_Load(object sender, EventArgs e)

        {

            //timer lar 200ms' de tetikleniyor

            timer1.Interval = 200;

            timer2.Interval = 200;

          

            {



            }

        }



        private void button1_Click(object sender, EventArgs e)

        {

            //bağlı ise bağlantıyı kes

            if (!connected)

            {

                try

                {

                    myClient = new TcpClient("169.254.145.11", 61);         //server IP ve port

                    label1.Text = "Bağlandı";

                    connected = true;

                    ns = myClient.GetStream();

                    button1.Text = "DURDUR";

                }

                catch (Exception ex)

                {

                    MessageBox.Show("Bağlantı Kurulamadı!\n\r" + ex.Message, "Baglanti Hatası", MessageBoxButtons.OK, MessageBoxIcon.Error);

                    connected = false;

                    button1.Text = "Bağlan";

                }

            }

            else

            {

                try

                {

                    myClient.Close();               //server ile bağlantıyı kes

                    button1.Text = "Bağlan";

                    label1.Text = "Bağlantı Yok";

                    connected = false;

                }

                catch (Exception ex)

                {

                    MessageBox.Show("Bağlantı Kurulamadı!\n\r" + ex.Message, "Baglanti Hatası", MessageBoxButtons.OK, MessageBoxIcon.Error);

                    connected = false;

                    button1.Text = "Bağlan";

                    label1.Text = "Bağlantı Yok";

                }

            }

        }



        private void label1_Click(object sender, EventArgs e)

        {

          

        }



        private void button3_Click(object sender, EventArgs e)



        {   ns.Write(Encoding.GetEncoding("UTF-8").GetBytes(sayacl), 0, sayacl.Length);

            int recv = ns.Read(readData, 0, readData.Length);                               //gelen veriyi aldık

            String s = Encoding.ASCII.GetString(readData, 0, recv);

            String[] ss = s.Split(stringSeparators, StringSplitOptions.None);               //parseleyip lable' e yazdırdık

            label3.Text = ss[1];

        }



        private void button2_Click(object sender, EventArgs e)

        {

            if (connected)

            {

                ns.Write(Encoding.GetEncoding("UTF-8").GetBytes(led1), 0, led1.Length);         //led1 karakterini gönderdik

                int recv = ns.Read(readData, 0, readData.Length);                               //gelen veriyi aldık

                String s = Encoding.ASCII.GetString(readData, 0, recv);

                String[] ss = s.Split(stringSeparators, StringSplitOptions.None);               //parseleyip lable' e yazdırdık

                label2.Text = ss[1];

            }

        }



        private void button4_Click(object sender, EventArgs e)

        {

            ns.Write(Encoding.GetEncoding("UTF-8").GetBytes(sıfır), 0, sıfır.Length);

        }



        private void timer2_Tick(object sender, EventArgs e)

        {

            ns.Write(Encoding.GetEncoding("UTF-8").GetBytes(sayacl), 0, sayacl.Length);

            int recv = ns.Read(readData, 0, readData.Length);

            String s = Encoding.ASCII.GetString(readData, 0, recv);

            String[] ss = s.Split(stringSeparators, StringSplitOptions.None);

            label3.Text = ss[1];

        }



        private void checkBox1_CheckedChanged(object sender, EventArgs e)

        {

            if (checkBox1.Checked)

            {

                if (connected)

                {

                    timer2.Start();

                }

                else

                {

                    checkBox1.Checked = false;

                }

            }

            else

            {

                timer2.Stop();

            }

        }

    }



}
ARDUİNO KODUM
Kod:
#include <SPI.h>

#include <Ethernet.h>



//sıradan bir mac adresi atadık

byte mac[] = {

  0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED

};



//IP ayarlamaları

//aşağıdaki gibi ayarlama yaparsanız sorun ile kaşılaşmazsınız

IPAddress ip(169, 254, 145, 11);

IPAddress myDns(169, 254, 1, 1);

IPAddress gateway(169, 254, 1, 1);

IPAddress subnet(255, 255, 0, 0);

bool butondurum = false ;

bool butonbasildi = false;



int led1 = 5;

String sendVal = "";

int sayac = 1;

int say = 0;

int buton = 9;

//kullanmak üzere seçtiğimiz port

EthernetServer server(61);             

boolean alreadyConnected = false; //ilk kez bağlantı yapılıyormu kontrol değişkeni



void setup() {

  // Shield kurulumu

  Ethernet.begin(mac, ip, myDns, gateway, subnet);

  // server başlattık ve client' leri dinlemeye başladık

  server.begin();



  //Seri haberleşmeyi başlattık

  Serial.begin(9600);



  pinMode(led1, OUTPUT);



  pinMode(buton, INPUT);



  //IP adresini serial monitör' e yazdırdık

  Serial.print("TCP server address:");

  Serial.println(Ethernet.localIP());

}



unsigned long lastTime = 0;



void loop() {

  // bağlanan client' ları yakaladık

  EthernetClient client = server.available();



  if (client) {

    //ilk kez bağlantı yapılıyorsa tampondaki verileri temizledik

    if (!alreadyConnected) {

      // clear out the input buffer:

      client.flush();

      Serial.println("Baglantı Var");

      alreadyConnected = true;

    }



    //client den veri geliyor mu?

    if (client.available() > 0) {

    

    



  butondurum=digitalRead(buton);

  if(butondurum && !butonbasildi)

  {sayac ++; delay(10);}

  butonbasildi = butondurum;



      // Client' ten gelen veriyi oku

      char thisChar = client.read();

      // clientten gelen veriyi görüntüle

      Serial.print("Okunan Karakter: ");

      Serial.print(thisChar);

      Serial.print(" ");



      switch(thisChar)              //gelen karaktere göre işlem yapalım

      {

      

          case 'a':                 //a ise led yaka yada söndür

            digitalWrite(led1, !digitalRead(led1));

            sendVal = "led1|" + String(digitalRead(led1)) + "|";

            client.print(sendVal);

            break;

          

             case 'b':               //d ise sayac değerini geri gönder

            sendVal = "sayacl|" + String(sayac) + "|";

            client.print(sendVal);

            break;

          

           case 'c':

           sayac = 0 ;

           break;

          

          

      }



      //önceki tcp iletişim aradaki zamanı seri porta yazdırdık.

      Serial.print("Gecen Zaman: ");

      Serial.println(millis() - lastTime);

      lastTime = millis();



    }

  }



}
--------------------------------------------------------------------
ARDUİNO KODUM
Kod:
#include <SPI.h>
#include <Ethernet.h>

//sıradan bir mac adresi atadık
byte mac[] = {
  0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED
};

//IP ayarlamaları
//aşağıdaki gibi ayarlama yaparsanız sorun ile kaşılaşmazsınız
IPAddress ip(169, 254, 145, 11);
IPAddress myDns(169, 254, 1, 1);
IPAddress gateway(169, 254, 1, 1);
IPAddress subnet(255, 255, 0, 0);
bool butondurum = false ;
bool butonbasildi = false;

int led1 = 5;
String sendVal = "";
int sayac = 1;
int say = 0;
int buton = 9;
//kullanmak üzere seçtiğimiz port
EthernetServer server(61);             
boolean alreadyConnected = false; //ilk kez bağlantı yapılıyormu kontrol değişkeni

void setup() {
  // Shield kurulumu
  Ethernet.begin(mac, ip, myDns, gateway, subnet);
  // server başlattık ve client' leri dinlemeye başladık
  server.begin();

  //Seri haberleşmeyi başlattık
  Serial.begin(9600);

  pinMode(led1, OUTPUT);

  pinMode(buton, INPUT);

  //IP adresini serial monitör' e yazdırdık
  Serial.print("TCP server address:");
  Serial.println(Ethernet.localIP());
}

unsigned long lastTime = 0;

void loop() {
  // bağlanan client' ları yakaladık
  EthernetClient client = server.available();

  if (client) {
    //ilk kez bağlantı yapılıyorsa tampondaki verileri temizledik
    if (!alreadyConnected) {
      // clear out the input buffer:
      client.flush();
      Serial.println("Baglantı Var");
      alreadyConnected = true;
    }

    //client den veri geliyor mu?
    if (client.available() > 0) {
     
     

  butondurum=digitalRead(buton);
  if(butondurum && !butonbasildi)
  {sayac ++; delay(10);}
  butonbasildi = butondurum;

      // Client' ten gelen veriyi oku
      char thisChar = client.read();
      // clientten gelen veriyi görüntüle
      Serial.print("Okunan Karakter: ");
      Serial.print(thisChar);
      Serial.print(" ");

      switch(thisChar)              //gelen karaktere göre işlem yapalım
      {
      
          case 'a':                 //a ise led yaka yada söndür
            digitalWrite(led1, !digitalRead(led1));
            sendVal = "led1|" + String(digitalRead(led1)) + "|";
            client.print(sendVal);
            break;
           
             case 'b':               //d ise sayac değerini geri gönder
            sendVal = "sayacl|" + String(sayac) + "|";
            client.print(sendVal);
            break;
           
           case 'c':
           sayac = 0 ;
           break;
          
          
      }

      //önceki tcp iletişim aradaki zamanı seri porta yazdırdık.
      Serial.print("Gecen Zaman: ");
      Serial.println(millis() - lastTime);
      lastTime = millis();

    }
  }

}
 

Ekli dosyalar

  • Adsız.png
    6.5 KB · Görüntüleme: 8
Moderatör tarafında düzenlendi:
Bu siteyi kullanmak için çerezler gereklidir. Siteyi kullanmaya devam etmek için onları kabul etmelisiniz. Daha fazla bilgi edin…