使用433Mhz发射器实时发送PWM值
Realtime sending PWM values using 433Mhz transmitter
我尝试使用433Mhz发射器模块创建无线PWM传输。我找到了这个用于传输 https://github.com/zeitgeist87/RFTransmitter 的库和用于读取某些引脚 https://github.com/xkam1x/Arduino-PWM-Reader 上的PWM值的库。
我编写了用于发送PWM值的代码:
#include "PWM.hpp"
#include <RFTransmitter.h>
#define NODE_ID 1
#define OUTPUT_PIN 11
RFTransmitter transmitter(OUTPUT_PIN, NODE_ID);
PWM my_pwm(2);
// the setup function runs once when you press reset or power the board
void setup() {
my_pwm.begin(true);
}
// the loop function runs over and over again forever
void loop() {
int pwmValue = my_pwm.getValue();
char stringValue[4];
itoa(pwmValue, stringValue, 10);
transmitter.send(stringValue, strlen(stringValue) + 1);
}
和类似的接收代码
#include <Servo.h>
#include <PinChangeInterruptHandler.h>
#include <RFReceiver.h>
int PWM_out_pin = 9;
Servo servo;
// Listen on digital pin 2
RFReceiver receiver(2);
void setup() {
servo.attach(PWM_out_pin);
receiver.begin();
}
void loop() {
char msg[MAX_PACKAGE_SIZE];
byte senderId = 0;
byte packageId = 0;
byte len = receiver.recvPackage((byte *)msg, &senderId, &packageId);
String *stringObject = new String(msg);
servo.writeMicroseconds(stringObject->toInt());
}
它有效,但问题很少。 首先,这不是最佳的。我把所有的东西都变成字符串。如何直接从 PWM 发送 int 值? 第二个问题是它有大约 1 秒的延迟。有可能让它更快吗?我需要它来实时控制伺服。
谢谢。
如何直接从 PWM 发送 int 值?
transmitter.send((char*)pwmValue, sizeof(int));
然后在接收端,您无需将数据转换为字符串。
servo.writeMicroseconds((int) *msg);
(int) 和 (char*) 是 C 样式的类型转换。实质上是告诉编译器您希望将数据解释为不同的变量类型。
警告:小心使用"new"关键字,您正在动态分配内存。C/C++中的经验法则:无论你在哪里使用"new"关键字,都应该有一个相应的"删除"调用来清理内存。
在使其更快方面,此处的 C/C++ 代码不是导致从命令到操作的 1 秒延迟的限制因素。RF发射器发射/接收堆栈中很可能有一个参数需要调整。在发送PWM值之前,我会对发送和打印简单字符串的延迟进行基准测试。
相关文章:
- 从数据库实时显示QT c++中的数据
- 在Arduino中将PWM通道命名为LEDC是否有特定原因
- 在 Windows 8/10 技术中完全实时的屏幕捕获,没有延迟
- 有没有办法使用 c++ 实时阅读文本?
- 在本地网络中通过OpenCV(C++)实时流式传输图像
- 将相机数据从服务器实时流式传输到客户端
- 将实时(非静态)放在qt(c ++)上
- 线程之间的实时数据共享
- 如何在实时应用程序中锁定线程
- OpenCV - 来自相机的实时馈送不流畅
- 如何提高 OpenCV 实时检测器应用程序的帧率?
- 使用 Opencv 将姿势值实时写入文本文件
- Firebase C++ Windows 上的实时数据库连接丢失
- 我在 IDA 或 dbg 或 olly 上看到的内存是否与我在 RAM 上实时加载的内存相同?
- 媒体基金会:WavSink以比实时消耗率更快的速度处理音频-是否可以实时限制后台处理
- 如何实时捕获相机的视频?
- ROOT中的实时更新
- C# 的垃圾回收会给实时音频应用程序带来问题吗?
- 如何编写日志文件,以便可以使用记事本实时读取它以进行C++
- 使用433Mhz发射器实时发送PWM值