This time we will create a more practical example of connecting an Arduino to a PC and then writing an app to read data via the com port. In this example we use a DS18B20 temperature sensor, we will take a reading and display this in our app. In this example the app is a windows form application and it only contains a text box.
You can see an image of this below in action, Arduino code with the app running
This comprises of 2 parts so lets look at the first which is the Arduino code, we use a DS18B20 breakout board and connect its data out pin to Arduino digital pin 2, you can use another but remember and update the #define at the start.
Arduino Code
#include <OneWire.h>
#include <DallasTemperature.h>
//the pin you connect the ds18b20 to
#define DS18B20 3
OneWire ourWire(DS18B20);
DallasTemperature sensors(&ourWire);
void setup()
{
Serial.begin(9600);
delay(1000);
//start reading
sensors.begin();
}
void loop()
{
//read temperature and output via serial
sensors.requestTemperatures();
Serial.println(sensors.getTempCByIndex(0));
}
Now we move on to the C# code, this is the form.cs code
C# Code
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace ArduinoSerialTemp
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
serialPort1.BaudRate = 9600;
serialPort1.PortName = “COM5″;
serialPort1.Open();
serialPort1.DataReceived += serialPort1_DataReceived;
}
private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
string line = serialPort1.ReadLine();
this.BeginInvoke(new LineReceivedEvent(LineReceived), line);
}
private delegate void LineReceivedEvent(string line);
private void LineReceived(string line)
{
textBox1.Text = line + ” celsius”;
}
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
if (serialPort1.IsOpen) serialPort1.Close();
}
private void serialPort1_ErrorReceived(object sender, System.IO.Ports.SerialErrorReceivedEventArgs e)
{
serialPort1.Close();
}
}
}
Download
We also have this available from GITHUB, you can get the project here
https://github.com/getmicros/Arduino/tree/master/Serial%20Temp%20to%20C%23