Arduino Ultrasonic Sensör - Windows Form Uygulaması
Arduino gömülü sistem kartlarının en yaygın olanlarından birisi ve oldukça kullanışlı.
Başlıkta da belirttiğim üzere hazırladığım uygulamayı bu sayfada paylaşıyor olacağım.
Öncelikle kapsamdan biraz bahsetmek gerekirse;
Arduinoya bağlı bir ultrasonic mesafe ölçerden aldığımız değeri Arduino Bluetooth (HC-05) sensörü ile bilgisayara göndereceğiz. Burada bilgisayara HC-05 i eşleştirmiş olmamız gerekiyor.
Varsayılan olarak eşleşme şifresi 1234 tür. AT komutları ile şifreyi değiştirebilirsiniz.
Eşleştirme yapıldıktan sonra Arduinumuz gönderdiği değeri bilgisayardan okuyabilmek için Bluetooth' a bir COM port atamamız gerekiyor. Sonrasında seri port okur gibi okuyabiliriz.
Arduino kodları;
#include <SoftwareSerial.h>
#define echoPin 7 // Echo Pin
#define trigPin 8 // Trigger Pin
#define LEDPin 13 // LED
SoftwareSerial mySerial(10, 11); // RX, TX
int maximumRange = 20000; // Max range
int minimumRange = 0; // Min range
unsigned long duration, last_distance = 0, distance;
void setup() {
Serial.begin(9600);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(LEDPin, OUTPUT);
while (!Serial) {
;
mySerial.begin(9600);
}
void loop() { // run over and over
if (mySerial.available()) {
Serial.write(mySerial.read());
}
if (Serial.available()) {
mySerial.write(Serial.read());
}
pinMode(trigPin, OUTPUT);
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
pinMode(echoPin, INPUT);
duration = pulseIn(echoPin, HIGH);
distance = duration / 50;
mySerial.begin(9600);
if(last_distance==0 || last_distance != distance){
last_distance = distance;
mySerial.println(distance);
}
delay(50);
}
Windows Form kodları
public partial class Form1 : Form
{
SerialPort sp;
String sp_port = "COM3";
int baud = 9600;
int bit = 8;
System.Timers.Timer t;
int timer_interval = 500;
float cm;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
sp = new SerialPort();
sp.PortName = sp_port;
sp.BaudRate = baud;
sp.DataBits = 8;
sp.Open();
sp.DataReceived += sp_DataReceived;
}
void sp_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
cm = float.Parse(sp.ReadLine().ToString().Replace("\r",""));
arcScaleComponent1.Value = cm;
digitalGauge1.Text = String.Format(cm.ToString(), "{0},00");
}
}
Aşağıdaki gibi bir form hazırlamıştım, Devexpress in güzel bileşenleri mevcut.
.Net in bileşenlerini de kullanabilirsiniz.
Başlıkta da belirttiğim üzere hazırladığım uygulamayı bu sayfada paylaşıyor olacağım.
Öncelikle kapsamdan biraz bahsetmek gerekirse;
Arduinoya bağlı bir ultrasonic mesafe ölçerden aldığımız değeri Arduino Bluetooth (HC-05) sensörü ile bilgisayara göndereceğiz. Burada bilgisayara HC-05 i eşleştirmiş olmamız gerekiyor.
Varsayılan olarak eşleşme şifresi 1234 tür. AT komutları ile şifreyi değiştirebilirsiniz.
Eşleştirme yapıldıktan sonra Arduinumuz gönderdiği değeri bilgisayardan okuyabilmek için Bluetooth' a bir COM port atamamız gerekiyor. Sonrasında seri port okur gibi okuyabiliriz.
Arduino kodları;
#include <SoftwareSerial.h>
#define echoPin 7 // Echo Pin
#define trigPin 8 // Trigger Pin
#define LEDPin 13 // LED
SoftwareSerial mySerial(10, 11); // RX, TX
int maximumRange = 20000; // Max range
int minimumRange = 0; // Min range
unsigned long duration, last_distance = 0, distance;
void setup() {
Serial.begin(9600);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(LEDPin, OUTPUT);
while (!Serial) {
;
mySerial.begin(9600);
}
void loop() { // run over and over
if (mySerial.available()) {
Serial.write(mySerial.read());
}
if (Serial.available()) {
mySerial.write(Serial.read());
}
pinMode(trigPin, OUTPUT);
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
pinMode(echoPin, INPUT);
duration = pulseIn(echoPin, HIGH);
distance = duration / 50;
mySerial.begin(9600);
if(last_distance==0 || last_distance != distance){
last_distance = distance;
mySerial.println(distance);
}
delay(50);
}
Windows Form kodları
public partial class Form1 : Form
{
SerialPort sp;
String sp_port = "COM3";
int baud = 9600;
int bit = 8;
System.Timers.Timer t;
int timer_interval = 500;
float cm;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
sp = new SerialPort();
sp.PortName = sp_port;
sp.BaudRate = baud;
sp.DataBits = 8;
sp.Open();
sp.DataReceived += sp_DataReceived;
}
void sp_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
cm = float.Parse(sp.ReadLine().ToString().Replace("\r",""));
arcScaleComponent1.Value = cm;
digitalGauge1.Text = String.Format(cm.ToString(), "{0},00");
}
}
Aşağıdaki gibi bir form hazırlamıştım, Devexpress in güzel bileşenleri mevcut.
.Net in bileşenlerini de kullanabilirsiniz.
Yorumlar
Yorum Gönder