Arduino
OKUDUĞUNUZ KONU
Arduino ve C# DHT11 Isı ve Nem Uygulaması
3

Arduino ve C# DHT11 Isı ve Nem Uygulaması

Yazar : Ulaş Tutcu22 Şubat 2017

Merhabalar bugün yine Arduino ve C# Bağlantılı DHT11 ile Isı ve Nem ölçümü için ufak bir program yapalım


Programda iki adet Form kullandım

Form1 İçine Eklenecek Nesneler:

  • comboBox
  • Buton

Form1_Load içine Yazılcak Olan Kodlar (for döngüsü ile Bilgisayarımızda Bulunan Com Portları Listeliyoruz):


for (int i = 0; i <System.IO.Ports.SerialPort.GetPortNames(). Length; i++)
{
comboBox1.Items.Add(System.IO.Ports.SerialPort.GetPortNames()[i]);
}

Buton içine Eklenecek Kodlar (Buton ile Form2 panelimizi açıp veriler için gerekli nesnelerin başlangıcını yapıyoruz):


Form2 Dht11 = new Form2();
Dht11.serialPort1.PortName = comboBox1.Text;
Dht11.serialPort1.Open();
Dht11.timer1.Start();
this.Hide();
Dht11.Show();


Üst Menüden; Project/Add Windows Form/Windows Form/Add yolunu izleyerek projemize ikinici bir Form Ekliyoruz;

Form2 İçin Kullanılan Nesneler:

  • DevExpress’in GaugeControl nesnesini kullandım(sizde yoksa Label ekleyerek değerleri görebilirsiniz)
  • serialPort (Arduino ile Bağlantı Sağlamak İçin)
  • timer (Verileri belirlenen süre aralıklarıyla almak için)

Bu bölüme kodlamaları yapmadan önce;

SerialPort ve Timer nesnelerinin Modifiers kısımlarını Public olarak değiştirmeniz gerekmekte.Aksi halde Form1 de yaptığımız kodlamalarda hata mesajı alıcaksınız.


timer1 Nesnesinin İçine Yazılacak Olan Kodlar:


timer1.Interval = 100;
String arduino = serialPort1.ReadLine().ToString();
String[] isinem = arduino.Split(',');
int Nem = (int)(Math.Round(Convert.ToDecimal(isinem[0]) / 100, 0));
int Sicaklik = (int)(Math.Round(Convert.ToDecimal(isinem[1]) / 100, 0));
labelComponent1.Text = Sicaklik.ToString() + " °C";
labelComponent2.Text = Nem.ToString() + " %";
arcScaleComponent1.Value = Sicaklik;
arcScaleComponent2.Value = Nem;

Label kullanacak arkadaşlar için:


label1.Text = Sicaklik.ToString() + " °C";
label2.Text = Nem.ToString() + " %";

Olarak değiştirmeleri ve..


arcScaleComponent1.Value = Sicaklik;
arcScaleComponent2.Value = Nem;

Bu kodları silmeleri gerekmektedir.

 


Programın Form2 Sayfasına Buton eklemedim. Çıkış Yapmak için sadece “ESC” tuşuna basmak yeterli. bu kodlar için:

Form2_Load İçersine:


this.KeyPreview = true;
this.KeyDown += Form2_KeyDown;

ekleyelim…Sonra;

 

Form2 Events‘ine (Şimşek İconu) Aşağada bulunan KeyDown sekmesine çift tıklayıp açılan sayfada:


if (e.KeyCode == Keys.Escape)
Application.Exit();


Arduino Kodları:


#include <DHT11.h>

int pin=2;
DHT11 dht11(pin);
void setup()
{
Serial.begin(9600);
}
void loop()
{
float nem,sicaklik;
int oku = dht11.read(nem,sicaklik);

Serial.print(nem, 2);
Serial.print(",");

Serial.print(sicaklik, 2);
Serial.println();
delay(100);
}

SİZCE NASIL OLMUŞ?
Beğendim
80%
İlginç
20%
Eh İşte
0%
Anlamadım
0%
Kötü
0%
Berbat
0%
YAZAR HAKKINDA
Ulaş Tutcu
Ulaş Tutcu
Küçüklükten beri Elektrik ve Elektroniğe ilgim var. Yaklaşık 2 sene önce Arduino ile tanıştım. Kodlama ve elektronik bilgi üzerine hiç bir eğitim almadan tamamen okuyarak,deneyerek kendimi geliştirmeye devam ediyorum.
3 YORUMLAR

YORUM YAP