继承我的代码
int All;
int LEDpin =13;
Void Setup()
{
PinMode(LEDPin,OUTPUT);
}
Void Loop()
{
While( Serial,Available()==0)
All=Serial.intParse();
if (All=1)
{
digitalWrite(LEDpin,HIGH);
}
if (All=0)
{
digitalWrite(LEDpin,LOW);
}
if (All=2)
{
digitalWrite(LEDpin,HIGH);
delay(1000);
digitalWrite(LEDpin,LOW);
}
}
答案 0 :(得分:0)
您在代码中设置了变量All
,而不是根据值进行检查:
而不是:
if(All=1){
...
}
你应该写:
if(All == 1){
...
}
修改强>
你应该看看命名惯例:
void
代替Void
all
而不是All
答案 1 :(得分:0)
您的代码有很多需要修复的地方。首先,@ Tom Mekken指出你与==
进行比较,而不是=
。然后,您使用.
代替,
访问成员。你应该阅读,直到available
大于零,不等于。 setup
和loop
函数不是Setup
和Loop
,例如PinMode
和While
以及Void
(C就是这种情况)敏感)。您应该使用波特率初始化串行通信。而LEDPin
不是LEDpin
。 intParse
不是ParseInt
。
并且......正确地缩进它。这是你修改的代码:
int All;
int LEDpin = 13;
void setup()
{
Serial.begin(9600);
pinMode(LEDpin, OUTPUT);
}
void loop()
{
while( Serial.available() > 0)
All = Serial.parseInt();
if (All == 1)
{
digitalWrite(LEDpin,HIGH);
}
if (All == 0)
{
digitalWrite(LEDpin,LOW);
}
if (All == 2)
{
digitalWrite(LEDpin,HIGH);
delay(1000);
digitalWrite(LEDpin,LOW);
}
}
现在,这只是核心部分。但是,您的代码也存在功能问题。如果我建议你使用开关,而不是一堆。而不是读取整数,因为您的数据只是一位数,我建议您只读一个字符。这样你就不会遇到其他字符的问题,而且,当有可用的不可打印的字符时你也不会有问题。
这样的事情可以解决问题:
int LEDpin = 13;
void setup()
{
Serial.begin(9600);
pinMode(LEDpin, OUTPUT);
}
void loop()
{
switch (Serial.read())
{
case '1':
digitalWrite(LEDpin,HIGH);
break;
case '0':
digitalWrite(LEDpin,LOW);
break;
case '2':
digitalWrite(LEDpin,HIGH);
delay(1000);
digitalWrite(LEDpin,LOW);
break;
}
}