Wemos d1 串口通信发送16进制数据

                           Wemos d1 串口通信发送16进制数据

问题:因为语音播放模块的原因可能需要板子发送一串16进制的数据,来激活语音播放模块或者其他模块使其正常工作。

1、Arduino 中先理解Serial.print()函数与Serial.write()函数的区别

        例 1.发送十进制的数据 int i=1;分别用Serial.print()函数与Serial.write()函数发送:
在程序演示之前,我先推算一下运算过程:
用Serial.print() 发送的过程 【int 97 ——转化为两个字符型数据char 9、和char 7——(以char 9为例)Serial.print() 发送字符9的ascii码(00111001)—— 串口监视器接收到ascii码,则会显示对应的字符即9.——字符char 7过程相同,即结果为97】
用Serial.write() 发送的过程 【int 97 ——Serial.write() 发送97的ascii码(10010111)——串口监视器接收到ascii码,则会显示对应的字符即a,以十六进制显示的话为(0x61)】

2、注意的是波特率要与串口接收的一样大
3、arduino端口要与串口一一致

 4、代码

#include<ESP8266WiFi.h>
#include<Servo.h>
#define DuoPIN D3    //设置舵机的引脚输出
Servo myDuoJi;      //定义一个类


void setup() {
 

  Serial.begin(9600);     //初始化串口(重要)

}
 
void loop() {
 

const byte GKongTiao[]={0xAA,0x07,0x02,0x00,0x01,0xB4}; //将十六进制数据定义出来
const byte KKongTiao[]={0xAA,0x07,0x02,0x00,0x02,0xB5};       
 char i=Serial.read();
            if(i == '1')
            {
              Serial.write(KKongTiao,(sizeof(KKongTiao) / sizeof(KKongTiao[0])));
              }else if(i=='0'){
                
                Serial.write(GKongTiao,(sizeof(GKongTiao) / sizeof(GKongTiao[0])));
                
                }
      

  }
  //}
//}
 
 
 
 
 
 
 

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值