Поэтому я пытаюсь управлять Arduino через последовательный порт, используя приложение WinForms, которое я сделал в Visaul C #. Приложение, форма имеет последовательный порт, кнопку включения и выключения. Когда я нажимаю кнопку ON, форма отправляет строку «ON» через последовательный порт на COM3, к которому подключено мое arduino, и отправляет «OFF», когда я нажимаю кнопку выключения. На стороне Arduino последовательные данные обрабатываются в функции serialEvent()
, которая включает и выключает светодиод на плате.
По какой-то причине работает только первая команда «ВКЛ», и после этого светодиод остается включенным независимо от того, сколько раз я нажимал кнопку выключения.
Arduino Side:
int ledPin = 13;
String serialData;
void setup()
{
pinMode(ledPin, OUTPUT);
digitalWrite(ledPin, LOW);
Serial.begin(9600);
Serial.setTimeout(10);
}
void loop()
{
}
void serialEvent()
{
serialData = Serial.readString();
if(serialData = "ON")
{
digitalWrite(ledPin, HIGH);
}
else if (serialData = "OFF")
{
digitalWrite(ledPin, LOW);
}
}
Форма сторона:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Swear_Detection
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
port.Open();
}
private void Button1_Click(object sender, EventArgs e)
{
port.Write("ON");
}
private void Button2_Click(object sender, EventArgs e)
{
port.Write("OFF");
}
}
}
P.S. Не беспокойтесь о названии Swear_Detection XD. Просто то, над чем я работаю.