为Arduino编写库
Writing Libraries for Arduino
本文关键字:Arduino 更新时间:2023-10-16
我正试图为Arduino编写一个简单的库来解析和解释串行命令。我使用示例库的目的是读取预期的命令并打开一些led。我已经通过arduino获得了串行通信,我希望它由一个库来处理。例如……我在arduino
上有以下代码Arduino代码:
#include <serialComms.h>
serialComms testing = serialComms();
void setup()
{
Serial.begin(9600);
}
void loop() // not terribly concerned with the main loop, only the serialEvent, which I have tested and works
{
}
void serialEvent()
{
testing.readNewBytes();
testing.assignBytes();
}
serialComms.cpp
#include <Arduino.h>
#include <serialComms.h>
void serialComms::init()
{
// This is where the constructor would be...right now we are too stupid to have one
}
void serialComms::readNewBytes() // Target Pin,Values
{
digitalWrite(11,HIGH);
delay(250);
digitalWrite(11,LOW);
assignBytes();
}
void serialComms::assignBytes()
{
for(int t = 0;t<5;t++)
{
digitalWrite(10,HIGH);
delay(250);
digitalWrite(10,LOW);
}
}
serialComms.h
#ifndef serialComms_h
#define serialComms_h
/* serialComms Class */
class serialComms
{
public:
serialComms() {};
void init();
void readNewBytes(); // Will be used to create the array --> two variables for now...
void assignBytes();
};
#endif
我的问题如下……
1)。我是否有适当的库结构?当我发送消息并触发serialEvent时,我只想让led闪烁,当我在arduino中运行代码时,我得到以下错误。
testingLibraries:2: error: 'serialComms' does not name a type
testingLibraries.ino: In function 'void serialEvent()':
testingLibraries:16: error: 'testing' was not declared in this scope
我有.cpp和.h文件在一个名为serialComms的文件夹在库文件夹。我真的不知道该怎么做,你有什么想法吗?
首先更改
#ifndef serialComms
#define serialComms
#ifndef serialComms_h
#define serialComms_h
宏不能与实例同名。
然后检查大小写,例如readBytes vs testing.readbytes();注意B
确保在第一次创建一个新的库目录和初始文件时关闭所有的Arduino IDE。启动时的IDE缓存一个文件列表。它们随后会改变内部结构。但是新的文件要到下次启动时才知道。
下面的编译对我来说很好。有一次我纠正了所有的错字:
definetest.ino
#include <serialComms.h>
serialComms testing;
void setup() {
Serial.begin(9600);
}
void loop() {
}
void serialEvent()
{
testing.readBytes();
testing.assignBytes();
}
serialComms.cpp
#ifndef serialComms_h
#define serialComms_h
/* serialComms Class */
class serialComms
{
public:
// serialComms() {};
void init();
void readBytes(); // Will be used to create the array --> two variables for now...
void assignBytes();
};
#endif
serialComms.h
#include <Arduino.h>
#include <serialComms.h>
void serialComms::init()
{
// This is where the constructor would be...right now we are too stupid to have one
}
void serialComms::readBytes() // Target Pin,Values
{
digitalWrite(11,HIGH);
delay(250);
digitalWrite(11,LOW);
assignBytes();
}
void serialComms::assignBytes()
{
for(int t = 0;t<5;t++)
{
digitalWrite(10,HIGH);
delay(250);
digitalWrite(10,LOW);
}
}
相关文章:
- 在执行其他功能的同时播放动画(LED矩阵和Arduino/ESP8266)
- Arduino:for/while/if在void setup()或void loop()之前?——错误:之前需要不合格
- 人脸跟踪arduino代码的优化
- vscode下的Arduino代码出现意外编译错误
- Arduino从Txt读取整数
- Arduino C++在构造函数中用参数声明对象数组
- C++ Boost::asio串行通信与Arduino无法写入
- Arduino millis() - millis() 怎么能等于 0 以外的任何东西?
- 在Arduino中将PWM通道命名为LEDC是否有特定原因
- 'val' Arduino 错误代码之前的预期'('
- 我可以在 Arduino 的库文件夹之外安装库吗?
- 在 Arduino 上使用 sscanf 会导致与 const char * 不匹配,并且返回值始终相同,尽管输入值不同
- Arduino 用于语句错误。令牌之前的预期')' ';'。如何解决这个问题?
- 无法在 Arduino 中uint8_t数组转换为无符号长整型数组
- Arduino-C++ bool 不会从 false 变为 true
- Arduino:在 loop() 和自定义函数中运行相同的代码时出现问题
- cmsis_compiler.h:在为 Arduino Due 编译 Arduino Tensorflow lite 库
- Arduino SocketIoClient - 没有用于调用的匹配函数
- Arduino无法编译名为SP:"Expected ')' before '(' token"的变量
- 当我尝试通过 arduino 上的引用传递布尔数组时出现问题