Bir seri iletişim (USB) üzerinden bir arduinodan gelen sıcaklığı okuyabilen, vb.net'de bir uygulama yapmaya çalışıyorum.Arduino'dan vb.net uygulamasına seri iletişim yoluyla bir çift gönderme
Sadece bir kullanıcı bir düğmeye bastığında sıcaklığı okumak mümkün olmasını istiyorum.
Kodumu aşağıya gönderdim. 'BtnManueel_Click' düğmesine bastığımda önce arduinoya bir komut gönderirim. Arduino bu komutu aldığında, sıcaklık ucunu PC'ye gönderecektir. Bu seri monitör kullandığımda mükemmel çalışır. Ama başvurumu aşağıdaki kodla çalıştırdığımda, bende etc.vb değerini alamıyorum.
Neyi yanlış yapıyorum ve/veya neden çalışmıyor?
vb.net ve seri iletişim konusunda çok fazla tecrübem yok ve bu konuda bana yardımcı olabileceğinizi umuyordum.
Şimdiden teşekkürler.
saygılar.
vb.net kodu: arduino içinde
Imports System
Imports System.IO.Ports
Imports System.Windows.Forms
Public Class Form1
Dim serielepoort As New SerialPort
Dim celsius As Double
Private Sub BtnVerbinden_Click(sender As Object, e As EventArgs) Handles BtnVerbinden.Click
Try
serielepoort.PortName = "COM8"
serielepoort.BaudRate = 9600
serielepoort.DataBits = 8
serielepoort.Parity = Parity.None
serielepoort.StopBits = StopBits.One
serielepoort.Handshake = Handshake.None
serielepoort.Encoding = System.Text.Encoding.Default
serielepoort.ReadTimeout = 10000
serielepoort.Open()
Catch ex As Exception
MessageBox.Show(ex.Message, "fout bij verbinden!", MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
End Sub
Private Sub BtnVerbindingVerbreken_Click(sender As Object, e As EventArgs) Handles BtnVerbindingVerbreken.Click
serielepoort.Close()
End Sub
Private Sub Form1_FormClosed(sender As Object, e As FormClosedEventArgs) Handles Me.FormClosed
BtnVerbindingVerbreken_Click(sender, e)
End Sub
Private Sub BtnManueel_Click(sender As Object, e As EventArgs) Handles BtnManueel.Click
If (serielepoort.IsOpen) Then
serielepoort.Write("t")
End If
End Sub
Private Sub serialPort_DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs)
celsius = serielepoort.ReadLine()
LblTempWaarde.Text = celsius
End Sub
End Class
Kodu:
nt pinLM335 = 0;
void setup()
{
Serial.begin(9600);
}
void loop() {
if(Serial.available() >0)
{
String val = Serial.readStringUntil('\n');
if (val == "t")
{ int waarde = analogRead(pinLM335);
double spanning =(waarde/1024.0)*5;
double Kelvin = (spanning) * 1000/10;
double celsius = Kelvin - 273.15;
Serial.println(celsius);
}
}
}