Cupid 发表于 2012-9-28 09:43:04

【求助】如何关闭自定义函数的循环

本帖最后由 Cupid 于 2012-9-28 09:44 编辑

当发送1的时候LED开,当发送2的时候LED闪灯,当发送其它文字的时候关灯。
但是现在不关灯,只要发送了2,就一直闪灯,不关灯。求解决方案。

/*
        Serial Control LED
        Date:20120925
*/

int pinLED = 13;
char val;

void setup()
{
        pinMode(pinLED,OUTPUT);
        Serial.begin(9600);
}

void loop()
{
        while(Serial.available() > 0)
        {
                val = Serial.read();
                Serial.println(val);

                if(val == '1')
                {
                        digitalWrite(pinLED, HIGH);
                        Serial.println("LED is ON");
                }
                else if(val == '2')
                {
                        Blink(true);
                        Serial.println("LED is BLINK");
                }
                else
                {
                        Blink(false);
                        digitalWrite(pinLED, LOW);
                        Serial.println("LED is OFF");
                }
        }
}

void Blink(bool blStatus)
{
        while(blStatus)
        {
                digitalWrite(pinLED, HIGH);   // turn the LED on (HIGH is the voltage level)
                delay(1000);                                  // wait for a second
                digitalWrite(pinLED, LOW);    // turn the LED off by making the voltage LOW
                delay(500);
        }
}

sxd1988 发表于 2012-9-28 10:00:52

int pinLED = 13;
char val;

void setup()
{
        pinMode(pinLED, OUTPUT);
        Serial.begin(9600);
}

void loop()
{
        while (Serial.available() > 0)
        {
                val = Serial.read();
                Serial.println(val);

                if (val == '1')
                {
                        Serial.println("LED is ON");
                }
                else if (val == '2')
                {
                        Serial.println("LED is BLINK");
                }
                else
                {
                        Serial.println("LED is OFF");
                }
        }

        if (val == '1')
        {
                digitalWrite(pinLED, HIGH);
        }
        else if (val == '2')
        {
                digitalWrite(pinLED, HIGH);   // turn the LED on (HIGH is the voltage level)
                delay(1000);                                  // wait for a second
                digitalWrite(pinLED, LOW);    // turn the LED off by making the voltage LOW
                delay(500);
        }
        else
        {
                digitalWrite(pinLED, LOW);
        }
}还没测试,不过这样应该可以了

Cupid 发表于 2012-9-28 10:04:16

sxd1988 发表于 2012-9-28 10:00 static/image/common/back.gif
还没测试,不过这样应该可以了

原来要这样,明白了。谢了,呵呵

jock 发表于 2015-5-6 23:29:02

刚玩了一下,嘿嘿
页: [1]
查看完整版本: 【求助】如何关闭自定义函数的循环