Tags:
tag this topic
create new tag
view all tags
---+ Python modules and timing Python libraries are arranged as modules, containing a number of functions and/or classes. These modules must be _imported_ before being used. You can either import the complete module, or you can import individual functions or classes to be used. As an example, let's study the _time_ module. In !MicrroPython the module is called utime (for micro-time) and it contains functions allowing us to delay execution for a certain amount of time. * sleep(t) sets the program to sleep for t seconds * sleep_ms(t) sets the program to sleep for t ms If, in our program which prints "Hello World!" we want to have the text printed only every second we could program this as follows: <verbatim>import utime # import time would work as well for i in range(5): print("Hello World") utime.sleep(1) # delay execution be 1 s, utime.sleep_ms(1000) would do the same. sleep_ms is not available in CPython</verbatim> The other option is to import just the function to be used: <verbatim>from utime import sleep_ms for i in range(5): print("Hello World!") sleep_ms(1000) # note that utime in front of the sleep call has been omitted</verbatim> In i similar way, you may use the functions of the math library: In order to calculate sin(30 degrees) you need access to the _sin_ function. The _sin_ function however takes its parameter in radians such that you need the function _radians_, converting values from degrees to radians, in addition. This is how you would go about: <verbatim>from math import sin,radians print(sin(radians(30)))</verbatim> ---++ Writing your own functions It is easily possible to write your own functions and to create your own modules. Imagine you want to create a sin function which takes angles in degrees, instead of radians. Let's call the function _sin_deg(degrees)._ It will take its parameter degrees, convert the value to radians and return the sin result, which was calculated with the sin function from the math library. You can define a function with the keyword <i>def. </i>The function body is again indented, like we saw in case of the conditions or the loops: <verbatim>from math import sin,radians def sin_deg(degrees): rad = radians(degrees) return sin(rad)</verbatim> We can call this function as follows: <verbatim>angle = 30 # use 30 degrees as parameter value result = sin_deg(angle) # calculates the sin of "angle" degrees using our own sin_deg function print("sin(",angle,") = ",result)</verbatim> ---++ Plotting a function <img alt="damped_osc.png" height="46" src="%ATTACHURL%/damped_osc.png" title="damped_osc.png" width="166" /><br />is the formula for a damped oscillator. In order to plot its shape, we can first define a function which calculates its value for a given x. After that, we call this function for as many points as we want to plot, and we print the x and damped_osc(x) values. <verbatim>from math import exp,sin def damped_osc(x): # calculates the damped # oscillator function return exp(-1/10)*sin(x) for i in range(500): # calculate 500 values print(i/10,damped_osc(i/10) # and print them</verbatim> When running the program, we can redirect the printed data to a file. On the PC, using CPython (python3) this is done as follows: <verbatim>python3 damped_osc.py > damped_osc.dat.</verbatim> We can however also run the code on the ESP32 and redirect the output to a file on the PC: <verbatim>ampy run damped_osc.py > damped_osc.dat</verbatim> Once we have the data in a file, we call gnuplot: <verbatim>gnuplot plot "damped_osc.dat" with lines </verbatim> <img alt="damped_osc_plot.png" height="598" src="%ATTACHURL%/damped_osc_plot.png" title="damped_osc_plot.png" width="662" /> <verbatim> </verbatim> Let's try these [[ExerciseSheets#SecondSession]]<br />Thereafter, we will learn how to access hardware in [[Hardware Access GPIO]]<br /><br /> -- %USERSIG{UliRaich - 2022-10-15}% ---++ Comments %COMMENT%
Attachments
Attachments
Topic attachments
I
Attachment
History
Action
Size
Date
Who
Comment
png
damped_osc_plot.png
r1
manage
38.5 K
2022-10-23 - 19:33
UliRaich
png
damped_osc.png
r1
manage
3.3 K
2022-10-23 - 19:20
UliRaich
E
dit
|
A
ttach
|
Watch
|
P
rint version
|
H
istory
: r5
<
r4
<
r3
<
r2
<
r1
|
B
acklinks
|
V
iew topic
|
Ra
w
edit
|
M
ore topic actions
Topic revision: r5 - 2024-03-28
-
UliRaich
Home
Site map
AFNOG web
Embedded_Systems web
IoT_Course_English web
IoT_Course_French web
Main web
Sandbox web
TWiki web
AFNOG Web
Create New Topic
Index
Search
Changes
Notifications
RSS Feed
Statistics
Preferences
P
P
View
Raw View
Print version
Find backlinks
History
More topic actions
Edit
Raw edit
Attach file or image
Edit topic preference settings
Set new parent
More topic actions
Account
Log In
Register User
E
dit
A
ttach
Copyright © 2008-2024 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki?
Send feedback