Освой Arduino играючи
/* Моя кошка замечательно разбирается в программировании. Стоит мне объяснить проблему ей - и все становится ясно. */
John Robbins, Debugging Applications, Microsoft Press, 2000
В Arduino IDE есть интересный инструмент для визуализации данных - Tools | Serial Plotter.
В Plotter мы можем видеть графики данных, выводимых в последовательный порт Arduino в режиме реального времени. Инструмент принимает значения, поступающие из заданного последовательного порта, и отображает их на графике плоскости XY. Ось Y представляет значения из последовательного порта и автоматически настраивается при увеличении или уменьшении значения. Фактически ось X представляет собой момент времени. Каждая точка на оси X представляет выполнение оператора функции println() - когда вызывается функция, на графике записывается новая точка. Не забывайте заново запускать Serial Plotter после обновления скетча, чтобы избежать различных проблем с отображением данных.
В реальных примерах данные считываются с показаний датчиков. Для демонстрации можно создать несколько примеров без участия датчиков, используя математические формулы.
На экран можно выводить сразу несколько графиков, они будут выводиться разными цветами. При использовании двух и более графиков их можно подписать (смотри второй пример с двумя графиками).
void setup() {
Serial.begin(9600);
}
void loop() {
float angle = 0;
for (angle = 0; angle <= 90; angle = angle + 0.1)
{
float sinSignal = sin(angle);
Serial.print(sinSignal);
Serial.println();
delay(1);
}
}
void setup() {
Serial.begin(9600);
Serial.flush();
Serial.println("SIN, COS");
}
void loop() {
float angle = 0;
for (angle = 0; angle <= 90; angle = angle + 0.1)
{
float sinSignal = sin(angle);
float cosSignal = cos(angle);
Serial.print(sinSignal);
Serial.print(" ");
Serial.println(cosSignal);
delay(1);
}
}
void setup() {
Serial.begin(9600);
}
void loop() {
//Sawtooth Wave
for (float i = 0; i <= 70; i = i + 1)
{
Serial.println(i);
delay(1);
}
}
void setup() {
Serial.begin(9600);
}
void loop() {
//Square Wave
for (int a = 0; a <= 90; a++)
{
int b = 10;
Serial.println(b);
delay(1);
}
for (int a = 0; a <= 90; a++)
{
int b = 90;
Serial.println(b);
delay(1);
}
}
void setup() {
Serial.begin(9600);
}
void loop() {
//Triangular wave
for (float i = 0; i <= 100; i = i + 1)
{
Serial.println(i);
delay(1);
}
for (float i = 100; i >= 0; i = i - 1)
{
Serial.println(i);
delay(1);
}
}
Уроки Ардуино. Графики в реальном времени - YouTube - видео про интересный инструмент
Отдельная программа с открытыми исходниками Serial Port Plotter. Имеет дополнительные возможности.