Compare commits

..

21 Commits

Author SHA1 Message Date
ac58002462 0.2.1 2016-03-30 16:29:52 -07:00
bbb153305a Bump kindscript to 0.2.1 2016-03-30 16:29:51 -07:00
03d7799afc Switching to 0.2 - with the new C++ architecture 2016-03-30 16:27:54 -07:00
5922135073 Merge branch 'cpp' 2016-03-30 16:27:32 -07:00
ba6c9f9d92 updating lesson links 2016-03-30 16:10:27 -07:00
a14585d36f updating lessons 2016-03-30 15:54:19 -07:00
b76b32a825 Move C++ sim stuff to proper namespace 2016-03-30 15:53:00 -07:00
1e77491b16 updated lessons 2016-03-30 15:11:05 -07:00
f00491df52 Merge branch 'master' of https://github.com/Microsoft/kindscript-microbit 2016-03-30 13:41:21 -07:00
899183f8f4 update quizzes 2016-03-30 13:41:01 -07:00
3b3a1140b4 0.0.17 2016-03-30 11:22:52 -07:00
085af70db3 Merge branch 'master' of https://github.com/Microsoft/kindscript-microbit 2016-03-30 11:15:41 -07:00
df8aaaca5a lesson updates 2016-03-30 11:15:31 -07:00
61dd0075b2 Fix build 2016-03-29 19:13:46 -07:00
059539b954 Merge branch 'master' into cpp 2016-03-29 17:56:33 -07:00
45aa780934 C++ fixes 2016-03-29 17:56:01 -07:00
0ccddf9fe8 Start on direct CPP migration 2016-03-29 17:11:17 -07:00
a0b3b77118 updated quizzes 2016-03-29 16:24:11 -07:00
8d1f59dc84 finished updated lessons 2016-03-29 16:17:34 -07:00
6a932a9c5c updated lessons 2016-03-29 16:16:31 -07:00
40405b7e7b updated lessons 2016-03-29 15:59:00 -07:00
94 changed files with 1347 additions and 2197 deletions

View File

@ -15,9 +15,6 @@ Show String
* [quiz answers](/microbit/lessons/answering-machine/quiz-answers)
* [challenges](/microbit/lessons/answering-machine/challenges)
## Class
Year 7
## Prior learning / place of lesson in scheme of work
@ -25,7 +22,16 @@ Learn how to creating a message with a **string**, `show string` to write your m
## Documentation
* **show string** : [read more...](/microbit/reference/basic/show-string)
```docs
basic.showString('Hi!')
input.onButtonPressed(Button.A, () => {
})
```
* **on button pressed** : [read more...](/microbit/reference/input/on-button-pressed)
## Objectives
@ -33,48 +39,3 @@ Learn how to creating a message with a **string**, `show string` to write your m
* learn how to show a string on the LED screen one character at a time
* learn how to use to register an event handler that will execute whenever an input button is pressed
## Progression Pathways / Computational Thinking Framework
#### Algorithms
* Uses diagrams to express solutions.(AB)
* Uses logical reasoning to predict outputs, showing an awareness of inputs (AL)
* Represents solutions using a structured notation (AL) (AB)
#### Programming & Development
* Creates programs that implement algorithms to achieve given goals (AL)
#### Hardware & Processing
* Knows that computers collect data from various input devices, including sensors and application software (AB)
#### Communication Networks
* Demonstrates responsible use of technologies and online services, and knows a range of ways to report concerns (AL)
#### Information Technology
* Collects, organizes, and presents data and information in digital content (AB)
* Makes appropriate improvements to solutions based on feedback received, and can comment on the success of the solution (EV)
* Uses criteria to evaluate the quality of solutions, can identify improvements making some refinements to the solution, and future solutions (EV)
* Evaluates the appropriatness of digital devices, internet services and application software to achieve given goals (EV)
* Recognises ethical issues surrounding the application of information technology beyond school.
Computational Thinking Concept: AB = Abstraction; DE = Decomposition; AL = Algorithmic Thinking; EV = Evaluation; GE = Generalisation
## Activity
* time: 20 min.
* [activity](/microbit/lessons/answering-machine/activity)
* [quiz](/microbit/lessons/answering-machine/quiz)
## Extended Activity
* time: 20 min.
* [challenges](/microbit/lessons/answering-machine/challenges)
## Homework
* Extended Activity: [challenges](/microbit/lessons/answering-machine/challenges)

View File

@ -10,10 +10,6 @@ Music
* [activity](/microbit/lessons/banana-keyboard/activity)
## Class
Year 7
## Prior learning/place of lesson in scheme of work
Learn how to convert your BBC micro:bit into a music player using pins P0 and GND, earphones (or speakers), as well as crocodile clips (or spring clips). The connect fruit using pins P1 and GND.

View File

@ -11,9 +11,6 @@ Music
* [activity](/microbit/lessons/beatbox/activity)
* [challenges](/microbit/lessons/beatbox/challenges)
## Class
Year 7
## Prior learning/place of lesson in scheme of work
@ -23,40 +20,3 @@ Learn how to make a beatbox music player using pins P1 and P2. We will be learni
* learn how to code music on the BBC micro:bit
## Progression Pathways / Computational Thinking Framework
#### Algorithms
* Uses diagrams to express solutions.(AB)
* Represents solutions using a structured notation (AL) (AB)
#### Programming & Development
* Creates programs that implement algorithms to achieve given goals (AL)
* Selects the appropriate data types(AL) (AB
#### Communication Networks
* Demonstrates responsible use of technologies and online services, and knows a range of ways to report concerns Understands how search engines rank search results (AL)
#### Information Technology
* Collects, organizes, and presents data and information in digital content (AB)
* Makes appropriate improvements to solutions based on feedback received, and can comment on the success of the solution (EV)
Computational Thinking Concept: AB = Abstraction; DE = Decomposition; AL = Algorithmic Thinking; EV = Evaluation; GE = Generalisation
## Activity
* time: 20 min.
* [activity](/microbit/lessons/beatbox/activity)
## Extended Activity
* time: 20 min.
* [challenges](/microbit/lessons/beatbox/challenges)
## Homework
* Extended Activity: [challenges](/microbit/lessons/beatbox/challenges)

View File

@ -13,9 +13,6 @@ Show LEDs
* [activity](/microbit/lessons/beautiful-image/activity)
* [challenges](/microbit/lessons/beautiful-image/challenges)
## Class
Year 7
## Prior learning/place of lesson in scheme of work
@ -23,50 +20,22 @@ Learn how to **show LEDs**, to show an image on the BBC micro:bit's LED screen.
## Documentation
* **show LEDs** : [read more...](/microbit/reference/basic/show-leds)
* **pause** : [read more...](/microbit/reference/basic/pause)
```docs
basic.showLeds(`
. . . . .
. . . . .
. . # . .
. . . . .
. . . . .
`)
basic.pause(100)
```
## Objectives
* learn how to display an image on the micro:bit's LED screen
* learn how to pause your code for the specified number of milliseconds
## Progression Pathways / Computational Thinking Framework
#### Algorithms
* Uses diagrams to express solutions.(AB)
* Represents solutions using a structured notation (AL) (AB)
* Can identify similarities and differences in situations and can use these to solve problems (pattern recognition)(GE)
#### Programming & Development
* Creates programs that implement algorithms to achieve given goals (AL)
* Declares and assigns variables(AB)
* Selects the appropriate data types(AL) (AB
#### Communication Networks
* Demonstrates responsible use of technologies and online services, and knows a range of ways to report concerns Understands how search engines rank search results (AL)
#### Information Technology
* Collects, organizes, and presents data and information in digital content (AB)
* Makes appropriate improvements to solutions based on feedback received, and can comment on the success of the solution (EV)
Computational Thinking Concept: AB = Abstraction; DE = Decomposition; AL = Algorithmic Thinking; EV = Evaluation; GE = Generalisation
## Activity
* time: 20 min.
* [activity](/microbit/lessons/beautiful-image/activity)
## Extended Activity
* time: 20 min.
* [challenges](/microbit/lessons/beautiful-image/challenges)
## Homework
* Extended Activity: [challenges](/microbit/lessons/beautiful-image/challenges)

View File

@ -15,36 +15,28 @@ Plot
* [quiz answers](/microbit/lessons/blink/quiz-answers)
* [challenges](/microbit/lessons/blink/challenges)
## Class
Year 7
## Prior learning / place of lesson in scheme of work
Learn how to control a blinking LED. We will be learning how to create a blinking app using forever as well as simple commands, such as plot, unplot and pause.
## What the teacher needs to know / QuickStart Computing Glossary
**Program:** A stored set of instructions encoded in a language understood by the computer that does some form of computation, processing input and/or stored data to generate output.
**Algorithm:** An unambiguous set of rules or a precise step-by-step guide to solve a problem or achieve a particular objective. The guided tutorial follows a algorithm and is a precise step-by-step guide to solve a problem
**Loop:** A block of code repeated automatically under the programs control. The blink program introduces Forever. The forever loop repeats code in the background forever.
**Command:** An instruction for the computer to execute, written in a particular programming language.
## Documentation
* **plot**: [read more...](/microbit/reference/led/plot)
* **unplot**: [read more...](/microbit/reference/led/unplot)
* **pause**: [read more...](/microbit/reference/basic/pause)
* **forever**: [read more...](/microbit/reference/basic/forever)
```docs
led.plot(0, 0)
## Resources
led.unplot(0, 0)
basic.pause(100)
basic.forever(() => {
})
```
* Activity: [activity](/microbit/lessons/blink/activity)
* Activity: [quiz](/microbit/lessons/blink/quiz)
* Extended Activity: [challenges](/microbit/lessons/blink/challenges)
## Objectives
@ -52,41 +44,3 @@ Learn how to control a blinking LED. We will be learning how to create a blinkin
* learn how to turn off LED lights on the LED screen
* learn how to pause program execution for the specified number of milliseconds
## Progression Pathways / Computational Thinking Framework
#### Algorithms
* Understands that iteration is the repetition of a process such as a loop. (AL)
#### Programming & Development
* Creates programs that implement algorithms to achieve given goals. (AL)
#### Data & Data Representation
* Understands the difference between data and information. (AB)
* Defines data types: real numbers and Boolean. (AB)
#### Information Technology
* Collects, organises and presents data and information in digital content. (AB)
* Makes appropriate improvements to solutions based on feedback received, and can comment on the success of the solution. (EV)
Computational Thinking Concept: AB = Abstraction; DE = Decomposition; AL = Algorithmic Thinking; EV = Evaluation; GE = Generalisation
## Activity
* time: 20 min.
* [activity](/microbit/lessons/blink/activity)
* [quiz](/microbit/lessons/blink/quiz)
* [quiz answers](/microbit/lessons/blink/quiz-answers)
## Extended Activity
* time: 20 min.
* [challenges](/microbit/lessons/blink/challenges)
## Homework
* Extended Activity: [challenges](/microbit/lessons/blink/challenges)

View File

@ -10,15 +10,10 @@ Variables
## Quick Links
* [tutorial](/microbit/lessons/catch-the-egg-game/tutorial)
* [quiz](/microbit/lessons/catch-the-egg-game/quiz)
* [quiz answers](/microbit/lessons/catch-the-egg-game/quiz-answers)
* [challenges](/microbit/lessons/catch-the-egg-game/challenges)
## Class
Year 7
## Prior learning/place of lesson in scheme of work
Learn how to create a catch the egg game game with **plot**, `led->plot` , **unplot**, `led->unplot`, and **acceleration** `input -> acceleration` to turn on and off LED lights on the LED screen. We will be learning how to create a catch the egg game app using global variables, forever loop, local variable, input acceleration, math min, math max, math random, math mod, if (conditionals), game library as well as simple commands, such as led plot, led unplot, and pause.
@ -52,40 +47,3 @@ Learn how to create a catch the egg game game with **plot**, `led->plot` , **unp
* learn how to return the modulus
* learn how to show a number of the BBC micro:bit screen
* learn how to pause your code for the specified number of milliseconds
## Progression Pathways / Computational Thinking Framework
#### Algorithms
* Designs solutions (algorithms) that use repetition and two-way selection, ie if, then and else.(AL)
* Uses logical reasoning to predict outputs, showing an awareness of inputs (AL)
* Recognises that different solutions exist for the same problem (AL) (AB) Understands that iteration is the repetition of a process such as a loop (AL)
* Represents solutions using a structured notation (AL) (AB)
#### Programming & Development
* Creates programs that implement algorithms to achieve given goals (AL)
* Declares and assigns variables(AB)
* Understands the difference between, and appropriately uses if and if, then and else statements(AL)
* Uses a variable and relational operators within a loop to govern termination (AL) (GE)
* Has practical experience of a high-level textual language, including using standard libraries when programming(AB) (AL)
* Uses a range of operators and expressions e.g. Boolean, and applies them in the context of program control. (AL)
* Selects the appropriate data types(AL) (AB
Computational Thinking Concept: AB = Abstraction; DE = Decomposition; AL = Algorithmic Thinking; EV = Evaluation; GE = Generalisation
## Activity
* time: 20 min.
* [tutorial](/microbit/lessons/catch-the-egg-game/tutorial)
* [quiz](/microbit/lessons/catch-the-egg-game/quiz)
## Extended Activity
* time: 20 min.
* [challenges](/microbit/lessons/catch-the-egg-game/challenges)
## Homework
* Extended Activity: [challenges](/microbit/lessons/catch-the-egg-game/challenges)

View File

@ -4,13 +4,9 @@ Coding challenges for catch the egg game.
## Before we get started
Complete the following guided tutorial:
Your starting code should look like this:
* [tutorial](/microbit/lessons/catch-the-egg-game/tutorial)
At the end of the tutorial, click `keep editing`. Your code should look like this:
```
```blocks
let basketX = 2
let eggX = 2
let eggY = 0
@ -20,7 +16,7 @@ basic.forever(() => {
eggY = eggY + 1
led.plot(eggX, eggY)
basic.pause(300)
let accX = input.acceleration("x")
let accX = input.acceleration(Dimension.X)
basketX = 2 + Math.min(2, Math.max(-2, accX / 200))
led.plot(basketX, 4)
if (eggY > 4) {
@ -49,7 +45,7 @@ Now that we know when an egg is caught, we can keep track of the score! We need
### ~
```
```blocks
let basketX1 = 2
let eggX1 = 2
let eggY1 = 0
@ -59,8 +55,8 @@ basic.forever(() => {
eggY1 = eggY1 + 1
led.plot(eggX1, eggY1)
basic.pause(300)
let accX1 = input.acceleration("x")
basketX1 = 2 + Math.min(2, Math.max(-2, accX1 / 200))
let accX = input.acceleration(Dimension.X)
basketX1 = 2 + Math.min(2, Math.max(-2, accX / 200))
led.plot(basketX1, 4)
if (eggY1 > 4) {
eggY1 = -1
@ -87,7 +83,7 @@ Catching eggs gets easier with practice so let's make the eggs fall faster every
### ~
```
```blocks
let basketX2 = 2
let eggX2 = 2
let eggY2 = 0
@ -98,7 +94,7 @@ basic.forever(() => {
eggY2 = eggY2 + 1
led.plot(eggX2, eggY2)
basic.pause(300)
let accX2 = input.acceleration("x")
let accX2 = input.acceleration(Dimension.X)
basketX2 = 2 + Math.min(2, Math.max(-2, accX2 / 200))
led.plot(basketX2, 4)
if (eggY2 > 4) {
@ -108,7 +104,7 @@ basic.forever(() => {
if (eggY2 == 4) {
if (basketX2 == eggX2) {
game.addScore(1)
if (math.mod(game.score(), 5) == 0) {
if (game.score() %5 == 0) {
}
} else {
game.removeLife(1)
@ -126,7 +122,7 @@ basic.forever(() => {
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
let basketX3 = 2
let eggX3 = 2
let eggY3 = 0
@ -137,7 +133,7 @@ basic.forever(() => {
eggY3 = eggY3 + 1
led.plot(eggX3, eggY3)
basic.pause(300)
let accX3 = input.acceleration("x")
let accX3 = input.acceleration(Dimension.X)
basketX3 = 2 + Math.min(2, Math.max(-2, accX3 / 200))
led.plot(basketX3, 4)
if (eggY3 > 4) {
@ -147,7 +143,7 @@ basic.forever(() => {
if (eggY3 == 4) {
if (basketX3 == eggX3) {
game.addScore(1)
if (math.mod(game.score(), 5) == 0) {
if (game.score()% 5 == 0) {
fallingPause1 = fallingPause1 - 25 // ***
}
} else {
@ -156,6 +152,7 @@ basic.forever(() => {
}
basic.pause(fallingPause1) // ***
})
```
Fantastic! Your game is now ready to show off.

View File

@ -22,7 +22,10 @@ Answer the questions while completing the tutorial. Pay attention to the dialogu
<br/>
```
```blocks
let basketX = 2
let eggX = 2
let eggY = 0
led.plot(eggX, eggY)
led.plot(basketX, 4)
```
@ -31,28 +34,22 @@ led.plot(basketX, 4)
<br/>
```
```blocks
let basketX = 2
let eggX = 2
let eggY = 0
led.unplot(eggX, eggY)
eggY = eggY + 1
led.plot(eggX, eggY)
```
## 4. Write the code that calculates 'basket x' given the variable 'acc x'.
## 4. . Write the code that resets the egg after it has fallen past the bottom of the BBC micro:bit.
<br/>
```
let accX = input.acceleration("x")
basketX = 2 + Math.min(2, Math.max(-2, accX / 200))
```
Note: the first line of code in this answer is optional.
## 5. Write the code that resets the egg after it has fallen past the bottom of the BBC micro:bit.
<br/>
```
```blocks
let eggX = 2
let eggY = 0
if (eggY > 4) {
eggY = -1
eggX = Math.random(5)

View File

@ -6,11 +6,11 @@ Programming a game of catch the egg using the accelerometer.
## Directions
Use this activity document to guide your work in the [catch the egg tutorial](/microbit/lessons/catch-the-egg-game/tutorial)
Use this activity document to guide your work in the [catch the egg challenges](/microbit/lessons/catch-the-egg-game/challenges)
Answer the questions while completing the tutorial. Pay attention to the dialogues!
## 1. Write the data type for the global variables 'basket' and 'egg'.
## 1. Write the data type for the variables 'basket' and 'egg'.
<br/>
@ -24,11 +24,7 @@ Answer the questions while completing the tutorial. Pay attention to the dialogu
<br/>
## 4. Write the code that calculates 'basket x' given the variable 'acc x'.
<br/>
## 5. Write the code that resets the egg after it has fallen past the bottom of the BBC micro:bit.
## 4. Write the code that resets the egg after it has fallen past the bottom of the BBC micro:bit.
<br/>

View File

@ -20,12 +20,24 @@ Learn the functions of **on data received**, **send number** and **receive numbe
## Documentation
* **forever** : [read more...](/microbit/reference/basic/forever)
* **acceleration** : [read more...](/microbit/reference/input/acceleration)
* **plot bar graph** : [read more...](/microbit/reference/led/plot-bar-graph)
* **on data received** : [read more...](/microbit/reference/radio/on-data-received)
* **send number** : [read more...](/microbit/reference/radio/send-number)
* **receive number** : [read more...](/microbit/reference/radio/receive-number)
```docs
basic.showNumber(0)
input.acceleration(Dimension.X)
led.plotBarGraph(0, 1023)
radio.onDataReceived(() => {
})
radio.sendNumber(0)
radio.receiveNumber()
```
## Objectives
@ -35,24 +47,3 @@ Learn the functions of **on data received**, **send number** and **receive numbe
* learn how to register code to run when a packet is received over radio
* learn how to broadcast a number data packet to other micro:bits connected via radio
* learn how to read the next radio packet as a number data packet
## Progression Pathways / Computational Thinking Framework
#### Algorithms
* Uses logical reasoning to predict outputs, showing an awareness of inputs (AL)
* Represents solutions using a structured notation (AL) (AB)
* Can identify similarities and differences in situations and can use these to solve problems (pattern recognition)(GE)
#### Programming & Development
* Creates programs that implement algorithms to achieve given goals (AL)
* Uses a variable and relational operators within a loop to govern termination (AL) (GE)
Computational Thinking Concept: AB = Abstraction; DE = Decomposition; AL = Algorithmic Thinking; EV = Evaluation; GE = Generalisation
## Activity
* time: 20 min.
* [activity](/microbit/lessons/charting/activity)

View File

@ -12,10 +12,8 @@ If (Conditionals)
* [activity](/microbit/lessons/compass/activity)
* [challenges](/microbit/lessons/compass/challenges)
## Class
Year 7
* [quiz](/microbit/lessons/compass/quiz)
* [quiz answers](/microbit/lessons/compass/quiz-answers)
## Prior learning/place of lesson in scheme of work
@ -23,14 +21,25 @@ Learn how to use an if statements to run code run code depending on whether a co
## Documentation
* **Compass Heading** : [read more...](/microbit/reference/input/compass-heading)
* **Forever** : [read more...](/microbit/reference/basic/forever)
* **Variables** : [read more...](/microbit/reference/variables/var)
* **Assignment Operator** : [read more...](/microbit/reference/variables/assign)
* **If** : [read more...](/microbit/reference/logic/if)
* **Comparison Operator** : [read more...](/microbit/reference/types/number)
* **Show String** : [read more...](/microbit/reference/basic/show-string)
* **Show LEDs** : [read more...](/microbit/reference/basic/show-leds)
```docs
input.compassHeading()
basic.forever(() => {})
let x = 0
if (true) {}
basic.showString("Hello!")
basic.showLeds(`
. . . . .
. . . . .
. . # . .
. . . . .
. . . . .
`)
```
## Objectives
@ -41,57 +50,3 @@ Learn how to use an if statements to run code run code depending on whether a co
* learn how to return a random number
* learn how to conditionally run code depending on whether a condition is true or not
* learn how to show an image on the LED screen
## Progression Pathways / Computational Thinking Framework
#### Algorithms
* Designs solutions (algorithms) that use repetition and two-way selection, ie if, then and else.(AL)
* Uses diagrams to express solutions.(AB)
* Uses logical reasoning to predict outputs, showing an awareness of inputs (AL)
* Designs solutions by decomposing a problem and creates a sub-solution for each of these parts. (DE) (AL) (AB)
* Represents solutions using a structured notation (AL) (AB)
#### Programming & Development
* Creates programs that implement algorithms to achieve given goals (AL)
* Declares and assigns variables(AB)
* Understands the difference between, and appropriately uses if and if, then and else statements(AL)
* Uses a range of operators and expressions e.g. Boolean, and applies them in the context of program control. (AL)
* Selects the appropriate data types(AL) (AB
#### Data & Data Representation
* Understands the difference between data and information(AB)
* Uses filters or can perform single criteria searches for information.(AL)
* Performs more complex searches for information e.g. using Boolean and relational operators(AL) (GE) (EV)
* Defines data types: real numbers and Boolean (AB)
#### Hardware & Processing
* Knows that computers collect data from various input devices, including sensors and application software (AB)
* Demonstrates responsible use of technologies and online services, and knows a range of ways to report concerns Understands how search engines rank search results (AL)
#### Information Technology
* Collects, organizes, and presents data and information in digital content (AB)
* Makes appropriate improvements to solutions based on feedback received, and can comment on the success of the solution (EV)
* Makes judgements about digital content when evaluating and repurposing it for a given audience (EV) (GE)
* Recognises ethical issues surrounding the application of information technology beyond school.
Computational Thinking Concept: AB = Abstraction; DE = Decomposition; AL = Algorithmic Thinking; EV = Evaluation; GE = Generalisation
## Activity
* time: 20 min.
* [activity](/microbit/lessons/compass/activity)
## Extended Activity
* time: 20 min.
* [challenges](/microbit/lessons/compass/challenges)
## Homework
* Extended Activity: [challenges](/microbit/lessons/compass/challenges)

View File

@ -41,7 +41,7 @@ If `degrees` is less than 135, the micro:bit is mostly pointing East. Display `E
```blocks
let degrees = null;
let degrees = 0;
basic.forever(() => {
degrees = input.compassHeading();
if (degrees < 45) {
@ -57,7 +57,7 @@ If `degrees` is less than 225, the micro:bit is mostly pointing South. Display `
```blocks
let degrees = null;
let degrees = 0;
basic.forever(() => {
degrees = input.compassHeading();
if (degrees < 45) {
@ -76,7 +76,7 @@ basic.forever(() => {
If none of these conditions returned true, then the micro:bit must be pointing West. Display `W` on the micro:bit.
```blocks
let degrees = null;
let degrees = 0;
basic.forever(() => {
degrees = input.compassHeading();
if (degrees < 45) {

View File

@ -7,7 +7,7 @@ Display the direction that the micro:bit is facing using the compass
Complete the following [guided tutorial](/microbit/lessons/compass/activity), your code should look like this:
```blocks
let degrees = null;
let degrees = 0;
basic.forever(() => {
degrees = input.compassHeading();
if (degrees < 45) {
@ -30,7 +30,7 @@ basic.forever(() => {
Instead of displaying `N` when the BBC micro:bit is pointing North, display a star to indicate the north star.
```blocks
let degrees = null;
let degrees = 0;
basic.forever(() => {
degrees = input.compassHeading();
if (degrees < 45) {
@ -61,7 +61,7 @@ basic.forever(() => {
Instead of displaying just `N`, `W`, `S`, or `E`, display the full word.
```blocks
let degrees = null;
let degrees = 0;
basic.forever(() => {
degrees = input.compassHeading();
if (degrees < 45) {

View File

@ -18,14 +18,15 @@ Gets the compass heading of the micro:bit in degrees
## 2. Write the code that stores the compass heading into a local variable called 'degrees'.
```
```blocks
let degrees = input.compassHeading()
```
## 3. Write the 'If statement' that will check if the device is mostly pointing North. Display 'N' on the micro:bit
```
```blocks
let degrees = input.compassHeading()
if (degrees < 45) {
basic.showString("N", 150)
}
@ -34,7 +35,8 @@ if (degrees < 45) {
## 4. Write the 'If statement' that will check if the device is mostly pointing East. Display 'E' on the micro:bit
```
```blocks
let degrees = input.compassHeading()
if (degrees < 135) {
basic.showString("E", 150)
}
@ -43,7 +45,8 @@ if (degrees < 135) {
## 5. Write the 'If statement' that will check if the device is mostly pointing South. Display 'S' on the micro:bit
```
```blocks
let degrees = input.compassHeading()
if (degrees < 225) {
basic.showString("S", 150)
}

View File

@ -12,10 +12,8 @@ Variables
* [activity](/microbit/lessons/counter/activity)
* [challenges](/microbit/lessons/counter/challenges)
## Class
Year 7
* [quiz](/microbit/lessons/counter/quiz)
* [quiz answers](/microbit/lessons/counter/quiz-answers)
## Prior learning/place of lesson in scheme of work
@ -23,6 +21,32 @@ Learn how to creating a **variable** to keep track of the current count. We will
## Documentation
```docs
input.compassHeading()
basic.forever(() => {
})
let x = 0
if (true) {
}
basic.showString("Hello!")
basic.showLeds(`
. . . . .
. . . . .
. . # . .
. . . . .
. . . . .
`)
```
* **variable**: [read more...](/microbit/reference/variables/var)
* **arithmetic operators**: [read more...](/microbit/reference/types/number)
* **on button pressed** : [read more...](/microbit/reference/input/on-button-pressed)
@ -35,41 +59,3 @@ Learn how to creating a **variable** to keep track of the current count. We will
* learn how to run code when an input button is pressed
* learn how to show a number on the LED screen, one digit at a time (scrolling from left to right)
## Progression Pathways / Computational Thinking Framework
#### Algorithms
* Understands that iteration is the repetition of a process such as a loop. (AL)
* Represents solutions using a structured notation. (AL) (AB)
#### Programming & Development
* Creates programs that implement algorithms to achieve given goals. (AL)
* Declares and assigns variables.(AB)
#### Data & Data Representation
* Understands the difference between data and information. (AB)
* Defines data types: real numbers and Boolean. (AB)
#### Information Technology
* Collects, organises and presents data and information in digital content. (AB)
* Makes appropriate improvements to solutions based on feedback received, and can comment on the success of the solution. (EV)
Computational Thinking Concept: AB = Abstraction; DE = Decomposition; AL = Algorithmic Thinking; EV = Evaluation; GE = Generalisation
## Activity
* time: 20 min.
* [activity](/microbit/lessons/counter/activity)
## Extended Activity
* time: 20 min.
* [challenges](/microbit/lessons/counter/challenges)
## Homework
* Extended Activity: [challenges](/microbit/lessons/counter/challenges)

View File

@ -10,7 +10,7 @@ Answers may vary but a variable is a place where you can store and retrieve data
## 2. Draw the stored value for the variable called count
```
```blocks
let count = 0
```
@ -22,11 +22,11 @@ We create a **variable**, `count` to keep track of the current count. The number
## 3. Draw which LEDs are ON after running this code and pressing button "A" once. Explain you chose to draw that number
```
let count_ = 0
```blocks
let counts = 0
input.onButtonPressed(Button.A, () => {
count_ = count_ + 1
basic.showNumber(count, 150)
counts = counts + 1
basic.showNumber(counts, 150)
})
```
@ -38,11 +38,11 @@ We are only pressing on button pressed once. So the number to display on the mic
## 4. Draw which LEDs are ON after running this code and pressing button "A" three times. Explain you chose to draw that number
```
count_ = 0
```blocks
let counting= 0
input.onButtonPressed(Button.A, () => {
count_ = count_ + 1
basic.showNumber(count_, 100)
counting = counting + 1
basic.showNumber(counting, 100)
})
```

View File

@ -16,7 +16,7 @@ Answer the questions while completing the tutorial. Pay attention to the dialogu
## 2. Draw the stored value for the variable called count
```
```blocks
let count = 0
```
@ -26,11 +26,11 @@ let count = 0
## 3. Draw which LEDs are ON after running this code and pressing button "A" once. Explain you chose to draw that number
```
let count_ = 0
```blocks
let counts = 0
input.onButtonPressed(Button.A, () => {
count_ = count_ + 1
basic.showNumber(count_, 100)
counts = counts + 1
basic.showNumber(counts, 150)
})
```
@ -40,11 +40,11 @@ input.onButtonPressed(Button.A, () => {
## 4. Draw which LEDs are ON after running this code and pressing button "A" three times. Explain you chose to draw that number
```
count_ = 0
```blocks
let counting= 0
input.onButtonPressed(Button.A, () => {
count_ = count_ + 1
basic.showNumber(count_, 100)
counting = counting + 1
basic.showNumber(counting, 100)
})
```

View File

@ -12,10 +12,8 @@ If (Conditionals)
* [activity](/microbit/lessons/die-roll/activity)
* [challenges](/microbit/lessons/die-roll/challenges)
## Class
Year 7
* [quiz](/microbit/lessons/die-roll/quiz)
* [quiz answers](/microbit/lessons/die-roll/quiz-answers)
## Prior learning/place of lesson in scheme of work
@ -23,12 +21,33 @@ Learn how to use an if statements to run code run code depending on whether a co
## Documentation
* **Variables** : [read more...](/microbit/reference/variables/var)
* **If** : [read more...](/microbit/blocks/if)
* **On Shake** : [read more...](/microbit/reference/on-gesture)
* **Assignment Operator** : [read more...](/microbit/reference/variables/assign)
* **Pick Random** : [read more...](/microbit/blocks/math)
* **Show LEDs** : [read more...](/microbit/reference/basic/show-leds)
```docs
input.onGesture(Gesture.Shake, () => {
})
let x = 0
x = Math.random(3)
if (true) {
}
basic.showLeds(`
. . . . .
. . . . .
. . # . .
. . . . .
. . . . .
`)
```
## Objectives
@ -39,57 +58,3 @@ Learn how to use an if statements to run code run code depending on whether a co
* learn how to return a random number
* learn how to conditionally run code depending on whether a condition is true or not
* learn how to show an image on the LED screen
## Progression Pathways / Computational Thinking Framework
#### Algorithms
* Designs solutions (algorithms) that use repetition and two-way selection, ie if, then and else.(AL)
* Uses diagrams to express solutions.(AB)
* Uses logical reasoning to predict outputs, showing an awareness of inputs (AL)
* Designs solutions by decomposing a problem and creates a sub-solution for each of these parts. (DE) (AL) (AB)
* Represents solutions using a structured notation (AL) (AB)
#### Programming & Development
* Creates programs that implement algorithms to achieve given goals (AL)
* Declares and assigns variables(AB)
* Understands the difference between, and appropriately uses if and if, then and else statements(AL)
* Uses a range of operators and expressions e.g. Boolean, and applies them in the context of program control. (AL)
* Selects the appropriate data types(AL) (AB
#### Data & Data Representation
* Understands the difference between data and information(AB)
* Uses filters or can perform single criteria searches for information.(AL)
* Performs more complex searches for information e.g. using Boolean and relational operators(AL) (GE) (EV)
* Defines data types: real numbers and Boolean (AB)
#### Hardware & Processing
* Knows that computers collect data from various input devices, including sensors and application software (AB)
* Demonstrates responsible use of technologies and online services, and knows a range of ways to report concerns Understands how search engines rank search results (AL)
#### Information Technology
* Collects, organizes, and presents data and information in digital content (AB)
* Makes appropriate improvements to solutions based on feedback received, and can comment on the success of the solution (EV)
* Makes judgements about digital content when evaluating and repurposing it for a given audience (EV) (GE)
* Recognises ethical issues surrounding the application of information technology beyond school.
Computational Thinking Concept: AB = Abstraction; DE = Decomposition; AL = Algorithmic Thinking; EV = Evaluation; GE = Generalisation
## Activity
* time: 20 min.
* [activity](/microbit/lessons/die-roll/activity)
## Extended Activity
* time: 20 min.
* [challenges](/microbit/lessons/die-roll/challenges)
## Homework
* Extended Activity: [challenges](/microbit/lessons/die-roll/challenges)

View File

@ -8,7 +8,7 @@ These are the answers to the [die roll quiz](/microbit/lessons/die-roll/quiz).
<br/>
```
```blocks
let roll = Math.random(6)
```
@ -18,9 +18,10 @@ let roll = Math.random(6)
<br/>
```
```blocks
let roll = Math.random(6)
if (roll == 5) {
basic.plotImage(`
basic.showLeds(`
. # . # .
. . . . .
. # . # .
@ -36,9 +37,11 @@ if (roll == 5) {
<br />
```
```blocks
let roll = Math.random(6)
if (roll == 5) {
basic.plotImage(`
basic.showLeds(`
. # . # .
. . . . .
. # . # .
@ -46,7 +49,7 @@ if (roll == 5) {
. # . # .
`)
} else if (roll == 4) {
basic.plotImage(`
basic.showLeds(`
. . . . .
. # . # .
. . # . .
@ -64,9 +67,10 @@ Note: students are only required to write the bottom half of this answer, starti
<br />
```
```blocks
let roll = Math.random(6)
if (roll == 4) {
basic.plotImage(`
basic.showLeds(`
. . . . .
. # . # .
. . # . .
@ -74,7 +78,7 @@ if (roll == 4) {
. . . . .
`)
} else if (roll == 3) {
basic.plotImage(`
basic.showLeds(`
. . . . .
. # . # .
. . . . .
@ -92,9 +96,10 @@ Note: students are only required to write the bottom half of this answer, starti
<br />
```
```blocks
let roll = Math.random(6)
if (roll == 3) {
basic.plotImage(`
basic.showLeds(`
. . . . .
. # . # .
. . . . .
@ -102,7 +107,7 @@ if (roll == 3) {
. . . . .
`)
} else if (roll == 2) {
basic.plotImage(`
basic.showLeds(`
# . . . .
. . . . .
. . # . .

View File

@ -6,7 +6,7 @@ Create a die when the BBC micro:bit is shaken
## Directions
Use this activity document to guide your work in the [die roll tutorial](/microbit/lessons/die-roll/tutorial).
Use this activity document to guide your work in the [die roll tutorial](/microbit/lessons/die-roll/activity).
Answer the questions while completing the tutorial. Pay attention to the dialogues!

View File

@ -12,10 +12,8 @@ While Loop
* [activity](/microbit/lessons/digi-yoyo/activity)
* [challenges](/microbit/lessons/digi-yoyo/challenges)
## Class
Year 7
* [quiz](/microbit/lessons/digi-yoyo/quiz)
* [quiz answers](/microbit/lessons/digi-yoyo/quiz-answers)
## Prior learning/place of lesson in scheme of work
@ -23,12 +21,14 @@ Learn how to creating a **while loop**, `while condition do` to repeat code whil
## Documentation
* **variables** : [read more...](/microbit/reference/variables/var)
* **assignment operator** : [read more...](/microbit/reference/variables/assign)
* **while loop** : [read more...](/microbit/reference/loops/while)
* **relational operator ** : [read more...](/microbit/reference/types/number)
* **pause** : [read more...](/microbit/reference/basic/pause)
* **show number** : [read more...](/microbit/reference/basic/show-number)
```docs
let x = 0
basic.showNumber(0)
while (true) {
basic.pause(20)
}
```
## Objectives
@ -39,50 +39,3 @@ Learn how to creating a **while loop**, `while condition do` to repeat code whil
* learn how to pause your code for the specified number of milliseconds
* learn how to show a number on the LED screen
## Progression Pathways / Computational Thinking Framework
#### Algorithms
* Uses diagrams to express solutions.(AB)
* Recognises that different solutions exist for the same problem (AL) (AB) Understands that iteration is the repetition of a process such as a loop (AL)
* Recognises that different algorithms exist for the same problem (AL) (GE)
* Represents solutions using a structured notation (AL) (AB)
* Can identify similarities and differences in situations and can use these to solve problems (pattern recognition)(GE)
#### Programming & Development
* Creates programs that implement algorithms to achieve given goals (AL)
* Declares and assigns variables(AB)
* Uses a variable and relational operators within a loop to govern termination (AL) (GE)
* Selects the appropriate data types(AL) (AB
#### Data & Data Representation
* Uses filters or can perform single criteria searches for information.(AL)
#### Communication Networks
* Demonstrates responsible use of technologies and online services, and knows a range of ways to report concerns Understands how search engines rank search results (AL)
#### Information Technology
* Collects, organizes, and presents data and information in digital content (AB)
* Makes appropriate improvements to solutions based on feedback received, and can comment on the success of the solution (EV)
* Recognises ethical issues surrounding the application of information technology beyond school.
Computational Thinking Concept: AB = Abstraction; DE = Decomposition; AL = Algorithmic Thinking; EV = Evaluation; GE = Generalisation
## Activity
* time: 20 min.
* [activity](/microbit/lessons/digi-yoyo/activity)
## Extended Activity
* time: 20 min.
* [challenges](/microbit/lessons/digi-yoyo/challenges)
## Homework
* Extended Activity: [challenges](/microbit/lessons/digi-yoyo/challenges)

View File

@ -18,7 +18,6 @@ let count = 0
Add a while loop that will loop over and over until the variable `count` equals 10.
![](/static/mb/blocks/lessons/digi-yoyo-1.jpg)
```blocks
let count = 0

View File

@ -69,5 +69,7 @@ Now, we need `count` to decrease by one after the micro:bit has displayed the va
We can do this by adding this line:
```blocks
let count = count + (count - 1);
let count = 0;
count = count + (count - 1);
```

View File

@ -16,7 +16,7 @@ A loop that repeats code while a condition is true.
<br/>
```
```blocks
let count = 0
```
@ -26,7 +26,8 @@ let count = 0
<br/>
```
```blocks
let count = 0
while (count < 5) {
count = count + 1
}

View File

@ -6,7 +6,7 @@ Create a counter with a while loop
## Directions
Use this activity document to guide your work in the [digi yoyo tutorial](/microbit/lessons/digi-yoyo/tutorial)
Use this activity document to guide your work in the [digi yoyo tutorial](/microbit/lessons/digi-yoyo/activity)
Answer the questions while completing the tutorial. Pay attention to the dialogues!

View File

@ -14,21 +14,32 @@ Pause
* [quiz](/microbit/lessons/flashing-heart/quiz)
* [quiz answers](/microbit/lessons/flashing-heart/quiz-answers)
* [challenges](/microbit/lessons/flashing-heart/challenges)
## Class
Year 7
## Prior learning/place of lesson in scheme of work
Learn how to `show LEDs` by showing an image on the LED screen. We will be learning how to create a blinking app using a forever loop as well as simple commands, such as show LEDs, pause, and clear screen.
## Documentation
* **forever**: [read more...](/microbit/reference/basic/forever)
* **show LEDs** : [read more...](/microbit/reference/basic/show-leds)
* **pause**: [read more...](/microbit/reference/basic/pause)
* **clear screen**: [read more...](/microbit/reference/basic/clear-screen)
```docs
basic.forever(() => {
})
basic.showLeds(`
. . . . .
. . . . .
. . # . .
. . . . .
. . . . .
`)
basic.pause(100)
basic.clearScreen()
```
## Objectives
@ -36,43 +47,3 @@ Learn how to `show LEDs` by showing an image on the LED screen. We will be learn
* learn how to show LEDs on the LED screen
* learn how to pause your code for the specified number of milliseconds
* learn how to turn off all the LED lights on the LED screen
## Progression Pathways / Computational Thinking Framework
#### Algorithms
* Understands that iteration is the repetition of a process such as a loop. (AL)
* Represents solutions using a structured notation. (AL) (AB)
#### Programming & Development
* Creates programs that implement algorithms to achieve given goals. (AL)
* Declares and assigns variables.(AB)
#### Data & Data Representation
* Understands the difference between data and information. (AB)
* Defines data types: real numbers and Boolean. (AB)
#### Information Technology
* Collects, organises and presents data and information in digital content. (AB)
* Makes appropriate improvements to solutions based on feedback received, and can comment on the success of the solution. (EV)
Computational Thinking Concept: AB = Abstraction; DE = Decomposition; AL = Algorithmic Thinking; EV = Evaluation; GE = Generalisation
## Exercise
* time: 20 min.
* [activity](/microbit/lessons/flashing-heart/activity)
* [quiz](/microbit/lessons/flashing-heart/quiz)
## Extended Activity
* time: 20 min.
* [challenges](/microbit/lessons/flashing-heart/challenges)
## Homework
* Extended Activity: [challenges](/microbit/lessons/flashing-heart/challenges)

View File

@ -13,61 +13,25 @@ Game Library
* [activity](/microbit/lessons/game-counter/activity)
* [challenges](/microbit/lessons/game-counter/challenges)
## Class
Year 7
## Prior learning/place of lesson in scheme of work
Learn how to create game blocks to keep track of the current score. We will be learning how to create a game using the blocks called `add points to score`, `score` as well as simple commands such as on button pressed and show number.
## Documentation
* **game library**: [read more...](/microbit/js/game-library)
* **on button pressed** : [read more...](/microbit/reference/input/on-button-pressed)
* **show number** : [read more...](/microbit/reference/basic/show-number)
```docs
game.addScore(1)
input.onButtonPressed(Button.A, () => {
})
basic.showNumber(0)
```
## Objectives
* learn how arithmetic operators operate on numbers and return a number
* learn how to run code when an input button is pressed
* learn how to show a score on the LED screen
## Progression Pathways / Computational Thinking Framework
#### Algorithms
* Understands that iteration is the repetition of a process such as a loop. (AL)
* Represents solutions using a structured notation. (AL) (AB)
#### Programming & Development
* Creates programs that implement algorithms to achieve given goals. (AL)
* Declares and assigns variables.(AB)
#### Data & Data Representation
* Understands the difference between data and information. (AB)
* Defines data types: real numbers and Boolean. (AB)
#### Information Technology
* Collects, organises and presents data and information in digital content. (AB)
* Makes appropriate improvements to solutions based on feedback received, and can comment on the success of the solution. (EV)
Computational Thinking Concept: AB = Abstraction; DE = Decomposition; AL = Algorithmic Thinking; EV = Evaluation; GE = Generalisation
## Activity
* time: 20 min.
* [activity](/microbit/lessons/game-counter/activity)
## Extended Activity
* time: 20 min.
* [challenges](/microbit/lessons/game-counter/challenges)
## Homework
* Extended Activity: [challenges](/microbit/lessons/game-counter/challenges)

View File

@ -11,67 +11,26 @@ Game Library
* [activity](/microbit/lessons/game-of-chance/activity)
* [challenges](/microbit/lessons/game-of-chance/challenges)
## Class
Year 7
## Prior learning / place of lesson in scheme of work
Learn how to creating a message with a **game over** to write your message. We will be learning how to create a message using show string and on button pressed.
## Documentation
* **game library** : [read more...](/microbit/js/game-library)
* **show string** : [read more...](/microbit/reference/basic/show-string)
* **on button pressed** : [read more...](/microbit/reference/input/on-button-pressed)
```docs
game.gameOver()
basic.showString("Hello!")
input.onButtonPressed(Button.A, () => {
})
```
## Objectives
* learn how to use the game library
* learn how to show a string on the LED screen one character at a time
* learn how to use to register an event handler that will execute whenever an input button is pressed
## Progression Pathways / Computational Thinking Framework
#### Algorithms
* Uses diagrams to express solutions.(AB)
* Uses logical reasoning to predict outputs, showing an awareness of inputs (AL)
* Represents solutions using a structured notation (AL) (AB)
#### Programming & Development
* Creates programs that implement algorithms to achieve given goals (AL)
#### Hardware & Processing
* Knows that computers collect data from various input devices, including sensors and application software (AB)
#### Communication Networks
* Demonstrates responsible use of technologies and online services, and knows a range of ways to report concerns (AL)
#### Information Technology
* Collects, organizes, and presents data and information in digital content (AB)
* Makes appropriate improvements to solutions based on feedback received, and can comment on the success of the solution (EV)
* Uses criteria to evaluate the quality of solutions, can identify improvements making some refinements to the solution, and future solutions (EV)
* Evaluates the appropriatness of digital devices, internet services and application software to achieve given goals (EV)
* Recognises ethical issues surrounding the application of information technology beyond school.
Computational Thinking Concept: AB = Abstraction; DE = Decomposition; AL = Algorithmic Thinking; EV = Evaluation; GE = Generalisation
## Activity
* time: 20 min.
* [activity](/microbit/lessons/game-of-chance/activity)
## Extended Activity
* time: 20 min.
* [challenges](/microbit/lessons/game-of-chance/challenges)
## Homework
* Extended Activity: [challenges](/microbit/lessons/game-of-chance/challenges)

View File

@ -21,12 +21,30 @@ Learn how to get the acceleration **acceleration**, `acceleration` value (g-forc
## Documentation
* **forever** : [read more...](/microbit/reference/basic/forever)
* **local variable** : [read more...](/microbit/reference/variables/var)
* **acceleration** : [read more...](/microbit/reference/input/acceleration)
* **absolute value** : [read more...](/microbit/js/math)
* **set brightness** : [read more...](/microbit/reference/led/set-brightness)
* **show LEDs** : [read more...](/microbit/reference/basic/show-leds)
```docs
basic.forever(() => {
})
let x = 0
input.acceleration(Dimension.X)
Math.abs(0)
led.setBrightness(255)
basic.showLeds(`
. . . . .
. . . . .
. . # . .
. . . . .
. . . . .
`)
```
## Objectives
@ -37,49 +55,3 @@ Learn how to get the acceleration **acceleration**, `acceleration` value (g-forc
* learn how to sets the brightness of the LED screen
* learn how to turn on all the LED lights on the LED screen
## Progression Pathways / Computational Thinking Framework
#### Algorithms
* Uses diagrams to express solutions.(AB)
* Uses logical reasoning to predict outputs, showing an awareness of inputs (AL)
* Represents solutions using a structured notation (AL) (AB)
#### Programming & Development
* Creates programs that implement algorithms to achieve given goals (AL)
* Declares and assigns variables(AB)
* Uses a variable and relational operators within a loop to govern termination (AL) (GE)
* Selects the appropriate data types(AL) (AB
#### Data & Data Representation
* Understands the difference between data and information(AB)
* Uses filters or can perform single criteria searches for information.(AL)
#### Hardware & Processing
* Knows that computers collect data from various input devices, including sensors and application software (AB)
#### Information Technology
* Collects, organizes, and presents data and information in digital content (AB)
* Makes appropriate improvements to solutions based on feedback received, and can comment on the success of the solution (EV)
* Recognises ethical issues surrounding the application of information technology beyond school.
Computational Thinking Concept: AB = Abstraction; DE = Decomposition; AL = Algorithmic Thinking; EV = Evaluation; GE = Generalisation
## Activity
* time: 20 min.
* [activity](/microbit/lessons/glowing-pendulum/activity)
## Extended Activity
* time: 20 min.
* [challenges](/microbit/lessons/glowing-pendulum/challenges)
## Homework
* Extended Activity: [challenges](/microbit/lessons/glowing-pendulum/challenges)

View File

@ -20,7 +20,7 @@ We are creating a forever loop to constantly display the appropriate brightness
<br/>
```
```blocks
let acceleration = input.acceleration("y")
```
@ -28,16 +28,16 @@ let acceleration = input.acceleration("y")
<br/>
```
acceleration = math.abs(acceleration)
```blocks
let acceleration = math.abs(acceleration)
```
## 4. Write the code that uses the acceleration value from question #3 to set the brightness on the BBC micro:bit.
<br/>
```
acceleration = acceleration / 4
```blocks
let acceleration = acceleration / 4
led.setBrightness(acceleration)
```

View File

@ -6,7 +6,7 @@ construct a pendulum that glows using acceleration #LED #number #math #accelerat
## Directions
Use this activity document to guide your work in the [glowing pendulum tutorial](/microbit/lessons/glowing-pendulum/tutorial)
Use this activity document to guide your work in the [glowing pendulum tutorial](/microbit/lessons/glowing-pendulum/activity)
Answer the questions while completing the tutorial. Pay attention to the dialogues!

View File

@ -15,24 +15,10 @@ Fade Out
* [quiz answers](/microbit/lessons/glowing-sword/quiz-answers)
* [challenges](/microbit/lessons/glowing-sword/challenges)
## Class
Year 7
## Prior learning/place of lesson in scheme of work
Learn how to manipulate an image through **fade out**, `fade out` to gradually decrease the LED screen brightness until the LED lights are turned off. We will be learning how to fade an image using simple commands, such as image create image, image show image, LED fade out, basic pause, and fade in.
## What the teacher needs to know/QuickStart Computing Glossary
* Algorithm: An unambiguous set of rules or a precise step-bystep guide to solve a problem or achieve a particular objective.
* Computational thinking: Thinking about systems or problems in a way that allows computer systems to be used to model or solve these.
* Hardware: The physical systems and components of digital devices; see also software.
* Programmable toys: Robots designed for children to use, accepting input, storing short sequences of simple instructions and moving according to this stored program.
* Script: A computer program typically executed one line at a time through an interpreter, such as the instructions for a Scratch character.
* Sequence: To place program instructions in order, with each executed one after the other.
* Simulation: Using a computer to model the state and behaviour of real-world (or imaginary) systems, including physical or social systems; an integral part of most computer games.
## Documentation
* **create image** : [read more...](/microbit/reference/images/create-image)
@ -41,57 +27,4 @@ Learn how to manipulate an image through **fade out**, `fade out` to gradually d
* **pause** : [read more...](/microbit/reference/basic/pause)
* **fade in** : [read more...](/microbit/reference/led/fade-in)
## Resources
* Activity: [activity](/microbit/lessons/glowing-sword/activity)
* Activity: [quiz](/microbit/lessons/glowing-sword/quiz)
* Extended Activity: [challenges](/microbit/lessons/glowing-sword/challenges)
## Objectives
* learn how to plot an image
* learn how to gradually decrease the LED screen brightness until the LED lights are turned off
* pause your code for the specified number of milliseconds
* learn how to gradually increase the LED screen brightness until the LED lights are turned on
## Links to the National Curriculum Programmes of Study for Computing
## Progression Pathways / Computational Thinking Framework
#### Algorithms
* Uses diagrams to express solutions.(AB)
* Represents solutions using a structured notation (AL) (AB)
#### Programming & Development
* Creates programs that implement algorithms to achieve given goals (AL)
* Selects the appropriate data types(AL) (AB)
#### Information Technology
* Collects, organizes, and presents data and information in digital content (AB)
* Makes appropriate improvements to solutions based on feedback received, and can comment on the success of the solution (EV)
* Recognises ethical issues surrounding the application of information technology beyond school.
Computational Thinking Concept: AB = Abstraction; DE = Decomposition; AL = Algorithmic Thinking; EV = Evaluation; GE = Generalisation
## Activity
* time: 20 min.
* [activity](/microbit/lessons/glowing-sword/activity)
* [quiz](/microbit/lessons/lucky-7/quiz)
## Extended Activity
* time: 20 min.
* [challenges](/microbit/lessons/glowing-sword/challenges)
## Homework
* Extended Activity: [challenges](/microbit/lessons/glowing-sword/challenges)
## Intended follow on
Publish script to the classroom.

View File

@ -12,10 +12,8 @@ Math - Pick Random
* [activity](/microbit/lessons/guess-the-number/activity)
* [challenges](/microbit/lessons/guess-the-number/challenges)
## Class
Year 7
* [quiz](/microbit/lessons/guess-the-number/quiz)
* [quiz answers](/microbit/lessons/guess-the-number/quiz-answers)
## Prior learning/place of lesson in scheme of work
@ -23,12 +21,23 @@ Learn how to create numbers randomly by using the input of the BBC micro:bit. We
## Documentation
* **on button pressed**: [read more...](/microbit/reference/input/on-button-pressed)
* **local variable **: [read more...](/microbit/reference/variables/var)
* **assignment operator**: [read more...](/microbit/reference/variables/assign)
* **show number**: [read more...](/microbit/reference/basic/show-number)
* **pick number**: [read more...](/microbit/blocks/math)
* **clear screen**: [read more...](/microbit/reference/basic/clear-screen)
```docs
input.onButtonPressed(Button.A, () => {
})
let x = 0
basic.showNumber(0)
Math.random(3)
basic.clearScreen()
```
## Objectives
@ -38,42 +47,3 @@ Learn how to create numbers randomly by using the input of the BBC micro:bit. We
* learn how to returns a random number
* learn how to show a number on the LED screen, one digit at a time (scrolling left to right)
* learn how to turn off all the LED lights on the LED screen
## Progression Pathways / Computational Thinking Framework
#### Algorithms
* Understands that iteration is the repetition of a process such as a loop. (AL)
* Represents solutions using a structured notation. (AL) (AB)
#### Programming & Development
* Creates programs that implement algorithms to achieve given goals. (AL)
* Declares and assigns variables.(AB)
#### Data & Data Representation
* Understands the difference between data and information. (AB)
* Defines data types: real numbers and Boolean. (AB)
#### Information Technology
* Collects, organises and presents data and information in digital content. (AB)
* Makes appropriate improvements to solutions based on feedback received, and can comment on the success of the solution. (EV)
Computational Thinking Concept: AB = Abstraction; DE = Decomposition; AL = Algorithmic Thinking; EV = Evaluation; GE = Generalisation
## Activity
* time: 20 min.
* [activity](/microbit/lessons/guess-the-number/activity)
## Extended Activity
* time: 20 min.
* [challenges](/microbit/lessons/guess-the-number/challenges)
## Homework
* Extended Activity: [challenges](/microbit/lessons/guess-the-number/challenges)

View File

@ -12,27 +12,29 @@ Answers may vary. Generally, on button pressed run code when an input button is
Write the line of code that creates a condition when the BBC micro:bit button A is pressed.
```
input.onButtonPressed(Button.A, () => {
```blocks
input.onButtonPressed(Button.A, () => {
})
```
## 3. Consider the following directions
## 3. Write the line of code that creates a **local variable** and a **random number**.
Write the line of code that creates a **local variable** and a **random number**.
```
```blocks
let randomNumber = Math.random(10)
```
## 4. Consider the following code
```
randomNumber = Math.random(10)
```
## 4.
If the rectangle below represents the BBC micro:bit, shade the areas that will be displayed. Explain why that particular area is shaded.
```blocks
let randomNumber = Math.random(10)
```
![](/static/mb/lessons/guess-the-number-0.png)
The random number generator will return a number from 0 to the limit. However, not including the limit unless the limit is 0. So you can place an X to represent any single digit number.

View File

@ -6,7 +6,7 @@ Learn how to generate a random number on the micro:bit. #math #random #docs
## Directions
Use this activity document to guide your work in the [guess the number tutorial](/microbit/lessons/guess-the-number/tutorial).
Use this activity document to guide your work in the [guess the number tutorial](/microbit/lessons/guess-the-number/activity).
Answer the questions while completing the tutorial. Pay attention to the dialogues!
@ -24,7 +24,7 @@ Answer the questions while completing the tutorial. Pay attention to the dialogu
## 4. Draw the area that could be lit based on the code below. Explain why you chose to draw that number.
```
```blocks
let randomNumber = Math.random(10)
basic.showNumber(randomNumber, 150)
```

View File

@ -11,10 +11,6 @@ Music
* [activity](/microbit/lessons/happy-birthday/activity)
* [challenges](/microbit/lessons/happy-birthday/challenges)
## Class
Year 7
## Prior learning/place of lesson in scheme of work
Learn how to convert your BBC micro:bit into a music player using pins P0 and GND, earphones (or speakers), as well as crocodile clips (or spring clips). We will be learning how to code musical notes using simple commands such as play, keys, and notes.
@ -26,50 +22,7 @@ Learn how to convert your BBC micro:bit into a music player using pins P0 and GN
* Program: A stored set of instructions encoded in a language understood by the computer that does some form of computation, processing input and/or stored data to generate output.
* Simulation: Using a computer to model the state and behaviour of real-world (or imaginary) systems, including physical or social systems; an integral part of most computer games.
## Resources
* Activity: [activity](/microbit/lessons/happy-birthday/activity)
* Extended Activity: [challenges](/microbit/lessons/happy-birthday/challenges)
## Objectives
* learn how to code music on the BBC micro:bit
* learn how to setup the BBC micro:bit as a music player
## Progression Pathways / Computational Thinking Framework
#### Algorithms
* Uses diagrams to express solutions.(AB)
* Represents solutions using a structured notation (AL) (AB)
#### Programming & Development
* Creates programs that implement algorithms to achieve given goals (AL)
* Selects the appropriate data types(AL) (AB
#### Communication Networks
* Demonstrates responsible use of technologies and online services, and knows a range of ways to report concerns Understands how search engines rank search results (AL)
#### Information Technology
* Collects, organizes, and presents data and information in digital content (AB)
* Makes appropriate improvements to solutions based on feedback received, and can comment on the success of the solution (EV)
Computational Thinking Concept: AB = Abstraction; DE = Decomposition; AL = Algorithmic Thinking; EV = Evaluation; GE = Generalisation
## Activity
* time: 20 min.
* [activity](/microbit/lessons/happy-birthday/activity)
## Extended Activity
* time: 20 min.
* [challenges](/microbit/lessons/happy-birthday/challenges)
## Homework
* Extended Activity: [challenges](/microbit/lessons/happy-birthday/challenges)

View File

@ -10,10 +10,6 @@ Music
* [activity](/microbit/lessons/light-beatbox/activity)
## Class
Year 7
## Prior learning/place of lesson in scheme of work
Learn how to make a light beatbox music player using the light sensor. We will be learning how to code musical notes using light level, a local variable, conditionals, on button pressed as well as simple commands such as ring tone and rest.
@ -23,17 +19,3 @@ Learn how to make a light beatbox music player using the light sensor. We will b
* learn how to control the light sensor on the BBC micro:bit
* learn how to code music on the BBC micro:bit
## Progression Pathways / Computational Thinking Framework
#### Algorithms
* Uses diagrams to express solutions.(AB)
* Represents solutions using a structured notation (AL) (AB)
#### Programming & Development
* Creates programs that implement algorithms to achieve given goals (AL)
* Selects the appropriate data types(AL) (AB
Computational Thinking Concept: AB = Abstraction; DE = Decomposition; AL = Algorithmic Thinking; EV = Evaluation; GE = Generalisation

View File

@ -12,6 +12,9 @@ For Loop
* [activity](/microbit/lessons/looper/activity)
* [challenges](/microbit/lessons/looper/challenges)
* [quiz](/microbit/lessons/looper/quiz)
* [quiz answers](/microbit/lessons/looper/quiz-answers)
## Class
@ -23,10 +26,15 @@ Learn how to control a blinking LED. We will be learning how to create a blinkin
## Documentation
* **for**: [read more...](/microbit/reference/loops/for)
* **show number**: [read more...](/microbit/reference/basic/show-number)
* **pause**: [read more...](/microbit/reference/basic/pause)
* **arithmetic operators**: [read more...](/microbit/reference/types/number)
```docs
for (let i = 0; i < 5; i++) {
}
basic.showNumber(0)
basic.pause(100)
```
## Objectives
@ -34,44 +42,3 @@ Learn how to control a blinking LED. We will be learning how to create a blinkin
* learn how to show a number on the LED screen, one digit at a time (scrolling from left to right)
* learn how to pause program execution for the specified number of milliseconds
* learn how to arithmetic operators operate on numbers and return a number
## Progression Pathways / Computational Thinking Framework
#### Algorithms
* Uses logical reasoning to predict outputs, showing an awareness of inputs. (AL)
* Understands that iteration is the repetition of a process such as a loop. (AL)
* Represents solutions using a structured notation. (AL) (AB)
#### Programming & Development
* Creates programs that implement algorithms to achieve given goals. (AL)
* Uses a variable and relational operators within a loop to govern termination. (AL) (GE)
* Uses a range of operators and expressions e.g. Boolean, and applies them in the context of program control. (AL)
#### Data & Data Representation
* Understands the difference between data and information. (AB)
* Defines data types: real numbers and Boolean. (AB)
#### Information Technology
* Collects, organises and presents data and information in digital content. (AB)
* Makes appropriate improvements to solutions based on feedback received, and can comment on the success of the solution. (EV)
Computational Thinking Concept: AB = Abstraction; DE = Decomposition; AL = Algorithmic Thinking; EV = Evaluation; GE = Generalisation
## Activity
* time: 10 min.
* [activity](/microbit/lessons/looper/activity)
## Extended Activity
* time: 20 min.
* [challenges](/microbit/lessons/looper/challenges)
## Homework
* Extended Activity: [challenges](/microbit/lessons/looper/challenges)

View File

@ -10,7 +10,7 @@ Answers will vary. In general, for loop refers to the code that repeats for a fi
## 2. Consider the following code
```
```blocks
for (let i = 0; i < 4; i++) {
basic.showNumber(i, 150)
}
@ -24,7 +24,7 @@ Let's create a for loop where `0` is the loop's starting value, `i` is the index
## 3. Consider the following code
```
```blocks
for (let i1 = 0; i1 < 6; i1++) {
basic.showNumber(i1, 150)
}

View File

@ -6,7 +6,7 @@ Learn how to create a series of numbers with a for loop. #LED #screen #plot #doc
## Directions
Use this activity document to guide your work in the [looper tutorial](/microbit/lessons/looper/tutorial)
Use this activity document to guide your work in the [looper tutorial](/microbit/lessons/looper/activity)
Answer the questions while completing the tutorial. Pay attention to the dialogues!
@ -16,7 +16,7 @@ Answer the questions while completing the tutorial. Pay attention to the dialogu
## 2. Draw the areas where the LEDs will be lit based on the code below. Explain why you chose to draw those numbers.
```
```blocks
for (let i = 0; i < 4; i++) {
basic.showNumber(i, 150)
}
@ -28,7 +28,7 @@ for (let i = 0; i < 4; i++) {
## 3. Draw the areas where the LEDs will be lit based on the code below. Explain why you chose to draw those numbers.
```
```blocks
for (let i1 = 0; i1 < 6; i1++) {
basic.showNumber(i1, 150)
}

View File

@ -15,103 +15,26 @@ On Pin Pressed
* [quiz answers](/microbit/lessons/love-meter/quiz-answers)
* [challenges](/microbit/lessons/love-meter/challenges)
## Class
Year 7
## Prior learning/place of lesson in scheme of work
Learn how to use the **pin pressed**, `on pin pressed` to run code when the user holds the GND pin with one hand, and presses pin 0 with the other hand, thus completing a circuit. We will be learning how to create a love meter using input on pin pressed, a local variable, math random, If (conditional) as well as simple commands, such as show number, pause, and show string.
## What the teacher needs to know/QuickStart Computing Glossary
* Hardware: The physical systems and components of digital devices; see also software.
* Input: Data provided to a computer system, such as via a keyboard, mouse, microphone, camera or physical sensors.
* Output: The information produced by a computer system for its user, typically on a screen, through speakers or on a printer, but possibly through the control of motors in physical systems.
* Programmable toys: Robots designed for children to use, accepting input, storing short sequences of simple instructions and moving according to this stored program.
* Script: A computer program typically executed one line at a time through an interpreter, such as the instructions for a Scratch character.
* Variables: A way in which computer programs can store, retrieve or change data, such as a score, the time left, or the users name.
## Documentation
* **on pin pressed** : [read more...](/microbit/reference/input/on-pin-pressed)
* **local variable** : [read more...](/microbit/reference/variables/var)
* **Boolean** : [read more...](/microbit/reference/types/boolean)
* **math random** : [read more...](/microbit/js/math)
* **show number** : [read more...](/microbit/reference/basic/show-number)
* **pause** : [read more...](/microbit/reference/basic/pause)
* **If** : [read more...](/microbit/reference/logic/if)
* **show string** : [read more...](/microbit/reference/basic/show-string)
```docs
if (true) {
## Resources
}
* Activity: [activity](/microbit/lessons/love-meter/activity)
* Activity: [quiz](/microbit/lessons/love-meter/quiz)
* Extended Activity: [challenges](/microbit/lessons/love-meter/challenges)
input.onPinPressed(TouchPin.P0, () => {
## Objectives
})
let x = 0
Math.random(3)
basic.showNumber(0)
basic.pause(100)
* learn how to run code when the user holds the GND pin in one hand, and presses pin 0 with the other hand, thus completing a circuit; when you run a script with this function in a web browser, click pin 0 on the simulator
* learn how to a create a variable for a place where you can store and retrieve data
* learn how Boolean operators take Boolean inputs and evaluates to a Boolean output
* learn how to return a random number
* learn how to show a number on the LED screen
* learn how to pause your code for the specified number of milliseconds
* learn how to conditionally run code depending on whether a condition is true or not
* learn how to show a string on the LED screen one character at a time (scrolling from left to right)
## Progression Pathways / Computational Thinking Framework
#### Algorithms
* Designs solutions (algorithms) that use repetition and two-way selection, ie if, then and else.(AL)
* Uses diagrams to express solutions.(AB)
* Uses logical reasoning to predict outputs, showing an awareness of inputs (AL)
* Designs solutions by decomposing a problem and creates a sub-solution for each of these parts. (DE) (AL) (AB)
* Represents solutions using a structured notation (AL) (AB)
#### Programming & Development
* Creates programs that implement algorithms to achieve given goals (AL)
* Declares and assigns variables(AB)
* Understands the difference between, and appropriately uses if and if, then and else statements(AL)
* Uses a variable and relational operators within a loop to govern termination (AL) (GE)
* Uses a range of operators and expressions e.g. Boolean, and applies them in the context of program control. (AL)
* Selects the appropriate data types(AL) (AB
#### Data & Data Representation
* Understands the difference between data and information(AB)
* Uses filters or can perform single criteria searches for information.(AL)
* Performs more complex searches for information e.g. using Boolean and relational operators(AL) (GE) (EV)
* Defines data types: real numbers and Boolean (AB)
#### Hardware & Processing
* Knows that computers collect data from various input devices, including sensors and application software (AB)
* Demonstrates responsible use of technologies and online services, and knows a range of ways to report concerns Understands how search engines rank search results (AL)
#### Information Technology
* Collects, organizes, and presents data and information in digital content (AB)
* Makes appropriate improvements to solutions based on feedback received, and can comment on the success of the solution (EV)
* Makes judgements about digital content when evaluating and repurposing it for a given audience (EV) (GE)
* Recognises ethical issues surrounding the application of information technology beyond school.
Computational Thinking Concept: AB = Abstraction; DE = Decomposition; AL = Algorithmic Thinking; EV = Evaluation; GE = Generalisation
## Activity
* time: 20 min.
* [activity](/microbit/lessons/love-meter/activity)
* [quiz](/microbit/lessons/love-meter/quiz)
## Extended Activity
* time: 20 min.
* [challenges](/microbit/lessons/love-meter/challenges)
## Homework
* Extended Activity: [challenges](/microbit/lessons/love-meter/challenges)
```

View File

@ -15,79 +15,8 @@ Show Number
* [quiz answers](/microbit/lessons/lucky-7/quiz-answers)
* [challenges](/microbit/lessons/lucky-7/challenges)
## Class
Year 7
## Prior learning / place of lesson in scheme of work
Learn how to display a number, `show number` to generate numbers. We will be learning how to create numbers using show number as well as simple commands, such as pause.
## What the teacher needs to know / QuickStart Computing Glossary
* Programmable toys: Robots designed for children to use, accepting input, storing short sequences of simple instructions and moving according to this stored program.
* Simulation: Using a computer to model the state and behaviour of real-world (or imaginary) systems, including physical or social systems; an integral part of most computer games.
## Documentation
* **show number** : [read more...](/microbit/reference/basic/show-number)
* **pause** : [read more...](/microbit/reference/basic/pause)
## Resources
* Activity: [activity](/microbit/lessons/lucky-7/activity)
* Activity: [quiz](/microbit/lessons/lucky-7/quiz)
* Extended Activity: [challenges](/microbit/lessons/lucky-7/challenges)
## Objectives
* learn how to show a number on the LED screen, one digit at a time
* learn how to pause program execution for the specified number of milliseconds
## Progression Pathways / Computational Thinking Framework
#### Algorithms
* Uses diagrams to express solutions.(AB)
* Designs solutions by decomposing a problem and creates a sub-solution for each of these parts. (DE) (AL) (AB)
* Understands that iteration is the repetition of a process such as a loop (AL)
* Recognises that different algorithms exist for the same problem (AL) (GE)
* Represents solutions using a structured notation (AL) (AB)
* Can identify similarities and differences in situations and can use these to solve problems (pattern recognition)(GE)
#### Programming & Development
* Creates programs that implement algorithms to achieve given goals (AL)
* Selects the appropriate data types(AL) (AB
#### Data & Data Representation
* Defines data types: real numbers and Boolean (AB)
#### Hardware & Processing
* Understands the difference between hardware and application software, and their roles within a computer system (AB)
#### Information Technology
* Collects, organizes, and presents data and information in digital content (AB)
* Makes appropriate improvements to solutions based on feedback received, and can comment on the success of the solution (EV)
* Recognises ethical issues surrounding the application of information technology beyond school.
Computational Thinking Concept: AB = Abstraction; DE = Decomposition; AL = Algorithmic Thinking; EV = Evaluation; GE = Generalisation
## Activity
* time: 20 min.
* [activity](/microbit/lessons/lucky-7/activity)
* [quiz](/microbit/lessons/lucky-7/quiz)
## Extended Activity
* time: 20 min.
* [challenges](/microbit/lessons/lucky-7/challenges)
## Homework
* Extended Activity: [challenges](/microbit/lessons/lucky-7/challenges)

View File

@ -10,10 +10,8 @@ If (Conditionals)
* [activity](/microbit/lessons/magic-8/activity)
* [challenges](/microbit/lessons/magic-8/challenges)
## Class
Year 7
* [quiz](/microbit/lessons/magic-8/quiz)
* [quiz answers](/microbit/lessons/magic-8/quiz-answers)
## Prior learning/place of lesson in scheme of work
@ -21,13 +19,18 @@ Learn how to creating **conditionals**, `if condition do` to conditionally run c
## Documentation
* **show string** : [read more...](/microbit/reference/basic/show-string)
* **show number** : [read more...](/microbit/reference/basic/show-number)
* **on shake** : [read more...](/microbit/reference/input/on-gesture)
* **clear screen** : [read more...](/microbit/reference/basic/clear-screen)
* **variable** : [read more...](/microbit/reference/variables/var)
* **pick number** : [read more...](/microbit/blocks/math)
* **if** : [read more...](/microbit/reference/logic/if)
```docs
if (true) {
}
Math.random(3)
input.onGesture(Gesture.Shake, () => {
})
basic.showNumber(7)
basic.clearScreen()
basic.showString("Hello!")
```
## Objectives
@ -39,57 +42,3 @@ Learn how to creating **conditionals**, `if condition do` to conditionally run c
* learn how to learn how to return a random number
* learn how to learn how to conditionally run code depending on whether a condition is true or not
## Progression Pathways / Computational Thinking Framework
#### Algorithms
* Designs solutions (algorithms) that use repetition and two-way selection, ie if, then and else.(AL)
* Uses diagrams to express solutions.(AB)
* Recognises that different solutions exist for the same problem (AL) (AB) Understands that iteration is the repetition of a process such as a loop (AL)
* Represents solutions using a structured notation (AL) (AB)
#### Programming & Development
* Creates programs that implement algorithms to achieve given goals (AL)
* Declares and assigns variables(AB)
* Understands the difference between, and appropriately uses if and if, then and else statements(AL)
* Uses a variable and relational operators within a loop to govern termination (AL) (GE)
* Uses a range of operators and expressions e.g. Boolean, and applies them in the context of program control. (AL)
* Selects the appropriate data types(AL) (AB
#### Data & Data Representation
* Understands the difference between data and information(AB)
* Performs more complex searches for information e.g. using Boolean and relational operators(AL) (GE) (EV)
* Defines data types: real numbers and Boolean (AB)
#### Hardware & Processing
* Knows that computers collect data from various input devices, including sensors and application software (AB)
#### Communication Networks
* Demonstrates responsible use of technologies and online services, and knows a range of ways to report concerns Understands how search engines rank search results (AL)
#### Information Technology
* Collects, organizes, and presents data and information in digital content (AB)
* Makes appropriate improvements to solutions based on feedback received, and can comment on the success of the solution (EV)
* Recognises ethical issues surrounding the application of information technology beyond school.
Computational Thinking Concept: AB = Abstraction; DE = Decomposition; AL = Algorithmic Thinking; EV = Evaluation; GE = Generalisation
## Activity
* time: 20 min.
* [activity](/microbit/lessons/magic-8/activity)
## Extended Activity
* time: 20 min.
* [challenges](/microbit/lessons/magic-8/challenges)
## Homework
* Extended Activity: [challenges](/microbit/lessons/magic-8/challenges)

View File

@ -18,21 +18,23 @@ An if statement will conditionally run code depending on whether or not a condit
## 2. Create a Variable called ``x`` and assign it to a random number between 0 and 2.
```
```blocks
let x = Math.random(3)
```
## 3. Write the 'if statement' to check if ``x`` is equal to 2. Inside the 'if statement', display the string "Yes".
```
```blocks
let x = Math.random(3)
if (x == 2) {
basic.showString("Yes", 150)
}
```
## 3. Write the 'if statement' to check if ``x`` is equal to 1. Inside the 'if statement', display the string "No."
## 4. Write the 'if statement' to check if ``x`` is equal to 1. Inside the 'if statement', display the string "No."
```
```blocks
let x = Math.random(3)
if (x == 2) {
basic.showString("Yes", 150)
} else if (x == 1) {
@ -42,7 +44,8 @@ if (x == 2) {
## 5. Write the code to display the string "I don't know" if the Variable ``x`` is neither 2 nor 1.
```
```blocks
let x = Math.random(3)
if (x == 2) {
basic.showString("Yes", 150)
} else if (x == 1) {

View File

@ -6,7 +6,7 @@ create a magic 8 ball on the BBC micro:bit #math #random #docs
## Directions
Use this activity document to guide your work in the [magic 8 tutorial](/microbit/lessons/magic-8/tutorial).
Use this activity document to guide your work in the [magic 8 tutorial](/microbit/lessons/magic-8/activity).
Answer the questions while completing the tutorial. Pay attention to the dialogues!
@ -22,7 +22,7 @@ Answer the questions while completing the tutorial. Pay attention to the dialogu
<br />
## 3. Write the 'if statement' to check if ``x`` is equal to 1. Inside the 'if statement', display the string "No."
## 4. Write the 'if statement' to check if ``x`` is equal to 1. Inside the 'if statement', display the string "No."
<br />

View File

@ -12,20 +12,31 @@ On Logo Up
* [activity](/microbit/lessons/magic-logo/activity)
* [challenges](/microbit/lessons/magic-logo/challenges)
## Class
Year 7
* [quiz](/microbit/lessons/magic-logo/challenges)
* [quiz answers](/microbit/lessons/magic-logo/challenges)
## Prior learning/place of lesson in scheme of work
Learn how to plot image **on logo up**, `on logo up` to run code when the micro:bit screen is facing up and vertically orientated. We will be learning how to plot an image with the logo up, basic show LEDs, and logo down.
## Documentation
```docs
input.onLogoUp(() => {
* **on logo up** : [read more...](/microbit/functions/on-logo-up)
* **show leds** : [read more...](/microbit/reference/basic/show-leds)
* **on logo down** : [read more...](/microbit/functions/on-logo-down)
})
input.onLogoDown(() => {
})
basic.showLeds(`
. . . . .
. . . . .
. . # . .
. . . . .
. . . . .
`)
```
## Objectives
@ -33,43 +44,3 @@ Learn how to plot image **on logo up**, `on logo up` to run code when the micro:
* learn how to run code when the micro:bit screen is facing down and vertically orientated
* learn how to run code when the micro:bit screen is facing up and vertically orientated
## Progression Pathways / Computational Thinking Framework
#### Algorithms
* Represents solutions using a structured notation (AL) (AB)
* Can identify similarities and differences in situations and can use these to solve problems (pattern recognition)(GE)
#### Programming & Development
* Creates programs that implement algorithms to achieve given goals (AL)
#### Hardware & Processing
* Knows that computers collect data from various input devices, including sensors and application software (AB)
#### Communication Networks
* Demonstrates responsible use of technologies and online services, and knows a range of ways to report concerns Understands how search engines rank search results (AL)
#### Information Technology
* Collects, organizes, and presents data and information in digital content (AB)
* Recognises the audience when designing and creating digital content (EV)
Computational Thinking Concept: AB = Abstraction; DE = Decomposition; AL = Algorithmic Thinking; EV = Evaluation; GE = Generalisation
## Activity
* time: 20 min.
* [activity](/microbit/lessons/magic-logo/activity)
## Extended Activity
* time: 20 min.
* [challenges](/microbit/lessons/magic-logo/challenges)
## Homework
* Extended Activity: [challenges](/microbit/lessons/magic-logo/challenges)

View File

@ -22,7 +22,7 @@ When the micro:bit goes logo up, the code nested under the `on logo up` function
```blocks
input.onLogoUp(() => {
basic.showAnimation(`
basic.showLeds(`
. . # . .
. # # # .
# # # # #
@ -31,6 +31,7 @@ input.onLogoUp(() => {
`)
})
```
Run your code and try to turn around the micro:bit to see the **logo up** event in action!

View File

@ -8,7 +8,7 @@ Complete the [magic logo](/microbit/lessons/magic-logo/activity) activity and yo
```blocks
input.onLogoUp(() => {
basic.showAnimation(`
basic.showLeds(`
. . # . .
. # # # .
# # # # #
@ -28,7 +28,7 @@ How about when the logo is down? We should display an arrow pointing downward!
```blocks
input.onLogoUp(() => {
basic.showAnimation(`
basic.showLeds(`
. . # . .
. # # # .
# # # # #
@ -37,7 +37,7 @@ input.onLogoUp(() => {
`)
})
input.onLogoDown(() => {
basic.showAnimation(`
basic.showLeds(`
. . # . .
. . # . .
# # # # #

View File

@ -16,30 +16,35 @@ A function that will run code when the BBC micro:bit screen is facing up and ver
<br/>
## 2. Consider the following directions
## 2. Write the condition that detects when the BBC micro:bit logo is facing up and vertically orientated.
The `logo up` event is raised when...
* the screen is facing up and the board is horizontal
* the screen is facing down and the board is horizontal
* the board is vertical and the logo is facing up
Write the condition that detects when the BBC micro:bit logo is facing up and vertically orientated.
<br/>
```
```blocks
input.onLogoUp(() => {
})
```
<br/>
## 3. Consider the following animation
## 3. Write the code to display a downward pointing arrow when the logo is down.
![](/static/mb/lessons/magic-logo-0.png)
Write the code to display a downward pointing arrow when the logo is down.
<br/>
```
```blocks
input.onLogoDown(() => {
basic.plotImage(`
basic.showLeds(`
. . # . .
. . # . .
# # # # #

View File

@ -12,15 +12,11 @@ Use the hints from the [magic logo activity](/microbit/lessons/magic-logo/activi
<br/>
## 2. The `logo up` event is raised when...
## 2. Write the condition that detects when the BBC micro:bit logo is facing up and vertically orientated.
* the screen is facing up and the board is horizontal
* the screen is facing down and the board is horizontal
* the board is vertical and the logo is facing up
## 3. Consider the following animation
## 3. Write the code to display a downward pointing arrow when the BBC micro:bit logo is down.
![](/static/mb/lessons/magic-logo-0.png)
Write the code to display a downward pointing arrow when the BBC micro:bit logo is down.

View File

@ -12,10 +12,8 @@ Set Brightness
* [activity](/microbit/lessons/night-light/activity)
* [challenges](/microbit/lessons/night-light/challenges)
## Class
Year 7
* [quiz](/microbit/lessons/night-light/quiz)
* [quiz answers](/microbit/lessons/night-light/quiz-answers)
## Prior learning/place of lesson in scheme of work
@ -23,9 +21,20 @@ Learn how to **set brightness** of an image `set brightness` to set the brightne
## Documentation
* **set brightness** : [read more...](/microbit/reference/led/set-brightness)
* **show LEDs** : [read more...](/microbit/reference/basic/show-leds)
* **on button pressed** : [read more...](/microbit/reference/input/on-button-pressed)
```docs
led.setBrightness(255)
input.onButtonPressed(Button.A, () => {
})
basic.showLeds(`
. . . . .
. . . . .
. . # . .
. . . . .
. . . . .
`)
```
## Objectives
@ -33,39 +42,3 @@ Learn how to **set brightness** of an image `set brightness` to set the brightne
* learn how to run code when an input button is pressed
* learn how to turn on all LEDs
## Progression Pathways / Computational Thinking Framework
#### Algorithms
* Uses diagrams to express solutions.(AB)
* Recognises that different algorithms exist for the same problem (AL) (GE)
* Represents solutions using a structured notation (AL) (AB)
* Can identify similarities and differences in situations and can use these to solve problems (pattern recognition)(GE)
#### Programming & Development
* Creates programs that implement algorithms to achieve given goals (AL)
* Selects the appropriate data types(AL) (AB
#### Information Technology
* Collects, organizes, and presents data and information in digital content (AB)
* Makes appropriate improvements to solutions based on feedback received, and can comment on the success of the solution (EV)
* Recognises ethical issues surrounding the application of information technology beyond school.
Computational Thinking Concept: AB = Abstraction; DE = Decomposition; AL = Algorithmic Thinking; EV = Evaluation; GE = Generalisation
## Activity
* time: 20 min.
* [activity](/microbit/lessons/night-light/activity)
## Extended Activity
* time: 20 min.
* [challenges](/microbit/lessons/night-light/challenges)
## Homework
* Extended Activity: [challenges](/microbit/lessons/night-light/challenges)

View File

@ -16,9 +16,15 @@ If the rectangle above represents the BBC micro:bit, write the code to set all t
<br />
```
```blocks
led.setBrightness(255)
led.plotAll()
basic.showLeds(`
# # # # #
# # # # #
# # # # #
# # # # #
# # # # #
`)
```
## 3. Consider the following image
@ -29,9 +35,15 @@ If the rectangle above represents the BBC micro:bit, write the code to set the s
<br/>
```
```blocks
led.setBrightness(128)
led.plotAll()
basic.showLeds(`
# # # # #
# # # # #
# # # # #
# # # # #
# # # # #
`)
```
## 4. Consider the following image
@ -40,7 +52,7 @@ led.plotAll()
If the rectangle above represents the BBC micro:bit, write the code to turn off all the LEDs.
```
```blocks
led.setBrightness(0)
```

View File

@ -6,7 +6,7 @@ change the brightness of the BBC micro:bit #LED #image #brightness #fade #docs
## Directions
Use this activity document to guide your work in the [night light tutorial](/microbit/lessons/night-light/tutorial)
Use this activity document to guide your work in the [night light tutorial](/microbit/lessons/night-light/activity)
Answer the questions while completing the tutorial. Pay attention to the dialogues!

View File

@ -23,10 +23,20 @@ Learn how to create a **local variable**, `var t :=time` where you can store dat
## Documentation
* **on shake** : [read more...](/microbit/reference/input/on-gesture)
* **local variable** : [read more...](/microbit/reference/variables/var)
* **show LEDs** : [read more...](/microbit/reference/basic/show-leds)
* **pick random** : [read more...](/microbit/blocks/math)
```docs
input.onGesture(Gesture.Shake, () => {
})
Math.random(3)
let x = 0
basic.showLeds(`
. . . . .
. . . . .
. . # . .
. . . . .
. . . . .
`)
```
## Objectives

View File

@ -6,7 +6,7 @@ shift an image horizontally across the display with offset #offset #screen #var
## Directions
Use this activity document to guide your work in the [rock paper scissors tutorial](/microbit/lessons/rock-paper-scissors/tutorial).
Use this activity document to guide your work in the [rock paper scissors tutorial](/microbit/lessons/rock-paper-scissors/activity).
Answer the questions while completing the tutorial. Pay attention to the dialogues!
@ -16,7 +16,7 @@ Answer the questions while completing the tutorial. Pay attention to the dialogu
## 2. Draw which LEDs are ON after running this code and the random number returned is 0
```
```blocks
let img = images.createImage(`
. . . . . # # # # # . . . . #
. # # # . # . . . # # # . # .
@ -36,7 +36,7 @@ img.showImage(offset)
## 3. Draw which LEDs are ON after running this code with an offset of 5. This would occur if the random number returned is 1.
```
```blocks
let img_ = images.createImage(`
. . . . . # # # # # . . . . #
. # # # . # . . . # # # . # .
@ -56,7 +56,7 @@ img.showImage(offset)
## 4. Draw which LEDs are ON after running this code with an offset of 10. This would occur if the random number returned is 2.
```
```blocks
let img_1 = images.createImage(`
. . . . . # # # # # . . . . #
. # # # . # . . . # # # . # .

View File

@ -10,10 +10,8 @@ While Loop
* [activity](/microbit/lessons/rotation-animation/activity)
* [challenges](/microbit/lessons/rotation-animation/challenges)
## Class
Year 7
* [quiz](/microbit/lessons/rotation-animation/quiz)
* [quiz answers](/microbit/lessons/rotation-animation/quiz-answers)
## Prior learning/place of lesson in scheme of work
@ -21,59 +19,32 @@ Learn how to create images that look like a rotating animation by using a while
## Documentation
* **variable**: [read more...](/microbit/reference/variables/var)
* **assignment operator**: [read more...](/microbit/reference/variables/assign)
* **while**: [read more...](/microbit/js/while)
* **Boolean condition (for the while loop)** : [read more...](/microbit/reference/types/boolean)
* **on button pressed**: [read more...](/microbit/reference/input/on-button-pressed)
* **show LEDs**: [read more...](/microbit/reference/basic/show-leds)
* **pause**: [read more...](/microbit/reference/basic/pause)
```docs
let x = 0
input.onButtonPressed(Button.A, () => {
})
basic.showLeds(`
. . . . .
. . . . .
. . # . .
. . . . .
. . . . .
`)
basic.pause(100)
while (true) {
basic.pause(20)
}
```
## Objectives
* learn how to create a global variable for a place where you can store data, accessible across functions, and in nested code blocks
* learn how to set or change the value of a global variable
* learn how to create a variable for a place where you can store data, accessible across functions, and in nested code blocks
* learn how to set or change the value of a variable
* learn how to repeat code while a condition is true
* learn how to declare a global boolean variable to determine which code will execute next
* learn how to declare a boolean variable to determine which code will execute next
* learn how to run code when an input button is pressed
* learn how to show a series of image frames on the LED screen
* learn how to pause your code for the specified number of milliseconds
## Progression Pathways / Computational Thinking Framework
#### Algorithms
* Understands that iteration is the repetition of a process such as a loop. (AL)
* Represents solutions using a structured notation. (AL) (AB)
#### Programming & Development
* Creates programs that implement algorithms to achieve given goals. (AL)
* Declares and assigns variables.(AB)
#### Data & Data Representation
* Understands the difference between data and information. (AB)
* Defines data types: real numbers and Boolean. (AB)
#### Information Technology
* Collects, organises and presents data and information in digital content. (AB)
* Makes appropriate improvements to solutions based on feedback received, and can comment on the success of the solution. (EV)
Computational Thinking Concept: AB = Abstraction; DE = Decomposition; AL = Algorithmic Thinking; EV = Evaluation; GE = Generalisation
## Activity
* time: 20 min.
* [activity](/microbit/lessons/rotation-animation/activity)
## Extended Activity
* time: 20 min.
* [challenges](/microbit/lessons/rotation-animation/challenges)
## Homework
* Extended Activity: [challenges](/microbit/lessons/rotation-animation/challenges)

View File

@ -54,9 +54,6 @@ Now let's add to this by creating a condition for on button pressed `A` before t
```blocks
let rotating = true;
input.onButtonPressed(Button.A, () => {
serial.writeLine("hello")
})
while (rotating) {
serial.writeLine("loop")
basic.showLeds(`
@ -88,8 +85,9 @@ while (rotating) {
. . . . .
`)
}
input.onButtonPressed(Button.A, () => {
serial.writeLine("hello")
})
```
@ -101,10 +99,6 @@ Now that we have the on button pressed condition, let's make the animation stop
```blocks
let rotating = true;
input.onButtonPressed(Button.A, () => {
serial.writeLine("hello")
rotating = false
})
while (rotating) {
serial.writeLine("loop")
basic.showLeds(`
@ -136,7 +130,10 @@ while (rotating) {
. . . . .
`)
}
input.onButtonPressed(Button.A, () => {
serial.writeLine("hello")
rotating = false
})
```

View File

@ -4,44 +4,82 @@ Learn how to create a rotating image with a while loop. #image #loop #while #do
This is the answer key for the [rotation animation quiz](/microbit/lessons/rotation-animation/quiz).
## 1. What is a "global variable"?
## 1. What is a " variable"?
Answers may vary. A global variable is a place where you can store data so that you can use it later in your code.
Answers may vary. A variable is a place where you can store data so that you can use it later in your code.
## 2. Consider the following directions
## 2. Write the code to create a ** variable** called `foo` that stores a boolean and initialize it to **false**.
Write the code to create a **global variable** called `foo` that stores a boolean and initialize it to **false**.
```
rotating = true
```blocks
let rotating = true;
```
## 3. Consider the following code
## 3. Explain what this line of code does.
```
```blocks
let rotating = true;
while (rotating) {
basic.showLeds(`
. . . . .
. . . . .
. . # . .
. . . . .
. . . . .
`)
basic.showLeds(`
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
`)
}
```
Explain what this line of code does.
<br/>
It is a **while** loop that will be executed only if the **global variable** called `rotating` is **true**.
It is a **while** loop that will be executed only if the ** variable** called `rotating` is **true**.
## 4. Consider the following code
## 4. If the rectangle below represents the BBC micro:bit, shade the areas that will be displayed. Explain why that particular area is shaded.
```
basic.showAnimation(`
# . . . . . . # . . . . . . # . . . . .
. # . . . . . # . . . . . # . . . . . .
. . # . . . . # . . . . # . . # # # # #
. . . # . . . # . . . # . . . . . . . .
. . . . # . . # . . # . . . . . . . . .
`, 400)
```blocks
basic.showLeds(`
. . # . .
. . # . .
. . # . .
. . # . .
. . # . .
`)
basic.showLeds(`
. . . . .
. . . . .
# # # # #
. . . . .
. . . . .
`)
basic.showLeds(`
. . . . #
. . . # .
. . # . .
. # . . .
# . . . .
`)
basic.showLeds(`
. . . . #
. . . # .
. . # . .
. # . . .
# . . . .
`)
```
If the rectangle below represents the BBC micro:bit, shade the areas that will be displayed. Explain why that particular area is shaded.
![](/static/mb/lessons/rotation-animation-0.png)

View File

@ -6,37 +6,75 @@ Learn how to create a rotating image with a while loop. #image #loop #while #do
## Directions
Use this activity document to guide your work in the [rotation animation tutorial](/microbit/lessons/rotation-animation/tutorial).
Use this activity document to guide your work in the [rotation animation tutorial](/microbit/lessons/rotation-animation/activity).
Answer the questions while completing the tutorial. Pay attention to the dialogues!
## 1. What is a "global variable"?
## 1. What is a " variable"?
<br />
## 2. Write the code to create a global variable called foo that stores a boolean and initialize it to false.
## 2. Write the code to create a variable called foo that stores a boolean and initialize it to false.
<br/>
## 3. Explain why you use a while loop with a global variable
## 3. Explain why you use a while loop with a variable
```
```blocks
let rotating = true;
while (rotating) {
basic.showLeds(`
. . . . .
. . . . .
. . # . .
. . . . .
. . . . .
`)
basic.showLeds(`
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
`)
}
```
<br/>
## 4. Draw the areas on the micro:bits to illustrate the code below. Explain why you chose to draw in those areas.
```
basic.showAnimation(`
# . . . . . . # . . . . . . # . . . . .
. # . . . . . # . . . . . # . . . . . .
. . # . . . . # . . . . # . . # # # # #
. . . # . . . # . . . # . . . . . . . .
. . . . # . . # . . # . . . . . . . . .
`, 400)
```blocks
basic.showLeds(`
. . # . .
. . # . .
. . # . .
. . # . .
. . # . .
`)
basic.showLeds(`
. . . . .
. . . . .
# # # # #
. . . . .
. . . . .
`)
basic.showLeds(`
. . . . #
. . . # .
. . # . .
. # . . .
# . . . .
`)
basic.showLeds(`
. . . . #
. . . # .
. . # . .
. # . . .
# . . . .
`)
```
![](/static/mb/lessons/looper-2.png)

View File

@ -15,86 +15,31 @@ Clear Screen
* [quiz answers](/microbit/lessons/screen-wipe/quiz-answers)
* [challenges](/microbit/lessons/screen-wipe/challenges)
## Class
Year 7
## Prior learning/place of lesson in scheme of work
Learn how to **clear screen**, `clear screen` to turn off all the LED lights on the LED screen. We will be learning how to clear all LED lights on the LED screen using clear screen, input on button pressed as well as simple commands, such as show animation.
## What the teacher needs to know/QuickStart Computing Glossary
* Algorithm: An unambiguous set of rules or a precise step-by-step guide to solve a problem or achieve a particular objective.
* Hardware: The physical systems and components of digital devices; see also software.
* Input: Data provided to a computer system, such as via a keyboard, mouse, microphone, camera or physical sensors.
* Output: The information produced by a computer system for its user, typically on a screen, through speakers or on a printer, but possibly through the control of motors in physical systems.
* Programmable toys: Robots designed for children to use, accepting input, storing short sequences of simple instructions and moving according to this stored program.
* Simulation: Using a computer to model the state and behaviour of real-world (or imaginary) systems, including physical or social systems; an integral part of most computer games.
## Documentation
* **show LEDs** : [read more...](/microbit/reference/basic/show-leds)
* **on button pressed** : [read more...](/microbit/reference/input/on-button-pressed)
* **clear screen** : [read more...](/microbit/reference/basic/clear-screen)
```docs
basic.clearScreen()
basic.showLeds(`
. . . . .
. . . . .
. . # . .
. . . . .
. . . . .
`)
input.onButtonPressed(Button.A, () => {
})
## Resources
* Activity: [activity](/microbit/lessons/screen-wipe/activity)
* Activity: [quiz](/microbit/lessons/screen-wipe/quiz)
* Extended Activity: [challenges](/microbit/lessons/screen-wipe/challenges)
```
## Objectives
* learn how to show a series of images on the LED screen
* learn how to run code when an input button is pressed
* learn how to turn off all the LED lights on the LED screen
## Progression Pathways / Computational Thinking Framework
#### Algorithms
* Uses diagrams to express solutions.(AB)
* Uses logical reasoning to predict outputs, showing an awareness of inputs (AL)
* Shows an awareness of tasks best completed by humans or computers (EV)
* Designs solutions by decomposing a problem and creates a sub-solution for each of these parts. (DE) (AL) (AB)
* Recognises that different solutions exist for the same problem (AL) (AB) Understands that iteration is the repetition of a process such as a loop (AL)
* Recognises that different algorithms exist for the same problem (AL) (GE)
* Represents solutions using a structured notation (AL) (AB)
#### Programming & Development
* Creates programs that implement algorithms to achieve given goals (AL)
* Selects the appropriate data types(AL) (AB
#### Hardware & Processing
* Knows that computers collect data from various input devices, including sensors and application software (AB)
#### Communication Networks
* Demonstrates responsible use of technologies and online services, and knows a range of ways to report concerns Understands how search engines rank search results (AL)
#### Information Technology
* Collects, organizes, and presents data and information in digital content (AB)
* Recognises ethical issues surrounding the application of information technology beyond school.
* Designs criteria to critically evaluate the quality of solutions, uses the criteria to identify improvements and can make appropriate refinements to the solution (EV)
Computational Thinking Concept: AB = Abstraction; DE = Decomposition; AL = Algorithmic Thinking; EV = Evaluation; GE = Generalisation
## Activity
* time: 20 min.
* [activity](/microbit/lessons/screen-wipe/activity)
* [quiz](/microbit/lessons/screen-wipe/quiz)
## Extended Activity
* time: 20 min.
* [challenges](/microbit/lessons/screen-wipe/challenges)
## Homework
* Extended Activity: [challenges](/microbit/lessons/screen-wipe/challenges)

View File

@ -15,11 +15,7 @@ Show LEDs
* [quiz answers](/microbit/lessons/smiley/quiz-answers)
* [challenges](/microbit/lessons/smiley/challenges)
## Class
Year 7
## Prior learning / place of lesson in scheme of work
## Prior learning/place of lesson in scheme of work
Learn how to **show LEDs** to turn on a LED light pattern on the LED screen. We will be learning basic comments such as show LEDs and pause.
@ -28,57 +24,22 @@ Learn how to **show LEDs** to turn on a LED light pattern on the LED screen. We
* **show LEDs** : [read more...](/microbit/reference/basic/show-leds)
* **on button pressed** : [read more...](/microbit/reference/input/on-button-pressed)
```docs
input.onButtonPressed(Button.A, () => {
})
basic.showLeds(`
. . . . .
. . . . .
. . # . .
. . . . .
. . . . .
`)
```
## Objectives
* learn how to show LEDs on the LED screen
* learn how to run code when an input button is pressed
## Progression Pathways / Computational Thinking Framework
#### Algorithms
* Designs solutions (algorithms) that use repetition and two-way selection, ie if, then and else.(AL)
* Uses diagrams to express solutions.(AB)
* Uses logical reasoning to predict outputs, showing an awareness of inputs (AL)
* Recognises that different algorithms exist for the same problem (AL) (GE)
* Represents solutions using a structured notation (AL) (AB)
#### Programming & Development
* Creates programs that implement algorithms to achieve given goals (AL)
* Selects the appropriate data types(AL) (AB
#### Data & Data Representation
* Understands the difference between data and information(AB)
#### Hardware & Processing
* Understands the difference between hardware and application software, and their roles within a computer system (AB)
#### Communication Networks
* Demonstrates responsible use of technologies and online services, and knows a range of ways to report concerns (AL)
#### Information Technology
* Collects, organizes, and presents data and information in digital content (AB)
* Makes appropriate improvements to solutions based on feedback received, and can comment on the success of the solution (EV)
Computational Thinking Concept: AB = Abstraction; DE = Decomposition; AL = Algorithmic Thinking; EV = Evaluation; GE = Generalisation
## Activity
* time: 20 min.
* [activity](/microbit/lessons/smiley/activity)
* [quiz](/microbit/lessons/smiley/quiz)
## Extended Activity
* time: 20 min.
* [challenges](/microbit/lessons/smiley/challenges)
## Homework
* Extended Activity: [challenges](/microbit/lessons/smiley/challenges)

View File

@ -13,14 +13,14 @@ Welcome! This tutorial will help you make a smiley face blink. Let's get started
Create an animation with an image displaying a smiley face and the next image with no LEDs lit up. This will make it look like the smiley face is blinking as the display switches between images.
```blocks
basic.showAnimation(`
basic.showLeds(`
. # . # .
. # . # .
. . . . .
# . . . #
. # # # .
`)
basic.showAnimation(`
basic.showLeds(`
. . . . .
. . . . .
. . . . .

View File

@ -8,14 +8,14 @@ Complete the [smiley activity](/microbit/lessons/smiley/activity) and your code
```blocks
basic.showAnimation(`
basic.showLeds(`
. # . # .
. # . # .
. . . . .
# . . . #
. # # # .
`)
basic.showAnimation(`
basic.showLeds(`
. . . . .
. . . . .
. . . . .
@ -33,14 +33,14 @@ Let's make add code that will run when button A is pressed!
```blocks
basic.showAnimation(`
basic.showLeds(`
. # . # .
. # . # .
. . . . .
# . . . #
. # # # .
`)
basic.showAnimation(`
basic.showLeds(`
. . . . .
. . . . .
. . . . .
@ -59,14 +59,14 @@ input.onButtonPressed(Button.A, () => {
Now, we want to show a frowny face when this button is pressed. Let's show the LEDs.
```blocks
basic.showAnimation(`
basic.showLeds(`
. # . # .
. # . # .
. . . . .
# . . . #
. # # # .
`)
basic.showAnimation(`
basic.showLeds(`
. . . . .
. . . . .
. . . . .
@ -74,7 +74,7 @@ basic.showAnimation(`
. . . . .
`)
input.onButtonPressed(Button.A, () => {
basic.showAnimation(`
basic.showLeds(`
. # . # .
. # . # .
. . . . .

View File

@ -15,76 +15,27 @@ Forever
* [quiz answers](/microbit/lessons/snowflake-fall/quiz-answers)
* [challenges](/microbit/lessons/snowflake-fall/challenges)
## Class
Year 7
## Prior learning/place of lesson in scheme of work
Learn how to show LEDs with a, `pause` to pause program execution for a specified amount of milliseconds. We will be learning how to show images using forever loop as well as simple commands, such as pause and show LEDs.
## What the teacher needs to know/QuickStart Computing Glossary
* Algorithm: An unambiguous set of rules or a precise step-bystep guide to solve a problem or achieve a particular objective.
* Command: An instruction for the computer to execute, written in a particular programming language.
* Hardware: The physical systems and components of digital devices; see also software.
* Programmable toys: Robots designed for children to use, accepting input, storing short sequences of simple instructions and moving according to this stored program.
* Program: A stored set of instructions encoded in a language understood by the computer that does some form of computation, processing input and/or stored data to generate output.
* Simulation: Using a computer to model the state and behaviour of real-world (or imaginary) systems, including physical or social systems; an integral part of most computer games.
## Documentation
* **show LEDs** : [read more...](/microbit/reference/basic/show-leds)
* **pause** : [read more...](/microbit/reference/basic/pause)
* **forever** : [read more...](/microbit/reference/basic/forever)
## Resources
* Activity: [activity](/microbit/lessons/snowflake-fall/activity)
* Activity: [quiz](/microbit/lessons/snowflake-fall/quiz)
* Extended Activity: [challenges](/microbit/lessons/snowflake-fall/challenges)
## Objectives
* learn how to show an image on the LED screen
* learn how to pause a program for a specified amount of time in milliseconds
* learn how to repeat code in the background forever
## Progression Pathways / Computational Thinking Framework
#### Algorithms
* Uses diagrams to express solutions.(AB)
* Represents solutions using a structured notation (AL) (AB)
* Can identify similarities and differences in situations and can use these to solve problems (pattern recognition)(GE)
#### Programming & Development
* Creates programs that implement algorithms to achieve given goals (AL)
#### Communication Networks
* Demonstrates responsible use of technologies and online services, and knows a range of ways to report concerns Understands how search engines rank search results (AL)
#### Information Technology
* Collects, organizes, and presents data and information in digital content (AB)
* Makes appropriate improvements to solutions based on feedback received, and can comment on the success of the solution (EV)
Computational Thinking Concept: AB = Abstraction; DE = Decomposition; AL = Algorithmic Thinking; EV = Evaluation; GE = Generalisation
## Activity
* time: 20 min.
* [activity](/microbit/lessons/snowflake-fall/activity)
* [quiz](/microbit/lessons/snowflake-fall/quiz)
## Extended Activity
* time: 20 min.
* [challenges](/microbit/lessons/snowflake-fall/challenges)
## Homework
* Extended Activity: [challenges](/microbit/lessons/snowflake-fall/challenges)
```docs
basic.showLeds(`
. . . . .
. . . . .
. . # . .
. . . . .
. . . . .
`)
basic.pause(100)
basic.forever(() => {
})
```

View File

@ -51,7 +51,7 @@ basic.forever(() => {
. . # . .
`)
})
```blocks
```
Run your code in the simulator or download it to your BBC micro:bit to see what happens!

View File

@ -6,25 +6,59 @@ Coding challenges for snowflake fall.
Complete the [snowflake fall](/microbit/lessons/snowflake-fall/activity) activity and your code will look like this:
![](/static/mb/blocks/lessons/snowflake-fall-1.jpg)
```blocks
basic.forever(() => {
basic.showLeds(`
. . . . .
. . # . .
. # # # .
. . # . .
. . . . .
`)
basic.showLeds(`
. . # . .
. # . # .
# . . . #
. # . # .
. . # . .
`)
})
```
### Challenge 1
### @video td/videos/snowflake-fall-1
Let's begin creating our falling effect by adding another snowflake with `show LEDs` that displays a different snowflake pattern after the first one. We need 2 frames in the new animation that display both the first and the second snowflake images.
![](/static/mb/blocks/lessons/snowflake-fall-2.jpg)
* Run your program to see the cool animation.
### Challenge 2
### @video td/videos/snowflake-fall-2
To finalize our snowflake fall, let's add a different snowflake pattern.
![](/static/mb/blocks/lessons/snowflake-fall-3.jpg)
```blocks
basic.forever(() => {
basic.showLeds(`
. . . . .
. . # . .
. # # # .
. . # . .
. . . . .
`)
basic.showLeds(`
. . # . .
. # . # .
# . . . #
. # . # .
. . # . .
`)
basic.showLeds(`
. # . # .
# # # # #
. # . # .
# # # # #
. # . # .
`)
})
```
* Run your program and see if it works.

View File

@ -28,7 +28,24 @@ basic.forever(() => {
![](/static/mb/lessons/snowflake-fall-0.png)
![](/static/mb/blocks/lessons/snowflake-fall-5.png)
```blocks
basic.forever(() => {
basic.showLeds(`
. . . . .
. . # . .
. # # # .
. . # . .
. . . . .
`);
basic.showLeds(`
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
`)
});
```
## 4. Write the code for a forever loop and show LEDS for these images!
@ -36,5 +53,21 @@ basic.forever(() => {
![](/static/mb/lessons/snowflake-fall-2.png)
![](/static/mb/blocks/lessons/snowflake-fall-6.png)
```blocks
basic.forever(() => {
basic.showLeds(`
. . . . .
. . # . .
. # # # .
. . # . .
. . . . .
`);
basic.showLeds(`
# # # # #
# # . # #
# . # . #
# # . # #
# # # # #
`)
});
```

View File

@ -12,10 +12,8 @@ If (Conditionals)
* [activity](/microbit/lessons/spinner/activity)
* [challenges](/microbit/lessons/spinner/challenges)
## Class
Year 7
* [quiz](/microbit/lessons/spinner/quiz)
* [quiz answers](/microbit/lessons/spinner/quiz-answers)
## Prior learning/place of lesson in scheme of work
@ -23,12 +21,24 @@ Learn how to use an if statement to run code run code depending on whether a con
## Documentation
* **If** : [read more...](/microbit/blocks/if)
* **Variables** : [read more...](/microbit/reference/variables/var)
* **Assignment Operator** : [read more...](/microbit/reference/variables/assign)
* **On Shake** : [read more...](/microbit/reference/input/on-gesture)
* **Pick Random** : [read more...](/microbit/blocks/math)
* **Show LEDs** : [read more...](/microbit/reference/basic/show-leds)
```docs
if (true) {
}
let x = 0
input.onGesture(Gesture.Shake, () => {
})
Math.random(3)
basic.showLeds(`
. . . . .
. . . . .
. . # . .
. . . . .
. . . . .
`)
```
## Objectives
@ -40,54 +50,3 @@ Learn how to use an if statement to run code run code depending on whether a con
* learn how to conditionally run code depending on whether a condition is true or not
* learn how to show an image on the LED screen
## Progression Pathways / Computational Thinking Framework
#### Algorithms
* Designs solutions (algorithms) that use repetition and two-way selection, ie if, then and else.(AL)
* Uses logical reasoning to predict outputs, showing an awareness of inputs (AL)
* Designs solutions by decomposing a problem and creates a sub-solution for each of these parts. (DE) (AL) (AB)
* Represents solutions using a structured notation (AL) (AB)
#### Programming & Development
* Creates programs that implement algorithms to achieve given goals (AL)
* Declares and assigns variables(AB)
* Understands the difference between, and appropriately uses if and if, then and else statements(AL)
* Uses a range of operators and expressions e.g. Boolean, and applies them in the context of program control. (AL)
* Selects the appropriate data types(AL) (AB
#### Data & Data Representation
* Understands the difference between data and information(AB)
* Uses filters or can perform single criteria searches for information.(AL)
* Performs more complex searches for information e.g. using Boolean and relational operators(AL) (GE) (EV)
* Defines data types: real numbers and Boolean (AB)
#### Hardware & Processing
* Knows that computers collect data from various input devices, including sensors and application software (AB)
* Demonstrates responsible use of technologies and online services, and knows a range of ways to report concerns Understands how search engines rank search results (AL)
#### Information Technology
* Makes appropriate improvements to solutions based on feedback received, and can comment on the success of the solution (EV)
* Makes judgements about digital content when evaluating and repurposing it for a given audience (EV) (GE)
* Recognises ethical issues surrounding the application of information technology beyond school.
Computational Thinking Concept: AB = Abstraction; DE = Decomposition; AL = Algorithmic Thinking; EV = Evaluation; GE = Generalisation
## Activity
* time: 20 min.
* [activity](/microbit/lessons/spinner/activity)
## Extended Activity
* time: 20 min.
* [challenges](/microbit/lessons/spinner/challenges)
## Homework
* Extended Activity: [challenges](/microbit/lessons/spinner/challenges)

View File

@ -12,19 +12,95 @@ Welcome! This guided tutorial will teach how to program a script that randomly p
Let's begin by adding an `on shake` condition to know when the micro:bit is shaken.
![](/static/mb/blocks/lessons/spinner-0.jpg)
```blocks
input.onGesture(Gesture.Shake, () => {
})
```
Now let's randomly generate a number from 0 to 3 so that we can randomly display an arrow in a given direction.
![](/static/mb/blocks/lessons/spinner-1.jpg)
```blocks
input.onGesture(Gesture.Shake, () => {
let randomArrow = Math.random(4)
if (randomArrow = 3) {
basic.showLeds(`
. . # . .
. # # # .
# # # # #
. . # . .
. . # . .
`)
}
})
```
Now let's handle each of the cases by displaying the appropriate arrow. (Let's display an up arrow if `random arrow` is 0.
![](/static/mb/blocks/lessons/spinner-2.jpg)
```blocks
input.onGesture(Gesture.Shake, () => {
let randomArrow = Math.random(4)
if (randomArrow = 3) {
basic.showLeds(`
. . # . .
. # # # .
# # # # #
. . # . .
. . # . .
`)
}
if (randomArrow = 2) {
basic.showLeds(`
. . # . .
. . # . .
# # # # #
. # # # .
. . # . .
`)
}
})
```
Now let's handle the rest of the cases for `random arrow`.
![](/static/mb/blocks/lessons/spinner-3.jpg)
```blocks
input.onGesture(Gesture.Shake, () => {
let randomArrow = Math.random(4)
if (randomArrow = 3) {
basic.showLeds(`
. . # . .
. # # # .
# # # # #
. . # . .
. . # . .
`)
}
if (randomArrow = 2) {
basic.showLeds(`
. . # . .
. . # . .
# # # # #
. # # # .
. . # . .
`)
}
if (randomArrow = 1) {
basic.showLeds(`
. . # . .
. # # . .
# # # # #
. # # . .
. . # . .
`)
}
})
```
### ~avatar avatar

View File

@ -6,21 +6,164 @@ Create an arrow that randomly points to a player.
Complete the following [guided tutorial](/microbit/lessons/spinner/activity), your code should look like this:
![](/static/mb/blocks/lessons/spinner-3.jpg)
```blocks
input.onGesture(Gesture.Shake, () => {
let randomArrow = Math.random(4)
if (randomArrow = 3) {
basic.showLeds(`
. . # . .
. # # # .
# # # # #
. . # . .
. . # . .
`)
}
if (randomArrow = 2) {
basic.showLeds(`
. . # . .
. . # . .
# # # # #
. # # # .
. . # . .
`)
}
if (randomArrow = 1) {
basic.showLeds(`
. . # . .
. # # . .
# # # # #
. # # . .
. . # . .
`)
}
})
```
### Challenge 1
Modify the random number generator so that it can include new arrows we will create in the next challenge.
![](/static/mb/blocks/lessons/spinner-4.jpg)
```blocks
input.onGesture(Gesture.Shake, () => {
let randomArrow = Math.random(8)
if (randomArrow = 3) {
basic.showLeds(`
. . # . .
. # # # .
# # # # #
. . # . .
. . # . .
`)
}
if (randomArrow = 2) {
basic.showLeds(`
. . # . .
. . # . .
# # # # #
. # # # .
. . # . .
`)
}
if (randomArrow = 1) {
basic.showLeds(`
. . # . .
. # # . .
# # # # #
. # # . .
. . # . .
`)
}
})
```
* Do **not** run the code yet because it will not work until you have conditions for every random number.
### Challenge 2
Let's add four more arrows that point diagonally.
Let's add more arrows that point diagonally.
```blocks
input.onGesture(Gesture.Shake, () => {
let randomArrow = Math.random(8)
if (randomArrow = 7) {
basic.showLeds(`
. . # . .
. # # # .
# # # # #
. . # . .
. . # . .
`)
}
if (randomArrow = 6) {
basic.showLeds(`
. . # . .
. . # . .
# # # # #
. # # # .
. . # . .
`)
}
if (randomArrow = 5) {
basic.showLeds(`
. . # . .
. # # . .
# # # # #
. # # . .
. . # . .
`)
}
if (randomArrow = 4) {
basic.showLeds(`
. . # . .
. . . # .
# # # # #
. . . # .
. . # . .
`)
}
if (randomArrow = 3) {
basic.showLeds(`
# # # # #
# # # # .
# # # # .
# . . # .
. . . . #
`)
}
if (randomArrow = 2) {
basic.showLeds(`
# # # # #
# # # # #
. . # # #
. # . # #
# . . . #
`)
}
if (randomArrow = 1) {
basic.showLeds(`
# . . . #
# # . # .
# # # . .
# # # # .
# # # # #
`)
}
})
```
![](/static/mb/blocks/lessons/spinner-5.jpg)
* Run your code to see if it works as expected

View File

@ -14,7 +14,7 @@ Answer the questions while completing the tutorial. Pay attention to the dialogu
<br/>
```
```blocks
let randomArrow = Math.random(4)
```
@ -24,7 +24,7 @@ let randomArrow = Math.random(4)
<br/>
```
```blocks
if (randomArrow == 1) {
basic.plotImage(`
. . # . .
@ -42,7 +42,7 @@ if (randomArrow == 1) {
<br />
```
```blocks
if (randomArrow == 2) {
basic.plotImage(`
. . # . .

View File

@ -6,7 +6,7 @@ a spin the BBC micro:bit game with the input on shake #math #random #docs #shake
## Directions
Use this activity document to guide your work in the [spinner tutorial](/microbit/lessons/spinner/tutorial).
Use this activity document to guide your work in the [spinner tutorial](/microbit/lessons/spinner/activity).
Answer the questions while completing the tutorial. Pay attention to the dialogues!

View File

@ -12,17 +12,20 @@ For Loop
* [activity](/microbit/lessons/strobe-light/activity)
* [challenges](/microbit/lessons/strobe-light/challenges)
## Class
Year 7
* [quiz](/microbit/lessons/strobe-light/quiz)
* [quiz answers](/microbit/lessons/strobe-light/quiz-answers)
## Documentation
* **For Loop**: [read more...](/microbit/reference/loops/for)
* **Plot**: [read more...](/microbit/reference/led/plot)
* **Unplot**: [read more...](/microbit/reference/led/unplot)
* **Pause**: [read more...](/microbit/reference/basic/pause)
```docs
led.plot(0, 0)
led.unplot(0, 0)
for (let i = 0; i < 5; i++) {
}
basic.pause(100)
```
## Objectives
@ -30,44 +33,3 @@ Year 7
* learn how to turn on a LED light on the LED screen. Specify with LED using x, y coordinates
* learn how to turn off a LED light on the LED screen. Specify which LED which x, y coordinates
* learn how to pause program execution for the specified number of milliseconds
## Progression Pathways / Computational Thinking Framework
#### Algorithms
* Uses logical reasoning to predict outputs, showing an awareness of inputs. (AL)
* Understands that iteration is the repetition of a process such as a loop. (AL)
* Represents solutions using a structured notation. (AL) (AB)
#### Programming & Development
* Creates programs that implement algorithms to achieve given goals. (AL)
* Uses a variable and relational operators within a loop to govern termination. (AL) (GE)
* Uses a range of operators and expressions e.g. Boolean, and applies them in the context of program control. (AL)
#### Data & Data Representation
* Understands the difference between data and information. (AB)
* Defines data types: real numbers and Boolean. (AB)
#### Information Technology
* Collects, organises and presents data and information in digital content. (AB)
* Makes appropriate improvements to solutions based on feedback received, and can comment on the success of the solution. (EV)
Computational Thinking Concept: AB = Abstraction; DE = Decomposition; AL = Algorithmic Thinking; EV = Evaluation; GE = Generalisation
## Activity
* time: 10 min.
* [activity](/microbit/lessons/strobe-light/activity)
## Extended Activity
* time: 20 min.
* [challenges](/microbit/lessons/strobe-light/challenges)
## Homework
* Extended Activity: [challenges](/microbit/lessons/strobe-light/challenges)

View File

@ -45,7 +45,14 @@ for (let i = 0; i < 5; i++) {
The pause will add a delay between lighting each LED.
![](/static/mb/blocks/lessons/strobe-light-3.jpg)
```blocks
for (let i = 0; i < 5; i++) {
for (let j = 0; j < 5; j++) {
led.plot(i, j)
basic.pause(200)
}
}
```
### ~avatar avatar

View File

@ -10,7 +10,7 @@ Answers will vary. In general, for loop refers to the code that repeats for a fi
## 2. Consider the following code
```
```blocks
for (let i = 0; i < 5; i++) {
for (let j = 0; j < 5; j++) {
led.plot(i, j)
@ -30,7 +30,7 @@ This code turns on specific LED. Plot turns on the specified LED on the LED scre
## 3. Consider the following code
```
```blocks
for (let i1 = 0; i1 < 3; i1++) {
for (let j1 = 0; j1 < 3; j1++) {
led.plot(i1, j1)
@ -50,7 +50,7 @@ This code turns on specific LED. Plot turns on the specified LED on the LED scre
## 4. Consider the following code
```
```blocks
for (let i2 = 0; i2 < 2; i2++) {
for (let j2 = 0; j2 < 2; j2++) {
led.plot(i2, j2)

View File

@ -6,7 +6,7 @@ Learn how to create a blinking LED script with a for loop. #LED #screen #plot #d
## Directions
Use this activity document to guide your work in the [strobe light tutorial](/microbit/lessons/strobe-light/tutorial)
Use this activity document to guide your work in the [strobe light tutorial](/microbit/lessons/strobe-light/activity)
Answer the questions while completing the tutorial. Pay attention to the dialogues!
@ -14,7 +14,7 @@ Answer the questions while completing the tutorial. Pay attention to the dialogu
## 2. Draw which LEDs are ON after running this code
```
```blocks
for (let i = 0; i < 5; i++) {
for (let j = 0; j < 5; j++) {
led.plot(i, j)
@ -26,7 +26,7 @@ for (let i = 0; i < 5; i++) {
## 3. Draw which LEDs are ON after running this code
```
```blocks
for (let i1 = 0; i1 < 3; i1++) {
for (let j1 = 0; j1 < 3; j1++) {
led.plot(i1, j1)
@ -38,7 +38,7 @@ for (let i1 = 0; i1 < 3; i1++) {
## 4. Draw which LEDs are ON after running this code
```
```blocks
for (let i2 = 0; i2 < 2; i2++) {
for (let j2 = 0; j2 < 2; j2++) {
led.plot(i2, j2)

View File

@ -11,67 +11,25 @@ Temperature
* [activity](/microbit/lessons/temperature/activity)
* [challenges](/microbit/lessons/temperature/challenges)
## Class
Year 7
## Prior learning/place of lesson in scheme of work
Learn how to get the ambient temperature (degree Celsius °C). The temperature is inferred from the the surface temperature of the various chips on the micro:bit. We will be learning how to get the temperature using on shake, local variables, as well as simple commands such as show number.
## Documentation
* **on shake** : [read more...](/microbit/reference/input/on-gesture)
* **local variable** : [read more...](/microbit/reference/variables/var)
* **temperature** : [read more...](/microbit/reference/input/temperature)
* **show number** : [read more...](/microbit/reference/basic/show-number)
* **show string** : [read more...](/microbit/reference/basic/show-string)
```docs
input.temperature()
let x = 0
basic.showNumber(7)
basic.showString("Hello!")
input.onGesture(Gesture.Shake, () => {
})
```
## Objectives
* learn how to create a variable to store data
* learn how to get the ambient temperature (degree Celsius °C). The temperature is inferred from the the surface temperature of the various chips on the micro:bit.
* learn how to show a number on the LED screen
## Progression Pathways / Computational Thinking Framework
#### Algorithms
* Uses logical reasoning to predict outputs, showing an awareness of inputs (AL)
* Designs solutions by decomposing a problem and creates a sub-solution for each of these parts. (DE) (AL) (AB)
* Recognises that different algorithms exist for the same problem (AL) (GE)
* Represents solutions using a structured notation (AL) (AB)
#### Programming & Development
* Creates programs that implement algorithms to achieve given goals (AL)
* Declares and assigns variables(AB)
* Understands the difference between, and appropriately uses if and if, then and else statements(AL)
* Selects the appropriate data types(AL) (AB
#### Communication Networks
* Demonstrates responsible use of technologies and online services, and knows a range of ways to report concerns Understands how search engines rank search results (AL)
#### Information Technology
* Collects, organizes, and presents data and information in digital content (AB)
* Makes appropriate improvements to solutions based on feedback received, and can comment on the success of the solution (EV)
* Recognises ethical issues surrounding the application of information technology beyond school.
Computational Thinking Concept: AB = Abstraction; DE = Decomposition; AL = Algorithmic Thinking; EV = Evaluation; GE = Generalisation
## Activity
* time: 20 min.
* [activity](/microbit/lessons/temperature/activity)
## Extended Activity
* time: 20 min.
* [challenges](/microbit/lessons/temperature/challenges)
## Homework
* Extended Activity: [challenges](/microbit/lessons/temperature/challenges)

View File

@ -12,9 +12,7 @@ The Watch
* [activity](/microbit/lessons/the-watch/activity)
## Class
Year 7
## Prior learning/place of lesson in scheme of work
@ -23,9 +21,3 @@ Learn how to design the BBC micro:bit watch with household supplies.
## Objectives
* learn how to design and make the watch with the BBC micro:bit
## Activity
* time: 20 min.
* [activity](/microbit/lessons/the-watch/activity)

View File

@ -12,10 +12,8 @@ If (Conditionals)
* [activity](/microbit/lessons/truth-or-dare/activity)
* [challenges](/microbit/lessons/truth-or-dare/challenges)
## Class
Year 7
* [quiz](/microbit/lessons/truth-or-dare/quiz)
* [quiz answers](/microbit/lessons/truth-or-dare/quiz-answers)
## Prior learning/place of lesson in scheme of work
@ -23,13 +21,25 @@ Learn how to use an if statement to run code run code depending on whether a con
## Documentation
* **show LEDs** : [read more...](/microbit/reference/basic/show-leds)
* **on button pressed** : [read more...](/microbit/reference/input/on-button-pressed)
* **local variable** : [read more...](/microbit/reference/variables/var)
* **assignment operator** : [read more...](/microbit/reference/variables/assign)
* **pick random** : [read more...](/microbit/blocks/math)
* **If** : [read more...](/microbit/blocks/if)
* **show string** : [read more...](/microbit/reference/basic/show-string)
```docs
basic.showLeds(`
. . . . .
. . . . .
. . # . .
. . . . .
. . . . .
`)
input.onButtonPressed(Button.A, () => {
})
let x = 0
Math.random(3)
if (true) {
}
basic.showString("Hello!")
```
## Objectives
@ -40,42 +50,3 @@ Learn how to use an if statement to run code run code depending on whether a con
* learn how to return a random number
* learn how to conditionally run code depending on whether a condition is true or not
* learn how to show a string on the LED screen one character at a time (scrolling from left to right)
## Progression Pathways / Computational Thinking Framework
#### Algorithms
* Designs solutions (algorithms) that use repetition and two-way selection, ie if, then and else.(AL)
* Uses diagrams to express solutions.(AB)
* Uses logical reasoning to predict outputs, showing an awareness of inputs (AL)
* Designs solutions by decomposing a problem and creates a sub-solution for each of these parts. (DE) (AL) (AB)
* Represents solutions using a structured notation (AL) (AB)
#### Programming & Development
* Creates programs that implement algorithms to achieve given goals (AL)
* Declares and assigns variables(AB)
* Understands the difference between, and appropriately uses if and if, then and else statements(AL)
* Uses a range of operators and expressions e.g. Boolean, and applies them in the context of program control. (AL)
* Selects the appropriate data types(AL) (AB
#### Hardware & Processing
* Knows that computers collect data from various input devices, including sensors and application software (AB)
Computational Thinking Concept: AB = Abstraction; DE = Decomposition; AL = Algorithmic Thinking; EV = Evaluation; GE = Generalisation
## Activity
* time: 20 min.
* [activity](/microbit/lessons/truth-or-dare/activity)
## Extended Activity
* time: 20 min.
* [challenges](/microbit/lessons/truth-or-dare/challenges)
## Homework
* Extended Activity: [challenges](/microbit/lessons/truth-or-dare/challenges)

View File

@ -6,13 +6,14 @@ This is the answer key for the [truth or dare quiz](/microbit/lessons/truth-or-d
## 1. Write the code that will randomly return 0 through 3 and stores the value inside a local variable called 'random'.
```
```blocks
let random = Math.random(4)
```
## 2. Write an if statement that will display the message "TRUTH" on the BBC micro:bit if the local variable 'random' equals 0.
```
```blocks
let random = Math.random(4)
if (random == 0) {
basic.showString("TRUTH", 150)
}
@ -26,13 +27,16 @@ DARE
![](/static/mb/lessons/truth-or-dare-0.png)
```
basic.plotImage(`
. . # . .
. # # # .
# # # # #
. . # . .
. . # . .
`)
```blocks
input.onButtonPressed(Button.A, () => {
basic.showLeds(`
. . # . .
. # # # .
# # # # #
. . # . .
. . # . .
`)
})
```

View File

@ -6,7 +6,7 @@ a multi-player game that forces each player to reveal a secret or something funn
## Directions
Use this activity document to guide your work in the [truth or dare tutorial](/microbit/lessons/truth-or-dare/tutorial).
Use this activity document to guide your work in the [truth or dare tutorial](/microbit/lessons/truth-or-dare/activity).
Answer the questions while completing the tutorial. Pay attention to the dialogues!

View File

@ -12,10 +12,8 @@ Acceleration
* [activity](/microbit/lessons/zoomer/activity)
* [challenges](/microbit/lessons/zoomer/challenges)
## Class
Year 7
* [quiz](/microbit/lessons/zoomer/quiz)
* [quiz answers](/microbit/lessons/zoomer/quiz-answers)
## Prior learning/place of lesson in scheme of work
@ -23,12 +21,16 @@ Learn how to get the **acceleration**, `acceleration` in one of three specified
## Documentation
* **forever** : [read more...](/microbit/reference/basic/forever)
* **local variable** : [read more...](/microbit/reference/variables/var)
* **acceleration** : [read more...](/microbit/reference/input/acceleration)
* **if** : [read more...](/microbit/reference/logic/if)
* **button is pressed** : [read more...](/microbit/reference/input/button-is-pressed)
* **show number** : [read more...](/microbit/reference/basic/show-number)
```docs
basic.forever(() => {
})
let x = 0
input.acceleration(Dimension.X)
if (true) {
}
input.buttonIsPressed(Button.A)
basic.showNumber(0)
```
## Objectives
@ -40,45 +42,3 @@ Learn how to get the **acceleration**, `acceleration` in one of three specified
* learn how to get the state of an input button
* learn how to show a number on the LED screen
## Progression Pathways / Computational Thinking Framework
#### Algorithms
* Designs solutions (algorithms) that use repetition and two-way selection, ie if, then and else.(AL)
* Uses logical reasoning to predict outputs, showing an awareness of inputs (AL)
* Represents solutions using a structured notation (AL) (AB)
* Can identify similarities and differences in situations and can use these to solve problems (pattern recognition)(GE)
#### Programming & Development
* Creates programs that implement algorithms to achieve given goals (AL)
* Declares and assigns variables(AB)
* Understands the difference between, and appropriately uses if and if, then and else statements(AL)
* Uses a variable and relational operators within a loop to govern termination (AL) (GE)
#### Communication Networks
* Demonstrates responsible use of technologies and online services, and knows a range of ways to report concerns Understands how search engines rank search results (AL)
#### Information Technology
* Collects, organizes, and presents data and information in digital content (AB)
* Makes appropriate improvements to solutions based on feedback received, and can comment on the success of the solution (EV)
* Recognises ethical issues surrounding the application of information technology beyond school.
Computational Thinking Concept: AB = Abstraction; DE = Decomposition; AL = Algorithmic Thinking; EV = Evaluation; GE = Generalisation
## Activity
* time: 20 min.
* [activity](/microbit/lessons/zoomer/activity)
## Extended Activity
* time: 20 min.
* [challenges](/microbit/lessons/zoomer/challenges)
## Homework
* Extended Activity: [challenges](/microbit/lessons/zoomer/challenges)

View File

@ -14,7 +14,7 @@ Write the line of code to measure the acceleration and then store in it a variab
<br/>
```
```blocks
let accX_ = input.acceleration("x")
```
@ -26,9 +26,9 @@ After storing the acceleration in a variable, write the code to show acceleratio
<br/>
```
```blocks
let accX = input.acceleration("x")
basic.showNumber(accX_, 150)
basic.showNumber(accX, 150)
```
Note: make sure the same variable name ("acc x" in this case) is the same in both lines of code..

View File

@ -6,7 +6,7 @@ Measure the acceleration on the micro:bit in the "z" direction #LED #number #mat
## Directions
Use this activity document to guide your work in the [zoomer tutorial](/microbit/lessons/zoomer/tutorial)
Use this activity document to guide your work in the [zoomer tutorial](/microbit/lessons/zoomer/activity)
Answer the questions while completing the tutorial. Pay attention to the dialogues!

View File

@ -1,8 +0,0 @@
# catch the egg
Programming a game of 'catch the egg' using the accelerometer in Touch Develop #docs #functions #var
Programming a game of 'catch the egg' using the accelerometer
* [tutorial](/microbit/lessons/catch-the-egg-game/tutorial)
* [challenges](/microbit/lessons/catch-the-egg/challenges)

View File

@ -1,7 +1,3 @@
//% shim=foo::bar
function test() {
}
basic.plotLeds(`
# # . # #
. . # . .
@ -10,4 +6,5 @@ basic.plotLeds(`
. # # # .
`);
basic.pause(300);
test();
basic.showString("Hello");
// foo.bar();

View File

@ -1,6 +1,10 @@
#include "BitVM.h"
#include "MicroBitTouchDevelop.h"
namespace foo {
GLUE void bar()
//%
void bar()
{
micro_bit::scrollNumber(108108, 50);
touch_develop::micro_bit::scrollNumber(108108, 50);
}
}

View File

@ -6,6 +6,6 @@
],
"public": true,
"dependencies": {
"core": "file:../microbit"
"microbit": "file:../microbit"
}
}

View File

@ -1,3 +1,6 @@
#include "BitVM.h"
/**
* Provides access to basic micro:bit functionality.
*/
@ -10,10 +13,19 @@ namespace basic {
*/
//% help=basic/show-number
//% weight=96
//% shim=micro_bit::scrollNumber
//% blockId=device_show_number block="show|number %number" blockGap=8 icon="\uf1ec"
//% async
export function showNumber(value: number, interval: number = 150): void { }
void showNumber(int value, int interval = 150) {
if (interval < 0)
return;
ManagedString t(value);
if (value < 0 || value >= 10) {
uBit.display.scroll(t, interval);
} else {
uBit.display.print(t.charAt(0), interval * 5);
}
}
/**
* Draws an image on the LED screen.
@ -22,11 +34,12 @@ namespace basic {
*/
//% help=basic/show-leds
//% weight=95 blockGap=8
//% shim=micro_bit::showLeds
//% imageLiteral=1 async
//% blockId=device_show_leds
//% block="show leds" icon="\uf00a"
export function showLeds(leds: string, interval: number = 400): void { }
void showLeds(ImageLiteral leds, int interval = 400) {
uBit.display.print(MicroBitImage(getbytes(leds)), 0, 0, 0, interval);
}
/**
* 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.
@ -35,19 +48,32 @@ namespace basic {
*/
//% help=basic/show-string
//% weight=87 blockGap=8
//% shim=micro_bit::scrollString async
//% block="show|string %text" icon="\uf031"
//% async
//% blockId=device_print_message
export function showString(text: string, interval: number = 150): void { }
void showString(StringData *text, int interval = 150) {
if (interval < 0)
return;
ManagedString s(text);
int l = s.length();
if (l == 0) {
uBit.display.clear();
uBit.sleep(interval * 5);
} else if (l > 1) {
uBit.display.scroll(s, interval);
} else {
uBit.display.print(s.charAt(0), interval * 5);
}
}
/**
* Turn off all LEDs
*/
//% help=basic/clear-screen weight=79
//% shim=micro_bit::clearScreen
//% blockId=device_clear_display block="clear screen" icon="\uf12d"
export function clearScreen(): void { }
void clearScreen() {
uBit.display.image.clear();
}
/**
* Shows a sequence of LED screens as an animation.
@ -55,29 +81,48 @@ namespace basic {
* @param interval TODO
*/
//% help=basic/show-animation shim=micro_bit::showAnimation imageLiteral=1 async
export function showAnimation(leds: string, interval: number = 400): void { }
void showAnimation(ImageLiteral leds, int interval = 400) {
uBit.display.animate(MicroBitImage(getbytes(leds)), interval, 5, 0);
}
/**
* Draws an image on the LED screen.
* @param leds TODO
*/
//% help=basic/plot-leds weight=80 shim=micro_bit::plotLeds imageLiteral=1
export function plotLeds(leds: string): void { }
//% help=basic/plot-leds weight=80 shim=micro_bit::plotLeds
void plotLeds(ImageLiteral leds) {
MicroBitImage i(getbytes(leds));
uBit.display.print(i, 0, 0, 0, 0);
}
void forever_stub(void *a) {
while (true) {
action::run((Action)a);
uBit.sleep(20);
}
}
/**
* Repeats the code forever in the background. On each iteration, allows other codes to run.
* @param body TODO
*/
//% help=basic/forever weight=55 blockGap=8
//% blockId=device_forever block="forever" icon="\uf01e" shim=micro_bit::forever
export function forever(body: () => void): void { }
//% blockId=device_forever block="forever" icon="\uf01e"
void forever(Action a) {
if (a != 0) {
incr(a);
create_fiber(forever_stub, (void*)a);
}
}
/**
* Pause for the specified time in milliseconds
* @param ms how long to pause for, eg: 100, 200, 500, 1000, 2000
*/
//% help=basic/pause weight=54
//% shim=micro_bit::pause async block="pause (ms) %pause"
//% async block="pause (ms) %pause"
//% blockId=device_pause icon="\uf110"
export function pause(ms: number): void { }
void pause(int ms) {
uBit.sleep(ms);
}
}

30
libs/microbit/control.cpp Normal file
View File

@ -0,0 +1,30 @@
#include "BitVM.h"
namespace control {
void fiberDone(void *a)
{
decr((Action)a);
release_fiber();
}
/**
* Schedules code that run in the background.
*/
//% help=control/in-background
//% blockId="control_in_background" block="run in background" blockGap=8
void inBackground(Action a) {
if (a != 0) {
incr(a);
create_fiber((void(*)(void*))action::run, (void*)a, fiberDone);
}
}
/**
* Resets the BBC micro:bit.
*/
//% weight=30 async help=control/reset
//% blockId="control_reset" block="reset"
void reset() {
uBit.reset();
}
}

View File

@ -192,26 +192,28 @@ enum EventBusValue {
//% weight=1 color="#333333"
namespace control {
/**
* Schedules code that run in the background.
*/
//% help=control/in-background shim=micro_bit::runInBackground
//% blockId="control_in_background" block="run in background" blockGap=8
export function inBackground(body: Action): void { }
/**
* Resets the BBC micro:bit.
* Returns the value of a C++ runtime constant
*/
//% weight=30 shim=uBit.reset async help=control/reset
//% blockId="control_reset" block="reset"
export function reset(): void { }
//% weight=19 weight=19 blockId="control_event_source" block="%id"
export function eventSource(id: EventBusSource) : number {
return id;
}
/**
* Returns the value of a C++ runtime constant
*/
//% weight=19 weight=19 blockId="control_event_value" block="%id"
export function eventValue(id: EventBusValue) : number {
return id;
}
/**
* Raises an event in the event bus.
@param src ID of the MicroBit Component that generated the event e.g. MICROBIT_ID_BUTTON_A.
@param value Component specific code indicating the cause of the event.
@param mode optional definition of how the event should be processed after construction (default is CREATE_AND_QUEUE).
*/
* @param src ID of the MicroBit Component that generated the event e.g. MICROBIT_ID_BUTTON_A.
* @param value Component specific code indicating the cause of the event.
* @param mode optional definition of how the event should be processed after construction (default is CREATE_AND_QUEUE).
*/
// shim=micro_bit::busRaiseEvent
//% weight=21 blockGap=12 blockId="control_raise_event" block="raise event|from source %src=control_event_source|with value %value=control_event_value" blockExternalInputs=1
export function raiseEvent(src: number, value: number, mode: EventCreationMode = EventCreationMode.CreateAndQueue): void { }
@ -223,19 +225,4 @@ namespace control {
//% weight=20 blockGap=8 blockId="control_on_event" block="on event|from %src=control_event_source|with value %value=control_event_value"
//% blockExternalInputs=1 blockStatement=1
export function onEvent(src: number, value: number, handler: Action): void { }
/**
* Returns the value of a C++ runtime constant
*/
//% weight=19 shimw=TD_ID weight=19 blockId="control_event_source" block="%id"
export function eventSource(id: EventBusSource) : number {
return 0;
}
/**
* Returns the value of a C++ runtime constant
*/
//% weight=19 shimw=TD_ID weight=19 blockId="control_event_value" block="%id"
export function eventValue(id: EventBusValue) : number {
return 0;
}
}

View File

@ -7,9 +7,10 @@
"core.d.ts",
"mbit.ts",
"images.ts",
"basic.ts",
"basic.cpp",
"input.ts",
"control.ts",
"control.cpp",
"game.ts",
"led.ts",
"music.ts",

View File

@ -1,6 +1,6 @@
{
"name": "kindscript-microbit",
"version": "0.0.16",
"version": "0.2.1",
"description": "BBC micro:bit target for KindScript",
"keywords": [
"JavaScript",
@ -30,6 +30,6 @@
"typescript": "^1.8.7"
},
"dependencies": {
"kindscript": "0.1.123"
"kindscript": "0.2.1"
}
}

View File

@ -88,78 +88,6 @@ namespace ks.rt.micro_bit {
throw new Error("PANIC " + code)
}
/* basic */
export function showDigit(v: number) {
if (!quiet)
console.log("DIGIT:", v)
plotLeds(createImageFromString(v.toString()[0]));
}
export function clearScreen() {
board().image.clear();
runtime.queueDisplayUpdate()
}
export function showLeds(leds: micro_bit.Image, delay: number): void {
showAnimation(leds, delay);
}
function scrollImage(leds: micro_bit.Image, interval: number, stride: number): void {
let cb = getResume()
let off = stride > 0 ? 0 : leds.width - 1;
let display = board().image;
board().animationQ.enqueue({
interval: interval,
frame: () => {
if (off >= leds.width || off < 0) return false;
stride > 0 ? display.shiftLeft(stride) : display.shiftRight(-stride);
let c = Math.min(stride, leds.width - off);
leds.copyTo(off, c, display, 5 - stride)
off += stride;
return true;
},
whenDone: cb
})
}
export function showAnimation(leds: micro_bit.Image, interval: number = 400): void {
scrollImage(leds, interval, 5);
}
export function scrollNumber(x: number, interval: number) {
if (interval < 0) return;
let leds = createImageFromString(x.toString());
if (x < 0 || x >= 10) scrollImage(leds, interval, 1);
else showLeds(leds, interval * 5);
}
export function scrollString(s: string, interval: number) {
if (interval < 0) return;
if (s.length == 0) {
clearScreen();
pause(interval * 5);
} else {
let leds = createImageFromString(s);
if (s.length == 1) showLeds(leds, interval * 5)
else scrollImage(leds, interval, 1);
}
}
export function forever(a: RefAction) {
function loop() {
runtime.runFiberAsync(a)
.then(() => Promise.delay(20))
.then(loop)
.done()
}
incr(a)
loop()
}
export var pause = thread.pause;
/* leds */
export function plot(x: number, y: number) {
board().image.set(x, y, 255);
@ -198,20 +126,17 @@ namespace ks.rt.micro_bit {
runtime.queueDisplayUpdate()
}
/* control */
export var runInBackground = thread.runInBackground;
/* serial */
export function serialSendString(s: string) {
board().writeSerial(s);
}
export function serialReadString() : string {
export function serialReadString(): string {
return board().readSerial();
}
/* input */
export function onButtonPressed(button : number, handler: RefAction) : void {
export function onButtonPressed(button: number, handler: RefAction): void {
let ens = enums();
let b = board();
if (button == ens.MICROBIT_ID_BUTTON_AB && !board().usesButtonAB) {
@ -220,7 +145,7 @@ namespace ks.rt.micro_bit {
}
b.bus.listen(button, ens.MICROBIT_BUTTON_EVT_CLICK, handler);
}
export function isButtonPressed(button: number): boolean {
let ens = enums();
let b = board();
@ -233,19 +158,19 @@ namespace ks.rt.micro_bit {
if (button == ens.MICROBIT_ID_BUTTON_B) return bts[1].pressed;
return bts[2].pressed || (bts[0].pressed && bts[1].pressed);
}
export function onGesture(gesture: number, handler: RefAction) {
let ens = enums();
let b = board();
b.accelerometer.activate();
if (gesture == 11 && !b.useShake) { // SAKE
b.useShake = true;
runtime.queueDisplayUpdate();
}
b.bus.listen(ens.MICROBIT_ID_GESTURE, gesture, handler);
}
export function onPinPressed(pin: Pin, handler: RefAction) {
pin.isTouched();
onButtonPressed(pin.id, handler);
@ -283,7 +208,7 @@ namespace ks.rt.micro_bit {
}
return b.heading;
}
export function temperature(): number {
var b = board();
if (!b.usesTemperature) {
@ -292,7 +217,7 @@ namespace ks.rt.micro_bit {
}
return b.temperature;
}
export function getAcceleration(dimension: number): number {
let b = board();
let acc = b.accelerometer;
@ -304,8 +229,8 @@ namespace ks.rt.micro_bit {
default: return Math.floor(Math.sqrt(acc.instantaneousAccelerationSquared()));
}
}
export function setAccelerometerRange(range : number) {
export function setAccelerometerRange(range: number) {
let b = board();
b.accelerometer.setSampleRange(range);
}
@ -327,76 +252,76 @@ namespace ks.rt.micro_bit {
export function getCurrentTime(): number {
return runtime.runningTime();
}
/* pins */
export function digitalReadPin(pin : Pin) : number {
export function digitalReadPin(pin: Pin): number {
pin.mode = PinMode.Digital | PinMode.Input;
return pin.value > 100 ? 1 : 0;
}
export function digitalWritePin(pin : Pin, value: number) {
export function digitalWritePin(pin: Pin, value: number) {
pin.mode = PinMode.Digital | PinMode.Output;
pin.value = value > 0 ? 1023 : 0;
runtime.queueDisplayUpdate();
}
export function analogReadPin(pin : Pin) : number {
export function analogReadPin(pin: Pin): number {
pin.mode = PinMode.Analog | PinMode.Input;
return pin.value || 0;
}
export function analogWritePin(pin : Pin, value: number) {
export function analogWritePin(pin: Pin, value: number) {
pin.mode = PinMode.Analog | PinMode.Output;
pin.value = value ? 1 : 0;
runtime.queueDisplayUpdate();
}
export function setAnalogPeriodUs(pin: Pin, micros:number) {
export function setAnalogPeriodUs(pin: Pin, micros: number) {
pin.mode = PinMode.Analog | PinMode.Output;
pin.period = micros;
runtime.queueDisplayUpdate();
}
export function servoWritePin(pin: Pin, value: number) {
setAnalogPeriodUs(pin, 20000);
// TODO
}
export function servoSetPulse(pin: Pin, micros:number) {
export function servoSetPulse(pin: Pin, micros: number) {
}
module AudioContextManager {
var _context : any; // AudioContext
var _vco : any; //OscillatorNode;
var _context: any; // AudioContext
var _vco: any; //OscillatorNode;
var _vca: any; // GainNode;
function context() : any {
function context(): any {
if (!_context) _context = freshContext();
return _context;
}
function freshContext() : any {
function freshContext(): any {
(<any>window).AudioContext = (<any>window).AudioContext || (<any>window).webkitAudioContext;
if ((<any>window).AudioContext) {
try {
// this call my crash.
// SyntaxError: audio resources unavailable for AudioContext construction
return new (<any>window).AudioContext();
} catch(e) {}
}
return new (<any>window).AudioContext();
} catch (e) { }
}
return undefined;
}
export function stop() {
if (_vca) _vca.gain.value = 0;
}
export function tone(frequency: number, gain: number) {
if (frequency <= 0) return;
export function tone(frequency: number, gain: number) {
if (frequency <= 0) return;
var ctx = context();
if (!ctx) return;
gain = Math.max(0, Math.min(1, gain));
gain = Math.max(0, Math.min(1, gain));
if (!_vco) {
try {
_vco = ctx.createOscillator();
@ -405,89 +330,165 @@ namespace ks.rt.micro_bit {
_vca.connect(ctx.destination);
_vca.gain.value = gain;
_vco.start(0);
} catch(e) {
} catch (e) {
_vco = undefined;
_vca = undefined;
return;
}
}
_vco.frequency.value = frequency;
_vca.gain.value = gain;
}
}
export function enablePitch(pin: Pin) {
board().pins.filter(p => !!p).forEach(p => p.pitch = false);
pin.pitch = true;
}
export function pitch(frequency: number, ms: number) {
// update analog output
let pin = board().pins.filter(pin => !!pin && pin.pitch)[0] || board().pins[0];
pin.mode = PinMode.Analog | PinMode.Output;
if (frequency <= 0) {
pin.value = 0;
pin.period = 0;
pin.value = 0;
pin.period = 0;
} else {
pin.value = 512;
pin.period = 1000000/frequency;
pin.period = 1000000 / frequency;
}
runtime.queueDisplayUpdate();
let cb = getResume();
AudioContextManager.tone(frequency, 1);
if (ms <= 0) cb();
else {
setTimeout(() => {
AudioContextManager.stop();
pin.value = 0;
pin.period = 0;
AudioContextManager.stop();
pin.value = 0;
pin.period = 0;
pin.mode = PinMode.Unused;
runtime.queueDisplayUpdate();
cb()
cb()
}, ms);
}
}
/* radio */
export function broadcastMessage(msg: number) : void {
export function broadcastMessage(msg: number): void {
board().radio.broadcast(msg);
}
export function onBroadcastMessageReceived(msg: number, handler: RefAction) : void {
export function onBroadcastMessageReceived(msg: number, handler: RefAction): void {
let ens = enums()
board().bus.listen(ens.MES_BROADCAST_GENERAL_ID, msg, handler);
}
export function setGroup(id : number) : void {
export function setGroup(id: number): void {
board().radio.setGroup(id);
}
export function setTransmitPower(power: number) : void {
board().radio.setTransmitPower(power);
export function setTransmitPower(power: number): void {
board().radio.setTransmitPower(power);
}
export function datagramSendNumbers(value0 : number, value1: number, value2: number, value3: number) : void {
export function datagramSendNumbers(value0: number, value1: number, value2: number, value3: number): void {
board().radio.datagram.send([value0, value1, value2, value3]);
}
export function datagramReceiveNumber() : number {
export function datagramReceiveNumber(): number {
return board().radio.datagram.recv().data[0];
}
export function datagramGetNumber(index : number) : number {
export function datagramGetNumber(index: number): number {
return board().radio.datagram.lastReceived.data[index] || 0;
}
export function datagramGetRSSI() : number {
export function datagramGetRSSI(): number {
return board().radio.datagram.lastReceived.rssi;
}
export function onDatagramReceived(handler: RefAction) : void {
export function onDatagramReceived(handler: RefAction): void {
let ens = enums();
board().bus.listen(ens.MICROBIT_ID_RADIO, ens.MICROBIT_RADIO_EVT_DATAGRAM, handler);
}
}
namespace ks.rt.basic {
var board = micro_bit.board;
export var pause = thread.pause;
export function showNumber(x: number, interval: number) {
if (interval < 0) return;
let leds = micro_bit.createImageFromString(x.toString());
if (x < 0 || x >= 10) scrollImage(leds, interval, 1);
else showLeds(leds, interval * 5);
}
export function showString(s: string, interval: number) {
if (interval < 0) return;
if (s.length == 0) {
clearScreen();
pause(interval * 5);
} else {
let leds = micro_bit.createImageFromString(s);
if (s.length == 1) showLeds(leds, interval * 5)
else scrollImage(leds, interval, 1);
}
}
export function showLeds(leds: micro_bit.Image, delay: number): void {
showAnimation(leds, delay);
}
export function clearScreen() {
board().image.clear();
runtime.queueDisplayUpdate()
}
function scrollImage(leds: micro_bit.Image, interval: number, stride: number): void {
let cb = getResume()
let off = stride > 0 ? 0 : leds.width - 1;
let display = board().image;
board().animationQ.enqueue({
interval: interval,
frame: () => {
if (off >= leds.width || off < 0) return false;
stride > 0 ? display.shiftLeft(stride) : display.shiftRight(-stride);
let c = Math.min(stride, leds.width - off);
leds.copyTo(off, c, display, 5 - stride)
off += stride;
return true;
},
whenDone: cb
})
}
export function showAnimation(leds: micro_bit.Image, interval: number = 400): void {
scrollImage(leds, interval, 5);
}
export function forever(a: RefAction) {
function loop() {
runtime.runFiberAsync(a)
.then(() => Promise.delay(20))
.then(loop)
.done()
}
incr(a)
loop()
}
}
namespace ks.rt.control {
export var inBackground = thread.runInBackground;
export function reset() {
U.userError("reset not implemented in simulator yet")
}
}