极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 12607|回复: 3

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

[复制链接]
发表于 2012-9-28 09:43:04 | 显示全部楼层 |阅读模式
本帖最后由 Cupid 于 2012-9-28 09:44 编辑

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

  1. /*
  2.         Serial Control LED
  3.         Date:20120925
  4. */

  5. int pinLED = 13;
  6. char val;

  7. void setup()
  8. {
  9.         pinMode(pinLED,OUTPUT);
  10.         Serial.begin(9600);
  11. }

  12. void loop()
  13. {
  14.         while(Serial.available() > 0)
  15.         {
  16.                 val = Serial.read();
  17.                 Serial.println(val);
  18.   
  19.                 if(val == '1')
  20.                 {
  21.                         digitalWrite(pinLED, HIGH);
  22.                         Serial.println("LED is ON");
  23.                 }
  24.                 else if(val == '2')
  25.                 {
  26.                         Blink(true);
  27.                         Serial.println("LED is BLINK");
  28.                 }
  29.                 else
  30.                 {
  31.                         Blink(false);
  32.                         digitalWrite(pinLED, LOW);
  33.                         Serial.println("LED is OFF");
  34.                 }
  35.         }
  36. }

  37. void Blink(bool blStatus)
  38. {
  39.         while(blStatus)
  40.         {
  41.                 digitalWrite(pinLED, HIGH);   // turn the LED on (HIGH is the voltage level)
  42.                   delay(1000);                                  // wait for a second
  43.                   digitalWrite(pinLED, LOW);    // turn the LED off by making the voltage LOW
  44.                   delay(500);
  45.         }
  46. }
复制代码
回复

使用道具 举报

发表于 2012-9-28 10:00:52 | 显示全部楼层
  1. int pinLED = 13;
  2. char val;

  3. void setup()
  4. {
  5.         pinMode(pinLED, OUTPUT);
  6.         Serial.begin(9600);
  7. }

  8. void loop()
  9. {
  10.         while (Serial.available() > 0)
  11.         {
  12.                 val = Serial.read();
  13.                 Serial.println(val);

  14.                 if (val == '1')
  15.                 {
  16.                         Serial.println("LED is ON");
  17.                 }
  18.                 else if (val == '2')
  19.                 {
  20.                         Serial.println("LED is BLINK");
  21.                 }
  22.                 else
  23.                 {
  24.                         Serial.println("LED is OFF");
  25.                 }
  26.         }

  27.         if (val == '1')
  28.         {
  29.                 digitalWrite(pinLED, HIGH);
  30.         }
  31.         else if (val == '2')
  32.         {
  33.                 digitalWrite(pinLED, HIGH);   // turn the LED on (HIGH is the voltage level)
  34.                 delay(1000);                                  // wait for a second
  35.                 digitalWrite(pinLED, LOW);    // turn the LED off by making the voltage LOW
  36.                 delay(500);
  37.         }
  38.         else
  39.         {
  40.                 digitalWrite(pinLED, LOW);
  41.         }
  42. }
复制代码
还没测试,不过这样应该可以了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-9-28 10:04:16 | 显示全部楼层
sxd1988 发表于 2012-9-28 10:00
还没测试,不过这样应该可以了

原来要这样,明白了。谢了,呵呵
回复 支持 反对

使用道具 举报

发表于 2015-5-6 23:29:02 | 显示全部楼层
刚玩了一下,嘿嘿
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-17 03:01 , Processed in 0.068403 second(s), 20 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表