Arduino串口通信

1、串口工作原理

》》在Arduino与其他器件通信的过程中,数据传输实际上都是以数字信号(即电平高低变化)的形式进行的,串口通信也是如此。当使用Serial. print()函数输出数据时,Arduino的发送端会输出一连串的数字信号,称这些数字信号为数据帧。
》》例如,当使用Serial. print(‘A’)语句发送数据时,实际发送的数据帧格式如图5一5所示。
在这里插入图片描述

2、HardwareSerail类库成员常用函数

Serial.begin();//初始化串口,该函数可以配置串口的各项参数
/* 语法:Serial.begin(speed,config)
   speed:波特率;config:数据位,校验位,停止位配置*/
Serial.end();//结束串口,释放该串口所在的数字引脚,作为普通引脚使用
Serial.read();//从缓冲区中读取数据,使用该数据后,会将该数据从接收缓冲区中移除,每次会读取一个字符

2.1 案例:串口控制RGB LED灯

1、实验材料:RGB LED灯,Arduino uno灯,usb方口线
2、实验代码:

#include <SoftwareSerial.h>
//  定义灯的引脚
int redPin = 11;
int GreenPin = 12;
int BluePin = 13;

int i;
String inString = "";
char LED = ' ';
boolean stringComplete = false;
// 定义LED灯的颜色
void led_1(){
    analogWrite(redPin,184);
    analogWrite(GreenPin,186);
    analogWrite(BluePin,95);
}

void led_2(){
    analogWrite(redPin,232);
    analogWrite(GreenPin,31);
    analogWrite(BluePin,2);
}

void led_3(){
    analogWrite(redPin,255);
    analogWrite(GreenPin,255);
    analogWrite(BluePin,255);
}

void led_4(){
    analogWrite(redPin,242);
    analogWrite(GreenPin,228);
    analogWrite(BluePin,245);
}
void led_close(){
    analogWrite(redPin,0);
    analogWrite(GreenPin,0);
    analogWrite(BluePin,0);
}
void setup(){
    Serial.begin(9600);
}

void loop(){
  if(stringComplete){
    if(LED == 'A'){
      led_1();
      delay(1000);
    }
    else if(LED == 'B'){
      led_4();
      delay(1000);
    }
    else if(LED == 'C'){
      led_close();
    }
    stringComplete = false;
    inString = "";
    LED = ' ';
  }
      

}

void serialEvent(){
  while(Serial.available()){
    char inChar = Serial.read(); // Serial.read,从缓冲区中读取数据,使用该数据后,会将该数据从接收缓冲区中移除,每次会读取一个字符
    if(isDigit(inChar)){
      inString += inChar;
    }
    else if(inChar == '\n'){
      stringComplete = true;  //读到'\n'代表结束
      i = inString.toInt();
    }
    else
      LED = inChar;
  }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值