Blog Detail

  • Home
  • C#.NET – Arduino Uygulamaları: LM35 ile Sıcaklık Takibi

C#.NET – Arduino Uygulamaları: LM35 ile Sıcaklık Takibi

Merhaba arkadaşlar bu yazımda sizlere Arduino ve C# ile yaptığım ufak bir uygulamayı paylaşmak istiyorum. Benzer uygulamalar internette mevcut. Devrede kullandığım LM35 sıcaklık sensörü hakkında detaylı bilgilere bu adresten ulaşabilirsiniz.

Öncelikle devremizin kurulumu aşağıdaki gibidir.

şema2

Burada LM35’in yazı kısmı bize bakacak şekilde Arduino’ya bağlıyoruz. Kırmızı kablo +5V, siyah kablo Gnd ve yeşil kablo ise kullanacağımız pin’i temsil ediyor. C# ile tasarladığım arayüz aşağıdaki gibidir. Arayüzde “Com Portu” yazan kısma Arduino’nun bilgisayarınıza bağlantığı port’u yazıyoruz. (Aygıt Yöneticisinden bakabilirsiniz.) Sonrasında yeşil butona basarak ölçümü başlatıyoruz. “Sıcaklık” kısmında anlık olarak takip yapabiliyoruz. Ayrıca “Sıcaklık Tablosu” kısmında ise kaydedilen değerleri görebiliyoruz. Kırmızı buton ile ölçüm işlemimizi sonlandırıyoruz.

Aşağıda C# ve Arduino’ya ait kodları bulabilirsiniz.

carduino1

Arduino Kodları


int SicaklikPini=A3;
int deger=0;
char x;

void setup()
 {
  Serial.begin(9600);
 }

void loop()
{
  if(Serial.available()>0)
      x=Serial.read();
  if(x=='a')
   {
      deger=analogRead(SicaklikPini);
      Serial.println(deger);
      delay(100);
    }
}

C# Kodları (SerialPort’u projenize eklemeyi unutmayınız.)

namespace Arduino_LM35_Uygulaması
{
 public partial class Form1 : Form
 {

SerialPort seriPort;
 public Form1()
 {
 InitializeComponent();

seriPort = new SerialPort();
 seriPort.BaudRate = 9600;
 }

private void timer1_Tick(object sender, EventArgs e)
 {
 try
 {
 seriPort.Write("a");
 int veri = Convert.ToInt32(seriPort.ReadExisting());
 veri = ((veri * 5000) / 1023) / 10;
 textBox2.Text = veri.ToString();
 listBox1.Items.Add(textBox2.Text);
 System.Threading.Thread.Sleep(100);
 }
 catch (Exception)
 {

}
 }

 private void pbBaglan_Click(object sender, EventArgs e)
 {
 timer1.Start();
 try
 {
 seriPort.PortName = textBox1.Text;
 if (!seriPort.IsOpen)
 {
 seriPort.Open();
 lblSonuc.ForeColor = Color.Green;
 lblSonuc.Text = "Bağlantı Kuruldu";
 }
 }
 catch
 {
 lblSonuc.ForeColor = Color.Red;
 lblSonuc.Text = "Bağlantı Kurulamadı";
 }
 }

private void pbKes_Click(object sender, EventArgs e)
 {
 timer1.Stop();
 seriPort.Close();
 }
 }
}

Bir sonraki yazımda görüşmek dileğiyle hoşçakalın

10 Comments

  • Cevapla erkan

    Şubat 28, 2016, 5:18 pm

    eren bey 2nci bir lm35 kullanma sansımız varmı kodlar nasıl olurdu

    • Cevapla Eren Uyanık

      Mart 6, 2016, 3:22 pm

      Merhaba Erkan bey, Arduino kısmında 2. bir veri oluşturup bunu 2. sensör ile eşleştirmek gerek. C# kısmında ise aynı işlemleri oluşturabilirsiniz. Kopyala yapıştır mantığı gibi.

  • Cevapla Site

    Haziran 21, 2016, 11:21 pm

    Merhaba Ben arduino ile henuz tan?sabildim. Internetten biraz arast?rd?m ama tam olarak kavrayamad?m.Bu kitap baslang?c icin bana katk?da bulunur mu ? Ya da arduinoyu daha iyi ogrenebilmek icin hangi kitapla baslamal?y?m ? Bu uygulaman?n uzerine dusup kendimi gelistirmek istiyorum. Bu konuda bana tavsiyede bulunabilirseniz sevinirim.

  • Cevapla erkan

    Ekim 5, 2016, 11:37 am

    ardino nano ile yapmaya calıştım olmadı kodlar

    const int analogtemp=0; // This is the analog pin which is measuring the input voltage from the LM35 temperature sensor
    double temp=0, Vin=0, samples[250];
    unsigned int j=0;
    const double Vref=1100.0;

    // The setup function runs only once when you power or reset the board
    void setup ()
    {
    Serial.begin(9600);
    analogReference(INTERNAL);
    }

    // The loop function runs indefinitely after the setup function ends
    void loop ()
    {
    Vin=0;
    temp=0;

    for(j=0 ; j Voltage = ADC*Vref/1024. ADC = [0;1023]
    // For a 10-bit ADC with an 1100mV reference, the most you can measure without saturating the ADC would be (1100mV – 1100mV/1024) = 1098.9mV.
    // In other words, a reading of 1023 from your ADC equals (1023 * 1100/1024mV) equals 1098.9 mV.
    // Remember, 10 bits can only represent a value as large as b1111111111 or decimal 1023.
    }

    Vin=Vin/250.0; // Calculate the average value from all “j” readings.
    temp = (Vin/10.0);
    Serial.print(temp,1);
    Serial.println(” degrees Celsius”);
    }

  • Cevapla özel web yazılımı

    Ekim 13, 2016, 4:04 am

    Gene harika bir paylaşım olmuş

  • Cevapla berika

    Ekim 26, 2016, 9:40 am

    merhaba
    ben daha yeni c# ve arduino kullanmayı öğreniyorum.
    yıl sonu ödevim olarak c# ve arduio kullanarak sıcaklık ölçme.
    fakat aklıma takılan soru şu arduino ve c# programını nasıl birbirine bağlıyoruz ? yani c# kodları girdikten sonra çalıştırıyoruz hata vermiyorsa arduinoyla nasıl bağlantısını sağlıyoruz???
    lm35 ve board arduino ve jamper kablodan başka bir malzemeye ihtiyaç var mı?
    yardımcı olursanız sevinirim.

  • Cevapla dost

    Aralık 9, 2018, 8:09 pm

    Merhabalar, Serial port C# ‘a nasıl eklenecek??

Write a comment