串口分析字符操作符,灵活的实现自动化控制。-Arduino中文社区 - Powered by Discuz! Archiver

topdog 发表于 2021-6-13 20:12

串口分析字符操作符,灵活的实现自动化控制。

本帖最后由 topdog 于 2021-6-13 20:53 编辑

Arduino String可以分析串口读取的字符是何种操作符,一共十三种:

isAlphaNumeric   字母数字式
isAlpha                   字母的
isAscii                     美国信息交换标准码
isWhitespace          空白符
isControl               控制字符
isDigit                     数字
isGraph                   不是空格的可打印字符
isLowerCase            小写
isPrintable               打印
isPunct                  标点符号
isSpace                  空格符
isUpperCase            大写
isHexadecimalDigit 有效的十六进制数字

基于此我们可以更加灵活的把他们进行编组实现自动化的控制。试问:如果串口输入A1000,那么led亮1000ms,此时再输入2000,led可以再亮2000ms,随意改变了的点亮时间。如果输入B0,那么led就会熄灭。
流程图如下:


程序如下:
const int ledPin = 8;
int i;                        
String ReadString = "";         
char LED = ' ';               
boolean stringComplete = false;

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

void loop()
{
    if (stringComplete)
    {
      if (LED == 'A' || i > 0)
      {
            digitalWrite(ledPin,HIGH);
            delay(i);
            digitalWrite(ledPin,LOW);
            delay(i);
                     
      }
      else if (LED == 'B' && i == 0)
      {
            digitalWrite(ledPin,LOW);                  
      }
      
      stringComplete = false;
      ReadString = "";
      LED = ' ';
    }
}


void serialEvent()
{
    while (Serial.available() > 0)
    {
      char inputing = Serial.read();
      
      if (isDigit(inputing))
      {
            ReadString += inputing;
      }
      else if (inputing == '\n')
      {
            stringComplete = true;
            i = ReadString.toInt();
      }
      else
            LED = inputing;
    }
}
页: [1]
查看完整版本: 串口分析字符操作符,灵活的实现自动化控制。