From 6f8e3ba0ff8953217a29c3064cbd45195e26723b Mon Sep 17 00:00:00 2001 From: Laurens Valk Date: Fri, 10 Apr 2020 13:54:36 +0200 Subject: [PATCH] doc/tools: improve datalog information - Fix typo in example - Explain how to upload a log file - Show an example graph --- doc/api/images/datalog_graph.png | Bin 0 -> 38435 bytes doc/api/images/datalog_vscode_upload.png | Bin 0 -> 21073 bytes doc/api/tools.rst | 49 +++++++++++++++++------ pybricks-projects | 2 +- pybricks/tools.py | 2 +- 5 files changed, 39 insertions(+), 14 deletions(-) create mode 100644 doc/api/images/datalog_graph.png create mode 100644 doc/api/images/datalog_vscode_upload.png diff --git a/doc/api/images/datalog_graph.png b/doc/api/images/datalog_graph.png new file mode 100644 index 0000000000000000000000000000000000000000..c4392c8d8dfb472de8a659f5b37b8b02aace88a1 GIT binary patch literal 38435 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 literal 0 HcmV?d00001 diff --git a/doc/api/tools.rst b/doc/api/tools.rst index 7eed9e6..d50a0ec 100644 --- a/doc/api/tools.rst +++ b/doc/api/tools.rst @@ -18,21 +18,38 @@ .. automethod:: pybricks.tools.StopWatch.reset .. autoclass:: pybricks.tools.DataLog + :no-members: + + .. automethod:: pybricks.tools.DataLog.log + + By default, this class creates a ``csv`` file on the EV3 brick with the + name ``log`` and the current date and time. For example, if you + use this class on 13 February 2020 on 10:07 and 44.431260 + seconds, the file is called ``log_2020_02_13_10_07_44_431260.csv``. + + You can upload the file to your computer using the device browser as shown + in :numref:`fig_datalog_vscode_upload`. Then you can open it with common + spreadsheet applications, as well as most plain text editors. + + .. _fig_datalog_vscode_upload: + + .. figure:: ../api/images/datalog_vscode_upload.png + :width: 50 % + + Uploading a file from the EV3 to your computer. .. toggle-header:: :header: **Show/hide example: Logging and visualizing measurements** + + **Example** This example shows how to log the angle of a rotating wheel as time passes. .. literalinclude:: ../../pybricks-projects/snippets/ev3/datalog/main.py - It creates a ``csv`` file on the EV3 brick with the name ``log`` and - the current date and time. For example, if you - run this example on 13 February 2020 on 10:07 and 44.431260 - seconds, the file is called ``log_2020_02_13_10_07_44_431260.csv``. In this - case, it has the following contents:: + In this example, the generated file has the following contents:: time, angle 3, 0 @@ -46,14 +63,22 @@ 838, 333 942, 385 - The file is created on the EV3 Brick. You can find the file in the ev3dev - device browser in the bottom left of your Visual Studio Code window. To - upload it to your computer, right click it and click ``upload``. + When you upload the file to your computer as shown above, you can open it + in a spreadsheet editor. You can then generate a graph of the data, as + shown in :numref:`fig_datalog_graph`. + + In this example, we see that the motor angle changes slowly at first. Then + the angle begins to change faster, and the graph becomes a straight line. + This means that the motor has reached a constant speed. You can verify that + the angle increases by 500 degrees per second. + + .. _fig_datalog_graph: + + .. figure:: ../api/images/datalog_graph.png + :width: 100 % + + Original file contents (left) and a generated graph (right). - You can open this ``csv`` file with spreadsheet tools such as - Microsoft Excel, Apple Numbers, or Libreoffice Calc (free). You can then - further analyse or plot the data. The file can also be opened with most - text editors. .. toggle-header:: :header: **Show/hide example: Using the optional arguments** diff --git a/pybricks-projects b/pybricks-projects index 18185b4..79e1064 160000 --- a/pybricks-projects +++ b/pybricks-projects @@ -1 +1 @@ -Subproject commit 18185b4d87e74cd0f44754487ada3a8a2e1d168b +Subproject commit 79e1064ae9a01606218139d439bd8e8d43c16b8e diff --git a/pybricks/tools.py b/pybricks/tools.py index d2d9ad0..6e5c20e 100644 --- a/pybricks/tools.py +++ b/pybricks/tools.py @@ -62,7 +62,7 @@ class DataLog: timestamp (bool): Choose ``True`` to add the date and time to the file name. This way, your file has a unique name. Choose ``False`` to omit the timestamp. - extension (str): File extension + extension (str): File extension. """ pass