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

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 3419|回复: 0

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

[复制链接]
发表于 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就会熄灭。
流程图如下:
ledstring.jpg

程序如下:
[pre]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;
    }
}[/pre]
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-11-28 02:46 , Processed in 0.267575 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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