IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> ESP8266解析S-BUS协议 -> 正文阅读

[嵌入式]ESP8266解析S-BUS协议

Talk is cheap, show you code!
编译平台:Arduino IDE

/**
 *  功能:软件串口读取S-BUS数据;解析;串口打印
 */
#include <SoftwareSerial.h>
#define None 5//D1(空)
#define DataPort 14//D5

uint8_t Data_packet[26];
uint16_t CH[16];  // 通道值

//声明一个软件串口
SoftwareSerial swSerial;

void setup() 
{
  Serial.begin(115200);   
  //设置软件串口波特率  
  //begin(uint32_t baud, SoftwareSerialConfig config,int8_t rxPin, int8_t txPin, bool invert,int Data_packetCapacity = 64, int isrData_packetCapacity = 0);
  swSerial.begin(100000,SWSERIAL_8E2,DataPort,None,true);
}

void loop() 
{
  readSerial();
  Sbus_Data_Count();
  DebugPrint();
}

void DebugPrint()
{
  //Serial.printf("%4d ",Data_packet[1]);//0x0F
  for(int i=0;i<6;i++)//mc6c遥控器只有6个通道
  {
    Serial.printf("%4d ",CH[i]);
  }
  Serial.println();
  //Serial.printf("%4d\n",Data_packet[25]);//0x00

  /*for(int i=1;i<=25;i++)
  {
    Serial.printf("%4d ",Data_packet[i]);
  }
  Serial.println("");*/
}

void readSerial()
{
  for(int i=1;i<=25;i++)
  {
    if(swSerial.available())
    {
      Data_packet[i] = swSerial.read();
      //Serial.printf("Byte%d:%d\n",i,Data_packet[i]);
    }
  }
}

void Sbus_Data_Count()
{
  CH[ 0] = ((int16_t)Data_packet[ 2] >> 0 | ((int16_t)Data_packet[ 3] << 8 )) & 0x07FF;
  CH[ 1] = ((int16_t)Data_packet[ 3] >> 3 | ((int16_t)Data_packet[ 4] << 5 )) & 0x07FF;
  CH[ 2] = ((int16_t)Data_packet[ 4] >> 6 | ((int16_t)Data_packet[ 5] << 2 )  | (int16_t)Data_packet[ 6] << 10 ) & 0x07FF;
  CH[ 3] = ((int16_t)Data_packet[ 6] >> 1 | ((int16_t)Data_packet[ 7] << 7 )) & 0x07FF;
  CH[ 4] = ((int16_t)Data_packet[ 7] >> 4 | ((int16_t)Data_packet[ 8] << 4 )) & 0x07FF;
  CH[ 5] = ((int16_t)Data_packet[ 8] >> 7 | ((int16_t)Data_packet[ 9] << 1 )  | (int16_t)Data_packet[10] <<  9 ) & 0x07FF;
  CH[ 6] = ((int16_t)Data_packet[10] >> 2 | ((int16_t)Data_packet[11] << 6 )) & 0x07FF;
  CH[ 7] = ((int16_t)Data_packet[11] >> 5 | ((int16_t)Data_packet[12] << 3 )) & 0x07FF;
  
  CH[ 8] = ((int16_t)Data_packet[13] << 0 | ((int16_t)Data_packet[14] << 8 )) & 0x07FF;
  CH[ 9] = ((int16_t)Data_packet[14] >> 3 | ((int16_t)Data_packet[15] << 5 )) & 0x07FF;
  CH[10] = ((int16_t)Data_packet[15] >> 6 | ((int16_t)Data_packet[16] << 2 )  | (int16_t)Data_packet[17] << 10 ) & 0x07FF;
  CH[11] = ((int16_t)Data_packet[17] >> 1 | ((int16_t)Data_packet[18] << 7 )) & 0x07FF;
  CH[12] = ((int16_t)Data_packet[18] >> 4 | ((int16_t)Data_packet[19] << 4 )) & 0x07FF;
  CH[13] = ((int16_t)Data_packet[19] >> 7 | ((int16_t)Data_packet[20] << 1 )  | (int16_t)Data_packet[21] <<  9 ) & 0x07FF;
  CH[14] = ((int16_t)Data_packet[21] >> 2 | ((int16_t)Data_packet[22] << 6 )) & 0x07FF;
  CH[15] = ((int16_t)Data_packet[22] >> 5 | ((int16_t)Data_packet[23] << 3 )) & 0x07FF;
}
  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章           查看所有文章
加:2022-02-01 20:46:36  更:2022-02-01 20:49:07 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 10:50:30-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码