Compare commits
199 Commits
Author | SHA1 | Date | |
---|---|---|---|
d74702353f | |||
53922986b1 | |||
230de475d1 | |||
9b1d2085ba | |||
246d81ffd5 | |||
3b2729d9d8 | |||
571ae8337f | |||
cc2d18b969 | |||
fd02bd9407 | |||
6429b57081 | |||
5650f7dc35 | |||
a9cfe83bdf | |||
f9409b5fb5 | |||
7f9f14df18 | |||
a383060b4d | |||
04c8221b41 | |||
facea7d27d | |||
cfe65569ad | |||
7a0ad8e3ed | |||
4fb10faec2 | |||
f3463b5961 | |||
f39703e6f7 | |||
74b333dee4 | |||
466bda468f | |||
f4afa773ad | |||
21280f41bc | |||
41c7053f3f | |||
1a00fded98 | |||
304ef89a1d | |||
433b2bb08d | |||
273e23095b | |||
8af6d640d3 | |||
5553fb93bb | |||
493f76eba7 | |||
91b90bf70e | |||
43adfa198f | |||
59f7d0b537 | |||
f3bfe3d94e | |||
ed54ace797 | |||
0648e80131 | |||
ce9a83ff28 | |||
54439bba4d | |||
23a581c899 | |||
3f8fa4b05b | |||
53ab8651bd | |||
87300be648 | |||
d0a7df7f36 | |||
1c8fa5eab6 | |||
d8c2d697b1 | |||
2ede815535 | |||
a67f16a860 | |||
819ab9aa9a | |||
318ffde27f | |||
525e59ae4f | |||
ab087b4afa | |||
3b8ae69a6c | |||
8de6605112 | |||
daea493dcb | |||
b290692334 | |||
f25f295d0c | |||
5fd691ef92 | |||
67c8753315 | |||
9d405afde0 | |||
b05c8ebd56 | |||
b69156a12e | |||
961e2cb6e9 | |||
924d31a211 | |||
8721b54679 | |||
e99292d008 | |||
cc1ed10efb | |||
b48c11d380 | |||
3f1602f2c0 | |||
324fd45fb6 | |||
d1a3892eab | |||
28d28eb67f | |||
a67164d5e6 | |||
86b35ae88d | |||
919c8fdfca | |||
4abdb28a59 | |||
21361708ec | |||
4e56342e52 | |||
7273354944 | |||
9c96591edd | |||
4f38658d74 | |||
6329a79ce1 | |||
befbdd32cc | |||
44688ee5d5 | |||
cc36bae97d | |||
c65bdb34af | |||
21f7ef9b55 | |||
d7250d54f8 | |||
9a36a2fc05 | |||
539357237f | |||
35d59da17e | |||
0b226bc9aa | |||
f2bab5d122 | |||
6e6a98559c | |||
217fce953d | |||
bfac2910da | |||
5962c28b0e | |||
d3509a6254 | |||
df91bf234c | |||
2a46935f62 | |||
5e024c6f23 | |||
28b3d823b2 | |||
b7c9bc7978 | |||
52b2ee3f4c | |||
263cc25633 | |||
2e3d875b7d | |||
7704ad9f8d | |||
845d7a004c | |||
1cf070d649 | |||
24420a2cc4 | |||
2f8b61998b | |||
af38071c6a | |||
89f09c7f35 | |||
a667467bbd | |||
ada2583e17 | |||
c04538313d | |||
1039dc560e | |||
957c7ad848 | |||
5e7351a481 | |||
f0c089373b | |||
879a85bdbb | |||
7a9c2e0fe4 | |||
9656c1159a | |||
801117d6b0 | |||
c084bff334 | |||
18bf35f179 | |||
7e7dc91947 | |||
da79f643dc | |||
ea10cde3eb | |||
0a60b0ee37 | |||
b4bc985068 | |||
78f9af5bc2 | |||
e9410d17a6 | |||
ca8ef260d5 | |||
5ea5e9bb5b | |||
19c689a8c4 | |||
72226cd4e5 | |||
0d3af60892 | |||
f88cda8244 | |||
f71925fdd2 | |||
bfeda371a9 | |||
eb09530391 | |||
346d1e77da | |||
bf384355c4 | |||
3801e52370 | |||
99574f1ec8 | |||
12705eed06 | |||
a62f2b00b4 | |||
7d0101af25 | |||
60c3f1f427 | |||
8552a2de52 | |||
b0d4fdb009 | |||
d3294ee99e | |||
00d23f8437 | |||
1c6c749dad | |||
2803c00814 | |||
f150d93070 | |||
7f284b2a57 | |||
0e5c30ec7c | |||
2cc6f864a8 | |||
d428a2cd1f | |||
47f9362e5f | |||
38b197bc03 | |||
9a404854e7 | |||
d17a8de72d | |||
9d1f2e024b | |||
e7d8559fe3 | |||
fcfdbcc7e4 | |||
5884231399 | |||
e8887f5904 | |||
07e8610e5d | |||
37fb907f04 | |||
13f42f5892 | |||
5fcf9165ea | |||
b33d0ba470 | |||
b9f66c5c6b | |||
9848409283 | |||
ce16e64660 | |||
4d056e0c23 | |||
70b2827cf0 | |||
62e4b04931 | |||
17e33cc34f | |||
d4ad150cba | |||
52bfd4e535 | |||
f854dfd9c8 | |||
d905f24f9c | |||
81b8b1b69c | |||
efce4c3698 | |||
b5e4a36e9c | |||
04a60a5b47 | |||
29b28e7f0d | |||
979381eaef | |||
e4370f4e3c | |||
ba707f080d | |||
3816e01f87 | |||
13ff7cd0ec |
4
.gitignore
vendored
4
.gitignore
vendored
@ -1,9 +1,11 @@
|
||||
node_modules
|
||||
yotta_modules
|
||||
yotta_targets
|
||||
built
|
||||
typings
|
||||
tmp
|
||||
temp
|
||||
projects
|
||||
projects/**
|
||||
win10/app/bin
|
||||
win10/app/bld
|
||||
win10/*.opendb
|
||||
|
@ -13,4 +13,5 @@ notifications:
|
||||
cache:
|
||||
directories:
|
||||
- node_modules
|
||||
- built/cache
|
||||
|
||||
|
5
.vscode/settings.json
vendored
Normal file
5
.vscode/settings.json
vendored
Normal file
@ -0,0 +1,5 @@
|
||||
// Place your settings in this file to overwrite default and user settings.
|
||||
{
|
||||
"tslint.enable": true,
|
||||
"tslint.rulesDirectory": "node_modules/tslint-microsoft-contrib"
|
||||
}
|
51
README.md
51
README.md
@ -1,26 +1,55 @@
|
||||
# micro:bit target for PXT
|
||||
|
||||
This target allow to program a [BBC micro:bit](https://www.microbit.co.uk/) using
|
||||
[Microsoft Programming Experience Toolkit](https://github.com/Microsoft/pxt).
|
||||
PXT ([Microsoft Programming Experience Toolkit](https://github.com/Microsoft/pxt)).
|
||||
|
||||
* [Try it live](https://m.pxt.io)
|
||||
|
||||
[](https://travis-ci.org/Microsoft/pxt-microbit)
|
||||
|
||||
# Getting started
|
||||
## Local server
|
||||
|
||||
Please follow instructions at https://github.com/Microsoft/pxt#running-a-target-from-localhost
|
||||
### Setup
|
||||
|
||||
The following commands are a 1-time setup after synching the repo on your machine.
|
||||
|
||||
* install the PXT command line
|
||||
```
|
||||
npm install -g pxt
|
||||
```
|
||||
* install the dependencies
|
||||
```
|
||||
npm install
|
||||
```
|
||||
|
||||
### Running
|
||||
|
||||
Run this command to open a local web server:
|
||||
```
|
||||
pxt serve
|
||||
```
|
||||
If the local server opens in the wrong browser, make sure to copy the URL containing the local token.
|
||||
Otherwise, the editor will not be able to load the projects.
|
||||
|
||||
If you need modify the `.cpp` files, turn on yotta compilation with the ``-yt`` flag:
|
||||
```
|
||||
pxt serve -yt
|
||||
```
|
||||
|
||||
To make sure you're running the latest tools, run
|
||||
```
|
||||
npm update
|
||||
```
|
||||
|
||||
|
||||
More instructions at https://github.com/Microsoft/pxt#running-a-target-from-localhost
|
||||
|
||||
## Universal Windows App
|
||||
|
||||
The Windows 10 app is a [Universal Windows Hosted Web App](https://microsoftedge.github.io/WebAppsDocs/en-US/win10/CreateHWA.htm)
|
||||
that wraps codemicrobit.com and provides additional features.
|
||||
|
||||
### Sideloading
|
||||
|
||||
* Open Windows **settings** and search for **Developer options**
|
||||
* Enable the developer mode.
|
||||
* Find the latest build under ``win10/app/AppPackages/latest`` and run the ``Add-AppDevPackage.ps1`` PowerShell script (mouse right-click, then `run with PowerShell`)
|
||||
that wraps ``m.pxt.io`` and provides additional features.
|
||||
|
||||
### Building
|
||||
|
||||
* Install Visual Studio 2015 Update 2 or higher. Make sure the Windows 10 templates are installed.
|
||||
* open the ``win10/app.sln`` solution and launch the ``codemicrobit`` project.
|
||||
* open the ``win10/app.sln`` solution and launch the ``m.pxt.io`` project.
|
||||
|
10
cmds/cmds.ts
10
cmds/cmds.ts
@ -1,8 +1,8 @@
|
||||
/// <reference path="../node_modules/pxt-core/built/pxt.d.ts"/>
|
||||
|
||||
import * as fs from 'fs';
|
||||
import * as path from 'path';
|
||||
import * as child_process from 'child_process';
|
||||
import * as fs from "fs";
|
||||
import * as path from "path";
|
||||
import * as child_process from "child_process";
|
||||
|
||||
let writeFileAsync: any = Promise.promisify(fs.writeFile)
|
||||
let execAsync: (cmd: string, options?: { cwd?: string }) => Promise<Buffer> = Promise.promisify(child_process.exec)
|
||||
@ -13,10 +13,10 @@ export function deployCoreAsync(res: ts.pxt.CompileResult) {
|
||||
if (drives.length == 0) {
|
||||
console.log("cannot find any drives to deploy to")
|
||||
} else {
|
||||
console.log("copy microbit.hex to " + drives.join(", "))
|
||||
console.log(`copy ${ts.pxt.BINARY_HEX} to ` + drives.join(", "))
|
||||
}
|
||||
return Promise.map(drives, d =>
|
||||
writeFileAsync(d + "microbit.hex", res.outfiles["microbit.hex"])
|
||||
writeFileAsync(d + ts.pxt.BINARY_HEX, res.outfiles[ts.pxt.BINARY_HEX])
|
||||
.then(() => {
|
||||
console.log("wrote hex file to " + d)
|
||||
}))
|
||||
|
@ -8,6 +8,6 @@
|
||||
"module": "commonjs",
|
||||
"rootDir": ".",
|
||||
"newLine": "LF",
|
||||
"sourceMap": true
|
||||
"sourceMap": false
|
||||
}
|
||||
}
|
||||
|
22
docs/_locales/pl/_theme.json
Normal file
22
docs/_locales/pl/_theme.json
Normal file
@ -0,0 +1,22 @@
|
||||
{
|
||||
"name": "koduj z micro:bit",
|
||||
"title": "koduj z micro:bit",
|
||||
"docMenu": [
|
||||
{
|
||||
"name": "O nas",
|
||||
"path": "/about"
|
||||
},
|
||||
{
|
||||
"name": "Lekcje",
|
||||
"path": "/lessons"
|
||||
},
|
||||
{
|
||||
"name": "Instrukcja obsługi",
|
||||
"path": "/reference"
|
||||
},
|
||||
{
|
||||
"name": "Urządzenie",
|
||||
"path": "/device"
|
||||
}
|
||||
]
|
||||
}
|
@ -26,7 +26,7 @@ input.onButtonPressed(Button.B, () => {
|
||||
The [BBC micro:bit](https://www.microbit.co.uk) is a [pocket-size computer](/device) with a 5x5 display of 25 LEDs, Bluetooth and sensors that can be programmed by anyone.
|
||||
The BBC micro:bit was made possible by many [partners](https://www.microbit.co.uk/partners).
|
||||
|
||||
The micro:bit provides a fun introduction to programming and making – switch on, program it to do something fun – wear it, customize it.
|
||||
The micro:bit provides an easy and fun introduction to programming and making – switch on, program it to do something fun – wear it, customize it.
|
||||
Just like Arduino, the micro:bit can be connected to and interact with sensors, displays, and other devices.
|
||||
|
||||
## Blocks or JavaScript
|
||||
|
32
docs/docs.md
32
docs/docs.md
@ -1,7 +1,35 @@
|
||||
# Documentation
|
||||
|
||||
Welcome to the documentation.
|
||||
```sim
|
||||
basic.forever(() => {
|
||||
basic.showString("DOCS ");
|
||||
})
|
||||
input.onButtonPressed(Button.A, () => {
|
||||
led.stopAnimation();
|
||||
basic.showLeds(`
|
||||
. . . . .
|
||||
. # . # .
|
||||
. . . . .
|
||||
# . . . #
|
||||
. # # # .`);
|
||||
});
|
||||
input.onButtonPressed(Button.B, () => {
|
||||
led.stopAnimation();
|
||||
basic.showLeds(`
|
||||
. # . # .
|
||||
# . # . #
|
||||
# . . . #
|
||||
. # . # .
|
||||
. . # . .`);
|
||||
});
|
||||
```
|
||||
|
||||
* Browse the [reference](/reference)
|
||||
* **[getting started](/getting-started)**
|
||||
* Browse the [API reference](/reference)
|
||||
* Learn more about the [device](/device)
|
||||
* Get started with [lessons](/lessons)
|
||||
* Follow up with the [release notes](/release-notes)
|
||||
|
||||
### Developers
|
||||
|
||||
* Learn about [packages](/packages) (possibly using C++ or ARM thumb)
|
||||
|
170
docs/getting-started.md
Normal file
170
docs/getting-started.md
Normal file
@ -0,0 +1,170 @@
|
||||
# Getting started
|
||||
|
||||
Are you ready to build cool BBC micro:bit programs? For each challenge, reorder the blocks to recreate the program.
|
||||
|
||||
### Show leds
|
||||
|
||||
Use the blocks below to draw a figure on the screen. You can redo the smiley face or try something else!
|
||||
|
||||
```shuffle
|
||||
basic.showLeds(`
|
||||
. . . . .
|
||||
. # . # .
|
||||
. . . . .
|
||||
# . . . #
|
||||
. # # # .
|
||||
`)
|
||||
```
|
||||
|
||||
To transfer your code to the BBC micro:bit,
|
||||
* connect your micro:bit to the computer using the USB cable
|
||||
* click on **Compile**
|
||||
* drag&drop the **.hex** file into the **MICROBIT** drive
|
||||
* wait till the yellow light is done blinking!
|
||||
|
||||
### Show animation Forever
|
||||
|
||||
Show one image after the other to create an animation by snapping them together.
|
||||
|
||||
```blocks
|
||||
basic.showLeds(`
|
||||
. . . . .
|
||||
. # . # .
|
||||
. . . . .
|
||||
# . . . #
|
||||
. # # # .
|
||||
`)
|
||||
basic.showLeds(`
|
||||
. . . . .
|
||||
. # . # .
|
||||
. . . . .
|
||||
. # # # .
|
||||
# . . . #
|
||||
`)
|
||||
```
|
||||
|
||||
To transfer your code to the BBC micro:bit,
|
||||
* connect your micro:bit to the computer using the USB cable
|
||||
* click on **Compile**
|
||||
* drag&drop the **.hex** file into the **MICROBIT** drive
|
||||
* wait till the yellow light is done blinking!
|
||||
|
||||
### Repeat forever
|
||||
|
||||
Use the ``forever`` block to repeat your code and have a continuous animation.
|
||||
|
||||
Unsuffle the blocks to create a happy, unhappy animation.... or changes the image to make it your own!
|
||||
```shuffle
|
||||
basic.forever(() => {
|
||||
basic.showLeds(`
|
||||
. . . . .
|
||||
. # . # .
|
||||
. . . . .
|
||||
# . . . #
|
||||
. # # # .
|
||||
`)
|
||||
basic.showLeds(`
|
||||
. . . . .
|
||||
. # . # .
|
||||
. . . . .
|
||||
. # # # .
|
||||
# . . . #
|
||||
`)
|
||||
});
|
||||
```
|
||||
|
||||
### Your turn now!
|
||||
|
||||
Use the blocks ``show leds`` and ``forever``
|
||||
to create your own custom awesome animation!
|
||||
|
||||
### Button A and B
|
||||
|
||||
Unshuffle the blocks so that the micro:bit shows "YES" when button A is pressed, and "NO" when B is pressed.
|
||||
The key idea is that all the blocks nested under `on button ... pressed` will run when that button is pressed.
|
||||
|
||||
```blocks
|
||||
input.onButtonPressed(Button.A, () => {
|
||||
basic.showString("AAAAA");
|
||||
});
|
||||
```
|
||||
|
||||
Try to unshuffle those blocks:
|
||||
```shuffle
|
||||
input.onButtonPressed(Button.A, () => {
|
||||
basic.showString("YES");
|
||||
});
|
||||
input.onButtonPressed(Button.B, () => {
|
||||
basic.showString("NO");
|
||||
});
|
||||
```
|
||||
|
||||
### Shake
|
||||
|
||||
Using the data from the **accelerometer**, it is possible to detect that the BBC micro:bit is being shaken.
|
||||
|
||||
Unshuffle the code to display a frownie when shaken.
|
||||
```shuffle
|
||||
input.onGesture(Gesture.Shake, () => {
|
||||
basic.showLeds(`
|
||||
. . . . .
|
||||
. # . # .
|
||||
. . . . .
|
||||
. # # # .
|
||||
# . . . #`);
|
||||
});
|
||||
```
|
||||
|
||||
### Tilting
|
||||
|
||||
Aside from shake, it is also possible to detect tilt left and right, logo up and down or face up and down.
|
||||
Let's build a rock paper scissors game where you turn the micro:bit left to display paper, right to display scissors and down to display rock.
|
||||
|
||||
Unshuffle and try this code on the micro:bit itself!
|
||||
```shuffle
|
||||
input.onGesture(Gesture.TiltLeft, () => {
|
||||
basic.showLeds(`
|
||||
# # # # #
|
||||
# . . . #
|
||||
# . . . #
|
||||
# . . . #
|
||||
# # # # #`);
|
||||
});
|
||||
input.onGesture(Gesture.LogoDown, () => {
|
||||
basic.showLeds(`
|
||||
. . . . .
|
||||
. # # # .
|
||||
. # # # .
|
||||
. # # # .
|
||||
. . . . .`);
|
||||
});
|
||||
input.onGesture(Gesture.TiltRight, () => {
|
||||
basic.showLeds(`
|
||||
# # . . #
|
||||
# # . # .
|
||||
. . # . .
|
||||
# # . # .
|
||||
# # . . #`);
|
||||
});
|
||||
```
|
||||
|
||||
### Pins
|
||||
|
||||
It is possible to use the pins (big metal bar at the bottom of the board) as button. Hold the ``GND`` button with one hand and press the ``0`` pin
|
||||
(called ``P0``) with the other hand to trigger a pin pressed.
|
||||
|
||||
Unshuffle the blocks to display a smiley when pin ``P0`` is pressed.
|
||||
```shuffle
|
||||
input.onPinPressed(TouchPin.P0, () => {
|
||||
basic.showLeds(`
|
||||
. . . . .
|
||||
. # . # .
|
||||
. . . . .
|
||||
# . . . #
|
||||
. # # # .`);
|
||||
});
|
||||
```
|
||||
|
||||
### Your turn now!
|
||||
|
||||
Use the screen, buttons, gestures, pins to create a fun game using the micro:bit.
|
@ -5,9 +5,6 @@
|
||||
|
||||
### ~column
|
||||
|
||||
## O365 Integration
|
||||
* [Science Experiments: Chart](/lessons/charting), create an app for simulating and measuring sensor data of acceleration, temperature, light level, and rotation
|
||||
|
||||
## Beginner
|
||||
|
||||
* [Beautiful Image](/lessons/beautiful-image), show a beautiful image with show LEDs
|
||||
@ -37,7 +34,7 @@
|
||||
* [Rock Paper Scissors](/lessons/rock-paper-scissors), create the classic game of rock paper scissors with if statement
|
||||
* [Truth or Dare](/lessons/truth-or-dare), a game that forces each player to reveal a secret or do something funny with if statement
|
||||
* [Spinner](/lessons/spinner), spin the arrow with multiple if statements
|
||||
* [Die Roll](/lessons/die-roll), spin with more if statements
|
||||
* [Dice Roll](/lessons/dice-roll), spin with more if statements
|
||||
* [Looper](/lessons/looper), display a series of numbers with a for loop index
|
||||
* [Strobe Light](/lessons/strobe-light), develop shapes with a nested for loops
|
||||
* [Temperature](/lessons/temperature), get the ambient temperature (degree Celsius °C)
|
||||
@ -60,6 +57,9 @@
|
||||
* [Telegraph](/lessons/telegraph), play the telegraph game between two BBC micro:bits
|
||||
* [Pogo](/lessons/pogo), create a pogo game to test your jumping abilities
|
||||
|
||||
## Science
|
||||
* [Charting](/lessons/charting), measure and chart acceleration
|
||||
|
||||
## Advanced
|
||||
* [Prank WiFi](/lessons/prank-wifi), create fake WiFi to trick your friends
|
||||
* [Speed Button](/lessons/speed-button), code a speed game with running time
|
||||
@ -70,5 +70,4 @@
|
||||
|
||||
### @section full
|
||||
|
||||
The lessons promote computational thinking and computer science literacy[ read more...](/lessons/teach)
|
||||
|
||||
The lessons promote computational thinking and computer science literacy[ read more...](/lessons/teach)
|
@ -1,8 +1,6 @@
|
||||
# answering machine blocks lesson
|
||||
|
||||
create an answering machine on the BBC micro:bit #docs
|
||||
|
||||
### @video td/videos/answering-machine-0
|
||||
Create an answering machine on the BBC micro:bit
|
||||
|
||||
## Topic
|
||||
|
||||
@ -25,12 +23,8 @@ Learn how to creating a message with a **string**, `show string` to write your m
|
||||
```cards
|
||||
basic.showString('Hi!')
|
||||
input.onButtonPressed(Button.A, () => {})
|
||||
|
||||
```
|
||||
|
||||
|
||||
* **on button pressed** : [read more...](/reference/input/on-button-pressed)
|
||||
|
||||
## Objectives
|
||||
|
||||
* learn how to show a string on the LED screen one character at a time
|
||||
|
@ -4,7 +4,6 @@ Learn to create an answering machine on the micro:bit
|
||||
|
||||
### ~avatar avatar
|
||||
|
||||
### @video td/videos/answering-machine-0
|
||||
|
||||
Let's learn how to create an answering machine!
|
||||
|
||||
|
@ -12,8 +12,6 @@ basic.showString("ASK ME A QUESTION")
|
||||
|
||||
### Challenge 1
|
||||
|
||||
### @video td/videos/answering-machine-1
|
||||
|
||||
Now we need to reply after someone asks micro:bit a yes or no question. We want to respond `YES` when button `A` is pressed. Add a condition for button `A` and inside it show the string `YES`.
|
||||
|
||||
```blocks
|
||||
@ -21,15 +19,12 @@ basic.showString("ASK ME A QUESTION")
|
||||
input.onButtonPressed(Button.A, () => {
|
||||
basic.showString("Yes")
|
||||
})
|
||||
|
||||
```
|
||||
|
||||
* `Run` the code to see if it works as expected.
|
||||
|
||||
### Challenge 2
|
||||
|
||||
### @video td/videos/answering-machine-2
|
||||
|
||||
What if micro:bit's answer to the question is no? Let's have `NO` be displayed when button `B` is pressed. Add a condition for button `B` and inside it show the string `NO`.
|
||||
|
||||
```blocks
|
||||
@ -45,7 +40,6 @@ input.onButtonPressed(Button.B, () => {
|
||||
|
||||
* `Run` the code to see if it works as expected.
|
||||
|
||||
**Challenge 3**
|
||||
|
||||
When you are asked a yes or no question, do you always say yes or no? Add a condition for `on shake` that displays `MAYBE`.
|
||||
### Challenge 3
|
||||
|
||||
When you are asked a yes or no question, do you always say yes or no? Add a condition for `on shake` that displays `MAYBE`.
|
@ -12,7 +12,6 @@ Answers may vary. This is a function that will show a string on the LED screen o
|
||||
|
||||
```blocks
|
||||
basic.showString("Y")
|
||||
|
||||
```
|
||||
|
||||

|
||||
@ -22,7 +21,6 @@ basic.showString("Y")
|
||||
|
||||
```blocks
|
||||
basic.showString("Hi")
|
||||
|
||||
```
|
||||
|
||||

|
||||
@ -35,7 +33,6 @@ basic.showString("Hi")
|
||||
|
||||
```blocks
|
||||
basic.showString("Z")
|
||||
|
||||
```
|
||||
|
||||
|
||||
|
@ -1,8 +1,6 @@
|
||||
# beautiful image lesson
|
||||
|
||||
display beautiful images on the BBC micro:bit.
|
||||
|
||||
### @video td/videos/beautiful-image-0
|
||||
Display beautiful images on the BBC micro:bit.
|
||||
|
||||
## Topic
|
||||
|
||||
|
@ -4,8 +4,6 @@ Generate and show a beautiful image.
|
||||
|
||||
### ~avatar avatar
|
||||
|
||||
### @video td/videos/beautiful-image-0
|
||||
|
||||
Let's learn how to show an image on the LED screen.
|
||||
|
||||
### ~
|
||||
|
@ -18,8 +18,6 @@ basic.showLeds(`
|
||||
|
||||
### Challenge 1
|
||||
|
||||
### @video td/videos/beautiful-image-1-2
|
||||
|
||||
Now show an new image that will display on the micro:bit.
|
||||
|
||||
```blocks
|
||||
@ -39,9 +37,9 @@ basic.showLeds(`
|
||||
`)
|
||||
```
|
||||
|
||||
* *Run* your code to see if it works as expected.
|
||||
* Does your code work as expected?
|
||||
|
||||
### Challenge 2
|
||||
|
||||
Nice job! Why don't we create a third image that will show after the other two? Remember to add a pause before you create and show the image.
|
||||
Nice job! Why don't we create a third image that will show after the other two?
|
||||
|
||||
|
@ -2,8 +2,6 @@
|
||||
|
||||
Learn how to create a blinking LED.
|
||||
|
||||
### @video td/videos/blink-0
|
||||
|
||||
## Topic
|
||||
|
||||
Plot
|
||||
@ -30,7 +28,6 @@ basic.pause(100)
|
||||
basic.forever(() => {})
|
||||
```
|
||||
|
||||
|
||||
## Objectives
|
||||
|
||||
* learn how to turn on LED lights on the LED screen
|
||||
|
@ -4,7 +4,15 @@ Turn an LED on and off with forever
|
||||
|
||||
### ~avatar avatar
|
||||
|
||||
### @video td/videos/blink-0
|
||||
```sim
|
||||
basic.forever(() => {
|
||||
led.plot(2, 2)
|
||||
basic.pause(500)
|
||||
led.unplot(2, 2)
|
||||
basic.pause(500)
|
||||
})
|
||||
```
|
||||
Let's build a blinking light!
|
||||
|
||||
### ~
|
||||
|
||||
@ -43,7 +51,6 @@ basic.forever(() => {
|
||||
led.unplot(2, 2)
|
||||
basic.pause(500)
|
||||
})
|
||||
|
||||
```
|
||||
|
||||
### ~avatar boothing
|
||||
|
@ -17,8 +17,6 @@ basic.forever(() => {
|
||||
|
||||
### Challenge 1
|
||||
|
||||
### @video td/videos/blink-1
|
||||
|
||||
Let's display a "smiley face" on the screen! We'll start by plotting the eyes.
|
||||
|
||||
Add `plot(1,1)` and `plot(3,1)` under `plot(2,2)` ; then add `unplot(1,1)`, `unplot(3,1)` and `unplot(2,2)` after `pause`. When you're ready, don't forget to run your code to try it out!
|
||||
@ -38,8 +36,6 @@ basic.forever(() => {
|
||||
|
||||
### Challenge 2
|
||||
|
||||
### @video td/videos/blink-2
|
||||
|
||||
Let's add the code to plot the mouth by using `plot` and `unplot` to the following coordinates: (1,4), (2,4) and (3,4). When you're ready, don't forget to run your code to try it out!
|
||||
|
||||
```blocks
|
||||
@ -63,8 +59,6 @@ basic.forever(() => {
|
||||
|
||||
### Challenge 3
|
||||
|
||||
### @video td/videos/blink-3
|
||||
|
||||
Let's keep using `plot` to convert the mouth into a smiley face.
|
||||
|
||||
```` bitmatrix
|
||||
|
@ -12,17 +12,14 @@ Answer the questions while completing the tutorial. Pay attention to the dialogu
|
||||
|
||||
## 1. Write the code that will store the global variable named 'action' and returns a random number between 0 and 2
|
||||
|
||||
<br/>
|
||||
|
||||
```
|
||||
action = Math.random(3)
|
||||
```blocks
|
||||
let action = Math.random(3)
|
||||
```
|
||||
|
||||
## 2. Write the code that will display the string, "PUSH A" if the global variable called 'action' is equal to 0
|
||||
|
||||
<br />
|
||||
|
||||
```
|
||||
```blocks
|
||||
let action = Math.random(3)
|
||||
if (action == 0) {
|
||||
basic.showString("PUSH A", 150)
|
||||
}
|
||||
@ -30,10 +27,9 @@ if (action == 0) {
|
||||
|
||||
## 3. Write the code that increments the score if button A is pressed when the global variable called 'action' is equal to 1
|
||||
|
||||
<br />
|
||||
|
||||
```
|
||||
```blocks
|
||||
input.onButtonPressed(Button.A, () => {
|
||||
let action = Math.random(3)
|
||||
if (action == 0) {
|
||||
game.addScore(1)
|
||||
}
|
||||
@ -42,9 +38,8 @@ input.onButtonPressed(Button.A, () => {
|
||||
|
||||
## 4. Write the code that will display the string "LOGO DOWN" if the global variable called 'action' is equal to 1
|
||||
|
||||
<br />
|
||||
|
||||
```
|
||||
```blocks
|
||||
let action = Math.random(3)
|
||||
if (action == 1) {
|
||||
basic.showString("LOGO DOWN", 150)
|
||||
}
|
||||
@ -52,10 +47,9 @@ if (action == 1) {
|
||||
|
||||
## 5. Write the code that increments the score if the BBC micro:bit logo is tilted down when the global variable called 'action' is equal to 1
|
||||
|
||||
<br />
|
||||
|
||||
```
|
||||
```blocks
|
||||
input.onLogoDown(() => {
|
||||
let action = Math.random(3)
|
||||
if (action == 1) {
|
||||
game.addScore(1)
|
||||
}
|
||||
@ -64,9 +58,8 @@ input.onLogoDown(() => {
|
||||
|
||||
## 6. Write the code that will display the string "SHAKE" if the global variable called 'action' is equal to 2
|
||||
|
||||
<br />
|
||||
|
||||
```
|
||||
```blocks
|
||||
let action = Math.random(3)
|
||||
if (action == 2) {
|
||||
basic.showString("SHAKE", 150)
|
||||
}
|
||||
@ -74,13 +67,11 @@ if (action == 2) {
|
||||
|
||||
## 7. Write the code that increments the score if the BBC micro:bit is shaken when the global variable called 'action' is equal to 2
|
||||
|
||||
<br/>
|
||||
|
||||
```
|
||||
```blocks
|
||||
input.onLogoDown(() => {
|
||||
let action = Math.random(3)
|
||||
if (action == 1) {
|
||||
game.addScore(1)
|
||||
}
|
||||
})
|
||||
```
|
||||
|
||||
|
@ -2,8 +2,6 @@
|
||||
|
||||
A game to catch eggs in a basket.
|
||||
|
||||
### @video td/videos/catch-the-egg-game-0
|
||||
|
||||
## Topic
|
||||
|
||||
Variables
|
||||
@ -11,6 +9,7 @@ Variables
|
||||
## Quick Links
|
||||
|
||||
* [activity](/lessons/catch-the-egg-game/activity)
|
||||
* [tutorial](/lessons/catch-the-egg-game/tutorial)
|
||||
* [quiz](/lessons/catch-the-egg-game/quiz)
|
||||
* [quiz answers](/lessons/catch-the-egg-game/quiz-answers)
|
||||
|
||||
@ -20,18 +19,21 @@ Learn how to create a catch the egg game game with **plot**, `led->plot` , **unp
|
||||
|
||||
## Documentation
|
||||
|
||||
* **variables** : [read more...](/reference/variables/var)
|
||||
* **forever** : [read more...](/reference/basic/forever)
|
||||
* **unplot** : [read more...](/reference/led/unplot)
|
||||
* **plot** : [read more...](/reference/led/plot)
|
||||
* **if** : [read more...](/reference/logic/if)
|
||||
* **acceleration** : [read more...](/reference/input/acceleration)
|
||||
* **math minimum number** : [read more...](/reference/math)
|
||||
* **math maximum number** : [read more...](/reference/math)
|
||||
* **math random number** : [read more...](/reference/math)
|
||||
* **math modulus** : [read more...](/reference/math)
|
||||
* **show number** : [read more...](/reference/basic/show-number)
|
||||
* **pause** : [read more...](/reference/basic/pause)
|
||||
```cards
|
||||
let x = 2;
|
||||
led.unplot(0, 0);
|
||||
basic.forever(() => {});
|
||||
x += 1;
|
||||
led.plot(0, 0);
|
||||
basic.pause(300);
|
||||
input.acceleration(Dimension.X);
|
||||
Math.min(0,0);
|
||||
Math.max(0,1);
|
||||
Math.random(5);
|
||||
game.addScore(1);
|
||||
game.score();
|
||||
game.removeLife(1);
|
||||
```
|
||||
|
||||
## Objectives
|
||||
|
||||
|
@ -1,7 +1,5 @@
|
||||
# catch the egg game challenges
|
||||
|
||||
Coding challenges for catch the egg game.
|
||||
|
||||
## Before we get started
|
||||
|
||||
Your starting code should look like this:
|
||||
@ -110,8 +108,6 @@ basic.forever(() => {
|
||||
|
||||
### Challenge 3
|
||||
|
||||
### @video td/videos/catch-the-egg-game-4
|
||||
|
||||
Let's make the egg fall faster by decreasing the amount of time it pauses in each position by decreasing **falling pause** by `25` every 5 catches. Now, instead of pausing for 300 milliseconds we can pause for the value of **falling pause**.
|
||||
|
||||
```blocks
|
||||
|
29
docs/lessons/catch-the-egg-game/tutorial.md
Normal file
29
docs/lessons/catch-the-egg-game/tutorial.md
Normal file
@ -0,0 +1,29 @@
|
||||
# catch the egg game tutorial
|
||||
|
||||
### Rebuild the game!
|
||||
|
||||
The blocks have been shuffled! Put them back together so that...
|
||||
* an egg LED falls from the top of the screen, row by row.
|
||||
* a basket LED is on the bottom row and can be moved by using the accelerometer `X` data.
|
||||
* if the egg LED reaches the last row, reset the egg position to the first row.
|
||||
|
||||
```shuffle
|
||||
let basketX = 2
|
||||
let eggX = 2
|
||||
let eggY = 0
|
||||
basic.forever(() => {
|
||||
led.unplot(basketX, 4)
|
||||
led.unplot(eggX, eggY)
|
||||
eggY = eggY + 1
|
||||
led.plot(eggX, eggY)
|
||||
basic.pause(300)
|
||||
let accX = input.acceleration(Dimension.X)
|
||||
basketX = 2 + Math.min(2, Math.max(-2, accX / 200))
|
||||
led.plot(basketX, 4)
|
||||
if (eggY > 4) {
|
||||
eggY = -1
|
||||
eggX = Math.random(5)
|
||||
}
|
||||
basic.pause(300)
|
||||
})
|
||||
```
|
@ -17,7 +17,7 @@ input.onPinPressed(TouchPin.P1, () => {
|
||||
})
|
||||
```
|
||||
|
||||
**Challenge 1**
|
||||
### Challenge 1
|
||||
|
||||
Let's include a second sound `on pin pressed` *P2*. To do this, you need to add the same blocks as the banana keyboard activity. However, you must change alter `on pin pressed` from P1 to P2. Additionally, you must *decrease* the frequency of the variable "sound" by 25. Modify your code so that your code looks like this
|
||||
|
||||
@ -42,7 +42,7 @@ input.onPinPressed(TouchPin.P2, () => {
|
||||
|
||||
* click *run* to see if the code works as expected.
|
||||
|
||||
**Challenge 2**
|
||||
### Challenge 2
|
||||
|
||||
Finally, we want images to be displayed with sounds `on pin pressed`. Add `show LEDs` blocks under `on pin pressed` P1 and P2.
|
||||
|
||||
|
@ -2,8 +2,6 @@
|
||||
|
||||
create a die on the BBC micro:bit.
|
||||
|
||||
### @video td/videos/compass-0
|
||||
|
||||
## Topic
|
||||
|
||||
If (Conditionals)
|
||||
|
@ -2,8 +2,6 @@
|
||||
|
||||
Learn how to create a counter with with on button pressed.
|
||||
|
||||
### @video td/videos/counter-0
|
||||
|
||||
## Topic
|
||||
|
||||
Variables
|
||||
|
@ -4,8 +4,6 @@ Display a number with a variable.
|
||||
|
||||
### ~avatar avatar
|
||||
|
||||
### @video td/videos/counter-0
|
||||
|
||||
Welcome! This tutorial will teach you how to make a counter that increments when button A is pressed. Let's get started!
|
||||
|
||||
### ~
|
||||
|
@ -16,8 +16,6 @@ input.onButtonPressed(Button.A, () => {
|
||||
|
||||
### Challenge 1
|
||||
|
||||
### @video td/videos/counter-1-2
|
||||
|
||||
Let's add the code to `count` when `B` is pressed. Add an event handler with `on button pressed(B)` then add the code to `count`.
|
||||
|
||||
|
||||
@ -33,7 +31,6 @@ input.onButtonPressed(Button.B, () => {
|
||||
})
|
||||
```
|
||||
|
||||
|
||||
### Challenge 3
|
||||
|
||||
Now let's try to reset the counter when the micro:bit is shaken. You will need to register an event handler with `on shake`.
|
||||
|
@ -1,8 +1,6 @@
|
||||
# die roll lesson
|
||||
# dice roll lesson
|
||||
|
||||
create a die on the BBC micro:bit.
|
||||
|
||||
### @video td/videos/die-roll-0
|
||||
Create a dice on the BBC micro:bit.
|
||||
|
||||
## Topic
|
||||
|
||||
@ -10,10 +8,10 @@ If (Conditionals)
|
||||
|
||||
## Quick Links
|
||||
|
||||
* [activity](/lessons/die-roll/activity)
|
||||
* [challenges](/lessons/die-roll/challenges)
|
||||
* [quiz](/lessons/die-roll/quiz)
|
||||
* [quiz answers](/lessons/die-roll/quiz-answers)
|
||||
* [activity](/lessons/dice-roll/activity)
|
||||
* [challenges](/lessons/dice-roll/challenges)
|
||||
* [quiz](/lessons/dice-roll/quiz)
|
||||
* [quiz answers](/lessons/dice-roll/quiz-answers)
|
||||
|
||||
## Prior learning/place of lesson in scheme of work
|
||||
|
@ -1,12 +1,10 @@
|
||||
# die roll activity
|
||||
# dice roll activity
|
||||
|
||||
Create a die on the micro:bit
|
||||
Create a dice on the micro:bit
|
||||
|
||||
### ~avatar avatar
|
||||
|
||||
### @video td/videos/die-roll-0
|
||||
|
||||
Welcome! This tutorial will help you create a die. Let's get started!
|
||||
Welcome! This tutorial will help you create a dice. Let's get started!
|
||||
|
||||
### ~
|
||||
|
||||
@ -19,7 +17,7 @@ input.onGesture(Gesture.Shake, () => {
|
||||
})
|
||||
```
|
||||
|
||||
We need to show a random value from 1 to 6 on our die. So let's make a local variable called **roll**.
|
||||
We need to show a random value from 1 to 6 on our dice. So let's make a local variable called **roll**.
|
||||
|
||||
```blocks
|
||||
input.onGesture(Gesture.Shake, () => {
|
||||
@ -27,7 +25,7 @@ input.onGesture(Gesture.Shake, () => {
|
||||
})
|
||||
```
|
||||
|
||||
We need a condition for if **roll** is 5. We will show a `6` if **roll** is 5 because **roll** has a range from 0 to 5. We can use `show LEDs` to display the side of a die that shows 6.
|
||||
We need a condition for if **roll** is 5. We will show a `6` if **roll** is 5 because **roll** has a range from 0 to 5. We can use `show LEDs` to display the side of a dice that shows 6.
|
||||
|
||||
|
||||
```blocks
|
||||
@ -45,7 +43,7 @@ input.onGesture(Gesture.Shake, () => {
|
||||
```
|
||||
|
||||
|
||||
Let's use an `else if` condition for if **roll** is 4. If **roll** is 4 we can show 5 dots on the die.
|
||||
Let's use an `else if` condition for if **roll** is 4. If **roll** is 4 we can show 5 dots on the dice.
|
||||
|
||||
|
||||
```blocks
|
||||
@ -72,7 +70,7 @@ input.onGesture(Gesture.Shake, ()=> {
|
||||
```
|
||||
|
||||
|
||||
Now we need to repeat the same steps for if **roll** is 3. If **roll** is 3 we will show `4` on the die.
|
||||
Now we need to repeat the same steps for if **roll** is 3. If **roll** is 3 we will show `4` on the dice.
|
||||
|
||||
|
||||
```blocks
|
||||
@ -106,7 +104,7 @@ input.onGesture(Gesture.Shake, () => {
|
||||
```
|
||||
|
||||
|
||||
Let's also repeat these steps to show the 3, 2, and 1 on the die. We are almost done with our die!
|
||||
Let's also repeat these steps to show the 3, 2, and 1 on the dice. We are almost done with our dice!
|
||||
|
||||
```blocks
|
||||
input.onGesture(Gesture.Shake, () => {
|
||||
@ -165,7 +163,7 @@ input.onGesture(Gesture.Shake, () => {
|
||||
|
||||
### ~avatar avatar
|
||||
|
||||
Excellent, you're ready to continue with the [challenges](/lessons/die-roll/challenges)!
|
||||
Excellent, you're ready to continue with the [challenges](/lessons/dice-roll/challenges)!
|
||||
|
||||
### ~
|
||||
|
@ -1,10 +1,10 @@
|
||||
# die roll challenges
|
||||
# dice roll challenges
|
||||
|
||||
Create a die on the micro:bit.
|
||||
Create a dice on the micro:bit.
|
||||
|
||||
## Before we get started
|
||||
|
||||
Complete the following [guided tutorial](/lessons/die-roll/activity), your code should look like this:
|
||||
Complete the following [guided tutorial](/lessons/dice-roll/activity), your code should look like this:
|
||||
|
||||
```blocks
|
||||
input.onGesture(Gesture.Shake, () => {
|
||||
@ -62,7 +62,7 @@ input.onGesture(Gesture.Shake, () => {
|
||||
|
||||
### Challenge 1
|
||||
|
||||
Modify the line of code with `pick random` so that only number 1-4 can appear on the die.
|
||||
Modify the line of code with `pick random` so that only number 1-4 can appear on the dice.
|
||||
|
||||
|
||||
```blocks
|
||||
@ -121,7 +121,7 @@ input.onGesture(Gesture.Shake, () => {
|
||||
|
||||
### Challenge 2
|
||||
|
||||
Let's make a trick die! Modify the line of code with `pick random` so that only numbers 3-6 can appear on the die. Also note that we need to ensure `roll = 0` when only 1 dot is shown on the BBC micro:bit.
|
||||
Let's make a trick dice! Modify the line of code with `pick random` so that only numbers 3-6 can appear on the dice. Also note that we need to ensure `roll = 0` when only 1 dot is shown on the BBC micro:bit.
|
||||
|
||||
```blocks
|
||||
input.onGesture(Gesture.Shake, () => {
|
@ -1,8 +1,8 @@
|
||||
# die roll quiz answers
|
||||
# dice roll quiz answers
|
||||
|
||||
Create a die when the BBC micro:bit is shaken
|
||||
Create a dice when the BBC micro:bit is shaken
|
||||
|
||||
These are the answers to the [die roll quiz](/lessons/die-roll/quiz).
|
||||
These are the answers to the [dice roll quiz](/lessons/dice-roll/quiz).
|
||||
|
||||
## 1. Create a variable named 'roll' that will be randomly assigned to a number between 0 and 5.
|
||||
|
@ -1,12 +1,12 @@
|
||||
# die roll quiz
|
||||
# dice roll quiz
|
||||
|
||||
Create a die when the BBC micro:bit is shaken
|
||||
Create a dice when the BBC micro:bit is shaken
|
||||
|
||||
## Name
|
||||
|
||||
## Directions
|
||||
|
||||
Use this activity document to guide your work in the [die roll tutorial](/lessons/die-roll/activity).
|
||||
Use this activity document to guide your work in the [dice roll tutorial](/lessons/dice-roll/activity).
|
||||
|
||||
Answer the questions while completing the tutorial. Pay attention to the dialogues!
|
||||
|
@ -1,8 +1,6 @@
|
||||
# digi yoyo lesson
|
||||
|
||||
create a counter with a while loop.
|
||||
|
||||
### @video td/videos/digi-yoyo-0
|
||||
Create a counter with a while loop.
|
||||
|
||||
## Topic
|
||||
|
||||
|
@ -4,8 +4,6 @@ Create a counter with a while loop.
|
||||
|
||||
### ~avatar avatar
|
||||
|
||||
### @video td/videos/digi-yoyo-0
|
||||
|
||||
Welcome! This tutorial will teach how to create a counter with a while loop. Let's get started!
|
||||
|
||||
### ~
|
||||
|
@ -40,8 +40,6 @@ while (count > 0) {
|
||||
|
||||
### Challenge 2
|
||||
|
||||
### @video td/videos/digi-yoyo-1-2
|
||||
|
||||
Inside of the while loop, let's add `pause->(1000)` so that we have a pause between each number as it's counting down. Also, let's show `count`!
|
||||
|
||||
|
||||
|
@ -2,8 +2,6 @@
|
||||
|
||||
Learn how to create LED images with a global variable.
|
||||
|
||||
### @video td/videos/flashing-heart-0
|
||||
|
||||
## Topic
|
||||
|
||||
Pause
|
||||
|
@ -4,8 +4,6 @@ Control images with a variable.
|
||||
|
||||
### ~avatar avatar
|
||||
|
||||
### @video td/videos/flashing-heart-0
|
||||
|
||||
In this activity, you will learn how to blink an image on the LED screen.
|
||||
|
||||
### ~
|
||||
|
@ -25,8 +25,6 @@ basic.forever(() => {
|
||||
|
||||
### Challenge 1
|
||||
|
||||
### @video td/videos/flashing-heart-1
|
||||
|
||||
Let's plot a different image. Let's display a broken heart!
|
||||
|
||||
To do this, you need to add a block between the last line and the end loop. Add a `show LEDs` block and then add a `pause` of 500 milliseconds.
|
||||
@ -60,8 +58,6 @@ basic.forever(() => {
|
||||
|
||||
### Challenge 2
|
||||
|
||||
### @video td/videos/flashing-heart-2
|
||||
|
||||
Now let's alternate flashing the heart and the broken heart. To do this, we need to add a `clear screen` block and then add a `pause` block of 500 milliseconds under the new code we added in Challenge 1.
|
||||
|
||||
|
||||
|
@ -2,8 +2,6 @@
|
||||
|
||||
Learn how to create a counter with with on button pressed.
|
||||
|
||||
### @video td/videos/counter-0
|
||||
|
||||
## Topic
|
||||
|
||||
Game Library
|
||||
|
@ -1,13 +1,5 @@
|
||||
# game counter activity
|
||||
|
||||
Turn an LED on and off with forever loop
|
||||
|
||||
### ~avatar avatar
|
||||
|
||||
### @video td/videos/counter-0
|
||||
|
||||
### ~
|
||||
|
||||
Have you ever tried to create a game counter? The concept is fairly simply: increase the game `score` with `on button pressed` .
|
||||
|
||||
Let's start by adding `on button (A) pressed` will run each time the user presses A. Let's add a line of code that increments `score` by `1`.
|
||||
|
@ -15,8 +15,6 @@ input.onButtonPressed(Button.A, () => {
|
||||
|
||||
### Challenge 1
|
||||
|
||||
### @video td/videos/counter-1-2
|
||||
|
||||
Let's add the code to `score` when `B` is pressed. Add an event handler with `on button (B) pressed` then add the code to `score`.
|
||||
|
||||
|
||||
|
@ -42,7 +42,7 @@ input.onButtonPressed(Button.B, () => {
|
||||
|
||||
* `Run` the code to see if it works as expected.
|
||||
|
||||
**Challenge 3**
|
||||
### Challenge 3
|
||||
|
||||
When you are asked a yes or no question, do you always say yes or no? Add a condition for `on shake` that displays `TRY AGAIN`.
|
||||
|
||||
|
@ -9,6 +9,7 @@ Acceleration
|
||||
## Quick Links
|
||||
|
||||
* [activity](/lessons/glowing-pendulum/activity)
|
||||
* [tutorial](/lessons/glowing-pendulum/tutorial)
|
||||
* [challenges](/lessons/glowing-pendulum/challenges)
|
||||
* [quiz](/lessons/glowing-pendulum/quiz)
|
||||
* [quiz answers](/lessons/glowing-pendulum/quiz-answers)
|
||||
|
@ -4,10 +4,29 @@ Construct a pendulum that glows using acceleration.
|
||||
|
||||
Welcome! This activity will teach how to construct a pendulum that glows using acceleration. Let's get started!
|
||||
|
||||
Turn on all the LEDs.
|
||||
|
||||
```blocks
|
||||
basic.showLeds(`
|
||||
# # # # #
|
||||
# # # # #
|
||||
# # # # #
|
||||
# # # # #
|
||||
# # # # #
|
||||
`)
|
||||
```
|
||||
|
||||
Create a **forever** loop that will constantly display the appropriate brightness on the LED display.
|
||||
|
||||
|
||||
```blocks
|
||||
basic.showLeds(`
|
||||
# # # # #
|
||||
# # # # #
|
||||
# # # # #
|
||||
# # # # #
|
||||
# # # # #
|
||||
`)
|
||||
basic.forever(() => {
|
||||
|
||||
})
|
||||
@ -16,6 +35,13 @@ basic.forever(() => {
|
||||
Now let's measure the acceleration on the `y` axis and store that value in a variable. The `acceleration(y)` function will provide the value.
|
||||
|
||||
```blocks
|
||||
basic.showLeds(`
|
||||
# # # # #
|
||||
# # # # #
|
||||
# # # # #
|
||||
# # # # #
|
||||
# # # # #
|
||||
`)
|
||||
basic.forever(() => {
|
||||
let acceleration = input.acceleration(Dimension.Y);
|
||||
});
|
||||
@ -25,9 +51,15 @@ Since the micro:bit will be swinging back and forth, the acceleration will only
|
||||
|
||||
|
||||
```blocks
|
||||
let acceleration = 0;
|
||||
basic.showLeds(`
|
||||
# # # # #
|
||||
# # # # #
|
||||
# # # # #
|
||||
# # # # #
|
||||
# # # # #
|
||||
`)
|
||||
basic.forever(() => {
|
||||
acceleration = input.acceleration(Dimension.Y);
|
||||
let acceleration = input.acceleration(Dimension.Y);
|
||||
acceleration = Math.abs(acceleration)
|
||||
});
|
||||
```
|
||||
@ -35,6 +67,13 @@ basic.forever(() => {
|
||||
The function `acceleration(y)` returns a number between 0 and 1024. We want to use this value for the brightness of the micro:bit, but the `set brightness()` only accepts a value between 0 and 256. Thus, we need to divide the acceleration by 4 to ensure we will be in the appropriate range.
|
||||
|
||||
```blocks
|
||||
basic.showLeds(`
|
||||
# # # # #
|
||||
# # # # #
|
||||
# # # # #
|
||||
# # # # #
|
||||
# # # # #
|
||||
`)
|
||||
basic.forever(() => {
|
||||
let acceleration = input.acceleration(Dimension.Y);
|
||||
acceleration = Math.abs(acceleration);
|
||||
@ -46,37 +85,19 @@ basic.forever(() => {
|
||||
Now let's use our acceleration value to set the brightness on the micro:bit.
|
||||
|
||||
```blocks
|
||||
basic.showLeds(`
|
||||
# # # # #
|
||||
# # # # #
|
||||
# # # # #
|
||||
# # # # #
|
||||
# # # # #
|
||||
`)
|
||||
basic.forever(() => {
|
||||
let acceleration = input.acceleration(Dimension.Y);
|
||||
acceleration = Math.abs(acceleration);
|
||||
acceleration = acceleration / 4;
|
||||
led.setBrightness(acceleration)
|
||||
});
|
||||
|
||||
|
||||
|
||||
```
|
||||
|
||||
|
||||
Let's show what the brightness of the micro:bit is by turning all the LEDs on!
|
||||
|
||||
```blocks
|
||||
|
||||
basic.forever(() => {
|
||||
let acceleration = input.acceleration(Dimension.Y);
|
||||
acceleration = Math.abs(acceleration);
|
||||
acceleration = acceleration / 4;
|
||||
led.setBrightness(acceleration)
|
||||
basic.showLeds(`
|
||||
# # # # #
|
||||
# # # # #
|
||||
# # # # #
|
||||
# # # # #
|
||||
# # # # #
|
||||
`)
|
||||
});
|
||||
|
||||
|
||||
```
|
||||
|
||||
### ~avatar avatar
|
||||
|
@ -24,13 +24,13 @@ basic.forever(() => {
|
||||
|
||||
```
|
||||
|
||||
**Challenge 1**
|
||||
### Challenge 1
|
||||
|
||||

|
||||
|
||||
Hold the micro:bit in your hand in a dark room. Move the micro:bit like a pendulum and produce a slow image that captures the pattern of the micro:bit LEDs.
|
||||
|
||||
**Challenge 2**
|
||||
### Challenge 2
|
||||
|
||||
Replace "y" in `acceleration(y)` with "x" or "z". Changing the axis will cause the micro:bit to measure the force in a different direction. What differences in the resulting pattern does this replacement make?
|
||||
|
||||
|
29
docs/lessons/glowing-pendulum/tutorial.md
Normal file
29
docs/lessons/glowing-pendulum/tutorial.md
Normal file
@ -0,0 +1,29 @@
|
||||
# glowing pendulum block tutorial
|
||||
|
||||
The glowing pendulum changes the screen brightness based on the acceleration measured on the BBC micro:bit.
|
||||
|
||||
### Rebuild the game!
|
||||
|
||||
The blocks have been shuffled! Put them back together so that...
|
||||
* all LEDs are turned on
|
||||
* the BBC micro:bit repeats code **forever** that
|
||||
* reads the acceleration along the ``y`` axis,
|
||||
* calculate the absolute value of the acceleration
|
||||
* scales down the acceleration value by a factor of `4`
|
||||
* uses the scaled value to set the screen **brightness**
|
||||
|
||||
```blocks
|
||||
basic.showLeds(`
|
||||
# # # # #
|
||||
# # # # #
|
||||
# # # # #
|
||||
# # # # #
|
||||
# # # # #
|
||||
`)
|
||||
basic.forever(() => {
|
||||
let acceleration = input.acceleration(Dimension.Y);
|
||||
acceleration = Math.abs(acceleration);
|
||||
acceleration = acceleration / 4;
|
||||
led.setBrightness(acceleration)
|
||||
});
|
||||
```
|
@ -2,8 +2,6 @@
|
||||
|
||||
Learn to create a random number with input from button A.
|
||||
|
||||
### @video td/videos/guess-the-number-0
|
||||
|
||||
## Topic
|
||||
|
||||
Math - Pick Random
|
||||
@ -11,6 +9,7 @@ Math - Pick Random
|
||||
## Quick links
|
||||
|
||||
* [activity](/lessons/guess-the-number/activity)
|
||||
* [tutorial](/lessons/guess-the-number/tutorial)
|
||||
* [challenges](/lessons/guess-the-number/challenges)
|
||||
* [quiz](/lessons/guess-the-number/quiz)
|
||||
* [quiz answers](/lessons/guess-the-number/quiz-answers)
|
||||
|
@ -4,8 +4,6 @@ Guess the number with math random.
|
||||
|
||||
### ~avatar avatar
|
||||
|
||||
### @video td/videos/guess-the-number-0
|
||||
|
||||
Welcome! This tutorial will help you create a guess the number game! Let's get started!
|
||||
|
||||
### ~
|
||||
@ -19,12 +17,11 @@ input.onButtonPressed(Button.A, () => {
|
||||
|
||||
```
|
||||
|
||||
Create a local variable of type number `x` and set it to a random number using `pick random`. `pick random` 9 generates a random number between `0` and `09`.
|
||||
|
||||
Create a local variable of type number `x` and set it to a random number using `pick random`. `pick random` 9 generates a random number between `0` and `9`.
|
||||
|
||||
```blocks
|
||||
input.onButtonPressed(Button.A, () => {
|
||||
let x = Math.random(9)
|
||||
let x = Math.random(10)
|
||||
})
|
||||
|
||||
```
|
||||
@ -34,7 +31,7 @@ Show the random number on the screen.
|
||||
|
||||
```blocks
|
||||
input.onButtonPressed(Button.A, () => {
|
||||
let x = Math.random(9)
|
||||
let x = Math.random(10)
|
||||
basic.showNumber(x)
|
||||
})
|
||||
|
||||
|
@ -15,8 +15,6 @@ input.onButtonPressed(Button.A, () => {
|
||||
|
||||
### Challenge 1
|
||||
|
||||
### @video td/videos/guess-the-number-2
|
||||
|
||||
When button `B` is pressed, we want to clear the screen. This will make it so users can play your game over and over again! Add an event handler to handle this case.
|
||||
|
||||
```blocks
|
||||
|
23
docs/lessons/guess-the-number/tutorial.md
Normal file
23
docs/lessons/guess-the-number/tutorial.md
Normal file
@ -0,0 +1,23 @@
|
||||
# guess the number tutorial
|
||||
|
||||
### ~avatar avatar
|
||||
|
||||
This tutorial will help you create a guess the number game! Let's get started!
|
||||
|
||||
### ~
|
||||
|
||||
### Rebuild the game!
|
||||
|
||||
The blocks have been shuffled! Put them back together so that...
|
||||
* when the user presses button ``A``,
|
||||
* generate a random number
|
||||
* show the number on screen
|
||||
|
||||
|
||||
```shuffle
|
||||
input.onButtonPressed(Button.A, () => {
|
||||
let x = Math.random(10)
|
||||
basic.showNumber(x)
|
||||
})
|
||||
```
|
||||
|
@ -2,8 +2,6 @@
|
||||
|
||||
Learn to control blinking LEDs.
|
||||
|
||||
### @video td/videos/looper-0
|
||||
|
||||
## Topic
|
||||
|
||||
For Loop
|
||||
|
@ -1,13 +1,5 @@
|
||||
# looper blocks activity
|
||||
|
||||
Display a series of numbers with a for loop.
|
||||
|
||||
### ~avatar avatar
|
||||
|
||||
### @video td/videos/looper-0
|
||||
|
||||
### ~
|
||||
|
||||
Welcome! This activity will teach how to display a series of numbers for a for loop. Let's get started!
|
||||
|
||||
Let's create a for loop where `0` is the loop's starting value, `i` is the index variable, and `5` is the ending value. The index variable `i` starts at 0 and increases by 1 each time through the loop. The loop ends when `i = 5`.
|
||||
|
@ -20,8 +20,6 @@ for (let i = 0; i < 6; i++) {
|
||||
|
||||
### Challenge 1
|
||||
|
||||
### @video td/videos/looper-1
|
||||
|
||||
What if we want to count up to lucky number 7 instead? Let's do that by changing the ending value to `7` instead of `5`.
|
||||
|
||||
|
||||
@ -37,8 +35,6 @@ for (let i = 0; i < 8; i++) {
|
||||
|
||||
### Challenge 2
|
||||
|
||||
### @video td/videos/looper-2
|
||||
|
||||
What about 9? Let's do that by changing the ending value to `9`.
|
||||
|
||||
```blocks
|
||||
@ -55,8 +51,6 @@ for (let i = 0; i < 10; i++) {
|
||||
|
||||
### Challenge 3
|
||||
|
||||
### @video td/videos/looper-3
|
||||
|
||||
Now let's start counting from `3` instead! Our for loop will always start at `0` so we simply add `3` to the `i` variable when passing it to `show number`.
|
||||
|
||||
```blocks
|
||||
@ -72,8 +66,6 @@ Run it on the simulator!
|
||||
|
||||
### Challenge 4
|
||||
|
||||
### @video td/videos/looper-4
|
||||
|
||||
Now, let's **count down from 9**. Change the line `show number(i + 2, 150)` to `show number(9 - i, 150)`.
|
||||
|
||||
```blocks
|
||||
|
@ -1,8 +1,6 @@
|
||||
# love meter blocks lesson
|
||||
|
||||
create a love meter with the BBC micro:bit.
|
||||
|
||||
### @video td/videos/love-meter-0
|
||||
Create a love meter with the BBC micro:bit.
|
||||
|
||||
## Topic
|
||||
|
||||
|
@ -4,8 +4,6 @@ Create a love meter with the micro:bit
|
||||
|
||||
### ~avatar avatar
|
||||
|
||||
### @video td/videos/love-meter-0
|
||||
|
||||
Welcome! This activity will help you create a love meter with the micro:bit. Let's get started!
|
||||
|
||||
### ~
|
||||
|
@ -45,8 +45,6 @@ input.onPinPressed(TouchPin.P0, () => {
|
||||
|
||||
### Challenge 3
|
||||
|
||||
### @video td/videos/love-meter-3
|
||||
|
||||
**If** the rating is between 4 and 7, display the text "MEDIOCRE!" **else** display the text "MATCHED!"
|
||||
|
||||
```blocks
|
||||
|
@ -1,8 +1,6 @@
|
||||
# lucky 7 blocks lesson
|
||||
|
||||
show a number on the LED screen.
|
||||
|
||||
### @video td/videos/lucky-7-0
|
||||
Show a number on the LED screen.
|
||||
|
||||
## Topic
|
||||
|
||||
|
@ -4,8 +4,6 @@ Show a number on the LED screen.
|
||||
|
||||
### ~avatar avatar
|
||||
|
||||
### @video td/videos/lucky-7-0
|
||||
|
||||
Let's learn how to show the lucky number 7 on the LED screen.
|
||||
|
||||
### ~
|
||||
|
@ -21,8 +21,6 @@ basic.pause(500)
|
||||
|
||||
### Challenge 2
|
||||
|
||||
### @video td/videos/lucky-7-1-2
|
||||
|
||||
What about other multiples of 7? Let's display the next multiple of 7 on the screen!
|
||||
|
||||
```blocks
|
||||
@ -35,5 +33,5 @@ basic.showNumber(14)
|
||||
|
||||
### Challenge 3
|
||||
|
||||
Keep displaying multiples of 7 such as 21 and 28, but don't forget to add pauses between the numbers!
|
||||
Keep displaying multiples of 7 such as 21 and 28...
|
||||
|
||||
|
@ -9,6 +9,7 @@ If (Conditionals)
|
||||
## Quick Links
|
||||
|
||||
* [activity](/lessons/magic-8/activity)
|
||||
* [tutorial](/lessons/magic-8/tutorial)
|
||||
* [challenges](/lessons/magic-8/challenges)
|
||||
* [quiz](/lessons/magic-8/quiz)
|
||||
* [quiz answers](/lessons/magic-8/quiz-answers)
|
||||
|
@ -1,8 +1,6 @@
|
||||
# magic 8 activity
|
||||
|
||||
A fortune teller game on the micro:bit
|
||||
|
||||
Welcome! This tutorial will help you create a magic 8 ball on the micro:bit. Let's get started!
|
||||
Welcome! This activity will help you create a magic 8 ball on the micro:bit. Let's get started!
|
||||
|
||||
Show a string to instruct the user how to play Magic 8! The magic 8 ball can only answer true or false questions.
|
||||
|
||||
@ -32,16 +30,13 @@ input.onGesture(Gesture.Shake, () => {
|
||||
Create a variable of type number called **randomNumber**. Set **randomNumber** to a random number with a limit of 2. Remember the random function in the math library, picks a random number from 0 to the limit, but not including the limit unless it is 0.
|
||||
|
||||
```blocks
|
||||
|
||||
basic.showString("ASK A QUESTION")
|
||||
basic.showNumber(8)
|
||||
input.onGesture(Gesture.Shake, () => {
|
||||
basic.clearScreen()
|
||||
let randomNumber = Math.random(2)
|
||||
let randomNumber = Math.random(3)
|
||||
|
||||
});
|
||||
|
||||
|
||||
```
|
||||
|
||||
Create an if statement for the condition `if randomNumber = 2`. If **randomNumber** is 2, display the string 'Yes'
|
||||
@ -52,7 +47,7 @@ basic.showString("ASK A QUESTION")
|
||||
basic.showNumber(8)
|
||||
input.onGesture(Gesture.Shake, () => {
|
||||
basic.clearScreen();
|
||||
let randomNumber = Math.random(2);
|
||||
let randomNumber = Math.random(3);
|
||||
if (randomNumber == 2) {
|
||||
basic.showString("YES");
|
||||
}
|
||||
@ -68,7 +63,7 @@ basic.showString("ASK A QUESTION")
|
||||
basic.showNumber(8)
|
||||
input.onGesture(Gesture.Shake, () => {
|
||||
basic.clearScreen()
|
||||
let randomNumber = Math.random(2)
|
||||
let randomNumber = Math.random(3)
|
||||
if (randomNumber == 2) {
|
||||
basic.showString("YES")
|
||||
} else if (randomNumber == 1) {
|
||||
@ -84,7 +79,7 @@ basic.showString("ASK A QUESTION")
|
||||
basic.showNumber(8)
|
||||
input.onGesture(Gesture.Shake, () => {
|
||||
basic.clearScreen()
|
||||
let randomNumber = Math.random(2)
|
||||
let randomNumber = Math.random(3)
|
||||
if (randomNumber == 2) {
|
||||
basic.showString("YES")
|
||||
} else if (randomNumber == 1) {
|
||||
@ -106,14 +101,13 @@ basic.showString("ASK A QUESTION")
|
||||
basic.showNumber(8)
|
||||
input.onGesture(Gesture.Shake, () => {
|
||||
basic.clearScreen()
|
||||
let randomNumber = Math.random(2)
|
||||
let randomNumber = Math.random(3)
|
||||
if (randomNumber == 2) {
|
||||
basic.showString("YES")
|
||||
} else if (randomNumber == 1) {
|
||||
basic.showString("NO")
|
||||
} else {
|
||||
basic.showString("I DON'T KNOW")
|
||||
|
||||
}
|
||||
basic.showNumber(8)
|
||||
|
||||
|
@ -26,7 +26,7 @@ input.onGesture(Gesture.Shake, () => {
|
||||
```
|
||||
|
||||
|
||||
**Challenge 1**
|
||||
### Challenge 1
|
||||
|
||||
Now let's increase the number of responses the magic 8 ball can give. How about 5 responses instead? Let's change the limit of `pick random` to 4.
|
||||
|
||||
@ -49,7 +49,7 @@ input.onGesture(Gesture.Shake, () => {
|
||||
})
|
||||
```
|
||||
|
||||
**Challenge 2**
|
||||
### Challenge 2
|
||||
|
||||
Now have the magic 8 ball respond "Try again" if **randomNumber** is 3.
|
||||
|
||||
@ -73,7 +73,7 @@ input.onGesture(Gesture.Shake, () => {
|
||||
})
|
||||
```
|
||||
|
||||
**Challenge 3**
|
||||
### Challenge 3
|
||||
|
||||
Now what about if **randomNumber** is 4? Let's have the magic 8 ball respond "Definitely!".
|
||||
|
||||
|
27
docs/lessons/magic-8/tutorial.md
Normal file
27
docs/lessons/magic-8/tutorial.md
Normal file
@ -0,0 +1,27 @@
|
||||
# Magic 8 tutorial
|
||||
|
||||
Show a string to instruct the user how to play Magic 8! The magic 8 ball can only answer questions with "YES", "NO", or "MAYBE"...
|
||||
|
||||
### Rebuild the game!
|
||||
|
||||
The blocks have been shuffled! Put them back together so that...
|
||||
* show "ASK A QUESTION" on the screen
|
||||
* when the micro:bit is shaken,
|
||||
* generate a random number between 0 and 2.
|
||||
* if the number is `2`, show "YES"
|
||||
* if the number is `1`, show "NO"
|
||||
* otherwise show "MAYBE"...
|
||||
|
||||
```shuffle
|
||||
basic.showString("ASK A QUESTION")
|
||||
input.onGesture(Gesture.Shake, () => {
|
||||
let randomNumber = Math.random(3)
|
||||
if (randomNumber == 2) {
|
||||
basic.showString("YES")
|
||||
} else if (randomNumber == 1) {
|
||||
basic.showString("NO")
|
||||
} else {
|
||||
basic.showString("MAYBE")
|
||||
}
|
||||
})
|
||||
```
|
@ -2,7 +2,7 @@
|
||||
|
||||
show an image that points up when the logo is up.
|
||||
|
||||
### @video td/videos/magic-logo-0
|
||||
|
||||
|
||||
## Topic
|
||||
|
||||
|
@ -4,8 +4,6 @@ Show an image that points up when the logo is up.
|
||||
|
||||
### ~avatar avatar
|
||||
|
||||
### @video td/videos/magic-logo-0
|
||||
|
||||
Welcome! This tutorial will help you display an arrow pointing toward the logo! Let's get started.
|
||||
|
||||
### ~
|
||||
@ -30,8 +28,6 @@ input.onGesture(Gesture.LogoUp, () => {
|
||||
. . # . .
|
||||
`)
|
||||
})
|
||||
|
||||
|
||||
```
|
||||
|
||||
Run your code and try to turn around the micro:bit to see the **logo up** event in action!
|
||||
|
@ -24,8 +24,6 @@ input.onLogoUp(() => {
|
||||
|
||||
How about when the logo is down? We should display an arrow pointing downward!
|
||||
|
||||
### @video td/videos/magic-logo-1-2
|
||||
|
||||
```blocks
|
||||
input.onLogoUp(() => {
|
||||
basic.showLeds(`
|
||||
|
@ -2,8 +2,6 @@
|
||||
|
||||
change the brightness of the BBC micro:bit.
|
||||
|
||||
### @video td/videos/night-light-0
|
||||
|
||||
## Topic
|
||||
|
||||
Set Brightness
|
||||
|
@ -4,8 +4,6 @@ Change the brightness of the micro:bit.
|
||||
|
||||
### ~avatar avatar
|
||||
|
||||
### @video td/videos/night-light-0
|
||||
|
||||
Welcome! This tutorial will teach you how to change the brightness of the micro:bit. Let's get started!
|
||||
|
||||
### ~
|
||||
|
@ -23,7 +23,7 @@ input.onButtonPressed(Button.A, () => {
|
||||
```
|
||||
### Challenge 1
|
||||
|
||||
### @video td/videos/night-light-2
|
||||
|
||||
|
||||
What if we want to turn off all the LEDs? Let's do this by setting the brightness to `0` when button `B` is pressed. Add an event handler with `on button pressed(B)` add `set brightness(0)` to turn off the LEDs.
|
||||
|
||||
@ -46,7 +46,7 @@ input.onButtonPressed(Button.B, () => {
|
||||
```
|
||||
|
||||
|
||||
**Challenge 3**
|
||||
### Challenge 3
|
||||
|
||||
Add an event handler with `on shake` to change the LED brightness back to a `255`.
|
||||
|
||||
|
@ -55,7 +55,7 @@ input.onButtonPressed(Button.B, () => {
|
||||
|
||||
### Challenge 2
|
||||
|
||||
### @video td/videos/offset-image-2
|
||||
|
||||
|
||||
Now we want to make sure that the button does not go off the screen to the right. Add a new line that checks to see if offset = 5 after button `A` is pressed.
|
||||
|
||||
@ -88,7 +88,7 @@ input.onButtonPressed(Button.B, () => {
|
||||
|
||||
* Run the code to see if it works as expected.
|
||||
|
||||
**Challenge 3**
|
||||
### Challenge 3
|
||||
|
||||
Now make sure the image does not go off the left side and if it does, prompt the user to push button `A`.
|
||||
|
||||
|
@ -42,7 +42,7 @@ basic.forever(() => {
|
||||
|
||||
```
|
||||
|
||||
**Challenge 1**
|
||||
### Challenge 1
|
||||
|
||||
What if wanted to show the maximum connectivity of wifi instead of just 1, 3, or 4 bars?
|
||||
|
||||
@ -86,7 +86,7 @@ basic.forever(() => {
|
||||
})
|
||||
```
|
||||
|
||||
**Challenge 2**
|
||||
### Challenge 2
|
||||
|
||||
Let's add an **IF** at the bottom of your code that checks to see if `sum >= to 1200` **and** if `sum <1400`
|
||||
|
||||
@ -135,7 +135,7 @@ basic.forever(() => {
|
||||
})
|
||||
```
|
||||
|
||||
**Challenge 3**
|
||||
### Challenge 3
|
||||
|
||||
Now it's your turn! Be creative and change the Wifi meter images to your own wifi image you're sure will prank your friends by editing the lines that call `showLeds()`.
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
a game against the BBC micro:bit.
|
||||
|
||||
### @video td/videos/rock-paper-scissors-0
|
||||
|
||||
|
||||
## Topic
|
||||
|
||||
|
@ -4,7 +4,7 @@ A classic game against the micro:bit.
|
||||
|
||||
### ~avatar avatar
|
||||
|
||||
### @video td/videos/rock-paper-scissors-0
|
||||
|
||||
|
||||
Welcome! This tutorial will help you create a game of rock paper scissors with the micro:bit. Let's get started!
|
||||
|
||||
|
@ -93,7 +93,7 @@ input.onButtonPressed(Button.A, () => {
|
||||
|
||||
### Challenge 2
|
||||
|
||||
### @video td/videos/rotation-animation-1-and-2
|
||||
|
||||
|
||||
Now that we have the on button pressed condition, let's make the animation stop rotating by setting the rotating global variable to false when button `A` is pressed.
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
clear the screen by pressing button "A".
|
||||
|
||||
### @video td/videos/screen-wipe-0
|
||||
|
||||
|
||||
## Topic
|
||||
|
||||
|
@ -4,7 +4,7 @@ Clear the screen by pressing buttons on the micro:bit
|
||||
|
||||
### ~avatar avatar
|
||||
|
||||
### @video td/videos/screen-wipe-0
|
||||
|
||||
|
||||
This activity will teach how to clear the screen by pressing button A on the micro:bit.
|
||||
|
||||
|
@ -41,7 +41,7 @@ input.onButtonPressed(Button.A, () => {
|
||||
|
||||
```
|
||||
|
||||
**Challenge 1**
|
||||
### Challenge 1
|
||||
|
||||
Create an event handler for Button B.
|
||||
|
||||
@ -83,9 +83,9 @@ input.onButtonPressed(Button.B, () => {
|
||||
|
||||
```
|
||||
|
||||
**Challenge 2**
|
||||
### Challenge 2
|
||||
|
||||
|
||||
### @video td/videos/screen-wipe-2
|
||||
|
||||
Replay the animation when the "B" button is pressed placing the `show LEDs` block on the canvas.
|
||||
|
||||
@ -155,7 +155,7 @@ basic.showLeds(`
|
||||
```
|
||||
|
||||
|
||||
**Challenge 3**
|
||||
### Challenge 3
|
||||
|
||||
Show an animation that scrolls back up when you press button "B".
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
design a blinking image lesson #docs
|
||||
|
||||
### @video td/videos/smiley-0
|
||||
|
||||
|
||||
## Topic
|
||||
|
||||
|
@ -4,7 +4,7 @@ Learn to design a blinking image.
|
||||
|
||||
### ~avatar avatar
|
||||
|
||||
### @video td/videos/smiley-0
|
||||
|
||||
|
||||
Welcome! This tutorial will help you make a smiley face blink. Let's get started!
|
||||
|
||||
|
@ -54,7 +54,7 @@ input.onButtonPressed(Button.A, () => {
|
||||
|
||||
### Challenge 2
|
||||
|
||||
### @video td/videos/smiley-2
|
||||
|
||||
|
||||
Now, we want to show a frowny face when this button is pressed. Let's show the LEDs.
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
design a blinking rectangle animation.
|
||||
|
||||
### @video td/videos/snowflake-fall-0
|
||||
|
||||
|
||||
## Topic
|
||||
|
||||
|
@ -4,7 +4,7 @@ design a blinking rectangle animation.
|
||||
|
||||
### ~avatar avatar
|
||||
|
||||
### @video td/videos/snowflake-fall-0
|
||||
|
||||
|
||||
Welcome! This tutorial will teach how design a **snowfall animation**. Let's get started!
|
||||
|
||||
|
@ -27,7 +27,7 @@ basic.forever(() => {
|
||||
|
||||
### Challenge 1
|
||||
|
||||
### @video td/videos/snowflake-fall-1
|
||||
|
||||
|
||||
To finalize our snowflake fall, let's add a different snowflake pattern.
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
code a speed game by declaring Booleans on the BBC micro:bit.
|
||||
|
||||
### @video td/videos/speed-button-3
|
||||
|
||||
|
||||
## Topic
|
||||
|
||||
|
@ -63,7 +63,7 @@ input.onButtonPressed(Button.A, () => {
|
||||
|
||||
### Challenge 3
|
||||
|
||||
### @video td/videos/speed-button-3
|
||||
|
||||
|
||||
Now let's display if the user won or lost. To do so, we need to check the status of `fastPress` when the game is finished, and then show the correct message.
|
||||
|
||||
@ -91,7 +91,7 @@ input.onButtonPressed(Button.A, () => {
|
||||
|
||||
### Challenge 4
|
||||
|
||||
### @video td/videos/speed-button-4
|
||||
|
||||
|
||||
Modify the code to change the difficulty level. Increasing the time will make it easier, while decreasing the time will make it harder. For example, changing the 5000 milliseconds to 6000 milliseconds will make the difficulty easier.
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
a spin the BBC micro:bit game with the input on shake.
|
||||
|
||||
### @video td/videos/spinner-0
|
||||
|
||||
|
||||
## Topic
|
||||
|
||||
|
@ -4,7 +4,7 @@ Create an arrow that randomly points to a player.
|
||||
|
||||
### ~avatar avatar
|
||||
|
||||
### @video td/videos/spinner-0
|
||||
|
||||
|
||||
### ~
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
Learn how to create a blinking LED script.
|
||||
|
||||
### @video td/videos/strobe-light-0
|
||||
|
||||
|
||||
## Topic
|
||||
|
||||
|
@ -4,7 +4,7 @@ Develop shapes with a for loop.
|
||||
|
||||
### ~avatar avatar
|
||||
|
||||
### @video td/videos/strobe-light-0
|
||||
|
||||
|
||||
Welcome! This guided tutorial will teach how to develop shapes with a for loop. Let's get started!
|
||||
|
||||
|
@ -19,7 +19,7 @@ for (let i = 0; i < 5; i++) {
|
||||
|
||||
### Challenge 1
|
||||
|
||||
### @video td/videos/strobe-light-1
|
||||
|
||||
|
||||
Make the LEDs light up faster by changing the **pause** from 200 to 100 milliseconds:
|
||||
|
||||
@ -36,7 +36,7 @@ for (let i = 0; i < 5; i++) {
|
||||
|
||||
### Challenge 2
|
||||
|
||||
### @video td/videos/strobe-light-2
|
||||
|
||||
|
||||
Make the board light up by rows instead of by columns by swapping the `i` and `j` variables in `plot(i, j)`.
|
||||
|
||||
@ -53,7 +53,7 @@ for (let i = 0; i < 5; i++) {
|
||||
|
||||
### Challenge 3
|
||||
|
||||
### @video td/videos/strobe-light-ultimate
|
||||
|
||||
|
||||
Now that all the LEDs are lit up, let's make them turn off by reversing the strobe light pattern! You can use `unplot` to turn off a single LED.
|
||||
|
||||
|
@ -22,7 +22,7 @@ The lesson plan maps to the Progressions Pathways, Computing Curriculum, and Qui
|
||||
|
||||
Expand your knowledge of programming with lots of great step-by-step activities. All the lessons come with instructions that will drive the students to a complete, functional code. These activities are very directive to make sure that students keep progressing. When the activities are over, additional challenges are given to advance code through printed instructions. An activity contains supporting videos as shown with the [blink activity](/lessons/blink/activity).
|
||||
|
||||
### @video td/videos/blink-0
|
||||
|
||||
|
||||
3) Quiz
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
create a love meter with the BBC micro:bit.
|
||||
|
||||
### @video td/videos/truth-or-dare-0
|
||||
|
||||
|
||||
## Topic
|
||||
|
||||
@ -11,6 +11,7 @@ If (Conditionals)
|
||||
## Quick Links
|
||||
|
||||
* [activity](/lessons/truth-or-dare/activity)
|
||||
* [tutorial](/lessons/truth-or-dare/tutorial)
|
||||
* [challenges](/lessons/truth-or-dare/challenges)
|
||||
* [quiz](/lessons/truth-or-dare/quiz)
|
||||
* [quiz answers](/lessons/truth-or-dare/quiz-answers)
|
||||
|
@ -4,7 +4,7 @@ A multi-player game that forces each player to reveal a secret or something funn
|
||||
|
||||
### ~avatar avatar
|
||||
|
||||
### @video td/videos/truth-or-dare-0
|
||||
|
||||
|
||||
Welcome! This tutorial will teach how to program a game of truth or dare on the micro:bit. Let's get started!
|
||||
|
||||
|
63
docs/lessons/truth-or-dare/tutorial.md
Normal file
63
docs/lessons/truth-or-dare/tutorial.md
Normal file
@ -0,0 +1,63 @@
|
||||
# truth or dare tutorial
|
||||
|
||||
### ~avatar avatar
|
||||
|
||||
|
||||
|
||||
The *Truth or dare!* game works as follows: a player spins the BBC micro:bit on the table.
|
||||
When the micro:bit stops spinning, the player pointed by the arrow (displayed on screen) must press the button "A"
|
||||
to see if she has to provide a *truth* or a *dare*.
|
||||
|
||||
### ~
|
||||
|
||||
### Rebuild the game!
|
||||
|
||||
The blocks have been shuffled! Put them back together so that...
|
||||
* an up arrow is displayed when the micro:bit is powered on.
|
||||
* on button `A` is pressed,
|
||||
* randomly display "TRUTH" or "DARE" on the screen
|
||||
* show the up arrow again.
|
||||
|
||||
```shuffle
|
||||
basic.showLeds(`
|
||||
. . # . .
|
||||
. # # # .
|
||||
# # # # #
|
||||
. . # . .
|
||||
. . # . .
|
||||
`)
|
||||
input.onButtonPressed(Button.A, () => {
|
||||
let random = Math.random(2)
|
||||
if (random == 0) {
|
||||
basic.showString("TRUTH")
|
||||
} else {
|
||||
basic.showString("DARE")
|
||||
}
|
||||
basic.showLeds(`
|
||||
. . # . .
|
||||
. # # # .
|
||||
# # # # #
|
||||
. . # . .
|
||||
. . # . .
|
||||
`)
|
||||
})
|
||||
```
|
||||
### Hints and tips
|
||||
Cut out these documentation cards to help you!
|
||||
|
||||
```cards
|
||||
basic.showLeds(`
|
||||
. . # . .
|
||||
. # # # .
|
||||
# . # . #
|
||||
. . # . .
|
||||
. . # . .
|
||||
`);
|
||||
Math.random(2);
|
||||
basic.showString("TRUTH");
|
||||
if (true) {} else {}
|
||||
"TRUTH";
|
||||
0;
|
||||
input.onButtonPressed(Button.A, () => {});
|
||||
```
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
measure the acceleration on the micro:bit in the "z" direction.
|
||||
|
||||
### @video td/videos/zoomer-0
|
||||
|
||||
|
||||
## Topic
|
||||
|
||||
|
@ -4,7 +4,7 @@ Measure the acceleration on the micro:bit in the "z" direction.
|
||||
|
||||
### ~avatar avatar
|
||||
|
||||
### @video td/videos/zoomer-0
|
||||
|
||||
|
||||
### ~
|
||||
|
||||
|
@ -14,7 +14,7 @@ basic.forever(() => {
|
||||
```
|
||||
### Challenge 1
|
||||
|
||||
### @video td/videos/zoomer-2
|
||||
|
||||
|
||||
We'll modify the code to display the `x` acceleration if the `A` button is pressed. For that, we need to store `acceleration (x)` in a new variable `ax` and use a `button (A) is pressed` to detect if the button is pressed.
|
||||
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user