首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >控制开关的arduino用户输入(带时间)

控制开关的arduino用户输入(带时间)
EN

Stack Overflow用户
提问于 2018-01-28 01:03:03
回答 1查看 34关注 0票数 0

我想用蓝牙连接来控制,什么东西开了多久。所以我读了串行输入。如果它是一个数字,我取这个数字并将其放入延迟中。完成后,我会写一些东西并再次检查。如果串行读取不是数字,则应将其关闭。问题是,led一直在运行。你看到了吗,我的错误是什么?

代码语言:javascript
复制
#include <SoftwareSerial.h>

#define ledPin 13
#define rxPin 10
#define txPin 11

SoftwareSerial btSerial(rxPin, txPin);
int btData;


void setup() {
  btSerial.begin(9600);
  btSerial.println("bluetooth available");
  pinMode(ledPin,OUTPUT);
  serv.attach(3);
  serv2.attach(5);
}

void loop() {
  if (btSerial.available()){
    btData = btSerial.read();
      if(isDigit(btData)){
        digitalWrite(ledPin,1);
        btSerial.println("LED on Pin is on");
        delay(btData*10);
      }
      else {
        digitalWrite(ledPin,0);
        btSerial.println("LED on Pin is off");
      }
    }
    delay(100);
}
EN

回答 1

Stack Overflow用户

发布于 2018-01-28 22:57:11

尝试使用以下命令:

代码语言:javascript
复制
#include <SoftwareSerial.h>

#define ledPin 13
#define rxPin 10
#define txPin 11

SoftwareSerial btSerial(rxPin, txPin);
int btData;


void setup() {
  btSerial.begin(9600);
  btSerial.println("bluetooth available");
  pinMode(ledPin,OUTPUT);
  serv.attach(3);
  serv2.attach(5);
}

void loop() {
  if (btSerial.available())
    btData = btSerial.read();

  if(isDigit(btData)){
      digitalWrite(ledPin,1);
      btSerial.println("LED on Pin is on");
      delay(btData*10);
    }
    else {
      digitalWrite(ledPin,0);
      btSerial.println("LED on Pin is off");
    }
    delay(100);
}

原因是因为启用和禁用仅在有串行数据时执行,如果您将if放在其他位置,它将始终处于选中状态。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48478214

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档