2016-06-14 17:12:13 +02:00
|
|
|
# compass
|
2016-06-12 03:12:08 +02:00
|
|
|
|
2016-06-12 01:43:54 +02:00
|
|
|
![](/static/mb/projects/a5-compass.png)
|
|
|
|
|
2016-06-12 03:12:08 +02:00
|
|
|
Display the direction that the micro:bit is facing using the compass
|
|
|
|
|
|
|
|
### ~avatar avatar
|
|
|
|
|
|
|
|
Welcome! This guided tutorial will show you how to program a script that displays the direction the micro:bit is pointing. Let's get started!
|
|
|
|
|
|
|
|
### ~
|
|
|
|
|
2016-06-12 01:43:54 +02:00
|
|
|
|
|
|
|
## Step 1
|
|
|
|
|
2016-06-12 03:12:08 +02:00
|
|
|
Create a loop that will continuously update the reading of the compass.
|
|
|
|
|
2016-06-12 01:43:54 +02:00
|
|
|
|
|
|
|
```blocks
|
|
|
|
basic.forever(() => {
|
2016-06-12 03:12:08 +02:00
|
|
|
|
|
|
|
})
|
2016-06-12 01:43:54 +02:00
|
|
|
```
|
|
|
|
|
|
|
|
## Step 2
|
|
|
|
|
2016-06-12 03:12:08 +02:00
|
|
|
Store the reading of the micro:bit in a variable called `degrees`.
|
2016-06-12 01:43:54 +02:00
|
|
|
|
|
|
|
```blocks
|
|
|
|
basic.forever(() => {
|
2016-06-12 03:12:08 +02:00
|
|
|
let degrees = input.compassHeading()
|
|
|
|
})
|
|
|
|
```
|
|
|
|
|
|
|
|
## Step 3
|
|
|
|
|
|
|
|
If `degrees` is less than `45`, then the compass heading is mostly pointing toward North. Display `N` on the micro:bit.
|
|
|
|
|
|
|
|
```blocks
|
|
|
|
basic.forever(() => {
|
|
|
|
let degrees = input.compassHeading();
|
|
|
|
if (degrees < 45) {
|
2016-06-12 01:43:54 +02:00
|
|
|
basic.showString("N");
|
2016-06-12 03:12:08 +02:00
|
|
|
}
|
2016-06-12 01:43:54 +02:00
|
|
|
});
|
|
|
|
```
|
|
|
|
|
2016-06-12 03:12:08 +02:00
|
|
|
## Step 4
|
|
|
|
|
|
|
|
If `degrees` is less than 135, the micro:bit is mostly pointing East. Display `E` on the micro:bit.
|
2016-06-12 01:43:54 +02:00
|
|
|
|
|
|
|
|
|
|
|
```blocks
|
|
|
|
basic.forever(() => {
|
2016-06-12 03:12:08 +02:00
|
|
|
let degrees = input.compassHeading();
|
|
|
|
if (degrees < 45) {
|
2016-06-12 01:43:54 +02:00
|
|
|
basic.showString("N");
|
2016-06-12 03:12:08 +02:00
|
|
|
}
|
|
|
|
else if (degrees < 135) {
|
2016-06-12 01:43:54 +02:00
|
|
|
basic.showString("E");
|
2016-06-12 03:12:08 +02:00
|
|
|
}
|
2016-06-12 01:43:54 +02:00
|
|
|
});
|
|
|
|
```
|
|
|
|
|
2016-06-12 03:12:08 +02:00
|
|
|
## Step 5
|
|
|
|
|
|
|
|
If `degrees` is less than 225, the micro:bit is mostly pointing South. Display `S` on the micro:bit.
|
2016-06-12 01:43:54 +02:00
|
|
|
|
|
|
|
|
|
|
|
```blocks
|
|
|
|
basic.forever(() => {
|
2016-06-12 03:12:08 +02:00
|
|
|
let degrees = input.compassHeading();
|
|
|
|
if (degrees < 45) {
|
2016-06-12 01:43:54 +02:00
|
|
|
basic.showString("N");
|
2016-06-12 03:12:08 +02:00
|
|
|
}
|
|
|
|
else if (degrees < 135) {
|
2016-06-12 01:43:54 +02:00
|
|
|
basic.showString("E");
|
2016-06-12 03:12:08 +02:00
|
|
|
}
|
|
|
|
else if (degrees < 225) {
|
2016-06-12 01:43:54 +02:00
|
|
|
basic.showString("S");
|
|
|
|
}
|
|
|
|
});
|
|
|
|
```
|
|
|
|
|
2016-06-12 03:12:08 +02:00
|
|
|
## Step 6
|
2016-06-12 01:43:54 +02:00
|
|
|
|
2016-06-12 03:12:08 +02:00
|
|
|
If none of these conditions returned true, then the micro:bit must be pointing West. Display `W` on the micro:bit.
|
2016-06-12 01:43:54 +02:00
|
|
|
|
|
|
|
```blocks
|
|
|
|
basic.forever(() => {
|
2016-06-12 03:12:08 +02:00
|
|
|
let degrees = input.compassHeading();
|
|
|
|
if (degrees < 45) {
|
2016-06-12 01:43:54 +02:00
|
|
|
basic.showString("N");
|
2016-06-12 03:12:08 +02:00
|
|
|
}
|
|
|
|
else if (degrees < 135) {
|
2016-06-12 01:43:54 +02:00
|
|
|
basic.showString("E");
|
2016-06-12 03:12:08 +02:00
|
|
|
}
|
|
|
|
else if (degrees < 225) {
|
2016-06-12 01:43:54 +02:00
|
|
|
basic.showString("S");
|
2016-06-12 03:12:08 +02:00
|
|
|
}
|
|
|
|
else {
|
2016-06-12 01:43:54 +02:00
|
|
|
basic.showString("W");
|
|
|
|
}
|
|
|
|
});
|
2016-06-12 03:12:08 +02:00
|
|
|
```
|
|
|
|
|
|
|
|
### ~avatar avatar
|
|
|
|
|
|
|
|
Excellent, you're ready to continue with the [challenges](/lessons/compass/challenges)!
|
|
|
|
|
|
|
|
### ~
|
|
|
|
|