Последовательный плоттер не отображает предоставленные мной данные
Я хочу использовать функцию последовательного плоттера Arduino, одновременно используя DHT11 в качестве датчика влажности. Но у меня возникла проблема, поскольку плоттер не загружается по имеющемуся у меня коду. Помогите пожалуйста, в чем проблема, из-за которой не загружается серийный плоттер.
Вот код, который я написал:-
#include <dht.h>
#define dht_apin0 A0 // Датчик аналогового контакта подключен к
dht DHT0;
void setup() {
Serial.begin(9600);
delay(500);//Задержка для загрузки системы
Serial.println("DHT11 Humidity Sensor\n");
delay(1000);//Подождите перед доступом к датчику
}//завершаем "setup()"
void loop(){
//Начало программы
DHT0.read11(dht_apin0);
Serial.print("Current humidity = ");
Serial.print(DHT0.humidity);
Serial.print("% ");
delay(5000);//Подождите 5 секунд, прежде чем снова получить доступ к датчику.
//Самое быстрое должно быть раз в две секунды.
}// завершаем цикл()
@Deepanshu, 👍1
Обсуждение1 ответ
Вы не можете отправлять на плоттер произвольную информацию (знаки процента, текст и т. д.). Плоттер только понимает числовые значения. Вам нужно отделить эти числовые значения друг от друга запятыми, а затем выполнить println
в последнем значении:
Serial.print(percent);
Serial.print(F(","));
Serial.print(tankPercent(depth));
Serial.print(F(","));
Serial.print(litres);
Serial.print(F(","));
Serial.println(tankLitres(depth));
В вашем случае это будет просто:
Serial.println(DHT0.humidity);
Вы можете пойти немного дальше, если хотите переключиться между последовательным выходом или последовательным плоттером. В одном случае я просто установил постоянную переменную для графических или простых данных, а затем создал функцию для каждого из них (мои приведенные выше операторы Serial
на самом деле находятся внутри функции под названием displayGraph()
) ). Функция данных будет такой же, как у вас изначально, например:
void displayData(float depth, float percent, float litres){
// глубина уровня воды (дюймы)
Serial.print(F("current missing inches: "));
Serial.println(mixtureDistance());
// кубические дюймы
Serial.print(F("total cubic inches: "));
Serial.println(TANK_TOTAL_CUBIC_INCHES);
Serial.print(F("current cubic inches: "));
Serial.println(tankCurrentCubicInches(depth));
// литры
Serial.print(F("total litres: "));
Serial.println(TANK_TOTAL_LITRES);
// ... и т. д
}
У меня также есть проекты, в которых я использую переключатель, который, если он включен, устанавливает флаг для вывода в формате последовательного графика, а если выключен, использует процедуру последовательных данных.
Затем в вашем скетче loop()
вы должны сделать что-то вроде:
graph
? displayGraph(depth, percent, litres)
: displayData(depth, percent, litres);
...или немного более подробно, чем использовать третичный оператор:
if (graph){
displayGraph(...);
}
else {
displayData(...);
}
Вот пример последовательного плоттера Q&D для моей функции displayGraph()
, приведенной выше. В правом верхнем углу изображения четыре цвета обозначают четыре части данных, которые я отправляю, по порядку:
В моем случае они представляют собой экспоненциальное скользящее среднее процента наполнения бака для жидкости, второе — это необработанные данные, на которых я строю это среднее значение, третье — экспоненциальное скользящее среднее количества оставшихся литров. в резервуаре и, наконец, опять же, необработанные данные для этого среднего показателя.
Резкие движения — это просто удары по резервуару, чтобы получить какие-то переменные и нестабильные показания, например.
- (Код ультразвукового датчика: такого файла или каталога нет)
- Несколько неблокирующих таймеров обратного отсчета?
- Датчик HC-SR505 PIR выдает только HIGH уровень
- Отправка данных из ESP8266 в PHP
- Определение уровня заряда с помощью датчика тока (ACS758) с arduino uno
- Использование YS-IRTM с Arduino Uno
- Как объединить два разных скетча датчика в один полный скетч?
- Как использовать фотодиод для arduino?
https://learn.adafruit.com/experimenters-guide-for-metro/circ08-using%20the%20arduino%20serial%20plotter, @Juraj
Последовательный плоттер понятия не имеет, что делать с текстом перед значением влажности или с % после него., @Gerben