WEBVTT

00:00.140 --> 00:04.640
This is the solution for the step number one for this final project with the Raspberry Pi.

00:04.670 --> 00:09.020
Make sure you have downloaded the PDF from the last lesson, or you can make sure you have read the

00:09.020 --> 00:11.870
PDF so you know what's the challenge.

00:11.870 --> 00:17.000
And in this first step, what we want to do is to detect a movement with the Pi sensor.

00:17.000 --> 00:22.700
And when a movement has been detected for five seconds, we want to take a photo.

00:22.700 --> 00:26.540
So we're just going to do the Pir sensor part and the logic.

00:26.540 --> 00:29.330
And the photo is going to be in the next step.

00:29.330 --> 00:31.070
So let's get started.

00:31.100 --> 00:33.740
I'm going to start with a blank page.

00:33.740 --> 00:44.180
And let's import from Gpio zero import motion sensor okay let's start with this.

00:44.180 --> 00:51.650
Then we are going to initialize our Pir with this motion sensor.

00:51.650 --> 00:53.870
And that's Gpio number four.

00:53.990 --> 00:57.110
After we initialize it we can add the callbacks.

00:57.110 --> 01:05.500
So I'm going to use the callbacks here with Pir dot when Motion and then per dot.

01:05.530 --> 01:06.280
When?

01:06.280 --> 01:08.050
No motion.

01:08.320 --> 01:08.860
Okay.

01:08.860 --> 01:13.840
So I need to create a function for both callbacks here.

01:13.870 --> 01:16.600
I'm going to create the function right here.

01:17.170 --> 01:20.920
For example def motion detected.

01:22.840 --> 01:27.790
And let's create another one def motion.

01:27.790 --> 01:31.000
Let's call it motion finished okay.

01:31.030 --> 01:36.520
Because the no motion trigger here is well after motion has been detected.

01:36.520 --> 01:39.190
And then not this is going to be called.

01:39.190 --> 01:41.230
So we can call it motion finished.

01:41.230 --> 01:44.590
Let's add a column here and then let's register.

01:44.590 --> 01:47.560
So motion detected.

01:48.910 --> 01:52.030
And once again important not to put parentheses here.

01:52.030 --> 01:57.190
And motion finished okay.

01:57.190 --> 02:04.710
And just to finish this global structure I'm going to do from signal inputs pose.

02:04.710 --> 02:07.980
And then let's just do pose.

02:08.160 --> 02:08.400
Okay.

02:08.430 --> 02:13.530
So this is what we've done before in the motion sensor section we just created.

02:13.560 --> 02:17.940
Then we had two callbacks to know when the motion has been detected and when it's finished.

02:17.940 --> 02:20.760
And then we can write the logic of the code in this.

02:20.760 --> 02:22.710
And then we make sure that we pose the problem.

02:22.740 --> 02:25.050
Otherwise it's going to exit right away.

02:25.080 --> 02:32.850
Now before I write the logic here, which is going to be the main challenge, let's just add an LED

02:33.090 --> 02:38.640
and we're just going to turn on the LED when the motion is detected and turn off the LED when the motion

02:38.640 --> 02:39.780
is not detected.

02:39.810 --> 02:40.050
Okay.

02:40.080 --> 02:42.660
So it's going to be easier for us when we test the program.

02:42.660 --> 02:45.360
We can see the LED turned on or turned off.

02:45.360 --> 02:48.720
And it's going to be much easier for us to visualize what's happening.

02:48.750 --> 02:49.230
Okay.

02:49.230 --> 02:50.640
So let's just add this.

02:50.670 --> 02:51.990
And that's going to be very quick.

02:51.990 --> 02:53.790
So I add the LED here.

02:54.420 --> 02:58.230
Then I initialize my LED I just use one.

02:58.260 --> 02:58.410
Okay.

02:58.440 --> 03:00.150
You could use multiple ones if you want.

03:00.180 --> 03:01.860
But one is enough.

03:01.860 --> 03:06.410
And I'm going to use the first one for example, which is on Gpio 17.

03:06.440 --> 03:09.560
Maybe after that I can add a print here.

03:09.590 --> 03:13.280
Let's say Gpio was setup.

03:13.310 --> 03:14.030
Okay.

03:14.600 --> 03:14.810
All right.

03:14.840 --> 03:21.350
So for everything I initialize the Gpio, the camera etc. I'm going to add a print here to say that

03:21.350 --> 03:22.010
it's okay.

03:22.010 --> 03:27.410
So when we start the program if we have an error somewhere we can have a better idea of what happened.

03:27.410 --> 03:31.310
And let's just do setup Gpio.

03:31.670 --> 03:33.530
So I add a comment here okay.

03:33.560 --> 03:34.610
It's not going to be executed.

03:34.610 --> 03:38.300
It's just a comment to say this is the setup Gpio part.

03:38.330 --> 03:38.690
Great.

03:38.690 --> 03:43.490
So now when the motion is detected I can do LED dot on.

03:44.120 --> 03:48.590
And when the motion is finished I can do LED dot off.

03:48.980 --> 03:49.910
All right that's it.

03:49.910 --> 03:53.270
Now if you want you can well you can save the program already.

03:53.840 --> 03:55.730
And let's name it.

03:55.910 --> 04:01.160
So project step one dot pi.

04:02.060 --> 04:02.540
Great.

04:02.570 --> 04:04.670
Now you can go on the terminal.

04:04.670 --> 04:07.190
We're going to try to run everything from the terminal.

04:08.060 --> 04:14.120
You go to documents Python programs and you can do Python three projects.

04:14.540 --> 04:19.310
Step 1CI use the auto completion here and Gpio setup okay.

04:19.310 --> 04:26.960
And if you put your hand in front of the Pir sensor you should be able to see also the LED turned on

04:26.960 --> 04:28.160
or turned off.

04:28.190 --> 04:28.370
Okay.

04:28.400 --> 04:30.680
So you can do a quick test already.

04:30.680 --> 04:33.080
And now that we have this code structure okay.

04:33.110 --> 04:34.550
So that's already a good start.

04:34.550 --> 04:42.080
Let's add the logic to say that we want to take a photo after a motion has been detected for a minimum

04:42.110 --> 04:43.610
of five seconds.

04:43.610 --> 04:45.230
So how to do that?

04:45.230 --> 04:53.270
Well, given this callback here, this callback structure, what I can do is to start monitoring the

04:53.270 --> 04:53.600
time.

04:53.600 --> 04:56.720
So I could create kind of a timer and start the timer.

04:56.720 --> 04:59.570
When we get to the motion detected.

04:59.600 --> 05:02.960
Then I could stop the timer when we get the motion finished.

05:02.960 --> 05:09.850
And I could just compare this value of the time right now, minus the time that we registered here.

05:09.850 --> 05:12.160
Is this value greater than five seconds?

05:12.160 --> 05:14.530
If yes, we take a photo.

05:15.010 --> 05:15.310
Okay.

05:15.310 --> 05:20.590
So here with those two callbacks it's not so hard task to do as an alternative.

05:20.590 --> 05:23.830
And that's also something I'm going to talk in the conclusion of this project.

05:23.830 --> 05:28.060
You could instead of writing callbacks like that, you could use a while loop.

05:28.060 --> 05:29.500
So an infinite while loop.

05:29.500 --> 05:35.380
And the way to detect that the Pir sensor has been triggered for five seconds is going to be a tiny

05:35.380 --> 05:40.870
bit different, maybe a bit more complicated, but I'm going to leave that up to you at the end of the

05:40.870 --> 05:41.320
project.

05:41.350 --> 05:41.500
Okay?

05:41.530 --> 05:46.090
If you want to progress more and to get another challenge for this course, I'm just going to focus

05:46.090 --> 05:47.830
on that solution with the callbacks.

05:47.830 --> 05:51.730
So how to actually get the time and register the time?

05:51.730 --> 05:54.910
Well, if I'm going to run on the shell here a quick test.

05:54.910 --> 05:57.580
You can do import time first.

05:57.760 --> 06:00.610
And then if you do time dot time.

06:00.610 --> 06:04.780
So there is a time function inside the time module with the parentheses.

06:04.780 --> 06:06.030
You see we have.

06:06.390 --> 06:07.410
That's the current time.

06:07.590 --> 06:09.090
That's called the time stamp.

06:09.120 --> 06:13.680
That's the current time with some seconds and then a decimal point.

06:14.130 --> 06:16.290
If I run the time again, you can see.

06:16.290 --> 06:21.720
So it was eight something with eight seconds and now 18 seconds.

06:21.720 --> 06:26.490
So basically it was 10s duration between those two.

06:26.520 --> 06:32.820
If I do this one minus that one I will see about 10s duration.

06:32.820 --> 06:34.560
So that's what we're going to use here.

06:34.560 --> 06:40.110
I'm going to import time and then I'm going to start.

06:40.110 --> 06:45.900
So I'm going to record the time here and check the difference with this starting time in the motion

06:45.900 --> 06:46.470
finished.

06:46.470 --> 06:52.530
So to start the time here and to be able to use it there we need to create a global variable.

06:52.530 --> 06:54.780
So I'm going to create a variable here.

06:55.260 --> 06:59.220
For example I can do global variables.

06:59.250 --> 07:01.200
And we're going to put the global variables here.

07:01.200 --> 07:06.060
And let's name this one time motion started.

07:06.060 --> 07:08.600
We're gonna initialize it to the current time.

07:08.630 --> 07:10.190
Actually, time dot time.

07:10.460 --> 07:12.290
So we give it a first value.

07:12.320 --> 07:15.350
That's going to be the current time when we start the program.

07:15.350 --> 07:20.780
Then when the motion is detected, what we will do is we will do time.

07:20.930 --> 07:25.190
Motion started is equal to time dot time.

07:25.220 --> 07:25.430
Okay.

07:25.460 --> 07:28.610
So we store the current time inside this variable.

07:29.000 --> 07:35.150
And because this is a global variable you can use the global variable in a more nested scope if you're

07:35.150 --> 07:37.670
going to read this variable or just use it.

07:37.670 --> 07:41.720
But if you're going to modify it then you need to use the global keyword.

07:41.750 --> 07:42.020
Okay.

07:42.050 --> 07:44.210
So I'm going to use global time.

07:44.210 --> 07:46.370
Motion started.

07:46.370 --> 07:51.290
So this way when I do this I'm actually modifying that variable here.

07:51.290 --> 07:52.340
And then that's great.

07:52.340 --> 07:56.300
So we have the first step when the motion is detected.

07:56.300 --> 07:57.590
So that's the beginning.

07:57.590 --> 08:00.260
We start this kind of this timer.

08:00.290 --> 08:07.640
Then when the motion is finished what I will do is I will calculate the duration.

08:07.660 --> 08:11.920
So let's call that motion duration.

08:12.100 --> 08:12.430
All right.

08:12.460 --> 08:13.750
So here we talk about time.

08:13.750 --> 08:16.030
So time is the specific moment in time.

08:16.030 --> 08:18.070
So that's what time is it now.

08:18.100 --> 08:21.280
But the duration is a difference between two times.

08:21.280 --> 08:25.420
So the duration is going to be the current time at this moment.

08:25.420 --> 08:26.380
What is the current time.

08:26.380 --> 08:27.370
The current time is time.

08:27.370 --> 08:35.410
The time minus the time motion started.

08:35.410 --> 08:39.310
So this callback is going to be triggered when the motion is detected.

08:39.400 --> 08:42.400
When it's finished, this one is going to be called.

08:42.400 --> 08:47.020
We calculate the duration between the two and then we simply do.

08:47.050 --> 08:56.920
If motion duration is greater we can just use strictly greater than five.

08:56.920 --> 09:00.400
I'm going to use a decimal point here because we are comparing float numbers.

09:00.400 --> 09:05.380
So if it's greater than five seconds then I'm just going to use a print here.

09:06.190 --> 09:08.410
Taking a photo.

09:08.460 --> 09:13.050
and sending it by email.

09:13.080 --> 09:18.120
Okay, so we just have a print and then this is what we're going to do in the next few steps.

09:18.120 --> 09:20.640
But for now we just focus on the logic.

09:20.670 --> 09:26.370
And also I'm just going to put this just to make it a bit cleaner, maybe at the beginning of the program

09:26.370 --> 09:28.860
here it doesn't really matter.

09:28.890 --> 09:29.430
Great.

09:29.430 --> 09:31.110
So we can already test that.

09:31.110 --> 09:36.450
And actually to test it you can add intermediate logs to know what's happening.

09:36.450 --> 09:38.400
Because here you will see this log.

09:38.400 --> 09:42.300
But maybe it would be nice to see when we start the timer.

09:42.300 --> 09:45.960
So print here starting timer.

09:46.980 --> 09:55.860
And maybe let's print the motion duration so we can make some tests and see when we start the timer.

09:55.860 --> 09:58.410
We are also going to see the LED on at this time.

09:58.410 --> 10:02.730
And then when the LED goes off we can see also what was the duration.

10:02.730 --> 10:07.620
So let's run that and let's first save it okay with Ctrl s.

10:07.620 --> 10:11.970
So if you run from the terminal once again, make sure you save the file, because if you don't save

10:11.970 --> 10:16.380
it when you run it here, it's not going to save it automatically and you're going to run the previous

10:16.380 --> 10:16.950
version.

10:16.950 --> 10:21.570
So let's do this and I'm going to make some.

10:21.600 --> 10:28.290
So should be started okay I'm going to make some movement starting timer and make some movement.

10:28.290 --> 10:31.650
And you see I stop and it's five seconds.

10:31.650 --> 10:33.090
It says taking a photo.

10:34.170 --> 10:37.050
I make some movements for less than five seconds.

10:38.490 --> 10:38.700
Okay.

10:38.700 --> 10:40.950
So actually this one was more than five.

10:41.670 --> 10:43.170
Make a quick movement okay.

10:44.190 --> 10:45.810
And you see two seconds.

10:45.810 --> 10:47.400
We don't take a photo.

10:48.630 --> 10:52.680
What you might notice you see here I have for example one second.

10:53.850 --> 10:55.590
What you might notice is sometimes.

10:55.590 --> 10:56.910
So here I made a movement.

10:56.910 --> 10:59.820
But sometimes you might have false positives.

10:59.820 --> 11:05.160
So the Pir sensor is going to just detect a movement but there is no real movement.

11:05.160 --> 11:08.040
Or maybe you are on the side because here I'm a bit on the side.

11:08.040 --> 11:12.980
So the Pir still detects the movement, so make sure that there is nothing in front of the pillar.

11:13.010 --> 11:14.150
When you make the test.

11:14.240 --> 11:19.160
Now stop this and I'm just going to make a quick parenthesis on this pillar sensor once again to talk

11:19.160 --> 11:21.950
about the stability of the reading.

11:22.070 --> 11:22.310
Okay.

11:22.340 --> 11:27.890
It's not necessarily the most stable sensor, especially because, well, you could see a lot of noise.

11:27.890 --> 11:30.770
And this noise can happen with a lot of different things.

11:30.770 --> 11:36.860
For example, with the Wi-Fi signal that goes from, for example, your phone to the Raspberry Pi.

11:36.890 --> 11:41.660
As it's very close, it could create some noise on the Pi sensor.

11:41.660 --> 11:42.950
So the quality of the cable.

11:42.950 --> 11:48.500
So maybe if you have longer cables, good quality cables, and you put the Pir sensor quite far from

11:48.500 --> 11:55.310
the Raspberry Pi, maybe 50cm or 1m, then maybe it's going to be better then if you have too much light

11:55.310 --> 12:00.320
in your room that goes directly into the Pir could also make it less stable.

12:00.350 --> 12:05.390
Okay, if you have too many hardware components on the side and then depending on what surface you put

12:05.390 --> 12:05.600
it.

12:05.600 --> 12:11.620
So if you want to improve this part after this project, you can check for example, how to isolate

12:11.620 --> 12:18.280
better the Pir sensor with some foil, for example, and then how to add a capacitor between the sensor

12:18.280 --> 12:19.690
and the power supply.

12:19.720 --> 12:24.700
Well, there are all sorts of things you can do on the hardware side to make it more stable.

12:24.730 --> 12:26.740
Okay, I'm going to leave it like this for now.

12:26.770 --> 12:28.660
That's going to be good enough for this project.

12:28.660 --> 12:32.290
And also, anyway, you might not even use this specific sensor later.

12:32.290 --> 12:36.730
So the goal is really to do the project and not to worry too much about external things.

12:36.730 --> 12:41.980
So if you have some noise with the readings, if you have some false positives, don't worry too much

12:41.980 --> 12:42.700
about this, okay?

12:42.730 --> 12:48.910
This is just a hardware issue with this sensor and the way it's connected and the noise around this

12:48.910 --> 12:50.800
is something you can fix in the future.

12:50.800 --> 12:54.340
But for now, we're going to say that this is good enough for our project.

12:54.370 --> 12:54.790
All right.

12:54.790 --> 12:57.820
And now what I'm going to add one more thing to this step.

12:57.820 --> 13:02.710
Because here well if the motion has been detected for more than five seconds we take a photo.

13:02.710 --> 13:09.310
But I also want to limit this, to say that we only take a photo every 30s minimum.

13:09.310 --> 13:15.360
So you can only take a photo if the last time you took a photo was at least 30s ago.

13:15.360 --> 13:18.930
So we take maximum two photos per minute, okay?

13:18.960 --> 13:21.990
Otherwise, this could take a lot of photos.

13:21.990 --> 13:26.310
And you don't want to take too many because, well, it's going to take a lot of space on your Raspberry

13:26.310 --> 13:26.730
Pi.

13:26.760 --> 13:28.800
It's going to send a lot of emails, etc..

13:28.800 --> 13:30.900
So we want to be sure to control that.

13:30.900 --> 13:36.810
And here, well, quite arbitrarily, I have decided that we're going to wait at least 30s between two

13:36.840 --> 13:37.410
photos.

13:37.410 --> 13:38.850
So how can I do that?

13:38.880 --> 13:40.860
Well, I'm going to create a new variable here.

13:41.010 --> 13:48.330
I'm going to call it last time photo taken, and I'm going to initialize it to.

13:48.360 --> 13:50.730
So this one I'm going to initialize it to zero.

13:50.760 --> 13:51.210
Why.

13:51.240 --> 13:56.370
Because for the first time when we run the program, I don't want to wait 30s before taking a photo,

13:56.400 --> 14:00.690
I want to take a photo as soon as it's ready and then wait 30s after that.

14:00.690 --> 14:03.390
So I have my variable last time photo taken.

14:03.390 --> 14:10.710
And here, if we have detected that the duration of the motion was more than five seconds inside this,

14:10.740 --> 14:11.910
if I'm going to do another.

14:11.910 --> 14:14.150
If I'm going to do time dot time.

14:14.150 --> 14:21.320
So that's the current time minus last time photo taken.

14:21.410 --> 14:27.080
If this is greater than 30s then I will take a photo.

14:27.350 --> 14:31.160
So I just add the tab here.

14:32.210 --> 14:39.290
And also I need to say last time photo taken is the current time.

14:40.820 --> 14:44.030
Okay, so this is a quite common behavior here.

14:44.030 --> 14:48.890
When you want to limit an action with a minimum duration between two actions.

14:48.890 --> 14:54.170
So when you want to do the action, you check that you have spent at least x amount of time between

14:54.170 --> 14:55.730
the last time and now.

14:55.730 --> 15:01.310
And if yes, then you store the current time as the last time and then you do the action.

15:01.340 --> 15:01.730
All right.

15:01.760 --> 15:08.090
So let's save that and let's test I'm going to run it again okay.

15:08.090 --> 15:10.220
So let's start.

15:10.250 --> 15:13.960
You see starting timer I'm going to do it for at least five seconds.

15:14.080 --> 15:15.370
I stop.

15:17.230 --> 15:17.590
Okay.

15:17.620 --> 15:19.780
And you see, for example, here I have an error.

15:19.780 --> 15:21.400
So let's go back to the program.

15:21.850 --> 15:25.960
You see with Python is that the program can start correctly and then you might have an error because

15:25.960 --> 15:29.620
of some code that is run later.

15:30.190 --> 15:33.520
And I probably made a typo here last time.

15:33.520 --> 15:34.720
Photo taken.

15:35.410 --> 15:35.680
Yes.

15:35.710 --> 15:37.030
Actually, it's not even a typo.

15:37.030 --> 15:42.910
It's just that, you see, I'm using that global variable and I didn't write global, so I'm going to

15:42.910 --> 15:46.900
write global with last time photo taken.

15:46.900 --> 15:48.550
Then I can use the global variable.

15:48.550 --> 15:50.050
So let's save.

15:51.010 --> 15:51.580
Let's run.

15:51.580 --> 15:54.880
And you can see here cannot access variable okay.

15:55.210 --> 15:57.580
Because it was a global one.

15:57.580 --> 16:01.630
So control C let's run again okay.

16:01.630 --> 16:06.010
And let's do a movement for five seconds.

16:08.830 --> 16:09.190
All right.

16:09.190 --> 16:11.080
So you see taking a photo and sending it by email.

16:11.080 --> 16:14.860
But now I'm doing another movement for at least five seconds.

16:14.890 --> 16:15.700
Okay.

16:17.650 --> 16:21.670
And you see, it's 6.5 seconds, but we don't take a photo.

16:21.730 --> 16:22.360
Okay.

16:22.990 --> 16:25.930
So I'm going to wait a few more seconds.

16:26.860 --> 16:27.100
Okay.

16:27.130 --> 16:30.040
And now I'm going to try again for more than five seconds.

16:30.040 --> 16:32.680
And it has been at least 30s.

16:32.980 --> 16:34.030
And.

16:36.160 --> 16:36.430
Okay.

16:36.460 --> 16:37.990
You can see 6.4 seconds.

16:37.990 --> 16:40.960
We take a photo and sending by email.

16:41.080 --> 16:42.940
So here we have two mechanisms.

16:42.940 --> 16:46.090
We make sure that the motion duration is at least five seconds.

16:46.090 --> 16:50.080
And we make sure that the last time we took a photo was at least 30s ago.

16:50.110 --> 16:50.470
Great.

16:50.470 --> 16:55.300
So this part of the program, this first step, this logic, was maybe the more complicated stuff we

16:55.300 --> 16:57.820
do in this project in terms of Python logic.

16:57.820 --> 17:02.890
But as you will see later, it's important that we do this first, because if we start to take photos

17:02.890 --> 17:07.900
and send them by email and we don't have that ready and correctly working, then let's say the program

17:07.900 --> 17:12.940
is taking 1000 photos in a few seconds and sending that by email.

17:12.940 --> 17:14.440
Well, you don't really want that.

17:14.470 --> 17:14.650
Okay.

17:14.680 --> 17:16.830
So we want to make sure that this is working.

17:16.830 --> 17:21.720
And then we can add the functionality to take the photo to send emails, etc..

17:21.720 --> 17:23.250
And to quickly recap here.

17:23.250 --> 17:25.800
So we initialize some global variables.

17:25.800 --> 17:27.030
We initialize the Gpio.

17:27.210 --> 17:32.070
And then we have the two callbacks for the Pir sensor when the motion is detected.

17:32.070 --> 17:34.890
So with the one motion we start the timer.

17:34.890 --> 17:39.150
And then when the motion is not detected anymore we stop the.

17:39.180 --> 17:44.580
We don't restart the timer, but we compute the duration between the current time and the last time

17:44.580 --> 17:45.870
when we started the timer.

17:45.900 --> 17:52.500
If this is more than five seconds, we check that we haven't taken a photo in the last 30s if that's

17:52.500 --> 17:57.090
okay, then we store the current time as the last time we took a photo and we take a photo.

17:57.120 --> 17:58.950
One last thing to improve.

17:58.950 --> 18:03.420
That is, instead of hardcoding the values here, I'm going to create some variables here.

18:03.420 --> 18:06.870
And I'm going to name for example movement.

18:09.120 --> 18:13.260
Detected threshold.

18:13.380 --> 18:16.670
And note here that I am using all uppercase.

18:16.670 --> 18:17.630
So why is that.

18:17.630 --> 18:18.440
Because.

18:18.530 --> 18:24.500
So I'm going to put five because well we want to consider this as kind of a constant variable that we

18:24.500 --> 18:26.780
want to modify later on okay.

18:26.810 --> 18:29.930
So in Python you don't really have constant variables.

18:29.930 --> 18:36.500
So usually what I do is I put it all uppercase meaning that when I see this I try not to modify it later

18:36.500 --> 18:37.400
in the program.

18:37.400 --> 18:41.780
And the only way to modify is to just modify when you initialize it.

18:41.810 --> 18:42.380
Okay.

18:42.740 --> 18:54.110
So movement detected threshold and mean duration between photos 30s.

18:55.040 --> 18:55.370
All right.

18:55.370 --> 18:58.580
So let's take that and let's replace it here.

19:00.110 --> 19:04.160
And then let's take that one and replace there.

19:06.200 --> 19:06.620
Okay.

19:06.620 --> 19:10.940
And with this you can see it's even more clear okay what's happening in the code.

19:10.970 --> 19:15.080
And then you can modify the variables directly here at the beginning of the program.

19:15.110 --> 19:15.500
All right.

19:15.530 --> 19:17.570
And that's going to be it for the first step.
