Compare commits

..

28 Commits

Author SHA1 Message Date
d3294ee99e 0.2.107 2016-05-10 11:34:59 -07:00
00d23f8437 updated windows 10 app 2016-05-10 11:34:41 -07:00
1c6c749dad 0.2.106 2016-05-10 11:08:46 -07:00
2803c00814 Bump pxt-core to 0.2.121 2016-05-10 11:08:44 -07:00
f150d93070 removing old logos 2016-05-10 10:51:47 -07:00
7f284b2a57 0.2.105 2016-05-10 10:44:52 -07:00
0e5c30ec7c updated logo 2016-05-10 10:44:40 -07:00
2cc6f864a8 remove logging 2016-05-10 10:26:36 -07:00
d428a2cd1f Merge branch 'master' of https://github.com/Microsoft/pxt-microbit 2016-05-10 10:15:25 -07:00
47f9362e5f read radio values 2016-05-10 10:14:51 -07:00
38b197bc03 0.2.104 2016-05-10 19:03:50 +02:00
9a404854e7 Rename target 2016-05-10 19:03:31 +02:00
d17a8de72d Use shorter domain name 2016-05-10 19:01:36 +02:00
9d1f2e024b missing shim 2016-05-10 09:28:05 -07:00
e7d8559fe3 Cache test scripts 2016-05-10 13:18:35 +02:00
fcfdbcc7e4 moving block down category 2016-05-09 23:03:42 -07:00
5884231399 null terminated name 2016-05-09 23:01:20 -07:00
e8887f5904 radio blocks to read/stream value pairs 2016-05-09 22:55:37 -07:00
07e8610e5d 0.2.103 2016-05-09 14:13:15 -07:00
37fb907f04 Bump pxt-core to 0.2.120 2016-05-09 14:13:13 -07:00
13f42f5892 added various tutorials 2016-05-09 10:32:02 -07:00
5fcf9165ea magic 8 tutorial 2016-05-09 09:45:57 -07:00
b33d0ba470 updated strings 2016-05-06 14:17:39 -07:00
b9f66c5c6b 0.2.102 2016-05-06 11:31:55 -07:00
9848409283 Bump pxt-core to 0.2.117 2016-05-06 11:31:53 -07:00
ce16e64660 added shuffled lessons 2016-05-06 11:31:25 -07:00
4d056e0c23 lessons updates 2016-05-06 09:32:29 -07:00
70b2827cf0 fixing various lessons menu 2016-05-06 09:28:26 -07:00
64 changed files with 481 additions and 339 deletions

View File

@ -13,4 +13,5 @@ notifications:
cache: cache:
directories: directories:
- node_modules - node_modules
- built/cache

View File

@ -12,7 +12,7 @@ Please follow instructions at https://github.com/Microsoft/pxt#running-a-target-
## Universal Windows App ## Universal Windows App
The Windows 10 app is a [Universal Windows Hosted Web App](https://microsoftedge.github.io/WebAppsDocs/en-US/win10/CreateHWA.htm) 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. that wraps m.pxt.io and provides additional features.
### Sideloading ### Sideloading

View File

@ -5,9 +5,6 @@
### ~column ### ~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 ## Beginner
* [Beautiful Image](/lessons/beautiful-image), show a beautiful image with show LEDs * [Beautiful Image](/lessons/beautiful-image), show a beautiful image with show LEDs
@ -60,6 +57,9 @@
* [Telegraph](/lessons/telegraph), play the telegraph game between two BBC micro:bits * [Telegraph](/lessons/telegraph), play the telegraph game between two BBC micro:bits
* [Pogo](/lessons/pogo), create a pogo game to test your jumping abilities * [Pogo](/lessons/pogo), create a pogo game to test your jumping abilities
## Science
* [Charting](/lessons/charting), measure and chart acceleration
## Advanced ## Advanced
* [Prank WiFi](/lessons/prank-wifi), create fake WiFi to trick your friends * [Prank WiFi](/lessons/prank-wifi), create fake WiFi to trick your friends
* [Speed Button](/lessons/speed-button), code a speed game with running time * [Speed Button](/lessons/speed-button), code a speed game with running time
@ -70,5 +70,4 @@
### @section full ### @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)

View File

@ -21,7 +21,6 @@ basic.showString("ASK ME A QUESTION")
input.onButtonPressed(Button.A, () => { input.onButtonPressed(Button.A, () => {
basic.showString("Yes") basic.showString("Yes")
}) })
``` ```
* `Run` the code to see if it works as expected. * `Run` the code to see if it works as expected.
@ -45,7 +44,6 @@ input.onButtonPressed(Button.B, () => {
* `Run` the code to see if it works as expected. * `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 `MAYBE`.
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`.

View File

@ -12,7 +12,6 @@ Answers may vary. This is a function that will show a string on the LED screen o
```blocks ```blocks
basic.showString("Y") basic.showString("Y")
``` ```
![](/static/mb/lessons/answering-machine-0.png) ![](/static/mb/lessons/answering-machine-0.png)
@ -22,7 +21,6 @@ basic.showString("Y")
```blocks ```blocks
basic.showString("Hi") basic.showString("Hi")
``` ```
![](/static/mb/lessons/answering-machine-1.png) ![](/static/mb/lessons/answering-machine-1.png)
@ -35,7 +33,6 @@ basic.showString("Hi")
```blocks ```blocks
basic.showString("Z") basic.showString("Z")
``` ```

View File

@ -39,9 +39,9 @@ basic.showLeds(`
`) `)
``` ```
* *Run* your code to see if it works as expected. * Does your code work as expected?
### Challenge 2 ### 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?

View File

@ -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 ## 1. Write the code that will store the global variable named 'action' and returns a random number between 0 and 2
<br/> ```blocks
let action = Math.random(3)
```
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 ## 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) { if (action == 0) {
basic.showString("PUSH A", 150) 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 ## 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, () => { input.onButtonPressed(Button.A, () => {
let action = Math.random(3)
if (action == 0) { if (action == 0) {
game.addScore(1) 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 ## 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) { if (action == 1) {
basic.showString("LOGO DOWN", 150) 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 ## 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(() => { input.onLogoDown(() => {
let action = Math.random(3)
if (action == 1) { if (action == 1) {
game.addScore(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 ## 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) { if (action == 2) {
basic.showString("SHAKE", 150) 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 ## 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(() => { input.onLogoDown(() => {
let action = Math.random(3)
if (action == 1) { if (action == 1) {
game.addScore(1) game.addScore(1)
} }
}) })
``` ```

View File

@ -11,6 +11,7 @@ Variables
## Quick Links ## Quick Links
* [activity](/lessons/catch-the-egg-game/activity) * [activity](/lessons/catch-the-egg-game/activity)
* [tutorial](/lessons/catch-the-egg-game/tutorial)
* [quiz](/lessons/catch-the-egg-game/quiz) * [quiz](/lessons/catch-the-egg-game/quiz)
* [quiz answers](/lessons/catch-the-egg-game/quiz-answers) * [quiz answers](/lessons/catch-the-egg-game/quiz-answers)
@ -20,18 +21,21 @@ Learn how to create a catch the egg game game with **plot**, `led->plot` , **unp
## Documentation ## Documentation
* **variables** : [read more...](/reference/variables/var) ```cards
* **forever** : [read more...](/reference/basic/forever) let x = 2;
* **unplot** : [read more...](/reference/led/unplot) led.unplot(0, 0);
* **plot** : [read more...](/reference/led/plot) basic.forever(() => {});
* **if** : [read more...](/reference/logic/if) x += 1;
* **acceleration** : [read more...](/reference/input/acceleration) led.plot(0, 0);
* **math minimum number** : [read more...](/reference/math) basic.pause(300);
* **math maximum number** : [read more...](/reference/math) input.acceleration(Dimension.X);
* **math random number** : [read more...](/reference/math) Math.min(0,0);
* **math modulus** : [read more...](/reference/math) Math.max(0,1);
* **show number** : [read more...](/reference/basic/show-number) Math.random(5);
* **pause** : [read more...](/reference/basic/pause) game.addScore(1);
game.score();
game.removeLife(1);
```
## Objectives ## Objectives

View File

@ -1,7 +1,5 @@
# catch the egg game challenges # catch the egg game challenges
Coding challenges for catch the egg game.
## Before we get started ## Before we get started
Your starting code should look like this: Your starting code should look like this:

View 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)
})
```

View File

@ -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 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. * 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. Finally, we want images to be displayed with sounds `on pin pressed`. Add `show LEDs` blocks under `on pin pressed` P1 and P2.

View File

@ -42,7 +42,7 @@ input.onButtonPressed(Button.B, () => {
* `Run` the code to see if it works as expected. * `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`. 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`.

View File

@ -9,6 +9,7 @@ Acceleration
## Quick Links ## Quick Links
* [activity](/lessons/glowing-pendulum/activity) * [activity](/lessons/glowing-pendulum/activity)
* [tutorial](/lessons/glowing-pendulum/tutorial)
* [challenges](/lessons/glowing-pendulum/challenges) * [challenges](/lessons/glowing-pendulum/challenges)
* [quiz](/lessons/glowing-pendulum/quiz) * [quiz](/lessons/glowing-pendulum/quiz)
* [quiz answers](/lessons/glowing-pendulum/quiz-answers) * [quiz answers](/lessons/glowing-pendulum/quiz-answers)

View File

@ -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! 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. Create a **forever** loop that will constantly display the appropriate brightness on the LED display.
```blocks ```blocks
basic.showLeds(`
# # # # #
# # # # #
# # # # #
# # # # #
# # # # #
`)
basic.forever(() => { 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. 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 ```blocks
basic.showLeds(`
# # # # #
# # # # #
# # # # #
# # # # #
# # # # #
`)
basic.forever(() => { basic.forever(() => {
let acceleration = input.acceleration(Dimension.Y); 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 ```blocks
let acceleration = 0; basic.showLeds(`
# # # # #
# # # # #
# # # # #
# # # # #
# # # # #
`)
basic.forever(() => { basic.forever(() => {
acceleration = input.acceleration(Dimension.Y); let acceleration = input.acceleration(Dimension.Y);
acceleration = Math.abs(acceleration) 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. 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 ```blocks
basic.showLeds(`
# # # # #
# # # # #
# # # # #
# # # # #
# # # # #
`)
basic.forever(() => { basic.forever(() => {
let acceleration = input.acceleration(Dimension.Y); let acceleration = input.acceleration(Dimension.Y);
acceleration = Math.abs(acceleration); 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. Now let's use our acceleration value to set the brightness on the micro:bit.
```blocks ```blocks
basic.showLeds(`
# # # # #
# # # # #
# # # # #
# # # # #
# # # # #
`)
basic.forever(() => { basic.forever(() => {
let acceleration = input.acceleration(Dimension.Y); let acceleration = input.acceleration(Dimension.Y);
acceleration = Math.abs(acceleration); acceleration = Math.abs(acceleration);
acceleration = acceleration / 4; acceleration = acceleration / 4;
led.setBrightness(acceleration) 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 ### ~avatar avatar

View File

@ -24,13 +24,13 @@ basic.forever(() => {
``` ```
**Challenge 1** ### Challenge 1
![](/static/mb/lessons/glowing-pendulum-0.jpg) ![](/static/mb/lessons/glowing-pendulum-0.jpg)
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. 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? 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?

View 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)
});
```

View File

@ -11,6 +11,7 @@ Math - Pick Random
## Quick links ## Quick links
* [activity](/lessons/guess-the-number/activity) * [activity](/lessons/guess-the-number/activity)
* [tutorial](/lessons/guess-the-number/tutorial)
* [challenges](/lessons/guess-the-number/challenges) * [challenges](/lessons/guess-the-number/challenges)
* [quiz](/lessons/guess-the-number/quiz) * [quiz](/lessons/guess-the-number/quiz)
* [quiz answers](/lessons/guess-the-number/quiz-answers) * [quiz answers](/lessons/guess-the-number/quiz-answers)

View File

@ -19,12 +19,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 ```blocks
input.onButtonPressed(Button.A, () => { input.onButtonPressed(Button.A, () => {
let x = Math.random(9) let x = Math.random(10)
}) })
``` ```
@ -34,7 +33,7 @@ Show the random number on the screen.
```blocks ```blocks
input.onButtonPressed(Button.A, () => { input.onButtonPressed(Button.A, () => {
let x = Math.random(9) let x = Math.random(10)
basic.showNumber(x) basic.showNumber(x)
}) })

View File

@ -0,0 +1,25 @@
# guess the number tutorial
### ~avatar avatar
### @video td/videos/guess-the-number-0
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)
})
```

View File

@ -35,5 +35,5 @@ basic.showNumber(14)
### Challenge 3 ### 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...

View File

@ -9,6 +9,7 @@ If (Conditionals)
## Quick Links ## Quick Links
* [activity](/lessons/magic-8/activity) * [activity](/lessons/magic-8/activity)
* [tutorial](/lessons/magic-8/tutorial)
* [challenges](/lessons/magic-8/challenges) * [challenges](/lessons/magic-8/challenges)
* [quiz](/lessons/magic-8/quiz) * [quiz](/lessons/magic-8/quiz)
* [quiz answers](/lessons/magic-8/quiz-answers) * [quiz answers](/lessons/magic-8/quiz-answers)

View File

@ -1,8 +1,6 @@
# magic 8 activity # magic 8 activity
A fortune teller game on the micro:bit Welcome! This activity will help you create a magic 8 ball on the micro:bit. Let's get started!
Welcome! This tutorial 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. 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. 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 ```blocks
basic.showString("ASK A QUESTION") basic.showString("ASK A QUESTION")
basic.showNumber(8) basic.showNumber(8)
input.onGesture(Gesture.Shake, () => { input.onGesture(Gesture.Shake, () => {
basic.clearScreen() 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' 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) basic.showNumber(8)
input.onGesture(Gesture.Shake, () => { input.onGesture(Gesture.Shake, () => {
basic.clearScreen(); basic.clearScreen();
let randomNumber = Math.random(2); let randomNumber = Math.random(3);
if (randomNumber == 2) { if (randomNumber == 2) {
basic.showString("YES"); basic.showString("YES");
} }
@ -68,7 +63,7 @@ basic.showString("ASK A QUESTION")
basic.showNumber(8) basic.showNumber(8)
input.onGesture(Gesture.Shake, () => { input.onGesture(Gesture.Shake, () => {
basic.clearScreen() basic.clearScreen()
let randomNumber = Math.random(2) let randomNumber = Math.random(3)
if (randomNumber == 2) { if (randomNumber == 2) {
basic.showString("YES") basic.showString("YES")
} else if (randomNumber == 1) { } else if (randomNumber == 1) {
@ -84,7 +79,7 @@ basic.showString("ASK A QUESTION")
basic.showNumber(8) basic.showNumber(8)
input.onGesture(Gesture.Shake, () => { input.onGesture(Gesture.Shake, () => {
basic.clearScreen() basic.clearScreen()
let randomNumber = Math.random(2) let randomNumber = Math.random(3)
if (randomNumber == 2) { if (randomNumber == 2) {
basic.showString("YES") basic.showString("YES")
} else if (randomNumber == 1) { } else if (randomNumber == 1) {
@ -106,14 +101,13 @@ basic.showString("ASK A QUESTION")
basic.showNumber(8) basic.showNumber(8)
input.onGesture(Gesture.Shake, () => { input.onGesture(Gesture.Shake, () => {
basic.clearScreen() basic.clearScreen()
let randomNumber = Math.random(2) let randomNumber = Math.random(3)
if (randomNumber == 2) { if (randomNumber == 2) {
basic.showString("YES") basic.showString("YES")
} else if (randomNumber == 1) { } else if (randomNumber == 1) {
basic.showString("NO") basic.showString("NO")
} else { } else {
basic.showString("I DON'T KNOW") basic.showString("I DON'T KNOW")
} }
basic.showNumber(8) basic.showNumber(8)

View File

@ -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. 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. 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!". Now what about if **randomNumber** is 4? Let's have the magic 8 ball respond "Definitely!".

View 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")
}
})
```

View File

@ -30,8 +30,6 @@ input.onGesture(Gesture.LogoUp, () => {
. . # . . . . # . .
`) `)
}) })
``` ```
Run your code and try to turn around the micro:bit to see the **logo up** event in action! Run your code and try to turn around the micro:bit to see the **logo up** event in action!

View File

@ -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`. Add an event handler with `on shake` to change the LED brightness back to a `255`.

View File

@ -88,7 +88,7 @@ input.onButtonPressed(Button.B, () => {
* Run the code to see if it works as expected. * 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`. Now make sure the image does not go off the left side and if it does, prompt the user to push button `A`.

View File

@ -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? 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` 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()`. 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()`.

View File

@ -41,7 +41,7 @@ input.onButtonPressed(Button.A, () => {
``` ```
**Challenge 1** ### Challenge 1
Create an event handler for Button B. Create an event handler for Button B.
@ -83,7 +83,7 @@ input.onButtonPressed(Button.B, () => {
``` ```
**Challenge 2** ### Challenge 2
### @video td/videos/screen-wipe-2 ### @video td/videos/screen-wipe-2
@ -155,7 +155,7 @@ basic.showLeds(`
``` ```
**Challenge 3** ### Challenge 3
Show an animation that scrolls back up when you press button "B". Show an animation that scrolls back up when you press button "B".

View File

@ -11,6 +11,7 @@ If (Conditionals)
## Quick Links ## Quick Links
* [activity](/lessons/truth-or-dare/activity) * [activity](/lessons/truth-or-dare/activity)
* [tutorial](/lessons/truth-or-dare/tutorial)
* [challenges](/lessons/truth-or-dare/challenges) * [challenges](/lessons/truth-or-dare/challenges)
* [quiz](/lessons/truth-or-dare/quiz) * [quiz](/lessons/truth-or-dare/quiz)
* [quiz answers](/lessons/truth-or-dare/quiz-answers) * [quiz answers](/lessons/truth-or-dare/quiz-answers)

View File

@ -0,0 +1,63 @@
# truth or dare tutorial
### ~avatar avatar
### @video td/videos/truth-or-dare-0
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, () => {});
```

View File

@ -1 +0,0 @@
<svg xmlns:svg='http://www.w3.org/2000/svg' xmlns='http://www.w3.org/2000/svg' width='193.50101' height='32.755001' version='1.1'><g transform='translate(-1.3555,0.63251107)'><title>micro:bit logo</title><path d='m 38.7185,20.11349 c -1.677,0 -3.035,-1.364 -3.035,-3.042 0,-1.678 1.357,-3.038 3.035,-3.038 1.684,0 3.039,1.36 3.039,3.038 0,1.678 -1.355,3.042 -3.039,3.042 m -22.311,-6.077 c -1.677,0 -3.042,1.357 -3.042,3.035 0,1.678 1.363,3.042 3.042,3.042 1.674,0 3.036,-1.364 3.036,-3.042 0,-1.678 -1.363,-3.035 -3.036,-3.035 m -0.003,-5.99 22.576,0 c 4.979,0 9.027,4.047 9.027,9.027 0,4.979 -4.049,9.031 -9.027,9.031 l -22.576,0 c -4.977,0 -9.03,-4.053 -9.03,-9.031 -0.001,-4.98 4.053,-9.027 9.03,-9.027 m 22.576,24.076 c 8.299,0 15.047,-6.75 15.047,-15.049 0,-8.299 -6.748,-15.051 -15.047,-15.051 l -22.576,0 c -8.299,0 -15.049,6.752 -15.049,15.051 0,8.299 6.75,15.049 15.049,15.049 l 22.576,0 m 112.099,-21.953 c 0,-1.453 -1.195,-2.633 -2.662,-2.633 -1.455,0 -2.639,1.18 -2.639,2.633 0,1.471 1.184,2.672 2.639,2.672 1.466,0 2.662,-1.202 2.662,-2.672 z m -66.786,5.445 c 0,-4.764 -2.893,-8.093 -7.031,-8.093 -2.027,0 -3.814,0.851 -5.223,2.47 -1.467,-1.661 -3.152,-2.47 -5.127,-2.47 -4.162,0 -7.066,3.329 -7.066,8.093 l 0,10.466 3.812,0 0,-10.644 c 0,-2.416 1.336,-4.104 3.254,-4.104 1.617,0 3.25,1.409 3.25,4.104 l 0,10.645 3.848,0 0,-10.645 c 0,-2.416 1.338,-4.104 3.252,-4.104 1.863,0 3.217,1.727 3.217,4.104 l 0,10.645 3.814,0 0,-10.467 z m 6.953,-7.632 -3.846,0 0,18.099 3.846,0 0,-18.099 z m 0.569,-5.128 c 0,-1.377 -1.096,-2.454 -2.492,-2.454 -1.4,0 -2.453,1.054 -2.453,2.454 0,1.398 1.078,2.494 2.453,2.494 1.375,0 2.492,-1.117 2.492,-2.494 z m 18.328,20.914 0.576,-0.521 -2.828,-2.658 -0.488,0.455 c -1.252,1.149 -2.504,1.686 -3.945,1.686 -3.064,0 -5.557,-2.557 -5.557,-5.699 0,-3.121 2.492,-5.66 5.557,-5.66 1.432,0 2.646,0.521 3.949,1.693 l 0.512,0.46 2.748,-2.802 -0.49,-0.502 c -1.754,-1.793 -4.016,-2.696 -6.719,-2.696 -2.459,0 -4.869,1.022 -6.605,2.798 -1.738,1.734 -2.691,4.119 -2.691,6.709 0,2.596 0.953,4.979 2.684,6.705 1.771,1.811 4.117,2.811 6.615,2.811 2.401,-0.003 4.647,-0.937 6.682,-2.779 z m 7.25,-6.947 c 0,-3.322 1.145,-4.686 4.217,-5.029 l 0.641,-0.07 0,-3.797 -0.777,0.058 c -5.629,0.458 -8.143,3.247 -8.143,9.048 l 0,9.051 4.062,0 0,-9.261 0,0 z m 21.998,6.923 c 1.762,-1.756 2.729,-4.146 2.729,-6.715 0,-2.565 -0.967,-4.951 -2.723,-6.702 -1.77,-1.809 -4.105,-2.806 -6.576,-2.806 -2.492,0 -4.84,0.997 -6.613,2.806 -1.752,1.792 -2.721,4.174 -2.721,6.702 0,2.53 0.969,4.916 2.721,6.707 1.771,1.81 4.121,2.808 6.613,2.808 2.472,0 4.808,-0.998 6.57,-2.8 z m -1.229,-6.714 c 0,3.18 -2.361,5.665 -5.377,5.665 -2.945,0 -5.346,-2.541 -5.346,-5.665 0,-3.137 2.398,-5.695 5.346,-5.695 2.963,-0.002 5.377,2.558 5.377,5.695 z m 12.917,6.418 c 0,-1.468 -1.195,-2.667 -2.662,-2.667 -1.455,0 -2.639,1.199 -2.639,2.667 0,1.453 1.184,2.632 2.639,2.632 1.466,0 2.662,-1.179 2.662,-2.632 z m 19.507,0.296 c 1.76,-1.756 2.73,-4.146 2.73,-6.715 0,-2.528 -0.973,-4.911 -2.729,-6.702 -1.746,-1.787 -4.08,-2.77 -6.574,-2.77 -2.035,0 -3.84,0.572 -5.484,1.744 l 0,-9.934 -3.816,0 0.008,15.582 c -0.037,0.411 -0.037,0.821 -0.037,1.198 0,6.119 3.836,10.396 9.33,10.396 2.475,0.001 4.807,-0.997 6.572,-2.799 z m -1.013,-6.677 c 0,3.123 -2.494,5.66 -5.559,5.66 -3.115,0 -5.557,-2.484 -5.557,-5.66 0,-3.143 2.494,-5.698 5.557,-5.698 3.065,0 5.559,2.556 5.559,5.698 z m 10.881,-9.085 -3.846,0 0,18.099 3.846,0 0,-18.099 z m 0.572,-5.128 c 0,-1.377 -1.098,-2.454 -2.492,-2.454 -1.4,0 -2.457,1.054 -2.457,2.454 0,1.398 1.076,2.494 2.457,2.494 1.373,0 2.492,-1.117 2.492,-2.494 z m 13.83,19.759 -0.619,-0.089 c -2.855,-0.409 -4.133,-2.104 -4.133,-5.495 l 0,-5.126 4.752,0 0,-3.674 -4.752,0 0,-4.006 -3.887,0 0,4.006 -1.662,0 0,3.674 1.662,0 0,4.525 c 0,6.215 2.113,8.932 7.783,10.029 l 0.855,0.164 0,-4.008 0.001,0 z' style='fill:#ffffff' /></g></svg>

Before

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 KiB

View File

@ -1 +0,0 @@
<svg xmlns:svg='http://www.w3.org/2000/svg' xmlns='http://www.w3.org/2000/svg' width='193.50101' height='32.755001' version='1.1'><g transform='translate(-1.3555,0.63251107)'><title>micro:bit logo</title><path d='m 38.7185,20.11349 c -1.677,0 -3.035,-1.364 -3.035,-3.042 0,-1.678 1.357,-3.038 3.035,-3.038 1.684,0 3.039,1.36 3.039,3.038 0,1.678 -1.355,3.042 -3.039,3.042 m -22.311,-6.077 c -1.677,0 -3.042,1.357 -3.042,3.035 0,1.678 1.363,3.042 3.042,3.042 1.674,0 3.036,-1.364 3.036,-3.042 0,-1.678 -1.363,-3.035 -3.036,-3.035 m -0.003,-5.99 22.576,0 c 4.979,0 9.027,4.047 9.027,9.027 0,4.979 -4.049,9.031 -9.027,9.031 l -22.576,0 c -4.977,0 -9.03,-4.053 -9.03,-9.031 -0.001,-4.98 4.053,-9.027 9.03,-9.027 m 22.576,24.076 c 8.299,0 15.047,-6.75 15.047,-15.049 0,-8.299 -6.748,-15.051 -15.047,-15.051 l -22.576,0 c -8.299,0 -15.049,6.752 -15.049,15.051 0,8.299 6.75,15.049 15.049,15.049 l 22.576,0 m 112.099,-21.953 c 0,-1.453 -1.195,-2.633 -2.662,-2.633 -1.455,0 -2.639,1.18 -2.639,2.633 0,1.471 1.184,2.672 2.639,2.672 1.466,0 2.662,-1.202 2.662,-2.672 z m -66.786,5.445 c 0,-4.764 -2.893,-8.093 -7.031,-8.093 -2.027,0 -3.814,0.851 -5.223,2.47 -1.467,-1.661 -3.152,-2.47 -5.127,-2.47 -4.162,0 -7.066,3.329 -7.066,8.093 l 0,10.466 3.812,0 0,-10.644 c 0,-2.416 1.336,-4.104 3.254,-4.104 1.617,0 3.25,1.409 3.25,4.104 l 0,10.645 3.848,0 0,-10.645 c 0,-2.416 1.338,-4.104 3.252,-4.104 1.863,0 3.217,1.727 3.217,4.104 l 0,10.645 3.814,0 0,-10.467 z m 6.953,-7.632 -3.846,0 0,18.099 3.846,0 0,-18.099 z m 0.569,-5.128 c 0,-1.377 -1.096,-2.454 -2.492,-2.454 -1.4,0 -2.453,1.054 -2.453,2.454 0,1.398 1.078,2.494 2.453,2.494 1.375,0 2.492,-1.117 2.492,-2.494 z m 18.328,20.914 0.576,-0.521 -2.828,-2.658 -0.488,0.455 c -1.252,1.149 -2.504,1.686 -3.945,1.686 -3.064,0 -5.557,-2.557 -5.557,-5.699 0,-3.121 2.492,-5.66 5.557,-5.66 1.432,0 2.646,0.521 3.949,1.693 l 0.512,0.46 2.748,-2.802 -0.49,-0.502 c -1.754,-1.793 -4.016,-2.696 -6.719,-2.696 -2.459,0 -4.869,1.022 -6.605,2.798 -1.738,1.734 -2.691,4.119 -2.691,6.709 0,2.596 0.953,4.979 2.684,6.705 1.771,1.811 4.117,2.811 6.615,2.811 2.401,-0.003 4.647,-0.937 6.682,-2.779 z m 7.25,-6.947 c 0,-3.322 1.145,-4.686 4.217,-5.029 l 0.641,-0.07 0,-3.797 -0.777,0.058 c -5.629,0.458 -8.143,3.247 -8.143,9.048 l 0,9.051 4.062,0 0,-9.261 0,0 z m 21.998,6.923 c 1.762,-1.756 2.729,-4.146 2.729,-6.715 0,-2.565 -0.967,-4.951 -2.723,-6.702 -1.77,-1.809 -4.105,-2.806 -6.576,-2.806 -2.492,0 -4.84,0.997 -6.613,2.806 -1.752,1.792 -2.721,4.174 -2.721,6.702 0,2.53 0.969,4.916 2.721,6.707 1.771,1.81 4.121,2.808 6.613,2.808 2.472,0 4.808,-0.998 6.57,-2.8 z m -1.229,-6.714 c 0,3.18 -2.361,5.665 -5.377,5.665 -2.945,0 -5.346,-2.541 -5.346,-5.665 0,-3.137 2.398,-5.695 5.346,-5.695 2.963,-0.002 5.377,2.558 5.377,5.695 z m 12.917,6.418 c 0,-1.468 -1.195,-2.667 -2.662,-2.667 -1.455,0 -2.639,1.199 -2.639,2.667 0,1.453 1.184,2.632 2.639,2.632 1.466,0 2.662,-1.179 2.662,-2.632 z m 19.507,0.296 c 1.76,-1.756 2.73,-4.146 2.73,-6.715 0,-2.528 -0.973,-4.911 -2.729,-6.702 -1.746,-1.787 -4.08,-2.77 -6.574,-2.77 -2.035,0 -3.84,0.572 -5.484,1.744 l 0,-9.934 -3.816,0 0.008,15.582 c -0.037,0.411 -0.037,0.821 -0.037,1.198 0,6.119 3.836,10.396 9.33,10.396 2.475,0.001 4.807,-0.997 6.572,-2.799 z m -1.013,-6.677 c 0,3.123 -2.494,5.66 -5.559,5.66 -3.115,0 -5.557,-2.484 -5.557,-5.66 0,-3.143 2.494,-5.698 5.557,-5.698 3.065,0 5.559,2.556 5.559,5.698 z m 10.881,-9.085 -3.846,0 0,18.099 3.846,0 0,-18.099 z m 0.572,-5.128 c 0,-1.377 -1.098,-2.454 -2.492,-2.454 -1.4,0 -2.457,1.054 -2.457,2.454 0,1.398 1.076,2.494 2.457,2.494 1.373,0 2.492,-1.117 2.492,-2.494 z m 13.83,19.759 -0.619,-0.089 c -2.855,-0.409 -4.133,-2.104 -4.133,-5.495 l 0,-5.126 4.752,0 0,-3.674 -4.752,0 0,-4.006 -3.887,0 0,4.006 -1.662,0 0,3.674 1.662,0 0,4.525 c 0,6.215 2.113,8.932 7.783,10.029 l 0.855,0.164 0,-4.008 0.001,0 z' style='fill:#000000' /></g></svg>

Before

Width:  |  Height:  |  Size: 3.8 KiB

View File

@ -1 +0,0 @@
<svg xmlns:svg='http://www.w3.org/2000/svg' xmlns='http://www.w3.org/2000/svg' width='193.50101' height='32.755001' version='1.1'><g transform='translate(-1.3555,0.63251107)'><title>micro:bit logo</title><path d='m 38.7185,20.11349 c -1.677,0 -3.035,-1.364 -3.035,-3.042 0,-1.678 1.357,-3.038 3.035,-3.038 1.684,0 3.039,1.36 3.039,3.038 0,1.678 -1.355,3.042 -3.039,3.042 m -22.311,-6.077 c -1.677,0 -3.042,1.357 -3.042,3.035 0,1.678 1.363,3.042 3.042,3.042 1.674,0 3.036,-1.364 3.036,-3.042 0,-1.678 -1.363,-3.035 -3.036,-3.035 m -0.003,-5.99 22.576,0 c 4.979,0 9.027,4.047 9.027,9.027 0,4.979 -4.049,9.031 -9.027,9.031 l -22.576,0 c -4.977,0 -9.03,-4.053 -9.03,-9.031 -0.001,-4.98 4.053,-9.027 9.03,-9.027 m 22.576,24.076 c 8.299,0 15.047,-6.75 15.047,-15.049 0,-8.299 -6.748,-15.051 -15.047,-15.051 l -22.576,0 c -8.299,0 -15.049,6.752 -15.049,15.051 0,8.299 6.75,15.049 15.049,15.049 l 22.576,0 m 112.099,-21.953 c 0,-1.453 -1.195,-2.633 -2.662,-2.633 -1.455,0 -2.639,1.18 -2.639,2.633 0,1.471 1.184,2.672 2.639,2.672 1.466,0 2.662,-1.202 2.662,-2.672 z m -66.786,5.445 c 0,-4.764 -2.893,-8.093 -7.031,-8.093 -2.027,0 -3.814,0.851 -5.223,2.47 -1.467,-1.661 -3.152,-2.47 -5.127,-2.47 -4.162,0 -7.066,3.329 -7.066,8.093 l 0,10.466 3.812,0 0,-10.644 c 0,-2.416 1.336,-4.104 3.254,-4.104 1.617,0 3.25,1.409 3.25,4.104 l 0,10.645 3.848,0 0,-10.645 c 0,-2.416 1.338,-4.104 3.252,-4.104 1.863,0 3.217,1.727 3.217,4.104 l 0,10.645 3.814,0 0,-10.467 z m 6.953,-7.632 -3.846,0 0,18.099 3.846,0 0,-18.099 z m 0.569,-5.128 c 0,-1.377 -1.096,-2.454 -2.492,-2.454 -1.4,0 -2.453,1.054 -2.453,2.454 0,1.398 1.078,2.494 2.453,2.494 1.375,0 2.492,-1.117 2.492,-2.494 z m 18.328,20.914 0.576,-0.521 -2.828,-2.658 -0.488,0.455 c -1.252,1.149 -2.504,1.686 -3.945,1.686 -3.064,0 -5.557,-2.557 -5.557,-5.699 0,-3.121 2.492,-5.66 5.557,-5.66 1.432,0 2.646,0.521 3.949,1.693 l 0.512,0.46 2.748,-2.802 -0.49,-0.502 c -1.754,-1.793 -4.016,-2.696 -6.719,-2.696 -2.459,0 -4.869,1.022 -6.605,2.798 -1.738,1.734 -2.691,4.119 -2.691,6.709 0,2.596 0.953,4.979 2.684,6.705 1.771,1.811 4.117,2.811 6.615,2.811 2.401,-0.003 4.647,-0.937 6.682,-2.779 z m 7.25,-6.947 c 0,-3.322 1.145,-4.686 4.217,-5.029 l 0.641,-0.07 0,-3.797 -0.777,0.058 c -5.629,0.458 -8.143,3.247 -8.143,9.048 l 0,9.051 4.062,0 0,-9.261 0,0 z m 21.998,6.923 c 1.762,-1.756 2.729,-4.146 2.729,-6.715 0,-2.565 -0.967,-4.951 -2.723,-6.702 -1.77,-1.809 -4.105,-2.806 -6.576,-2.806 -2.492,0 -4.84,0.997 -6.613,2.806 -1.752,1.792 -2.721,4.174 -2.721,6.702 0,2.53 0.969,4.916 2.721,6.707 1.771,1.81 4.121,2.808 6.613,2.808 2.472,0 4.808,-0.998 6.57,-2.8 z m -1.229,-6.714 c 0,3.18 -2.361,5.665 -5.377,5.665 -2.945,0 -5.346,-2.541 -5.346,-5.665 0,-3.137 2.398,-5.695 5.346,-5.695 2.963,-0.002 5.377,2.558 5.377,5.695 z m 12.917,6.418 c 0,-1.468 -1.195,-2.667 -2.662,-2.667 -1.455,0 -2.639,1.199 -2.639,2.667 0,1.453 1.184,2.632 2.639,2.632 1.466,0 2.662,-1.179 2.662,-2.632 z m 19.507,0.296 c 1.76,-1.756 2.73,-4.146 2.73,-6.715 0,-2.528 -0.973,-4.911 -2.729,-6.702 -1.746,-1.787 -4.08,-2.77 -6.574,-2.77 -2.035,0 -3.84,0.572 -5.484,1.744 l 0,-9.934 -3.816,0 0.008,15.582 c -0.037,0.411 -0.037,0.821 -0.037,1.198 0,6.119 3.836,10.396 9.33,10.396 2.475,0.001 4.807,-0.997 6.572,-2.799 z m -1.013,-6.677 c 0,3.123 -2.494,5.66 -5.559,5.66 -3.115,0 -5.557,-2.484 -5.557,-5.66 0,-3.143 2.494,-5.698 5.557,-5.698 3.065,0 5.559,2.556 5.559,5.698 z m 10.881,-9.085 -3.846,0 0,18.099 3.846,0 0,-18.099 z m 0.572,-5.128 c 0,-1.377 -1.098,-2.454 -2.492,-2.454 -1.4,0 -2.457,1.054 -2.457,2.454 0,1.398 1.076,2.494 2.457,2.494 1.373,0 2.492,-1.117 2.492,-2.494 z m 13.83,19.759 -0.619,-0.089 c -2.855,-0.409 -4.133,-2.104 -4.133,-5.495 l 0,-5.126 4.752,0 0,-3.674 -4.752,0 0,-4.006 -3.887,0 0,4.006 -1.662,0 0,3.674 1.662,0 0,4.525 c 0,6.215 2.113,8.932 7.783,10.029 l 0.855,0.164 0,-4.008 0.001,0 z' style='fill:#000000' /></g></svg>

Before

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

BIN
docs/static/logo32.png vendored

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 129 KiB

BIN
docs/static/microbit.red.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

BIN
docs/static/microbit.red.square.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

1
docs/static/microbit.red.svg vendored Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 18 KiB

View File

@ -1 +0,0 @@
<svg xmlns='http://www.w3.org/2000/svg' width='52.672' height='30.1' viewBox='0 0 52.672003 30.1'><g transform='translate(-1.355 -2.023)'><title>micro:bit logo</title><path d='M38.718 20.113c-1.677 0-3.035-1.364-3.035-3.042 0-1.677 1.357-3.037 3.035-3.037 1.684 0 3.04 1.36 3.04 3.038 0 1.68-1.356 3.043-3.04 3.043m-22.31-6.077c-1.678 0-3.043 1.357-3.043 3.035 0 1.68 1.363 3.043 3.042 3.043 1.674 0 3.036-1.364 3.036-3.042 0-1.677-1.363-3.034-3.036-3.034m-.003-5.99H38.98c4.98 0 9.027 4.047 9.027 9.027 0 4.98-4.05 9.03-9.027 9.03H16.404c-4.977 0-9.03-4.052-9.03-9.03 0-4.98 4.053-9.027 9.03-9.027M38.98 32.122c8.3 0 15.047-6.75 15.047-15.05 0-8.298-6.748-15.05-15.047-15.05H16.404c-8.3 0-15.05 6.752-15.05 15.05 0 8.3 6.75 15.05 15.05 15.05H38.98'/></g></svg>

Before

Width:  |  Height:  |  Size: 761 B

View File

@ -1,64 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="1240"
height="600"
viewBox="0 0 1240 599.99999"
id="svg2"
version="1.1"
inkscape:version="0.91 r13725"
sodipodi:docname="splashscreen.svg"
inkscape:export-filename="C:\gh\pxt-microbit\win10\app\images\Square44x44Logo.targetsize-24_altform-unplated.png"
inkscape:export-xdpi="41.008503"
inkscape:export-ydpi="41.008503">
<metadata
id="metadata14">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs12" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1440"
inkscape:window-height="837"
id="namedview10"
showgrid="false"
inkscape:zoom="0.7546704"
inkscape:cx="528.17059"
inkscape:cy="263.58903"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="svg2" />
<g
transform="matrix(15.144568,0,0,15.144568,200.63934,41.451935)"
id="g4">
<title
id="title6">micro:bit logo</title>
<path
d="m 38.718,20.113 c -1.677,0 -3.035,-1.364 -3.035,-3.042 0,-1.677 1.357,-3.037 3.035,-3.037 1.684,0 3.04,1.36 3.04,3.038 0,1.68 -1.356,3.043 -3.04,3.043 m -22.31,-6.077 c -1.678,0 -3.043,1.357 -3.043,3.035 0,1.68 1.363,3.043 3.042,3.043 1.674,0 3.036,-1.364 3.036,-3.042 0,-1.677 -1.363,-3.034 -3.036,-3.034 m -0.003,-5.99 22.576,0 c 4.98,0 9.027,4.047 9.027,9.027 0,4.98 -4.05,9.03 -9.027,9.03 l -22.576,0 c -4.977,0 -9.03,-4.052 -9.03,-9.03 0,-4.98 4.053,-9.027 9.03,-9.027 M 38.98,32.122 c 8.3,0 15.047,-6.75 15.047,-15.05 0,-8.298 -6.748,-15.05 -15.047,-15.05 l -22.576,0 c -8.3,0 -15.05,6.752 -15.05,15.05 0,8.3 6.75,15.05 15.05,15.05 l 22.576,0"
id="path8"
inkscape:connector-curvature="0" />
</g>
</svg>

Before

Width:  |  Height:  |  Size: 2.5 KiB

View File

@ -1,61 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="52.672001"
height="52.672001"
viewBox="0 0 52.672003 52.672"
id="svg2"
version="1.1"
inkscape:version="0.91 r13725"
sodipodi:docname="squarelogo.svg">
<metadata
id="metadata14">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs12" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="640"
inkscape:window-height="480"
id="namedview10"
showgrid="false"
inkscape:zoom="6.0373632"
inkscape:cx="26.336"
inkscape:cy="21.675409"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="0"
inkscape:current-layer="svg2" />
<g
transform="translate(-1.355,9.2400005)"
id="g4">
<title
id="title6">micro:bit logo</title>
<path
d="m 38.718,20.113 c -1.677,0 -3.035,-1.364 -3.035,-3.042 0,-1.677 1.357,-3.037 3.035,-3.037 1.684,0 3.04,1.36 3.04,3.038 0,1.68 -1.356,3.043 -3.04,3.043 m -22.31,-6.077 c -1.678,0 -3.043,1.357 -3.043,3.035 0,1.68 1.363,3.043 3.042,3.043 1.674,0 3.036,-1.364 3.036,-3.042 0,-1.677 -1.363,-3.034 -3.036,-3.034 m -0.003,-5.99 22.576,0 c 4.98,0 9.027,4.047 9.027,9.027 0,4.98 -4.05,9.03 -9.027,9.03 l -22.576,0 c -4.977,0 -9.03,-4.052 -9.03,-9.03 0,-4.98 4.053,-9.027 9.03,-9.027 M 38.98,32.122 c 8.3,0 15.047,-6.75 15.047,-15.05 0,-8.298 -6.748,-15.05 -15.047,-15.05 l -22.576,0 c -8.3,0 -15.05,6.752 -15.05,15.05 0,8.3 6.75,15.05 15.05,15.05 l 22.576,0"
id="path8"
inkscape:connector-curvature="0" />
</g>
</svg>

Before

Width:  |  Height:  |  Size: 2.3 KiB

View File

@ -2,6 +2,8 @@
using namespace pxt; using namespace pxt;
#define RADIO_VALUE_PACKET_TYPE 24641622
//% color=270 weight=34 //% color=270 weight=34
namespace radio { namespace radio {
@ -46,6 +48,72 @@ namespace radio {
int buf[] = { value_0, value_1, value_2, value_3 }; int buf[] = { value_0, value_1, value_2, value_3 };
uBit.radio.datagram.send((uint8_t*)buf, 4*sizeof(int)); uBit.radio.datagram.send((uint8_t*)buf, 4*sizeof(int));
} }
/**
* Broadcasts a name / value pair along with the device serial number
* and running time to any connected BBC micro:bit in the group.
* @param name the field name (max 12 characters), eg: "data"
* @param the numberic value
*/
//% help=radio/stream-value
//% weight=4
//% blockId=radio_datagram_stream_value block="stream|value %name|= %value"
void streamValue(StringData* name, int number) {
if (radioEnable() != MICROBIT_OK) return;
ManagedString n(name);
uint8_t buf[32];
uint32_t* buf32 = (uint32_t*)buf;
memset(buf, 32, 0);
buf32[0] = number; // 4 bytes: value
buf32[1] = microbit_serial_number(); // 4 bytes: serial number
buf32[2] = system_timer_current_time(); // 4 bytes: running time
memcpy(buf + 12, n.toCharArray(), min(12, n.length())); // 12-24: field name
buf32[7] = RADIO_VALUE_PACKET_TYPE; // last 4 bytes: magic number of package type
uBit.radio.datagram.send(buf, 32);
}
/**
* Reads a value sent with `stream value` and writes it
* to the serial stream as JSON
*/
//% help=radio/read-value-to-serial
//% weight=3
void readValueToSerial() {
if (radioEnable() != MICROBIT_OK) return;
PacketBuffer p = uBit.radio.datagram.recv();
int length = p.length();
if (length < 32) {
return;
}
uint8_t* bytes = p.getBytes();
//uint32_t* buf32 = (uint32_t*)bytes;
//uint32_t type = buf32[7];
//if (type != RADIO_VALUE_PACKET_TYPE)
//{
// uBit.serial.send("type: ");
// uBit.serial.send(type);
// uBit.serial.send("\r\n");
// return;
//}
int value;
int serial;
int time;
char name[12+1]; memset(name, 0, 13 * sizeof(char));
memcpy(&value, bytes, 4);
memcpy(&serial, bytes + 4, 4);
memcpy(&time, bytes + 8, 4);
memcpy(&name, bytes + 12, 12);
uBit.serial.send("{s:"); uBit.serial.send(serial);
uBit.serial.send(",t:"); uBit.serial.send(time);
uBit.serial.send(",v:"); uBit.serial.send(value);
uBit.serial.send(",n:\""); uBit.serial.send(name);
uBit.serial.send("\"}\r\n");
}
/** /**
* Registers code to run when a packet is received over radio. * Registers code to run when a packet is received over radio.

View File

@ -13,6 +13,25 @@ declare namespace radio {
//% blockId=radio_datagram_send_numbers block="send numbers|0: %VALUE0|1: %VALUE1|2: %VALUE2|3: %VALUE3" shim=radio::sendNumbers //% blockId=radio_datagram_send_numbers block="send numbers|0: %VALUE0|1: %VALUE1|2: %VALUE2|3: %VALUE3" shim=radio::sendNumbers
function sendNumbers(value_0: number, value_1: number, value_2: number, value_3: number): void; function sendNumbers(value_0: number, value_1: number, value_2: number, value_3: number): void;
/**
* Broadcasts a name / value pair along with the device serial number
* and running time to any connected BBC micro:bit in the group.
* @param name the field name (max 12 characters), eg: "data"
* @param the numberic value
*/
//% help=radio/stream-value
//% weight=4
//% blockId=radio_datagram_stream_value block="stream|value %name|= %value" shim=radio::streamValue
function streamValue(name: string, number: number): void;
/**
* Reads a value sent with `stream value` and writes it
* to the serial stream as JSON
*/
//% help=radio/read-value-to-serial
//% weight=3 shim=radio::readValueToSerial
function readValueToSerial(): void;
/** /**
* Registers code to run when a packet is received over radio. * Registers code to run when a packet is received over radio.
*/ */

View File

@ -1,79 +1,81 @@
{ {
"A single-LED sprite game engine": "A single-LED sprite game engine", "basic": "Provides access to basic micro:bit functionality.",
"Adds points to the current score": "Adds points to the current score", "basic.clearScreen": "Turn off all LEDs",
"Attaches code to run when the device is shaken.": "Attaches code to run when the device is shaken.", "basic.forever": "Repeats the code forever in the background. On each iteration, allows other codes to run.",
"Attaches code to run when the logo is oriented downwards and the board is vertical.": "Attaches code to run when the logo is oriented downwards and the board is vertical.", "basic.pause": "Pause for the specified time in milliseconds",
"Attaches code to run when the logo is oriented upwards and the board is vertical.": "Attaches code to run when the logo is oriented upwards and the board is vertical.", "basic.plotLeds": "Draws an image on the LED screen.",
"Attaches code to run when the screen is facing down.": "Attaches code to run when the screen is facing down.", "basic.showAnimation": "Shows a sequence of LED screens as an animation.",
"Attaches code to run when the screen is facing up.": "Attaches code to run when the screen is facing up.", "basic.showLeds": "Draws an image on the LED screen.",
"Cancels the current animation and clears other pending animations.": "Cancels the current animation and clears other pending animations.", "basic.showNumber": "Scroll a number on the screen. If the number fits on the screen (i.e. is a single digit), do not scroll.",
"Change the tempo by the specified amount": "Change the tempo by the specified amount", "basic.showString": "Display text on the display, one character at a time. If the string fits on the screen (i.e. is one letter), does not scroll.",
"Configures the Pulse-width modulation (PWM) of the analog output to the given value in **microseconds** or `1/1000` milliseconds.\nIf this pin is not configured as an analog output (using `analog write pin`), the operation has no effect.": "Configures the Pulse-width modulation (PWM) of the analog output to the given value in **microseconds** or `1/1000` milliseconds.\nIf this pin is not configured as an analog output (using `analog write pin`), the operation has no effect.", "control": "Runtime and event utilities.",
"Configures this IO pin as an analog/pwm output, configures the period to be 20 ms, and sets the pulse width, based on the value it is given **microseconds** or `1/1000` milliseconds.": "Configures this IO pin as an analog/pwm output, configures the period to be 20 ms, and sets the pulse width, based on the value it is given **microseconds** or `1/1000` milliseconds.", "control.inBackground": "Schedules code that run in the background.",
"Control currents in Pins for analog/digital signals, servos, i2c, ...": "Control currents in Pins for analog/digital signals, servos, i2c, ...", "control.reset": "Resets the BBC micro:bit.",
"Control of the LED screen.": "Control of the LED screen.", "game": "A single-LED sprite game engine",
"Creates an image that fits on the LED screen.": "Creates an image that fits on the LED screen.", "game.addScore": "Adds points to the current score",
"Creates an image with 2 frames.": "Creates an image with 2 frames.", "game.gameOver": "Displays a game over animation.",
"Creation, manipulation and display of LED images.": "Creation, manipulation and display of LED images.", "game.score": "Gets the current score",
"Display text on the display, one character at a time. If the string fits on the screen (i.e. is one letter), does not scroll.": "Display text on the display, one character at a time. If the string fits on the screen (i.e. is one letter), does not scroll.", "game.setScore": "Sets the current score value",
"Displays a game over animation.": "Displays a game over animation.", "game.startCountdown": "Starts a game countdown timer",
"Displays a vertical bar graph based on the `value` and `high` value.\nIf `high` is 0, the chart gets adjusted automatically.": "Displays a vertical bar graph based on the `value` and `high` value.\nIf `high` is 0, the chart gets adjusted automatically.", "images": "Creation, manipulation and display of LED images.",
"Do something when a button (``A``, ``B`` or both ``A+B``) is pressed": "Do something when a button (``A``, ``B`` or both ``A+B``) is pressed", "images.createBigImage": "Creates an image with 2 frames.",
"Do something when a pin(``P0``, ``P1`` or both ``P2``) is pressed.": "Do something when a pin(``P0``, ``P1`` or both ``P2``) is pressed.", "images.createImage": "Creates an image that fits on the LED screen.",
"Draws an image on the LED screen.": "Draws an image on the LED screen.", "input": "Events and data from sensors",
"Emits a Pulse-width modulation (PWM) signal to the current pitch pin. Use `analog set pitch pin` to define the pitch pin.": "Emits a Pulse-width modulation (PWM) signal to the current pitch pin. Use `analog set pitch pin` to define the pitch pin.", "input.acceleration": "Get the acceleration value in milli-gravitys (when the board is laying flat with the screen up, x=0, y=0 and z=-1024)",
"Events and data from sensors": "Events and data from sensors", "input.buttonIsPressed": "Get the button state (pressed or not) for ``A`` and ``B``.",
"Fades in the screen display.": "Fades in the screen display.", "input.calibrate": "Obsolete, compass calibration is automatic.",
"Fades out the screen brightness.": "Fades out the screen brightness.", "input.compassHeading": "Get the current compass compass heading in degrees.",
"Generation of music tones through pin ``P0``.": "Generation of music tones through pin ``P0``.", "input.lightLevel": "Reads the light level applied to the LED screen in a range from ``0`` (dark) to ``255`` bright.",
"Get the acceleration value in milli-gravitys (when the board is laying flat with the screen up, x=0, y=0 and z=-1024)": "Get the acceleration value in milli-gravitys (when the board is laying flat with the screen up, x=0, y=0 and z=-1024)", "input.magneticForce": "Get the magnetic force value in ``micro-Teslas`` (``µT``). This function is not supported in the simulator.",
"Get the button state (pressed or not) for ``A`` and ``B``.": "Get the button state (pressed or not) for ``A`` and ``B``.", "input.onButtonPressed": "Do something when a button (``A``, ``B`` or both ``A+B``) is pressed",
"Get the current compass compass heading in degrees.": "Get the current compass compass heading in degrees.", "input.onGesture": "Attaches code to run when the screen is facing up.",
"Get the magnetic force value in ``micro-Teslas`` (``µT``). This function is not supported in the simulator.": "Get the magnetic force value in ``micro-Teslas`` (``µT``). This function is not supported in the simulator.", "input.onLogoDown": "Attaches code to run when the logo is oriented downwards and the board is vertical.",
"Get the on/off state of the specified LED using x, y coordinates. (0,0) is upper left.": "Get the on/off state of the specified LED using x, y coordinates. (0,0) is upper left.", "input.onLogoUp": "Attaches code to run when the logo is oriented upwards and the board is vertical.",
"Get the pin state (pressed or not). Requires to hold the ground to close the circuit.": "Get the pin state (pressed or not). Requires to hold the ground to close the circuit.", "input.onPinPressed": "Do something when a pin(``P0``, ``P1`` or both ``P2``) is pressed.",
"Get the screen brightness from 0 (off) to 255 (full bright).": "Get the screen brightness from 0 (off) to 255 (full bright).", "input.onScreenDown": "Attaches code to run when the screen is facing down.",
"Gets the current score": "Gets the current score", "input.onScreenUp": "Attaches code to run when the screen is facing up.",
"Gets the frequency of a note.": "Gets the frequency of a note.", "input.onShake": "Attaches code to run when the device is shaken.",
"Gets the number of milliseconds elapsed since power on.": "Gets the number of milliseconds elapsed since power on.", "input.pinIsPressed": "Get the pin state (pressed or not). Requires to hold the ground to close the circuit.",
"Gets the temperature in Celsius degrees (°C).": "Gets the temperature in Celsius degrees (°C).", "input.rotation": "The pitch of the device, rotation along the ``x-axis``, in degrees.",
"Inverts the current LED display": "Inverts the current LED display", "input.runningTime": "Gets the number of milliseconds elapsed since power on.",
"Obsolete, compass calibration is automatic.": "Obsolete, compass calibration is automatic.", "input.setAccelerometerRange": "Sets the accelerometer sample range in gravities.",
"Pause for the specified time in milliseconds": "Pause for the specified time in milliseconds", "input.temperature": "Gets the temperature in Celsius degrees (°C).",
"Plays a tone through pin ``P0`` for the given duration.": "Plays a tone through pin ``P0`` for the given duration.", "led": "Control of the LED screen.",
"Plays a tone through pin ``P0``.": "Plays a tone through pin ``P0``.", "led.brightness": "Get the screen brightness from 0 (off) to 255 (full bright).",
"Prints a line of text to the serial": "Prints a line of text to the serial", "led.fadeIn": "Fades in the screen display.",
"Provides access to basic micro:bit functionality.": "Provides access to basic micro:bit functionality.", "led.fadeOut": "Fades out the screen brightness.",
"Re-maps a number from one range to another. That is, a value of ``from low`` would get mapped to ``to low``, a value of ``from high`` to ``to high``, values in-between to values in-between, etc.": "Re-maps a number from one range to another. That is, a value of ``from low`` would get mapped to ``to low``, a value of ``from high`` to ``to high``, values in-between to values in-between, etc.", "led.plot": "Turn on the specified LED using x, y coordinates (x is horizontal, y is vertical). (0,0) is upper left.",
"Read the connector value as analog, that is, as a value comprised between 0 and 1023.": "Read the connector value as analog, that is, as a value comprised between 0 and 1023.", "led.plotAll": "Turns all LEDS on",
"Read the specified pin or connector as either 0 or 1": "Read the specified pin or connector as either 0 or 1", "led.plotBarGraph": "Displays a vertical bar graph based on the `value` and `high` value.\nIf `high` is 0, the chart gets adjusted automatically.",
"Reading and writing data over a serial connection.": "Reading and writing data over a serial connection.", "led.point": "Get the on/off state of the specified LED using x, y coordinates. (0,0) is upper left.",
"Reads the light level applied to the LED screen in a range from ``0`` (dark) to ``255`` bright.": "Reads the light level applied to the LED screen in a range from ``0`` (dark) to ``255`` bright.", "led.screenshot": "Takes a screenshot of the LED screen and returns an image.",
"Repeats the code forever in the background. On each iteration, allows other codes to run.": "Repeats the code forever in the background. On each iteration, allows other codes to run.", "led.setBrightness": "Set the screen brightness from 0 (off) to 255 (full bright).",
"Resets the BBC micro:bit.": "Resets the BBC micro:bit.", "led.setDisplayMode": "Sets the display mode between black and white and greyscale for rendering LEDs.",
"Rests (plays nothing) for a specified time through pin ``P0``.": "Rests (plays nothing) for a specified time through pin ``P0``.", "led.stopAnimation": "Cancels the current animation and clears other pending animations.",
"Returns the duration of a beat in milli-seconds": "Returns the duration of a beat in milli-seconds", "led.toggle": "Toggles a particular pixel",
"Returns the tempo in beats per minute. Tempo is the speed (bpm = beats per minute) at which notes play. The larger the tempo value, the faster the notes will play.": "Returns the tempo in beats per minute. Tempo is the speed (bpm = beats per minute) at which notes play. The larger the tempo value, the faster the notes will play.", "led.toggleAll": "Inverts the current LED display",
"Runtime and event utilities.": "Runtime and event utilities.", "led.unplot": "Turn off the specified LED using x, y coordinates (x is horizontal, y is vertical). (0,0) is upper left.",
"Schedules code that run in the background.": "Schedules code that run in the background.", "music": "Generation of music tones through pin ``P0``.",
"Scroll a number on the screen. If the number fits on the screen (i.e. is a single digit), do not scroll.": "Scroll a number on the screen. If the number fits on the screen (i.e. is a single digit), do not scroll.", "music.beat": "Returns the duration of a beat in milli-seconds",
"Set a pin or connector value to either 0 or 1.": "Set a pin or connector value to either 0 or 1.", "music.changeTempoBy": "Change the tempo by the specified amount",
"Set the connector value as analog. Value must be comprised between 0 and 1023.": "Set the connector value as analog. Value must be comprised between 0 and 1023.", "music.noteFrequency": "Gets the frequency of a note.",
"Set the screen brightness from 0 (off) to 255 (full bright).": "Set the screen brightness from 0 (off) to 255 (full bright).", "music.playTone": "Plays a tone through pin ``P0`` for the given duration.",
"Sets the accelerometer sample range in gravities.": "Sets the accelerometer sample range in gravities.", "music.rest": "Rests (plays nothing) for a specified time through pin ``P0``.",
"Sets the current score value": "Sets the current score value", "music.ringTone": "Plays a tone through pin ``P0``.",
"Sets the display mode between black and white and greyscale for rendering LEDs.": "Sets the display mode between black and white and greyscale for rendering LEDs.", "music.setTempo": "Sets the tempo to the specified amount",
"Sets the pin used when using `pins->analog pitch`.": "Sets the pin used when using `pins->analog pitch`.", "music.tempo": "Returns the tempo in beats per minute. Tempo is the speed (bpm = beats per minute) at which notes play. The larger the tempo value, the faster the notes will play.",
"Sets the tempo to the specified amount": "Sets the tempo to the specified amount", "pins": "Control currents in Pins for analog/digital signals, servos, i2c, ...",
"Shows a sequence of LED screens as an animation.": "Shows a sequence of LED screens as an animation.", "pins.analogPitch": "Emits a Pulse-width modulation (PWM) signal to the current pitch pin. Use `analog set pitch pin` to define the pitch pin.",
"Starts a game countdown timer": "Starts a game countdown timer", "pins.analogReadPin": "Read the connector value as analog, that is, as a value comprised between 0 and 1023.",
"Takes a screenshot of the LED screen and returns an image.": "Takes a screenshot of the LED screen and returns an image.", "pins.analogSetPeriod": "Configures the Pulse-width modulation (PWM) of the analog output to the given value in **microseconds** or `1/1000` milliseconds.\nIf this pin is not configured as an analog output (using `analog write pin`), the operation has no effect.",
"The pitch of the device, rotation along the ``x-axis``, in degrees.": "The pitch of the device, rotation along the ``x-axis``, in degrees.", "pins.analogSetPitchPin": "Sets the pin used when using `pins->analog pitch`.",
"Toggles a particular pixel": "Toggles a particular pixel", "pins.analogWritePin": "Set the connector value as analog. Value must be comprised between 0 and 1023.",
"Turn off all LEDs": "Turn off all LEDs", "pins.digitalReadPin": "Read the specified pin or connector as either 0 or 1",
"Turn off the specified LED using x, y coordinates (x is horizontal, y is vertical). (0,0) is upper left.": "Turn off the specified LED using x, y coordinates (x is horizontal, y is vertical). (0,0) is upper left.", "pins.digitalWritePin": "Set a pin or connector value to either 0 or 1.",
"Turn on the specified LED using x, y coordinates (x is horizontal, y is vertical). (0,0) is upper left.": "Turn on the specified LED using x, y coordinates (x is horizontal, y is vertical). (0,0) is upper left.", "pins.map": "Re-maps a number from one range to another. That is, a value of ``from low`` would get mapped to ``to low``, a value of ``from high`` to ``to high``, values in-between to values in-between, etc.",
"Turns all LEDS on": "Turns all LEDS on", "pins.servoSetPulse": "Configures this IO pin as an analog/pwm output, configures the period to be 20 ms, and sets the pulse width, based on the value it is given **microseconds** or `1/1000` milliseconds.",
"Writes a ``name: value`` pair line to the serial.": "Writes a ``name: value`` pair line to the serial.", "pins.servoWritePin": "Writes a value to the servo, controlling the shaft accordingly. On a standard servo, this will set the angle of the shaft (in degrees), moving the shaft to that orientation. On a continuous rotation servo, this will set the speed of the servo (with ``0`` being full-speed in one direction, ``180`` being full speed in the other, and a value near ``90`` being no movement).",
"Writes a value to the servo, controlling the shaft accordingly. On a standard servo, this will set the angle of the shaft (in degrees), moving the shaft to that orientation. On a continuous rotation servo, this will set the speed of the servo (with ``0`` being full-speed in one direction, ``180`` being full speed in the other, and a value near ``90`` being no movement).": "Writes a value to the servo, controlling the shaft accordingly. On a standard servo, this will set the angle of the shaft (in degrees), moving the shaft to that orientation. On a continuous rotation servo, this will set the speed of the servo (with ``0`` being full-speed in one direction, ``180`` being full speed in the other, and a value near ``90`` being no movement)." "serial": "Reading and writing data over a serial connection.",
"serial.writeLine": "Prints a line of text to the serial",
"serial.writeValue": "Writes a ``name: value`` pair line to the serial."
} }

View File

@ -1,6 +1,6 @@
{ {
"name": "pxt-microbit", "name": "pxt-microbit",
"version": "0.2.101", "version": "0.2.107",
"description": "BBC micro:bit target for PXT", "description": "BBC micro:bit target for PXT",
"keywords": [ "keywords": [
"JavaScript", "JavaScript",
@ -29,6 +29,6 @@
"typescript": "^1.8.7" "typescript": "^1.8.7"
}, },
"dependencies": { "dependencies": {
"pxt-core": "0.2.114" "pxt-core": "0.2.121"
} }
} }

View File

@ -1,7 +1,7 @@
{ {
"id": "microbit", "id": "microbit",
"name": "code micro:bit", "name": "m.pxt.io",
"title": "code micro:bit", "title": "m.pxt.io",
"corepkg": "microbit", "corepkg": "microbit",
"bundleddirs": [ "bundleddirs": [
"libs/microbit", "libs/microbit",
@ -72,13 +72,13 @@
"log": true "log": true
}, },
"appTheme": { "appTheme": {
"logoUrl": "https://codemicrobit.com/about", "logoUrl": "https://m.pxt.io/about",
"logo": "./static/logo.svg", "logo": "./static/microbit.red.svg",
"docsLogo": "./static/docslogo.svg", "docsLogo": "./static/microbit.red.svg",
"portraitLogo":"./static/portraitlogo.svg", "portraitLogo":"./static/microbit.red.svg",
"footerLogo": "./static/footerlogo.svg", "footerLogo": "./static/microbit.red.svg",
"homeUrl": "https://codemicrobit.com/", "homeUrl": "https://m.pxt.io/",
"embedUrl": "https://codemicrobit.com/", "embedUrl": "https://m.pxt.io/",
"koduUrl": "https://www.kodugamelab.com/bbc-microbit/", "koduUrl": "https://www.kodugamelab.com/bbc-microbit/",
"visualStudioCode": true, "visualStudioCode": true,
"docMenu": [ "docMenu": [

View File

@ -453,6 +453,10 @@ namespace pxsim.radio {
board().radio.datagram.send([value0, value1, value2, value3]); board().radio.datagram.send([value0, value1, value2, value3]);
} }
export function streamValue(name: string, value: number) {
board().radio.datagram.send([value]);
}
export function receiveNumber(): number { export function receiveNumber(): number {
return board().radio.datagram.recv().data[0]; return board().radio.datagram.recv().data[0];
} }

View File

@ -3,7 +3,7 @@ Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 14 # Visual Studio 14
VisualStudioVersion = 14.0.25123.0 VisualStudioVersion = 14.0.25123.0
MinimumVisualStudioVersion = 10.0.40219.1 MinimumVisualStudioVersion = 10.0.40219.1
Project("{262852C6-CD72-467D-83FE-5EEB1973A190}") = "codemicrobit", "app\codemicrobit.jsproj", "{39122940-AB16-4CD4-A0CE-79A3EB863ECF}" Project("{262852C6-CD72-467D-83FE-5EEB1973A190}") = "m.pxt.io", "app\m.pxt.io.jsproj", "{39122940-AB16-4CD4-A0CE-79A3EB863ECF}"
EndProject EndProject
Global Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution GlobalSection(SolutionConfigurationPlatforms) = preSolution

View File

@ -1 +1 @@
MainPackage=C:\gh\pxt-microbit\win10\app\bin\Debug\codemicrobit_0.1.3.0_AnyCPU_Debug.appx MainPackage=C:\gh\pxt-microbit\win10\app\bin\Debug\m.pxt.io_0.1.4.0_AnyCPU_Debug.appx

Binary file not shown.

Before

Width:  |  Height:  |  Size: 807 B

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.3 KiB

After

Width:  |  Height:  |  Size: 7.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 467 B

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 849 B

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.7 KiB

After

Width:  |  Height:  |  Size: 8.4 KiB

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<Package xmlns="http://schemas.microsoft.com/appx/manifest/foundation/windows10" xmlns:mp="http://schemas.microsoft.com/appx/2014/phone/manifest" xmlns:uap="http://schemas.microsoft.com/appx/manifest/uap/windows10" IgnorableNamespaces="uap mp"> <Package xmlns="http://schemas.microsoft.com/appx/manifest/foundation/windows10" xmlns:mp="http://schemas.microsoft.com/appx/2014/phone/manifest" xmlns:uap="http://schemas.microsoft.com/appx/manifest/uap/windows10" IgnorableNamespaces="uap mp">
<Identity Name="39122940-ab16-4cd4-a0ce-79a3eb863ecf" Version="0.1.3.0" Publisher="CN=jhalleux" /> <Identity Name="39122940-ab16-4cd4-a0ce-79a3eb863ecf" Version="0.1.4.0" Publisher="CN=jhalleux" />
<mp:PhoneIdentity PhoneProductId="39122940-ab16-4cd4-a0ce-79a3eb863ecf" PhonePublisherId="00000000-0000-0000-0000-000000000000" /> <mp:PhoneIdentity PhoneProductId="39122940-ab16-4cd4-a0ce-79a3eb863ecf" PhonePublisherId="00000000-0000-0000-0000-000000000000" />
<Properties> <Properties>
<DisplayName>codemicrobitapp</DisplayName> <DisplayName>codemicrobitapp</DisplayName>
@ -14,12 +14,12 @@
<Resource Language="x-generate" /> <Resource Language="x-generate" />
</Resources> </Resources>
<Applications> <Applications>
<Application Id="App" StartPage="https://codemicrobit.com/"> <Application Id="App" StartPage="https://m.pxt.io/">
<uap:ApplicationContentUriRules> <uap:ApplicationContentUriRules>
<uap:Rule Match="https://codemicrobit.com/" Type="include" WindowsRuntimeAccess="all" /> <uap:Rule Match="https://m.pxt.io/" Type="include" WindowsRuntimeAccess="all" />
</uap:ApplicationContentUriRules> </uap:ApplicationContentUriRules>
<uap:VisualElements DisplayName="code micro:bit" Description="Code editors for the BBC micro:bits" BackgroundColor="white" Square150x150Logo="images\Square150x150Logo.png" Square44x44Logo="images\Square44x44Logo.png"> <uap:VisualElements DisplayName="m.pxt.io" Description="Code editors for the BBC micro:bit" BackgroundColor="white" Square150x150Logo="images\Square150x150Logo.png" Square44x44Logo="images\Square44x44Logo.png">
<uap:DefaultTile Wide310x150Logo="images\Wide310x150Logo.png"> <uap:DefaultTile Wide310x150Logo="images\Wide310x150Logo.png" ShortName="m.pxt.io">
</uap:DefaultTile> </uap:DefaultTile>
<uap:SplashScreen Image="images\splashscreen.png" /> <uap:SplashScreen Image="images\splashscreen.png" />
</uap:VisualElements> </uap:VisualElements>
@ -27,7 +27,7 @@
<uap:Extension Category="windows.fileTypeAssociation"> <uap:Extension Category="windows.fileTypeAssociation">
<uap:FileTypeAssociation Name="microbithex"> <uap:FileTypeAssociation Name="microbithex">
<uap:DisplayName>BBC micro:bit binary file</uap:DisplayName> <uap:DisplayName>BBC micro:bit binary file</uap:DisplayName>
<uap:InfoTip>.hex file created with codemicrobit.com or microbit.co.uk</uap:InfoTip> <uap:InfoTip>.hex file created with m.pxt.io or microbit.co.uk</uap:InfoTip>
<uap:SupportedFileTypes> <uap:SupportedFileTypes>
<uap:FileType ContentType="application/x-microbit-hex">.hex</uap:FileType> <uap:FileType ContentType="application/x-microbit-hex">.hex</uap:FileType>
</uap:SupportedFileTypes> </uap:SupportedFileTypes>