The post C# ile Arduino Seri Port Haberleşmesi first appeared on Emre Bektaş.
]]>Sensör bağlantısı;
Arduino kodumuz;
#include <dht.h>
dht DHT;
#define DHT22_PIN 2
String inputString = ""; // a string to hold incoming data
boolean stringComplete = false;
void setup() {
Serial.begin(9600);
inputString.reserve(200);
delay(5);
}
void loop() {
if (stringComplete) {
//Serial.print(inputString);
triggertmp();
inputString = "";
stringComplete = false;
}
}
void serialEvent() {
while (Serial.available()) {
char inChar = (char)Serial.read();
inputString += inChar;
if (inChar == '\n') {
stringComplete = true;
}
}
}
void triggertmp()
{
if(inputString=="temp\n"){
int chk = DHT.read22(DHT22_PIN);
Serial.print(DHT.temperature, 1);
Serial.print("\n");
}
if(inputString=="hum\n"){
int chk = DHT.read22(DHT22_PIN);
Serial.print(DHT.humidity, 1);
Serial.print("\n");
}
}
Arduino koduna bakacak olursak benim eklediğim triggertmp fonksiyonu ile seriporttan gelen değer temp ise sıcaklık bilgisini hum ise nem bilgisini arduino tarafından yolluyoruz. Zaten programın diğer kısımları hali hazırda arduino idesinde bulunuyor.(Serialevent)
C# kodumuz;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO.Ports;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace www.emrebektas.com_2
{
public partial class Form1 : Form
{
SerialPort serial = new SerialPort("COM13");
String arduinovalue = "";
public Form1()
{
InitializeComponent();
serial.Open();
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void buttonSend_Click(object sender, EventArgs e)
{
String emre = null;
emre = textBox1.Text;
serial.WriteLine(emre);
if (serial.BytesToRead > 0)
{
arduinovalue = serial.ReadLine();
label3.Text = arduinovalue;
}
}
}
}
C# tarafında
SerialPort serial = new SerialPort(“COM13”);
bu satırda com13 portuna ait bir serialport objesi oluşturuyoruz ismide serial.
serial.Open(); ile seri portumuzu açıyoruz.
Serial.WriteLine(“”); ise seri porta bilgi gönderiyoruz.
serial.BytesToRead ile seri porttan değer gelip gelmediğini kontrol ediyoruz. serial.BytesToRead > 0 ile eğer seri porttan değer geldiyse bu if döngüsü çalışacaktır. Aşağıdaki resime bakacak olursak arduino tarafına temp göndermişiz ve arduino bize 22.5 değerini göndermiş ve bir değer gönderdiği içinde if döngüsü çalıştı gelen değer label’a yazıldı.
C# programımızdan görüntüler;
The post C# ile Arduino Seri Port Haberleşmesi first appeared on Emre Bektaş.
]]>