繁体   English   中英

使用 C# serial.write 拉任何 Arduino 引脚

[英]Pull ANY Arduino pin using C# serial.write

我正在 C# 中编写一个应用程序,它将向我的 COM 端口发送一个 serial.write。 我见过的所有关于 C# 控制 Arduino 引脚的示例都集中在只拉一个引脚上。 下面是我的代码。 我现在只能将引脚 9 拉高,其他读取命令都不起作用。 小学生的错误在哪里? :)

Arduino 代码:

void setup() {
  // Define inputs and outputs
  pinMode(0, INPUT);
  pinMode(1, INPUT);
  pinMode(2, INPUT);
  pinMode(3, INPUT);
  pinMode(4, INPUT);
  pinMode(5, INPUT);
  pinMode(6, INPUT);
  pinMode(7, INPUT);
  pinMode(8, INPUT);
  pinMode(9, OUTPUT);
  pinMode(10, OUTPUT);
  pinMode(11, OUTPUT);
  pinMode(12, OUTPUT);
  // Begin Serial communication at a baudrate of 9600:
  Serial.begin(9600);
}

void loop() {

   if (Serial.read() == 'a')
   {
      digitalWrite(9, HIGH);
   }
   else if (Serial.read() == 'b')
   {
      digitalWrite(9, LOW);
   }
   
   else if (Serial.read() == 'c')
   {
      digitalWrite(10, HIGH);
   }
   else if (Serial.read() == 'd')
   {
      digitalWrite(10, LOW);
   }

   else if (Serial.read() == 'e')
   {
      digitalWrite(11, HIGH);
   }
   else if (Serial.read() == 'f')
   {
      digitalWrite(11, LOW);
   }

   else if (Serial.read() == 'g')
   {
      digitalWrite(12, HIGH);
   }
   else if (Serial.read() == 'h')
   {
      digitalWrite(12, LOW);
   }
   delay(100);
   
}

C#代码

private void btnOP9on_Click(object sender, EventArgs e)
        {
            serialPort1.Write("a");
        }

        private void btnOP9off_Click(object sender, EventArgs e)
        {
            serialPort1.Write("b");
        }

从串行读取一个字符会消耗它。 您无法再次读取相同的字符。 您需要从串行 ONCE 中读取,然后将其与所有不同的事物进行比较。

void loop() {
   char c = 0;
   if(Serial.available()){
     c = Serial.read();
   }

   if (c == 'a')
   {
      digitalWrite(9, HIGH);
   }
   else if (c == 'b')
   {
      digitalWrite(9, LOW);
   }
   
   else if (c == 'c')
   {
      digitalWrite(10, HIGH);
   }
   else if (c == 'd')
   {
      digitalWrite(10, LOW);
   }

   else if (c == 'e')
   {
      digitalWrite(11, HIGH);
   }
   else if (c == 'f')
   {
      digitalWrite(11, LOW);
   }

   else if (c == 'g')
   {
      digitalWrite(12, HIGH);
   }
   else if (c == 'h')
   {
      digitalWrite(12, LOW);
   }
   delay(100);
   
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM