Oluşturmuş olduğumuz Form’a Wiimote kütüphanesini ve bağlantı kodlarını eklemiştik, şimdi de robot için hareketleri nasıl kalibre edip mikrodenetleyiciye gönderecğimizi anlayalım.
Öncelikle Wiimote change state fonksiyonunu kullamayacağız çünkü wiimote’daki değişim MCU-PC iletişim hızından daha hızlı olabilir, eğer böyle bir şey olursa da program hata verir. Bu yüzden bir Timer ekleyip hızını 100 (0.1s) ayarlayalım. içine de şu kodları ekleyelim
Uygulamadaki Kalibrasyon 0.2’dir
bool button_B = wiimote1.WiimoteState.ButtonState.B; /* A butonunun degeri*/
float xAccel = wiimote1.WiimoteState.AccelState.Values.X; /* X ekseni ivmesel değişkeni */
float yAccel = wiimote1.WiimoteState.AccelState.Values.Y;
float zAccel = wiimote1.WiimoteState.AccelState.Values.Z;
label23.Text = xAccel.ToString();
label29.Text = yAccel.ToString();
label30.Text = zAccel.ToString();
if (button_B == true)
{
label24.Text = "Button B Basili";
label33.Text = "Dur";
// if (port.IsOpen) port.WriteLine("5");
//else MessageBox.Show("Serial port is closed!", "RS232 tester", MessageBoxButtons.OK, MessageBoxIcon.Error);
label35.Text = "Ates Ediliyor";
if (port.IsOpen) port.WriteLine("7");
else MessageBox.Show("Serial port is closed!", "RS232 tester", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
else
{
label24.Text = "Button B Basili Degil";
label35.Text = "Ates Edilmiyor";
if (yAccel > 0.2)
{
label33.Text = "Asagi";
if (port.IsOpen) port.WriteLine("4");
else MessageBox.Show("Serial port is closed!", "RS232 tester", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
else
{
if (yAccel < -0.2)
{
label33.Text = "Yukari";
if (port.IsOpen) port.WriteLine("3");
else MessageBox.Show("Serial port is closed!", "RS232 tester", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
else
{
if (xAccel > 0.2)
{
label33.Text = "Saga";
if (port.IsOpen) port.WriteLine("2");
else MessageBox.Show("Serial port is closed!", "RS232 tester", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
else
{
if (xAccel < -0.2)
{
label33.Text = "Sola";
if (port.IsOpen) port.WriteLine("1");
else MessageBox.Show("Serial port is closed!", "RS232 tester", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
else
{
label33.Text = "Dur";
if (port.IsOpen) port.WriteLine("5");
else MessageBox.Show("Serial port is closed!", "RS232 tester", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
}
}
}
Bu kodlar sayesinde hem ekranda robotun hangi komutu yerine getirdiğini görebiliyoruz hemde aynı anda o komutları göndererek robotu izleyebiliyoruz.
Not: Bu uygulamada form’a “port” adında bir serial port objesi eklenmiştir
(0) Comments
Yorum Gönder