lesson 18 - acer for education magazine3 lesson 18: room alarm ode recap (lockly) let [s explore...

9
1 Lesson 18: Room Alarm What you will need CloudProfessor (CPF) PIR (Moon) sensor Servo Arduino Leonardo Arduino Shield USB cable Learning Expectaons (how learning / progress will be demonstrated) All Use sequences of instrucons. Most Explain how their app works. Some Use logical reasoning to detect errors in their algorithms. Learning Objecves Design and create an app which uses sequence, selecon, repeon and variables. Program, debug and refine the code for their app. Understand and use selecon in an algorithm (IF, Else and Else if) Overview In this lesson, students explore automated systems such as automac doors and lighng. Using a PIR sensor and a servo, students will write a program to simulate an automac door. Curriculum Links (Compung PoS) Designs simple algorithms using loops, and selecon i.e. if statements. (AL) Uses logical reasoning to predict outcomes. (AL) Detects and corrects errors i.e. debugging, in algorithms. (AL) Creates programs that implement algorithms to achieve given goals. (AL) Understands that programming bridges the gap between algorithmic soluons and computers. (AB) Computaonal Thinking Concepts: AB = Abstracon; DE = Decomposion; AL = Algorithmic Thinking; EV = Evaluaon; GE = Generalisaon. Lesson 18 Automac door 1

Upload: others

Post on 12-Jul-2020

5 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Lesson 18 - Acer for Education Magazine3 Lesson 18: Room Alarm ode recap (lockly) Let [s explore some of the code used in the previous lessons. 1. PIR Motion Sensor Get Value: The

1 Lesson 18: Room Alarm

What you will need

• CloudProfessor (CPF)

• PIR (Motion) sensor

• Servo

• Arduino Leonardo

• Arduino Shield

• USB cable

Learning Expectations (how learning / progress will be demonstrated)

All Use sequences of instructions.

Most Explain how their app works.

Some Use logical reasoning to detect errors in their algorithms.

Learning Objectives

Design and create an app which uses sequence, selection, repetition and variables.

Program, debug and refine the code for their app.

Understand and use selection in an algorithm (IF, Else and Else if)

Overview

In this lesson, students explore automated systems such as automatic doors and lighting. Using a PIR sensor and a servo,

students will write a program to simulate an automatic door.

Curriculum Links (Computing PoS)

Designs simple algorithms using loops, and selection i.e. if statements. (AL)

Uses logical reasoning to predict outcomes. (AL) Detects and corrects errors i.e. debugging, in algorithms. (AL)

Creates programs that implement algorithms to achieve given goals. (AL)

Understands that programming bridges the gap between algorithmic solutions and computers. (AB)

Computational Thinking Concepts: AB = Abstraction; DE = Decomposition; AL = Algorithmic Thinking; EV = Evaluation;

GE = Generalisation.

Lesson 18 Automatic door

1

Page 2: Lesson 18 - Acer for Education Magazine3 Lesson 18: Room Alarm ode recap (lockly) Let [s explore some of the code used in the previous lessons. 1. PIR Motion Sensor Get Value: The

2 Lesson 18: Room Alarm

1. Connect the power of CloudProfessor then press and hold the power button for two seconds; it will turn on and the

power indicator will light up.

2. Insert the Android Shield into Arduino Leonardo and use the USB cable to connect the CloudProfessor with Arduino

Leonardo. Attach the PIR (motion) sensor to port D6 and the servo to port D4.

3. When the CloudProfessor detects the Arduino Leonardo, a notification will appear on your device; click the

notification to launch the Arduino Leonardo APP, and select the CPF Arduino Blockly app. Click on Lesson 9.

4. Press the execute button to enter the control user interface (UI).

5. Press the edit button to enter the program editing page.

Step-by-step instructions (Blockly) 2

1

2

3

Edit button

Execute button

CPF Arduino app Control user interface (UI) Program editing page

Page 3: Lesson 18 - Acer for Education Magazine3 Lesson 18: Room Alarm ode recap (lockly) Let [s explore some of the code used in the previous lessons. 1. PIR Motion Sensor Get Value: The

3 Lesson 18: Room Alarm

Code recap (Blockly)

Let’s explore some of the code used in the previous lessons.

1. PIR Motion Sensor Get Value:

The PIR Motion Sensor Get Value block returns the status of the

PIR motion sensor (Returns a numeric value of ‘0’ if no motion

detected and a ‘1’ if triggered).

2. Servo Pin# D4:

The Servo block allows the user to control the attached

servo by specifying the angle (degrees) and delay (milliseconds).

3. If / else:

The if / else block is used to conditionally run code

depending on whether a Boolean condition is true or

false.

In this example, if the light sensor value is less than (<)

500, the RGB LED light will light up; or else (else), if the

light sensor value is greater than or equal to 500, the

RGB LED light will automatically turn off.

4. Title Name Panel Set:

The Title Name Panel Set block displays a message on the screen. In this

example it will display a “Downloading…” message on the UI (User Interface).

5. Delay Time(Sec.):

The Delay Time(Sec.) block is used to pause the code (time set in milliseconds). In the example above, the

program is paused for 1000 milliseconds (1 second).

6. Set CPF control request:

Finally, the Set CPF control request block at the end of the program tells the program to run the code from the

beginning again. The program will continuously repeat until the user closes the app or stops the program manually.

3

Page 4: Lesson 18 - Acer for Education Magazine3 Lesson 18: Room Alarm ode recap (lockly) Let [s explore some of the code used in the previous lessons. 1. PIR Motion Sensor Get Value: The

4 Lesson 18: Room Alarm

Step-by-step instructions (Blockly) - Part 1

Let’s write the code for our automatic door.

1. Clear the existing code so that you have a blank canvas to create your new program. Click on the bin icon (1). Click

on ‘OK’ (2) to create a blank canvas.

2. Note: You can return to the original program at any time by clicking on

the restore icon (3).

3. First, let’s give our app a title.

Click on ‘CPF UI’. Drag the ‘Title Name Panel Set’ block onto the empty

canvas. Call your app ‘CPF Door’.

4. Next, we need to check the status of button d5 in the user interface (UI). We will use this button to turn on and off

your Theremin.

a) Click on the ‘Variables’ tab. Drag the ‘Set item

to’ block and attach it to the Title block. Rename

the new variable to ‘d6’ (4).

b) Click on the ‘CPF UI’ tab. Select and drag the ‘Get

control panel value’ block and attach it to ‘d6’. From

the drop down menu, select ‘d6’ (5).

5. Next, let’s display the status of the PIR sensor on the user interface (UI).

a) Click on the ‘CPF UI’ tab. Select and drag the

’Set control panel value’ block and attach it to the end of

your code. From the drop down menu, select port ’D6’ (6).

b) Click on the ‘Variables’ tab. Select ‘d6’ and place it

inside the Set control panel value block (7).

4

3 1 2

5

4

7

6

Page 5: Lesson 18 - Acer for Education Magazine3 Lesson 18: Room Alarm ode recap (lockly) Let [s explore some of the code used in the previous lessons. 1. PIR Motion Sensor Get Value: The

5 Lesson 18: Room Alarm

Step-by-step instructions (Blockly) - Part 2

6. Next, we need to write the condition which checks to see if the PIR has detected movement (PIR = 1). For this, we

will use an IF statement.

a). Click on the ’Logic’ tab. Drag the ‘if do’ block and

attach it to the end of your code (8).

b). Click on the ‘logic’ tab. Drag the ‘=‘ block and attach

it to your ‘if’ block (9).

c). Click on the ‘CPF Devices’ tab. Select and drag the

‘Light Get Value’ block onto the first slot in your logic

block (10).

d). Click on the ‘Math’ tab. Drag the ‘0’ block onto the

second slot in your logic block. Change this value to a

’1’ (11).

7. Next, we need to rotate the servo 180 degrees when movement is detected else return the servo back to the

starting position (0 degrees) when no movement is detected.

a) Click on ‘Output Devices’. Select ‘Motors’ and drag the ‘Servo Pin# D4’

block and attach it to your code.

b) Change the number of degrees to ‘180’ and the delay to ‘20’ ms (12).

c) Click the cog inside your if block. Drag an ‘else’ block inside the pop-up

window (13).

d) Click on ‘Output Devices’. Select ‘Motors’ and drag the ‘Servo Pin# D4’ block inside the else statement.

b) Change the number of degrees to ‘0’ and the delay to ‘20’ ms (14).

8. Finally, we want the program to run continuously until the

user ends the program.

Select the ‘CPF Devices’ tab. Click and drag the ‘Set CPF

control repeat block and attach

it to the end of your code.

4

Try changing the delay and/or angle to see how it affects the servo.

Your finished code should look like this.

8 9

10

11

12

13

14

Page 6: Lesson 18 - Acer for Education Magazine3 Lesson 18: Room Alarm ode recap (lockly) Let [s explore some of the code used in the previous lessons. 1. PIR Motion Sensor Get Value: The

6 Lesson 18: Room Alarm

1. Connect the power of CloudProfessor then press and hold the power button for two seconds; it will turn on and the

power indicator will light up.

2. Insert the Android Shield into Arduino Leonardo and use the USB cable to connect the CloudProfessor with Arduino

Leonardo. Attach the PIR (motion) sensor to port D6 and the servo to port D4.

3. When the CloudProfessor detects the Arduino Leonardo, a notification will appear on your device; click the

notification to launch the Arduino Leonardo APP, and select the CPF Arduino app. Click on Socket Mode.

4. Press the execute button to enter the control user interface (UI).

5. Press the edit button to enter the program editing page.

Step-by-step instructions 2

1

2

3

CPF Arduino app

Edit button

Execute button

Control user interface (UI) Program editing page

Page 7: Lesson 18 - Acer for Education Magazine3 Lesson 18: Room Alarm ode recap (lockly) Let [s explore some of the code used in the previous lessons. 1. PIR Motion Sensor Get Value: The

7 Lesson 18: Room Alarm

Code recap (JavaScript)

Let’s explore some of the code used in the previous lessons.

1. cpf.get(“light sensor”);

The cpf.get(“light sensor”); statement returns the value of the light

sensor . (Returns a numeric value based on the brightness level of the

environment) and stores it in a variable called value. ui.set(“light sensor”,

value); reads the value taken from the light sensor and displays it in the

program control Interface (UI).

2. cpf.set(“rgb led”, 0, 0, 0);

The cpf.set(“rgb led”, r, g, b); statement sets the colour of the attached RGB LED.

3. If / else:

The if / else statement is used to conditionally run code

depending on whether a Boolean condition is true or false.

In this example from lesson 1, if the light sensor value is less than (<) 500, the

RGB LED light will light up (based on the values taken from the UI); or else

(else), if the light sensor value is greater than (>) 500, the RGB LED light will

automatically turn off: cpf.set(“rgb led”, 0, 0, 0);

4. Math.random()

Through Math.random(), a random number between 0 and 0.999999 is generated. If we want to generate a whole

number in a range such as 1—255 we first need to multiply the result of the random function by 255 and then

round the result to produce a whole number e.g.,

5. cpf.sleep(1000);

The cpf.sleep(1000); statement is used to pause the code (time set in milliseconds). In the example above, the

program is paused for 1000 milliseconds (1 second).

6. Set CPF control request:

Finally, the cpf.repeat(); statement, usually found at the end of the program, tells the program to run the code from

the beginning again. The program will continuously repeat until the user closes the app or stops the program

manually.

3

Page 8: Lesson 18 - Acer for Education Magazine3 Lesson 18: Room Alarm ode recap (lockly) Let [s explore some of the code used in the previous lessons. 1. PIR Motion Sensor Get Value: The

8 Lesson 18: Room Alarm

Step-by-step instructions (JavaScript)

Let’s write the code for our automatic doors.

1. Clear the existing code so that you have a blank canvas to create your new program. Press and hold on a selection

of code and click on ’Select all’ (1). Click on ‘Cut’ (2) to create a blank canvas (3).

Note: You can return to the original

program at any time by clicking on

the restore icon in the Save/load

menu.

2. First, let’s give our new script a name. Click on line 1 and type in the following: //Servo

3. Next, we need to read the status of the PIR motion sensor and display the current status on the user interface (UI).

Click on line 3 and type in the following:

//Control PIR

var d6 = cpf.get(“socket d6”);

ui.set(“socket d6”, d6);

4. Next, we need to write the condition which checks to see if the PIR has detected movement (PIR = 1). For this, we

will use an IF statement. Click on line 7 and type in the following (making sure you leave a blank line on line 8):

if(d6 == 1) {

}

5. Next, we need to rotate the servo 180 degrees when movement is detected else return the servo back to the

starting position (0 degrees) when no movement is detected. The syntax for moving the servo is

cpf.set(socket, angle, delay). Click on line 8 and type in the following:

cpf.set(“socket d4”, 180, 20);

} else {

cpf.set(“socket d4”, 0, 20);

6. Finally, we want the program to run until the user ends

the program. Click on line 24 and type the following:

cpf.repeat();

7. Run your code.

4

Try changing the delay and/or angle to see how it affects the servo.

Try swapping the PIR sensor for a button.

1

3

2

Your finished code should look like this.

Page 9: Lesson 18 - Acer for Education Magazine3 Lesson 18: Room Alarm ode recap (lockly) Let [s explore some of the code used in the previous lessons. 1. PIR Motion Sensor Get Value: The

9 Lesson 18: Room Alarm

Extension

Students can connect a buzzer to port D5 or RGB LED to port D7 and program the CloudProfessor to warn when the door is

opening (see lesson 16).

Students could also attach a sound sensor to port A2 and operate the door with voice commands. Hint:

var a2 = cpf.get("socket a2");

if(d5 == 1) {

Differentiation

To support students, provide step by step guides.

To stretch students ask them to create a flowchart / pseudocode of their code first or code their solution using JavaScript.

Homework

Students to write up a summary of what they’ve learned; students to include screenshots and snippets of their code in

their summary.

Students to explore how automatic doors work and explain the benefits / drawbacks of automated systems.

Links

How PIRs work: https://learn.adafruit.com/pir-passive-infrared-proximity-motion-sensor/how-pirs-work

How automatic doors work: https://www.scienceabc.com/innovation/automatic-sliding-doors-working-motion-detector

-pressure-sensor-infrared.html

Disclaimer: Use these sites at your own risk. Acer is not responsible for the content of external Internet sites. We

recommend that you check the suitability of any recommended websites links before giving them to students.

5

6

7

8