arduino - 如何解决 Arduino 中可用的内存不足的问题
问题描述
我正在使用这段代码:
#include <HCSR04.h>
#include <SoftwareSerial.h>
#include <ArduinoJson.h>
#include <Wire.h>
#include "RTClib.h"
#define buzzer 2
//initialisation class HCSR04 (trig pin , echo pin)
HCSR04 hcAir(13, 12);
HCSR04 hcPakan(11, 10);
SoftwareSerial s(5, 6);
RTC_DS3231 rtc;
char daysOfTheWeek[7][12] = {"Minggu", "Senin", "Selasa", "Rabu", "Kamis", "Jum'at", "Sabtu"};
StaticJsonBuffer<1000> jsonBuffer;
JsonObject& root = jsonBuffer.createObject();
void setup() {
s.begin(115200);
pinMode(buzzer, OUTPUT);
rtc.begin();
}
void air() {
int air = hcAir.dist();
int rumus = ((100 / 50) * air);
int isiAir = 100 - rumus;
if (isiAir <= 0) {
root["air"] = 0;
digitalWrite(buzzer, HIGH);
} else if (isiAir >= 100) {
root["air"] = 100;
digitalWrite(buzzer, LOW);
} else {
root["air"] = isiAir;
digitalWrite(buzzer, LOW);
}
}
void pakan() {
int pakan = hcPakan.dist();
int rumus2 = ((100 / 50) * pakan);
int isiPakan = 100 - rumus2;
if (isiPakan <= 0) {
root["pakan"] = 0;
digitalWrite(buzzer, HIGH);
} else if (isiPakan >= 100) {
root["pakan"] = 100;
digitalWrite(buzzer, LOW);
} else {
root["pakan"] = isiPakan;
digitalWrite(buzzer, LOW);
}
}
void waktu() {
DateTime now = rtc.now();
int jam = now.hour();
int menit = now.minute();
String hari = daysOfTheWeek[now.dayOfTheWeek()];
root["jam"] = jam;
root["menit"] = menit;
root["hari"] = hari;
}
void loop() {
air();
pakan();
waktu();
if (s.available() > 0) {
root.printTo(s);
}
}
出现此消息导致代码无法运行:
Sketch 使用 10468 字节(32%)的程序存储空间。最大值为 32256 字节。 全局变量使用 1608 字节 (78%) 的动态内存,为局部变量留下 440 字节。最大值为 2048 字节。 可用内存不足,可能会出现稳定性问题。
解决方案
尝试查看您的 Json 的绝对最大大小,并将缓冲区大小 ( StaticJsonBuffer<1000>
) 减小到希望较小的数字。
此外,对于简单的 Json,您可以“手动”执行操作而不使用库;您也可以简单地发送名称/值对并且根本不使用 Json。
推荐阅读
- c++ - QTest 覆盖漆法
- python - 有人可以向我解释这段代码吗?我需要了解 Python for 循环的人
- reactjs - 使用导航栏切换路由器
- java - 向lib添加了mysql jar,但在通过intelliJ工作的tomcat的本地部署中仍然面临类未找到异常?
- swift - Swift 包管理器无法编译通过 Homebrew 安装的 ncurses
- c++ - 如何修复strlen seg错误
- python - 有没有办法保存和加载 Gensim Doc2Vec 模型的词汇表
- javascript - 如何反转计数并设置倒计时开始时间?
- python - 如何使熊猫分类堆积条形图比例为 100%
- ansible - 如何创建模块 ansible 模块或插件以动态生成要推送的文件