Visual C# 実行可能ファイルを作成しています。以下の Arduino コードで定義されている 3 つの LED の 2 つのケースに対して、「A」と「B」を送信する for ループを使用したいと考えています。
int data;
void setup() {
Serial.begin(9600);
pinMode(11, OUTPUT);
pinMode(12, OUTPUT);
pinMode(13, OUTPUT);
}
void loop() {
if (Serial.available()){
data=Serial.read();
if (data=='A'){
digitalWrite(12, HIGH);
digitalWrite(11, LOW);
delay(2000);
digitalWrite(13, HIGH);
delay(500);
digitalWrite(13, LOW);
delay(500);
digitalWrite(13, HIGH);
delay(500);
digitalWrite(13, LOW);
delay(500);
}
else{
digitalWrite(12, LOW);
digitalWrite(11, HIGH);
delay(10000);
}
}
}
そして、これはテキストボックスからループの数を取得し、AB、AB、... (n 回 - テキストボックスの数に等しい) を実行する私の Visual C# コードです。
if (textBox1.Text != "")
{
int LoopNum = Convert.ToInt32(textBox1.Text);
for (int i=0; i < LoopNum; i++)
{
serialPort1.Write("A");
serialPort1.Write("B");
}
}
else
{
MessageBox.Show("Please select the number of cycle!", "My Application", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
}
プログラムのループがすぐに終了することに気付きました (一連の AB を送信してから停止します) が、Arduino は終了するまでループを続けます。プログラムに遅延を追加する方法はありますか? 問題が発生するため、スレッドオプションは適切な方法ではないことを読みました...何か提案はありますか?