“PPM普通收发示例”的版本间的差异
(未显示同一用户的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引脚通过传感器线连在一起。 | |
<br> | <br> | ||
通过MicroUSB数据线接入电脑,分别下载接收和发送的程序。初次使用请参考:[[AVR核心:Getting_started/zh|Getting Started]]。 | 通过MicroUSB数据线接入电脑,分别下载接收和发送的程序。初次使用请参考:[[AVR核心:Getting_started/zh|Getting Started]]。 |
2017年7月26日 (三) 09:22的最新版本
PPM普通收发示例
8通道编码与解码,普通精度 如果需要更高精度(4通道),见:PPM高精度收发示例 下载完以后,打开接收端串口监视,查看数据
所需硬件
电路搭建 分别以mBattery、Core、Hub堆叠在一起,准备两套;将两套HUB的D2/D3引脚通过传感器线连在一起。
发送代码 #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);
}
相关案例 |