“PPM普通收发示例”的版本间的差异

来自Microduino Wikipedia
跳转至: 导航搜索
 
(未显示同一用户的2个中间版本)
第5行: 第5行:
 
<br>
 
<br>
 
本示例试验了PPM编码和解码的通讯方法
 
本示例试验了PPM编码和解码的通讯方法
 +
 +
8通道编码与解码,普通精度
 +
 +
如果需要更高精度(4通道),见:'''[[PPM高精度收发示例|PPM高精度收发示例]]'''
  
 
下载完以后,打开接收端串口监视,查看数据
 
下载完以后,打开接收端串口监视,查看数据
第21行: 第25行:
  
 
<p style="color: #E87E05;font-size:135%">电路搭建</p>
 
<p style="color: #E87E05;font-size:135%">电路搭建</p>
分别以mBattery、Core、Hub堆叠在一起,准备两套;将两套的HUB的D2/D3引脚通过传感器线连在一起。
+
分别以mBattery、Core、Hub堆叠在一起,准备两套;将两套HUB的D2/D3引脚通过传感器线连在一起。
 
<br>
 
<br>
 
通过MicroUSB数据线接入电脑,分别下载接收和发送的程序。初次使用请参考:[[AVR核心:Getting_started/zh|Getting Started]]。
 
通过MicroUSB数据线接入电脑,分别下载接收和发送的程序。初次使用请参考:[[AVR核心:Getting_started/zh|Getting Started]]。

2017年7月26日 (三) 09:22的最新版本

PPM普通收发示例


本示例试验了PPM编码和解码的通讯方法

8通道编码与解码,普通精度

如果需要更高精度(4通道),见:PPM高精度收发示例

下载完以后,打开接收端串口监视,查看数据



所需硬件





电路搭建

分别以mBattery、Core、Hub堆叠在一起,准备两套;将两套HUB的D2/D3引脚通过传感器线连在一起。
通过MicroUSB数据线接入电脑,分别下载接收和发送的程序。初次使用请参考:Getting Started




发送代码

#include <Microduino_PPM.h>

PPM PPM;

#define OUTPUT_PIN 2
#define CHAN_NUM  8

uint16_t value[8] = {
  128, 256, 384, 512, 128, 256, 384, 512
};

void setup () {
  Serial.begin(115200);
  PPM.beginWrite(OUTPUT_PIN, CHAN_NUM);  //引脚,通道数(不填默认8)
  PPM.setFix(-5);    //发送数据修正,单位us
}

void loop () {
  for (int i = 0; i < CHAN_NUM; i++) {
    int pulseWidth = map(value[i], 0, 1023, 1000, 2000);
    PPM.Write(i, pulseWidth);	//数值范围须为1000到2000之间
  }
  delay(20);
}




接收代码

#include <Microduino_PPM.h>

PPM PPM;

#define INPUT_PIN 2	//必须为中断脚

uint16_t value[8];

void setup () {
  Serial.begin(115200);
  PPM.beginRead(INPUT_PIN); //必须为中断脚
}

void loop () {
  uint8_t numChannel = PPM.getChannel();  //获取通道数
  Serial.print("numChannel:");
  Serial.println(numChannel);
  PPM.Read(value);		//得到8通道PPM数据,写入变量value
  for (int i = 0; i < numChannel; i++) {
    Serial.print(map(value[i], 1000, 2000, 0, 1023));
    if (i < numChannel - 1) {
      Serial.print(",");
    }
  }
  Serial.println("");
  delay(20);
}




相关案例




返回PPM_Reference页面