查看: 454|回复: 0

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

[复制链接]

签到天数: 168 天

[LV.7]常住居民III

发表于 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

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

本版积分规则

热门推荐

智能“百味”勺子开发实战营,为你的生活添滋味!
智能“百味”勺子开发实战
想不想拥有一把神奇的“百味”勺子,把索然无味的食物变出酸甜苦辣咸的丰富滋味
20sffactory 三自由度3D打印机械手臂 - 高速移动
20sffactory 三自由度3D打
这款机械臂作者没有给他起名字,用作者的名字来命名. 目前为止,生态最好,做的最完
多位数码管显示项目——以TM1650为例
多位数码管显示项目——以
以下是用搭载TM1650的4位数码管,显示电位器所代表0到1023的模拟信号数值 示意图:
新手小白付费拜师求教:TM1650四位时钟数码管的具体用法
新手小白付费拜师求教:TM
从淘宝购买的TM16504位数码管的时钟模块,卖家给了程序,但是完全不会用。求一位老师
【Arduino】168种传感器模块系列实验(76)---TTL转RS-485模块
【Arduino】168种传感器模
37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定
Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   
快速回复 返回顶部 返回列表