Arduino'dan okuduğumuz verileri direkt Serial Monitör'den ya da LCD'den okuyabiliyorduk. Fakat bu okunan veriler için bir tasarrufumuz olmuyordu.
Bu yazıda Arduino'dan okuduğumuz veriyi C# da gösterip, istediğimiz değerleri listbox'a kaydettiğim arayüzden bahsedeceğim. Bu arayüzü oluşturmamda yardımcı olan Necmettin Zengin arkadaşıma teşekkür ederim.
Resimde de görüldüğü gibi arayüzde 4 buton, 2 combobox, 2 label ve 1 tane de listbox bulunmakta. 0 yazan yerde ölçülen analog değer gösterilecek ve ekle butonuna bastığımızda okunan değer listbox a eklenecek. C# da hazırlanan bu arayüz için ayrıca bir arduino yazılımına ihtiyaç bulunmamakta. Serial Monitör'de veri okuyacakmış gibi yazılımınızı oluşturmanız yeterli.
RS232 vb. seri port haberleşmesinde deneme şansım olmadı, en yakın zamanda PIC için deneyip sonucunu burada yazarım.
C# kodlarına geçecek olursak ki yakın zamanda bununla alakalı bir video çekmeyi de planlıyorum;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 | using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.IO.Ports; using System.IO; namespace Data_Okuma { public partial class Form1 : Form { string[] ports = SerialPort.GetPortNames(); //Port Numaralarını ports isimli diziye atıyoruz. public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { foreach (string port in ports) { comboBox1.Items.Add(port); // Port isimlerini combobox1'de gösteriyoruz. comboBox1.SelectedIndex = 0; } comboBox2.Items.Add("2400"); // Baudrate'leri kendimiz combobox2'ye giriyoruz. comboBox2.Items.Add("4800"); comboBox2.Items.Add("9600"); comboBox2.Items.Add("19200"); comboBox2.Items.Add("115200"); comboBox2.SelectedIndex = 2; label3.Text = "Bağlantı Kapalı"; //Bu esnada bağlantı yok. } private void Form1_FormClosed(object sender, FormClosedEventArgs e) { { // Form kapandığında Seri Port Kapatılmış Olacak. if (serialPort1.IsOpen == true) { serialPort1.Close(); } } } private void timer1_Tick(object sender, EventArgs e) { try { string sonuc = serialPort1.ReadExisting();//Serial.print kodu ile gelen analog veriyi alıyoruz,string formatında sonuc'a atıyoruz label1.Text = sonuc + ""; //Labele yazdırıyoruz. } catch (Exception ex) { MessageBox.Show(ex.Message); // basarısız olursa hata verecek. timer1.Stop(); } } private void button1_Click(object sender, EventArgs e) { timer1.Start(); //250 ms olarak ayarladım timer'ı. if (serialPort1.IsOpen == false) { if (comboBox1.Text == "") return; serialPort1.PortName = comboBox1.Text; // combobox1'e zaten port isimlerini aktarmıştık. serialPort1.BaudRate = Convert.ToInt16(comboBox2.Text); //Seri Haberleşme baudrate'i combobox2 'de seçilene göre belirliyoruz. try { serialPort1.Open(); //Haberleşme için port açılıyor label3.ForeColor = Color.Green; label3.Text = "Bağlantı Açık"; } catch (Exception hata) { MessageBox.Show("Hata:" + hata.Message); } } else { label3.Text = "Bağlantı kurulu !!!"; } } private void button2_Click(object sender, EventArgs e) { //BAĞLANTIYI KES BUTONU timer1.Stop(); if (serialPort1.IsOpen == true) { serialPort1.Close(); label3.ForeColor = Color.Red; label3.Text = "Bağlantı Kapalı"; } } private void button3_Click(object sender, EventArgs e) { listBox1.Items.Add(label1.Text); //Okunan veri listbox'a atılıyor } private void button4_Click(object sender, EventArgs e) { listBox1.Items.Clear(); // listbox temizleniyor. } } } |
Arayüz oluşturma vidyom. Aynı arayüz değil :)
Microsoft Visual Basic Form şeklinde ve exe olarak aşağıdaki linkten programa ulaşabilirsiniz.
İndirme Linki
Burda da aynı arayüz programına Serial.ReadLine() methodu ile devam ederek veri okumayı daha stabil daha işlenebilir hale getirdim.
eline sağlık çok güzel olmuş.
YanıtlaSilTeşekkür ederim :).
SilSelamlar Bahadır hocam.
YanıtlaSilArduinoya eklediğim bir butonla visual C# de yazdığım programa nasıl komut vermek istiyorum yardımcı olurmusunuz ?
E-mail adresimden ulaşın bana,yardımcı olurum size.
Silwindows defender programa virüslü diyor.
YanıtlaSil.exe uzantılı bir dosya olduğu için normaldir. Windows form şeklinde olanı kullanın dilerseniz.
SilC# ile arduino bağlantısı kablosuz üzerinden nasıl yapabiliriz ve nasıl veri okuyabiliriz bunla ilgili yardımcı olabilirmisiniz?
YanıtlaSilöncelikle böyle bir örnek için teşekkürler. bu örneğe bir buton ekleyerek seri porttan bilgi göndermek istiyorum naıl bir yol izlemem lazım
YanıtlaSilplc c# bağlantısı ile bilgi verebilir misiniz?
YanıtlaSilbende serial port 1 dee hata alıyorum tanımlı değil diyor nasıl düzelteceğim yada tanımlı hale geetireceğim
YanıtlaSilBu yorum yazar tarafından silindi.
YanıtlaSilbunu zedgrapha nasıl aktarabilirim
YanıtlaSil