pxt-calliope/docs/lessons/seismograph/challenge.md

139 lines
5.1 KiB
Markdown
Raw Normal View History

2016-05-12 00:21:11 +02:00
# Seismograph Challenge
2016-04-29 01:49:57 +02:00
2016-05-12 00:21:11 +02:00
Coding challenges for the seismograph.
2016-05-11 23:52:25 +02:00
2016-05-12 00:28:14 +02:00
### ~avatar avatar
2016-05-12 00:31:51 +02:00
Engineering: In this project, you will build a remote control based on the seismograph micro:bit activity using a second micro:bit and micro USB cable.
2016-05-12 00:28:14 +02:00
### ~
## What you'll need:
2016-05-12 00:35:24 +02:00
* BBC micro:bits (2)
* micro USB cables (2)
2016-05-12 00:28:14 +02:00
* Plate
* Tape
* Scissors
![](/static/mb/lessons/seis_challenge01.png)
2016-05-11 23:52:25 +02:00
## Before we get started
Complete the [seismograph](/lessons/seismograph/activity) activity and your code will look like this:
```blocks
basic.forever(() => {
led.plotBarGraph(input.acceleration(Dimension.Strength) - 1023, 0);
});
```
2016-04-29 01:49:57 +02:00
### ~avatar avatar
2016-05-11 23:52:25 +02:00
Computer Science: Welcome! The activity will teach you how to code the acceleration of the 1st micro:bit and to visualize the acceleration on the 2nd micro:bit. Let's get started!
2016-05-12 00:01:44 +02:00
### ~
2016-05-11 23:52:25 +02:00
# Computer Science Steps
## 1.
2016-05-12 00:01:44 +02:00
We want to simply detach the blocks from the recent activity. We will use blocks from the activity to create a brand new program to show the way micro:bit devices communicate through the BLE (Bluetooth low energy) radio.
2016-05-11 23:52:25 +02:00
```shuffle
basic.forever(() => {
led.plotBarGraph(input.acceleration(Dimension.Strength) - 1023, 0);
});
```
## 2.
2016-04-29 01:49:57 +02:00
Let's measure `acceleration (mg)` and then `send number`. `Acceleration` is measured in **milli-gravities**, so a value of -1000 is equivalent to -1g or -9.81m/s^2. We will be able to get the acceleration value (g-force), in the specified "x" dimension. `Send number` will broadcast a number data packet to other micro:bits connected via radio.
2016-05-12 00:10:07 +02:00
We need add send number block found in the Radio drawer. We will attach send number to acceleration and subtract the gravity from acceleration strength.
2016-05-11 23:52:25 +02:00
Your finished code will look like this:
2016-04-29 01:49:57 +02:00
```blocks
2016-05-12 00:10:07 +02:00
radio.sendNumber(input.acceleration(Dimension.Strength) - 1023);
2016-04-29 01:49:57 +02:00
```
2016-05-11 23:52:25 +02:00
## 3.
We want to display the acceleration forever. In order to do so, we need a `forever` loop. A forever loop will repeat code in the background forever. We need attach forever loop to send number.
Your finished code will look like this:
2016-04-29 01:49:57 +02:00
```blocks
basic.forever(() => {
2016-05-12 00:19:05 +02:00
radio.sendNumber(input.acceleration(Dimension.Strength) - 1023);
2016-04-29 01:49:57 +02:00
});
2016-05-12 00:19:05 +02:00
2016-04-29 01:49:57 +02:00
```
2016-05-12 00:01:44 +02:00
2016-05-11 23:52:25 +02:00
## 4.
2016-05-12 00:01:44 +02:00
We want to register code to run when a packet is received over radio. We can implement this code by adding `on data received`block found in the radio drawer.
Your finished code will look like this:
2016-04-29 01:49:57 +02:00
```blocks
basic.forever(() => {
2016-05-12 00:19:05 +02:00
radio.sendNumber(input.acceleration(Dimension.Strength) - 1023);
});
2016-04-29 01:49:57 +02:00
radio.onDataReceived(() => {
2016-05-12 00:19:05 +02:00
});
2016-04-29 01:49:57 +02:00
```
2016-05-11 23:52:25 +02:00
2016-05-12 00:01:44 +02:00
## 5.
2016-04-29 01:49:57 +02:00
Finally, we want to chart the acceleration. So we must first implement `plot bar graph`. `Plot Bar Graph` will display a vertical bar graph based on the value and high value. In order to transfer the receive the number from the 1st micro:bit, we must implement `receive number` to constantly display a vertical bar graph based on the value. Remember, the value will equal to the micro:bit's acceleration in the "x" direction.
2016-05-12 00:01:44 +02:00
Your finished code will look like this:
2016-04-29 01:49:57 +02:00
```blocks
basic.forever(() => {
2016-05-12 00:19:05 +02:00
radio.sendNumber(input.acceleration(Dimension.Strength) - 1023);
});
2016-04-29 01:49:57 +02:00
radio.onDataReceived(() => {
2016-05-12 00:19:05 +02:00
led.plotBarGraph(radio.receiveNumber(), 0);
});
2016-04-29 01:49:57 +02:00
```
2016-05-11 23:52:25 +02:00
2016-05-12 00:01:44 +02:00
### ~avatar avatar
Science: Welcome! The activity will teach you how to chart the acceleration of the 1st micro:bit and to visualize the acceleration on the 2nd micro:bit. Let's get started!
### ~
2016-05-12 00:53:47 +02:00
# Science Steps
2016-05-12 00:01:44 +02:00
2016-05-11 23:52:25 +02:00
## 6.
2016-05-12 00:59:19 +02:00
First, notice that moving the 1st micro:bit in the simulator in any direction, you will change the acceleration value of the 2nd micro:bit. Also, notice that by moving the micro:bit simulator, there is a changing acceleration value of the second micro:bit. Second, the flat colored horizontal line will start a waving line on the 2nd micro:bit to display the value of the strength as measured in milli-gravities. Finally, notice that the LED display will fluctate based on the movement of the 2nd micro:bit simulator.
2016-05-12 00:53:47 +02:00
![](/static/mb//lessons/seis_challenge02.png)
2016-04-29 01:49:57 +02:00
2016-05-12 18:41:54 +02:00
## 7.
2016-04-29 01:49:57 +02:00
2016-05-12 01:35:13 +02:00
Connect the 2nd micro:bit to your computer using your USB cable. We should have two micro:bit devices attached to the computer.
![](/static/mb/lessons/seismograph33.png)
2016-05-12 18:41:54 +02:00
## 8.
2016-04-29 01:49:57 +02:00
2016-05-12 18:41:54 +02:00
Click or tap the compile button for the seismograph program to run the program on the 1st micro:bit and 2nd micro:bit.
2016-04-29 01:49:57 +02:00
2016-05-12 18:41:54 +02:00
## 9.
2016-04-29 01:49:57 +02:00
2016-05-12 18:41:54 +02:00
The black lines should appear directly beneath the colored lines. The black lines measure the micro:bit acceleration. And the colored lines measures micro:bit simulator acceleration.
2016-04-29 01:49:57 +02:00
2016-05-12 18:41:54 +02:00
![](/static/mb/lessons/seis_challenge05.png)
2016-04-29 01:49:57 +02:00
2016-05-12 18:41:54 +02:00
Run the acceleration experiment by vigarously moving the plate in any direction or move the object below the micro:bit (such as a table).
2016-04-29 01:49:57 +02:00
2016-05-12 18:41:54 +02:00
Every time the micro:bit moves in any direction, you generate data points that can be reviewed in Excel later. The more attempts to move the micro:bit, the more data to be reviewed in Excel.
2016-04-29 01:49:57 +02:00
2016-05-12 18:41:54 +02:00
![](/static/mb/lessons/seis_challenge04.png)
2016-04-29 01:49:57 +02:00
### ~
2016-05-12 18:41:54 +02:00
* Have fun reviewing your seismograph data and analyzing the acceleration with Excel.
* The first person and second person take shaking or moving the micor:bit in any direction while the other player charts the data on the micro:bit!
2016-04-29 01:49:57 +02:00
* Review and analyze the actual micro:bit device acceleration data on Excel
2016-05-12 18:41:54 +02:00
2016-04-29 01:49:57 +02:00