Compare commits

...

61 Commits

Author SHA1 Message Date
0f273131f6 0.2.41 2016-04-07 09:46:17 -07:00
9ae0c48477 Bump kindscript to 0.2.42 2016-04-07 09:46:15 -07:00
5f538f418e 0.2.40 2016-04-07 09:18:35 -07:00
859b68b6e3 Bump kindscript to 0.2.41 2016-04-07 09:18:33 -07:00
6576f7bd66 better handlings of logs 2016-04-07 09:03:21 -07:00
5a670f3291 0.2.39 2016-04-07 06:45:52 -07:00
7129487618 0.2.38 2016-04-07 06:34:15 -07:00
e1797b457a Bump kindscript to 0.2.39 2016-04-07 06:34:14 -07:00
c82efa452d 0.2.37 2016-04-07 04:48:45 -07:00
493014af01 Bump kindscript to 0.2.38 2016-04-07 04:48:43 -07:00
fb4a96d81b 0.2.36 2016-04-07 03:56:24 -07:00
bbf115f33c Bump kindscript to 0.2.36 2016-04-07 03:56:22 -07:00
5d9c2cf590 svg refactored into kindsim 2016-04-07 03:52:32 -07:00
b99231f6e2 0.2.35 2016-04-06 18:24:27 -07:00
2676907129 Bump kindscript to 0.2.35 2016-04-06 18:24:25 -07:00
6f4c533ebb 0.2.34 2016-04-06 16:41:29 -07:00
85dcaea979 0.2.33 2016-04-06 16:36:41 -07:00
8560b31657 Bump kindscript to 0.2.33 2016-04-06 16:36:40 -07:00
b896588f45 0.2.32 2016-04-06 16:09:30 -07:00
0b4d4facfe fix target 2016-04-06 16:09:20 -07:00
52ad897ee3 0.2.31 2016-04-06 15:49:03 -07:00
72582f2a60 updated title 2016-04-06 15:48:45 -07:00
2b2048da7d 0.2.30 2016-04-06 15:34:37 -07:00
e85fa990bd Bump kindscript to 0.2.31 2016-04-06 15:34:35 -07:00
81a61538c3 updated target 2016-04-06 15:23:58 -07:00
cc8751bd09 updated target 2016-04-06 15:12:55 -07:00
03f933a1c8 0.2.29 2016-04-06 14:02:53 -07:00
10a77d9fef Bump kindscript to 0.2.30 2016-04-06 14:02:51 -07:00
773f8a8688 0.2.28 2016-04-06 08:05:40 -07:00
f67743d935 Bump kindscript to 0.2.29 2016-04-06 08:05:38 -07:00
237a57ee86 updated logos 2016-04-06 07:32:14 -07:00
b80edb43fc removing some serial functions 2016-04-06 07:00:34 -07:00
6c9b609fe0 annotate math namespace 2016-04-06 06:16:59 -07:00
26d78768c0 0.2.27 2016-04-05 23:15:42 -07:00
6812767555 Bump kindscript to 0.2.28 2016-04-05 23:15:39 -07:00
2aa7c91ca7 various docs updates 2016-04-05 23:11:48 -07:00
baf2c3247f Merge branch 'master' of https://github.com/Microsoft/kindscript-microbit 2016-04-05 20:49:54 -07:00
c9536b0cf2 Use constant for end of memory 2016-04-05 19:19:27 -07:00
7fd7e15bd4 Add README.md to kind.json 2016-04-05 19:02:12 -07:00
948b0ef304 Add readme to neopixel 2016-04-05 18:21:24 -07:00
715771b991 Add readme to i2c fram module 2016-04-05 18:21:15 -07:00
65d48f4b02 Add FRAM driver 2016-04-05 17:25:45 -07:00
283c331a5e moving namespace docs 2016-04-05 16:54:09 -07:00
ba96e94fa7 added jsdoc 2016-04-05 16:52:50 -07:00
7e1248b8dc 0.2.26 2016-04-05 16:15:58 -07:00
cbe280187a Bump kindscript to 0.2.26 2016-04-05 16:15:56 -07:00
761e4f38cd adding namespace descriptions 2016-04-05 15:59:25 -07:00
a9137f7761 first radio namespace docs 2016-04-05 14:10:53 -07:00
3274e237cf 0.2.25 2016-04-05 14:05:36 -07:00
5261b2b270 0.2.24 2016-04-05 13:54:55 -07:00
1adede163a Bump kindscript to 0.2.25 2016-04-05 13:54:53 -07:00
bb80874ef9 fixing docs enum 2016-04-05 13:54:48 -07:00
9e9d11cb94 0.2.23 2016-04-05 13:28:03 -07:00
c004aa4b1b Bump kindscript to 0.2.24 2016-04-05 13:28:01 -07:00
cdd4798945 namspace docs 2016-04-05 13:23:42 -07:00
0f56142317 updated about 2016-04-05 10:36:23 -07:00
6927085d64 0.2.22 2016-04-04 22:46:48 -07:00
c1b654f092 Bump kindscript to 0.2.23 2016-04-04 22:46:46 -07:00
2f551c97b5 0.2.21 2016-04-04 22:38:41 -07:00
01e6aab376 0.2.20 2016-04-04 22:33:39 -07:00
df17ba09ae updated links 2016-04-04 22:33:13 -07:00
71 changed files with 657 additions and 933 deletions

View File

@ -1,3 +1,8 @@
```sim
basic.forever(() => {
basic.showString("Hi!");
})
```
# About
The [BBC micro:bit](https://www.microbit.co.uk) is a [pocket-size computer](/device) with a 5x5 display of 25 LEDs, Bluetooth and sensors that can be programmed by anyone.

View File

@ -1,5 +1,6 @@
# Lessons
### @short Lessons
### ~column

View File

@ -22,12 +22,9 @@ Learn how to creating a message with a **string**, `show string` to write your m
## Documentation
```docs
```cards
basic.showString('Hi!')
input.onButtonPressed(Button.A, () => {
})
input.onButtonPressed(Button.A, () => {})
```

View File

@ -20,7 +20,7 @@ Learn how to **show LEDs**, to show an image on the BBC micro:bit's LED screen.
## Documentation
```docs
```cards
basic.showLeds(`
. . . . .
. . . . .
@ -28,10 +28,7 @@ basic.showLeds(`
. . . . .
. . . . .
`)
basic.pause(100)
```
## Objectives

View File

@ -23,18 +23,11 @@ Learn how to control a blinking LED. We will be learning how to create a blinkin
## Documentation
```docs
```cards
led.plot(0, 0)
led.unplot(0, 0)
basic.pause(100)
basic.forever(() => {
})
basic.forever(() => {})
```

View File

@ -17,23 +17,13 @@ Learn the functions of **on data received**, **send number** and **receive numbe
## Documentation
```docs
```cards
basic.showNumber(0)
input.acceleration(Dimension.X)
led.plotBarGraph(0, 1023)
radio.onDataReceived(() => {
})
radio.onDataReceived(() => {})
radio.sendNumber(0)
radio.receiveNumber()
```
## Objectives

View File

@ -21,17 +21,12 @@ Learn how to use an if statements to run code run code depending on whether a co
## Documentation
```docs
```cards
input.compassHeading()
basic.forever(() => {})
let x = 0
if (true) {}
basic.showString("Hello!")
basic.showLeds(`
. . . . .
. . . . .

View File

@ -21,22 +21,12 @@ Learn how to creating a **variable** to keep track of the current count. We will
## Documentation
```docs
```cards
input.compassHeading()
basic.forever(() => {
})
basic.forever(() => {})
let x = 0
if (true) {
}
if (true) {}
basic.showString("Hello!")
basic.showLeds(`
. . . . .
. . . . .
@ -44,7 +34,6 @@ basic.showLeds(`
. . . . .
. . . . .
`)
```
* **variable**: [read more...](/microbit/reference/variables/var)

View File

@ -21,21 +21,11 @@ Learn how to use an if statements to run code run code depending on whether a co
## Documentation
```docs
input.onGesture(Gesture.Shake, () => {
})
```cards
input.onGesture(Gesture.Shake, () => {})
let x = 0
x = Math.random(3)
if (true) {
}
Math.random(3)
if (true) {}
basic.showLeds(`
. . . . .
. . . . .
@ -43,10 +33,6 @@ basic.showLeds(`
. . . . .
. . . . .
`)
```
## Objectives

View File

@ -21,13 +21,11 @@ Learn how to creating a **while loop**, `while condition do` to repeat code whil
## Documentation
```docs
```cards
let x = 0
basic.showNumber(0)
while (true) {
basic.pause(20)
}
while (true) {}
basic.pause(20)
```
## Objectives

View File

@ -20,13 +20,8 @@ Learn how to `show LEDs` by showing an image on the LED screen. We will be learn
## Documentation
```docs
basic.forever(() => {
})
```cards
basic.forever(() => {})
basic.showLeds(`
. . . . .
. . . . .
@ -34,11 +29,8 @@ basic.showLeds(`
. . . . .
. . . . .
`)
basic.pause(100)
basic.clearScreen()
```
## Objectives

View File

@ -19,15 +19,10 @@ Learn how to create game blocks to keep track of the current score. We will be l
## Documentation
```docs
```cards
game.addScore(1)
input.onButtonPressed(Button.A, () => {
})
input.onButtonPressed(Button.A, () => {})
basic.showNumber(0)
```
## Objectives

View File

@ -18,15 +18,10 @@ Learn how to creating a message with a **game over** to write your message. We w
## Documentation
```docs
```cards
game.gameOver()
basic.showString("Hello!")
input.onButtonPressed(Button.A, () => {
})
input.onButtonPressed(Button.A, () => {})
```
## Objectives

View File

@ -19,21 +19,12 @@ Learn how to get the acceleration **acceleration**, `acceleration` value (g-forc
## Documentation
```docs
basic.forever(() => {
})
```cards
basic.forever(() => {})
let x = 0
input.acceleration(Dimension.X)
Math.abs(0)
led.setBrightness(255)
basic.showLeds(`
. . . . .
. . . . .
@ -41,7 +32,6 @@ basic.showLeds(`
. . . . .
. . . . .
`)
```
## Objectives

View File

@ -21,22 +21,12 @@ Learn how to create numbers randomly by using the input of the BBC micro:bit. We
## Documentation
```docs
input.onButtonPressed(Button.A, () => {
})
```cards
input.onButtonPressed(Button.A, () => {})
let x = 0
basic.showNumber(0)
Math.random(3)
basic.clearScreen()
```
## Objectives

View File

@ -26,10 +26,8 @@ Learn how to control a blinking LED. We will be learning how to create a blinkin
## Documentation
```docs
for (let i = 0; i < 5; i++) {
}
```cards
for (let i = 0; i < 5; i++) {}
basic.showNumber(0)
basic.pause(100)

View File

@ -22,19 +22,11 @@ Learn how to use the **pin pressed**, `on pin pressed` to run code when the user
## Documentation
```docs
if (true) {
}
input.onPinPressed(TouchPin.P0, () => {
})
```cards
if (true) {}
input.onPinPressed(TouchPin.P0, () => {})
let x = 0
Math.random(3)
basic.showNumber(0)
basic.pause(100)
```

View File

@ -19,14 +19,10 @@ Learn how to creating **conditionals**, `if condition do` to conditionally run c
## Documentation
```docs
if (true) {
}
```cards
if (true) {}
Math.random(3)
input.onGesture(Gesture.Shake, () => {
})
input.onGesture(Gesture.Shake, () => {})
basic.showNumber(7)
basic.clearScreen()
basic.showString("Hello!")

View File

@ -20,13 +20,9 @@ On Logo Up
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(() => {
})
input.onLogoDown(() => {
})
```cards
input.onLogoUp(() => {})
input.onLogoDown(() => {})
basic.showLeds(`
. . . . .
. . . . .
@ -34,8 +30,6 @@ basic.showLeds(`
. . . . .
. . . . .
`)
```
## Objectives

View File

@ -21,11 +21,9 @@ Learn how to **set brightness** of an image `set brightness` to set the brightne
## Documentation
```docs
```cards
led.setBrightness(255)
input.onButtonPressed(Button.A, () => {
})
input.onButtonPressed(Button.A, () => {})
basic.showLeds(`
. . . . .
. . . . .
@ -33,7 +31,6 @@ basic.showLeds(`
. . . . .
. . . . .
`)
```
## Objectives

View File

@ -15,14 +15,13 @@ Running Time
Learn how to use running time. We will be learning how to create a pogo game using variables, forever loop, conditionals, on button pressed, as well as simple commands, such as show LEDs and clear screen.
## Documentation
```docs
```cards
let jumps = 0
let acc = input.acceleration(Dimension.Y)
basic.showNumber(jumps)
basic.showNumber(radio.receiveNumber())
basic.showNumber(0)
radio.receiveNumber()
led.stopAnimation()
jumps = jumps + 1;
radio.sendNumber(jumps)
radio.sendNumber(0)
basic.forever(() => { })
basic.showLeds(`
. . . . .
@ -32,11 +31,8 @@ basic.showLeds(`
. # # # .
`)
basic.clearScreen()
if (acc > 2000) {
}
if (true) {}
radio.onDataReceived(() => { })
```
## Objectives

View File

@ -23,10 +23,8 @@ Learn how to create a **local variable**, `var t :=time` where you can store dat
## Documentation
```docs
input.onGesture(Gesture.Shake, () => {
})
```cards
input.onGesture(Gesture.Shake, () => {})
Math.random(3)
let x = 0
basic.showLeds(`

View File

@ -19,11 +19,9 @@ Learn how to create images that look like a rotating animation by using a while
## Documentation
```docs
```cards
let x = 0
input.onButtonPressed(Button.A, () => {
})
input.onButtonPressed(Button.A, () => {})
basic.showLeds(`
. . . . .
. . . . .
@ -32,10 +30,8 @@ basic.showLeds(`
. . . . .
`)
basic.pause(100)
while (true) {
basic.pause(20)
}
while (true) {}
basic.pause(20)
```
## Objectives

View File

@ -23,7 +23,7 @@ Learn how to **clear screen**, `clear screen` to turn off all the LED lights on
## Documentation
```docs
```cards
basic.clearScreen()
basic.showLeds(`
. . . . .
@ -32,10 +32,7 @@ basic.showLeds(`
. . . . .
. . . . .
`)
input.onButtonPressed(Button.A, () => {
})
input.onButtonPressed(Button.A, () => {})
```
## Objectives

View File

@ -24,10 +24,8 @@ 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, () => {
})
```cards
input.onButtonPressed(Button.A, () => {})
basic.showLeds(`
. . . . .
. . . . .
@ -35,7 +33,6 @@ basic.showLeds(`
. . . . .
. . . . .
`)
```
## Objectives

View File

@ -25,7 +25,7 @@ Learn how to show LEDs with a, `pause` to pause program execution for a specifie
* **pause** : [read more...](/microbit/reference/basic/pause)
* **forever** : [read more...](/microbit/reference/basic/forever)
```docs
```cards
basic.showLeds(`
. . . . .
. . . . .
@ -34,8 +34,5 @@ basic.showLeds(`
. . . . .
`)
basic.pause(100)
basic.forever(() => {
})
basic.forever(() => {})
```

View File

@ -22,14 +22,10 @@ Learn how to use an if statement to run code run code depending on whether a con
## Documentation
```docs
if (true) {
}
```cards
if (true) {}
let x = 0
input.onGesture(Gesture.Shake, () => {
})
input.onGesture(Gesture.Shake, () => {})
Math.random(3)
basic.showLeds(`
. . . . .

View File

@ -17,14 +17,11 @@ For Loop
## Documentation
```docs
```cards
led.plot(0, 0)
led.unplot(0, 0)
for (let i = 0; i < 5; i++) {
}
for (let i = 0; i < 5; i++) {}
basic.pause(100)
```
## Objectives

View File

@ -17,15 +17,12 @@ Learn how to get the ambient temperature (degree Celsius °C). The temperature i
## Documentation
```docs
```cards
input.temperature()
let x = 0
basic.showNumber(7)
basic.showString("Hello!")
input.onGesture(Gesture.Shake, () => {
})
input.onGesture(Gesture.Shake, () => {})
```
## Objectives

View File

@ -21,7 +21,7 @@ Learn how to use an if statement to run code run code depending on whether a con
## Documentation
```docs
```cards
basic.showLeds(`
. . . . .
. . . . .
@ -29,16 +29,11 @@ basic.showLeds(`
. . . . .
. . . . .
`)
input.onButtonPressed(Button.A, () => {
})
input.onButtonPressed(Button.A, () => {})
let x = 0
Math.random(3)
if (true) {
}
if (true) {}
basic.showString("Hello!")
```
## Objectives

View File

@ -21,7 +21,7 @@ Learn how to get the **acceleration**, `acceleration` in one of three specified
## Documentation
```docs
```cards
basic.forever(() => {
})
let x = 0

View File

@ -1,460 +1,17 @@
# Reference
### @section full
### ~column
### Basic
[show number](/microbit/reference/basic/show-number)
~~~~block
basic.showNumber(2)
~~~~
[show string](/microbit/reference/basic/show-string)
~~~~block
basic.showString('Hello!')
~~~~
[show LEDs](/microbit/reference/basic/show-leds)
~~~~block
basic.showLeds(`. . . . .
. # . # .
. . . . .
# . . . #
. # # # .`)
~~~~
[clear screen](/microbit/reference/basic/clear-screen)
~~~~block
basic.clearScreen()
~~~~
[forever](/microbit/reference/basic/forever)
~~~~block
basic.forever(() => { })
~~~~
[pause](/microbit/reference/basic/pause)
```block
basic.pause(200)
```
### Input
[on button pressed](/microbit/reference/input/on-button-pressed)
```block
input.onButtonPressed(Button.A, () => {})
```
[on pin pressed](/microbit/reference/input/on-pin-pressed)
```block
input.onPinPressed(TouchPin.P0, () => {})
```
[on shake](/microbit/reference/input/on-shake)
![](/static/mb/blocks/contents-22.jpg)
[on logo up](/microbit/reference/on-logo-up)
![](/static/mb/on-logo-up-0.jpg)
[on logo down](/microbit/reference/on-logo-down)
![](/static/mb/on-logo-down-0.jpg)
[on screen up](/microbit/reference/on-screen-up)
![](/static/mb/on-screen-up-0.jpg)
[on screen down](/microbit/reference/on-screen-down)
![](/static/mb/on-screen-down-0.jpg)
[button is pressed](/microbit/reference/button-is-pressed)
![](/static/mb/button-is-pressed-0.png)
[compass heading](/microbit/reference/compass-heading)
![](/static/mb/compass-heading-0.png)
[temperature](/microbit/reference/temperature)
![](/static/mb/temperature-0.png)
[acceleration](/microbit/reference/input/acceleration)
![](/static/mb/acceleration-0.png)
[rotation](/microbit/reference/rotation)
![](/static/mb/rotation-0.png)
[magnetic force](/microbit/reference/magnetic-force)
![](/static/mb/magnetic-force-0.png)
[running time](/microbit/reference/running-time)
![](/static/mb/running-time-0.png)
### Loops
[for](/microbit/reference/loops/for)
```block
for(let i = 0;i<5;i++) {}
```
[repeat](/microbit/reference/loops/repeat)
![](/static/mb/blocks/contents-0.png)
[while](/microbit/reference/loops/while)
```block
while(true) {}
```
[forever](/microbit/reference/basic/forever)
```block
basic.forever(() => {})
```
### ~
### ~column
### Logic
[if](/microbit/reference/logic/if)
```block
if(false) {
}
```
[Boolean](/microbit/reference/types/boolean) values: *true*; *false*
```block
true
false
```
Boolean binary operators: *and* (conjunction); *or* (disjunction)
```block
true && false;
true || false;
```
Boolean negation operator
```block
!true
```
Comparison operators (=, !=, <, >, <=, >=)
```block
0 == 0;
1 !- 0;
0 < 1;
1 > 0;
0 <= 1;
1 >= 0;
```
### Variables
[Assign](/microbit/reference/variables/assign) (set) a variable's value
```block
```namespaces
basic.showString("Hello!");
input.onButtonPressed(Button.A, () => {});
for (let i = 0;i<5;++i) {}
if (true){}
let x = 0;
```
Get a variable's value
```block
let x = 0;
x;
```
[Change](/microbit/reference/variables/change-var) a variable's value
```block
let x = 0;
x+=1;
```
### Math
[Numeric](/microbit/reference/types/number) values: 0, 1, 2, ...
```block
0;
1;
2;
```
Arithmetic binary operation (+, -, *, /)
```block
0+1;
0-1;
1*2;
3/4;
```
Absolute value
```block
Math.abs(-5);
```
Minimum/maximum of two values
```block
Math.min(0, 1);
Math.max(0, 1);
```
Random value
```block
Math.random(5);
led.plot(0,0);
radio.sendNumber(0);
music.playTone(music.noteFrequency(Note.C), music.beat(BeatFraction.Whole));
game.createSprite(2,2);
pins.digitalReadPin(DigitalPin.P0);
serial.writeLine("Hello!");
control.inBackground(() => {});
```
### LED
[plot](/microbit/reference/led/plot)
```block
led.plot(2,2)
```
[unplot](/microbit/reference/led/unplot)
```block
led.unplot(2,2)
```
[point](/microbit/reference/point)
```block
led.point(2,2)
```
[brightness](/microbit/reference/brightness)
```block
led.brightness()
```
[set brightness](/microbit/reference/set-brightness)
```block
led.setBrightness(255)
```
[stop animation](/microbit/reference/stop-animation)
```block
led.stopAnimation()
```
[plot bar graph](/microbit/reference/led/plot-bar-graph)
```block
led.plotBarGraph(0, 1023)
```
### Game
[create sprite](/microbit/reference/game/create-sprite)
![](/static/mb/create-sprite-0.png)
[move](/microbit/reference/game/move)
![](/static/mb/game-library/move-0.png)
[turn](/microbit/reference/game/turn)
![](/static/mb/game-library/turn-0.png)
[change](/microbit/reference/game/change)
![](/static/mb/change-0.png)
[set](/microbit/reference/game/set)
![](/static/mb/blocks/contents-21.png)
[reports](/microbit/reference/reports)
![](/static/mb/game-library/position-0.png)
[touching](/microbit/reference/touching)
![](/static/mb/game-library/touching-0.png)
[touching edge](/microbit/reference/touching-edge)
![](/static/mb/game-library/touching-edge-0.png)
[if on edge, bounce](/microbit/reference/logic/if-on-edge-bounce)
![](/static/mb/game-library/if-on-edge-bounce-0.png)
[change score by](/microbit/reference/change-score-by)
![](/static/mb/game-library/pic1.png)
[score](/microbit/reference/score)
![](/static/mb/game-library/pic2.png)
[start countdown](/microbit/reference/start-countdown)
![](/static/mb/game-library/pic3.png)
[game over](/microbit/reference/game-over)
![](/static/mb/game-library/pic0.png)
### Music
[play tone](/microbit/reference/play-tone)
![](/static/mb/play-tone-0.jpg)
[ring tone](/microbit/reference/ring-tone)
![](/static/mb/ring-tone-0.jpg)
[rest](/microbit/reference/rest)
![](/static/mb/rest-0.jpg)
[tempo](/microbit/reference/tempo)
![](/static/mb/tempo-0.jpg)
[set tempo](/microbit/reference/set-tempo)
![](/static/mb/change-tempo-0.jpg)
[change tempo](/microbit/reference/music/set-tempo)
![](/static/mb/change-tempo-by-0.jpg)
### Comments
[comment](/microbit/reference/comment)
### Images
[show image](/microbit/reference/show-image)
![](/static/mb/show-image-0.png)
[scroll image](/microbit/reference/scroll-image)
![](/static/mb/scroll-image-0.png)
[create image](/microbit/reference/create-image)
![](/static/mb/create-image-0.png)
### ~
### ~column
### Pins
[digital read pin](/microbit/reference/pins/digital-read-pin)
![](/static/mb/digital-read-pin-0.png)
[digital write pin](/microbit/reference/pins/digital-write-pin)
![](/static/mb/digital-write-pin-0.png)
[analog read pin](/microbit/reference/pins/analog-read-pin)
![](/static/mb/analog-read-pin-0.png)
[analog write pin](/microbit/reference/pins/analog-write-pin)
![](/static/mb/blocks/contents-23.png)
[analog set period](/microbit/reference/pins/analog-set-period)
![](/static/mb/analog-set-period-0.png)
[servo write pin](/microbit/reference/pins/servo-write-pin)
![](/static/mb/servo-write-pin-0.png)
[servo set pulse](/microbit/reference/pins/servo-set-pulse)
![](/static/mb/servo-set-pulse-0.png)
[map](/microbit/reference/map)
![](/static/mb/map-0.png)
## Devices
Functions in this category require to be connected to a remote device.
[tell camera to](/microbit/reference/devices/tell-camera-to)
![](/static/mb/tell-camera-to-0.png)
[tell remote control to](/microbit/reference/devices/tell-remote-control-to)
![](/static/mb/tell-remote-control-to-0.png)
[raise alert to](/microbit/reference/devices/raise-alert-to)
![](/static/mb/raise-alert-to-0.png)
[on notified](/microbit/reference/on-notified)
![](/static/mb/on-notified-0.png)
[on gamepad button](/microbit/reference/on-gamepad-button)
![](/static/mb/on-gamepad-button-0.png)
[on notified](/microbit/reference/on-notified)
![](/static/mb/on-notified-0.png)
[signal strength](/microbit/reference/signal-strength)
![](/static/mb/blocks/contents-24.png)
[on signal strength changed](/microbit/reference/on-signal-strength-changed)
![](/static/mb/blocks/contents-25.png)
### ~

35
docs/reference/basic.md Normal file
View File

@ -0,0 +1,35 @@
# Basic
Provides access to basic micro:bit functionality.
```cards
basic.showNumber(0);
basic.showLeds(`
. . . . .
. . . . .
. . # . .
. . . . .
. . . . .
`);
basic.showString("Hello!");
basic.clearScreen();
basic.forever(() => {
});
basic.pause(100);
basic.plotLeds(`
. . . . .
. . . . .
. . # . .
. . . . .
. . . . .
`);
basic.showAnimation(`
. . . . .
. . . . .
. . # . .
. . . . .
. . . . .
`);
```

11
docs/reference/control.md Normal file
View File

@ -0,0 +1,11 @@
# Control
```cards
control.inBackground(() => {
});
control.reset();
```

12
docs/reference/game.md Normal file
View File

@ -0,0 +1,12 @@
# Game
```cards
game.addScore(1);
game.score();
game.startCountdown(10000);
game.gameOver();
game.setScore(0);
```

21
docs/reference/images.md Normal file
View File

@ -0,0 +1,21 @@
# Images
```cards
images.createImage(`
. . . . .
. . . . .
. . # . .
. . . . .
. . . . .
`);
images.createBigImage(`
. . . . .
. . . . .
. . # . .
. . . . .
. . . . .
`);
```

42
docs/reference/input.md Normal file
View File

@ -0,0 +1,42 @@
# Input
```cards
input.onButtonPressed(Button.A, () => {
});
input.onGesture(Gesture.Shake, () => {
});
input.onPinPressed(TouchPin.P0, () => {
});
input.buttonIsPressed(Button.A);
input.compassHeading();
input.temperature();
input.acceleration(Dimension.X);
input.lightLevel();
input.rotation(Rotation.Pitch);
input.magneticForce(Dimension.X);
input.runningTime();
input.setAccelerometerRange(AcceleratorRange.OneG);
input.pinIsPressed(TouchPin.P0);
input.calibrate();
input.onLogoDown(() => {
});
input.onLogoUp(() => {
});
input.onScreenDown(() => {
});
input.onScreenUp(() => {
});
input.onShake(() => {
});
```

View File

@ -126,15 +126,3 @@ This is useful if you have something connected at the other end. As explained ab
let msg = serial.readString()
```
* reads an image
```
img = serial.readImage()
```
* reads the state of the screen from serial
```
serial.readScreen()
```

21
docs/reference/led.md Normal file
View File

@ -0,0 +1,21 @@
# Led
```cards
led.plot(0, 0);
led.unplot(0, 0);
led.point(0, 0);
led.brightness();
led.setBrightness(255);
led.stopAnimation();
led.plotBarGraph(0, 1023);
led.fadeIn();
led.fadeOut();
led.plotAll();
led.screenshot();
led.toggle(0, 0);
led.toggleAll();
led.setDisplayMode(DisplayMode.BackAndWhite);
```

39
docs/reference/logic.md Normal file
View File

@ -0,0 +1,39 @@
# Logic
[if](/microbit/reference/logic/if)
```blocks
if(true) {
}
```
[Boolean](/microbit/reference/types/boolean) values: *true*; *false*
```blocks
true
false
```
Boolean binary operators: *and* (conjunction); *or* (disjunction)
```blocks
true && false;
true || false;
```
Boolean negation operator
```blocks
!true
```
Comparison operators (=, !=, <, >, <=, >=)
```blocks
0 == 0;
1 !- 0;
0 < 1;
1 > 0;
0 <= 1;
1 >= 0;
```

26
docs/reference/loops.md Normal file
View File

@ -0,0 +1,26 @@
# Loops
Repeat code.
[for](/reference/loops/for)
```blocks
for(let i = 0;i<5;i++) {}
```
[repeat](/reference/loops/repeat)
![](/static/mb/blocks/contents-0.png)
[while](/reference/loops/while)
```blocks
while(true) {}
```
[forever](/reference/basic/forever)
```blocks
basic.forever(() => {})
```

37
docs/reference/math.md Normal file
View File

@ -0,0 +1,37 @@
# Math
[Numeric](/reference/types/number) values: 0, 1, 2, ...
```blocks
0;
1;
2;
```
Arithmetic binary operation (+, -, *, /)
```blocks
0+1;
0-1;
1*2;
3/4;
```
Absolute value
```blocks
Math.abs(-5);
```
Minimum/maximum of two values
```blocks
Math.min(0, 1);
Math.max(0, 1);
```
Random value
```blocks
Math.random(5);
```

15
docs/reference/music.md Normal file
View File

@ -0,0 +1,15 @@
# Music
```cards
music.playTone(0, 0);
music.ringTone(0);
music.rest(0);
music.noteFrequency(Note.C);
music.beat();
music.tempo();
music.changeTempoBy(20);
music.setTempo(120);
```

17
docs/reference/pins.md Normal file
View File

@ -0,0 +1,17 @@
# Pins
```cards
pins.digitalReadPin(DigitalPin.P0);
pins.digitalWritePin(DigitalPin.P0, 0);
pins.analogReadPin(AnalogPin.P0);
pins.analogWritePin(AnalogPin.P0, 1023);
pins.analogSetPeriod(AnalogPin.P0, 20000);
pins.servoWritePin(AnalogPin.P0, 180);
pins.servoSetPulse(AnalogPin.P0, 1500);
pins.map(0, 0, 1023, 0, 4);
pins.analogPitch(0, 0);
pins.analogSetPitchPin(AnalogPin.P0);
```

17
docs/reference/radio.md Normal file
View File

@ -0,0 +1,17 @@
# Radio
```cards
radio.sendNumber(0);
radio.sendNumbers(0, 0, 0, 0);
radio.onDataReceived(() => {
});
radio.receiveNumber();
radio.receivedNumberAt(0);
radio.receivedSignalStrength();
radio.setGroup(0);
radio.setTransmitPower(0);
```

View File

@ -0,0 +1,21 @@
## Variables
[Assign](/reference/variables/assign) (set) a variable's value
```blocks
let x = 0;
```
Get a variable's value
```blocks
let x = 0;
x;
```
[Change](/reference/variables/change-var) a variable's value
```blocks
let x = 0;
x+=1;
```

2
docs/static/microbitlogo.svg vendored Normal file
View File

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

After

Width:  |  Height:  |  Size: 3.8 KiB

File diff suppressed because one or more lines are too long

30
libs/i2c-fram/README.md Normal file
View File

@ -0,0 +1,30 @@
# I2C FRAM driver
This library provides a driver for this FRAM part: https://www.adafruit.com/products/1895
The memory is accessed one byte at a time. The library provides a utility functions
to write an entire buffer.
## Reading/writing byte
```
let addr = 100
i2c_fram.writeByte(addr, 42)
let val = i2c_fram.readByte(addr)
console.log(`${addr}: ${val}`)
```
## Reading/writing a buffer
This code will log current time and acceleration in X axis every second.
```
let bufSz = 8
for (let addr = 0; addr < 0x8000; addr += bufSz) {
let buf = pins.createBuffer(bufSz)
buf.setNumber(NumberFormat.Int32LE, 0, input.runningTime())
buf.setNumber(NumberFormat.Int32LE, 4, input.acceleration(Dimension.X))
i2c_fram.writeBuffer(addr, buf)
basic.pause(1000)
}
```

55
libs/i2c-fram/fram.ts Normal file
View File

@ -0,0 +1,55 @@
namespace i2c_fram {
const devaddr = 0x50;
const memend = 0x7fff;
//% shim=ksrt::panic
function panic(code: number) { }
function die() { panic(142) }
export function readByte(addr: number) {
if (addr < 0 || addr > memend)
die();
let buf = pins.createBuffer(2)
buf[0] = (addr >> 8) & 0xff;
buf[1] = addr & 0xff;
pins.i2cWriteBuffer(devaddr, buf);
buf = pins.i2cReadBuffer(devaddr, 1);
return buf[0];
}
export function writeByte(addr: number, val: number) {
if (addr < 0 || addr > memend)
die();
if (val < 0 || val > 0xff)
die();
let buf = pins.createBuffer(3)
buf[0] = (addr >> 8) & 0xff;
buf[1] = addr & 0xff;
buf[2] = val;
pins.i2cWriteBuffer(devaddr, buf)
}
export function readBuffer(addr: number, length: number) {
if (addr < 0 || length < 0 || (addr + length) > memend)
die();
let buf = pins.createBuffer(length)
for (let i = 0; i < length; ++i)
buf[i] = readByte(addr + i)
return buf
}
export function writeBuffer(addr:number, buf: Buffer) {
if (addr < 0 || (addr + buf.length) > memend)
die();
for (let i = 0; i < buf.length; ++i)
writeByte(addr + i, buf[i])
}
}

16
libs/i2c-fram/ftest.ts Normal file
View File

@ -0,0 +1,16 @@
i2c_fram.writeByte(100, 42)
i2c_fram.writeByte(101, 108)
function toBuf(arr: number[]) {
let buf = pins.createBuffer(arr.length)
for (let i = 0; i < arr.length; ++i)
buf[i] = arr[i]
return buf
}
i2c_fram.writeBuffer(98, toBuf([1, 2, 3, 4, 5, 6, 7]))
console.log("100:" + i2c_fram.readByte(100))
console.log("101:" + i2c_fram.readByte(101))

16
libs/i2c-fram/kind.json Normal file
View File

@ -0,0 +1,16 @@
{
"name": "i2c-fram",
"description": "AdaFruit I2C FRAM driver for micro:bit",
"files": [
"README.md",
"fram.ts"
],
"testFiles": [
"ftest.ts"
],
"public": true,
"dependencies": {
"microbit": "file:../microbit"
},
"installedVersion": "hhneqa"
}

View File

@ -1,3 +1,6 @@
/**
* Communicate data using radio packets
*/
//% color=270 weight=34
namespace radio {
/**

View File

@ -1,3 +1,6 @@
/**
* Runtime and event utilities.
*/
//% weight=1 color="#333333"
namespace control {

View File

@ -153,6 +153,9 @@ declare interface Number {
toString(): string;
}
/**
* Numbers and arithmetic operators
*/
declare namespace Math {
/**

View File

@ -18,6 +18,9 @@ enum LedSpriteProperty {
Blink
}
/**
* A single-LED sprite game engine
*/
//% color=176 weight=32
namespace game {
var _score: number = 0;

View File

@ -1,5 +1,8 @@
#include "ksbit.h"
/**
* Creation, manipulation and display of LED images.
*/
//% color=45 weight=31
namespace images {
/**

View File

@ -1,3 +1,6 @@
/**
* Events and data from sensors
*/
//% color=300 weight=99
namespace input {
/**

View File

@ -1,3 +1,6 @@
/**
* Control of the LED screen.
*/
//% color=3 weight=35
namespace led {

View File

@ -74,6 +74,9 @@ enum BeatFraction {
Sixteenth = 16
}
/**
* Generation of music tones through pin ``P0``.
*/
//% color=52 weight=33
namespace music {
var beatsPerMinute: number = 120;

View File

@ -1,3 +1,6 @@
/**
* Control currents in Pins for analog/digital signals, servos, i2c, ...
*/
//% color=351 weight=30
namespace pins {
/**

View File

@ -19,20 +19,4 @@ namespace serial {
void writeString(StringData *text) {
uBit.serial.sendString(ManagedString(text));
}
/**
* Sends the current pixel values, byte-per-pixel, over serial.
*/
//%
void writeScreen() {
uBit.serial.sendDisplayState();
}
/**
* Reads the screen from serial.
*/
//%
void readScreen() {
uBit.serial.readDisplayState();
}
}

View File

@ -1,3 +1,6 @@
/**
* Reading and writing data over a serial connection.
*/
//% weight=2 color=30
namespace serial {
/**

View File

@ -1,7 +1,9 @@
// Auto-generated. Do not edit.
/**
* Creation, manipulation and display of LED images.
*/
//% color=45 weight=31
declare namespace images {
@ -487,18 +489,6 @@ declare namespace serial {
*/
//% shim=serial::writeString
function writeString(text: string): void;
/**
* Sends the current pixel values, byte-per-pixel, over serial.
*/
//% shim=serial::writeScreen
function writeScreen(): void;
/**
* Reads the screen from serial.
*/
//% shim=serial::readScreen
function readScreen(): void;
}

47
libs/neopixel/README.md Normal file
View File

@ -0,0 +1,47 @@
# NeoPixel driver
This library provides a driver for various Neo Pixel LED strips,
see https://www.adafruit.com/category/168
NeoPixels consist of a number of RGB LEDs, every one of them controlled
separately.
## Basic usage
```
// Create a NeoPixel driver - specify the number of LEDs:
let strip = neopixel.create(24)
// set pixel colors
strip.setPix(0, 255, 255, 255) // white
strip.setPix(1, 255, 0, 0) // red
strip.setPix(2, 0, 255, 0) // green
strip.setPix(3, 0, 0, 255) // blue
// send the data to the strip
strip.display()
```
Use `strip.setPin()` if your strip is not at `P0`.
Use `strip.setBrigthness()` to lower the brightness (it's maxed out by default).
Use `strip.shift()` or `strip.rotate()` to shift the lights around.
## Example: Using accelerometer to control colors
This little program will let the position of the microbit control the color of the first LED.
This first LED will then get shifted further away every 100ms.
```
let strip = neopixel.create(24)
while (true) {
let x = input.acceleration(Dimension.X) / 2
let y = input.acceleration(Dimension.Y) / 2
let z = input.acceleration(Dimension.Z) / 2
strip.setPix(0, x, y, -z);
strip.shift(1);
strip.display();
basic.pause(100);
}
```

View File

@ -1,7 +1,8 @@
{
"name": "neppixel",
"name": "neopixel",
"description": "AdaFruit NeoPixel driver for micro:bit",
"files": [
"README.md",
"neopixel.ts",
"sendbuffer.asm"
],
@ -16,5 +17,6 @@
"public": true,
"dependencies": {
"microbit": "file:../microbit"
}
},
"installedVersion": "zbhlje"
}

View File

@ -39,7 +39,7 @@ namespace neopixel {
/**
* Shift LEDs forward.
*/
shift(off: number): void {
shift(off: number = 1): void {
this.buf.shift(-off * 3)
}

View File

@ -1,92 +1,47 @@
basic.showLeds(`
# . . . .
. . . . .
. . # . .
. . . . .
. . . . #
`)
console.log("Start")
let strip = neopixel.create(24);
let br = 100;
strip.setBrigthness(100);
input.onButtonPressed(Button.B, () => {
br = br + 20;
if (br > 255) {
br = 5;
}
strip.setBrigthness(br);
});
// Create a NeoPixel driver - specify the number of LEDs:
let strip = neopixel.create(7);
let rotationMode = false;
input.onButtonPressed(Button.A, () => {
rotationMode = !rotationMode;
if (rotationMode) {
basic.showLeds(`
. # # # .
# . . . #
# . . . #
# . . . #
. # # # .
`);
} else {
basic.showLeds(`
. . # . .
. . . # .
# # # # #
. . . # .
. . # . .
`);
// If your strip is not at P0, specify the pin.
strip.setPin(DigitalPin.P0)
}
});
// Brightness defaults to 255 (very bright); 0 is completely off.
strip.setBrigthness(20)
// Set pixels - pixel number, followed by red, green and blue values, between 0 and 255.
strip.setPix(0, 255, 255, 255);
strip.setPix(1, 0, 255, 255);
strip.setPix(2, 255, 0, 255);
strip.setPix(3, 255, 255, 0);
console.log("Send!")
// Send the image to the strip.
strip.display();
basic.pause(500);
console.log("Sent!")
// Green light travelling the strip:
for (let l = 0; l < strip.length(); l++) {
strip.clear();
strip.setPix(l, 0, 255, 0);
while (true) {
let x = input.acceleration(Dimension.X) / 2
let y = input.acceleration(Dimension.Y) / 2
let z = input.acceleration(Dimension.Z) / 2
if (rotationMode) {
strip.rotate();
} else {
strip.setPix(0, x, y, -z);
strip.shift(1);
}
strip.display();
basic.pause(100);
}
let special = false;
let numcol = 0;
input.onButtonPressed(Button.A, () => {
special = true;
let r = 0;
let g = 0;
let b = 0;
if (numcol == 0) {
r = 255;
g = 255;
b = 255;
} else if (numcol == 1) {
r = 255;
} else if (numcol == 2) {
b = 255;
} else if (numcol == 3) {
r = 255;
g = 255;
} else if (numcol == 4) {
r = 10;
g = 10;
b = 10;
}
numcol = (numcol + 1) % 5;
for (let k = 0; k < 7; k++) {
strip.setPix(k, r, g, b);
}
strip.display();
});
control.inBackground(() => {
for (let j = 0; j < 2000000; j++) {
if (special) {
basic.pause(100);
continue;
}
let r1 = (0 + j * 2) & 63;
let g1 = (20 + j * 1) & 63;
let b1 = (30 + j * 3) & 63;
for (let i = 0; i < strip.length(); i++) {
strip.setPix(i, (r1 - i) * 20, (g1 - i) * 20, (b1 - i) * 20);
}
strip.display()
basic.pause(60);
}
});
control.inBackground(() => {
while (true) {
basic.showString("XMAS!", 150);
}
});

View File

@ -1,6 +1,6 @@
{
"name": "kindscript-microbit",
"version": "0.2.19",
"version": "0.2.41",
"description": "BBC micro:bit target for KindScript",
"keywords": [
"JavaScript",
@ -29,6 +29,6 @@
"typescript": "^1.8.7"
},
"dependencies": {
"kindscript": "0.2.22"
"kindscript": "0.2.42"
}
}

View File

@ -1,4 +1,5 @@
namespace ks.rt.micro_bit {
const Svg = ks.rt.Svg;
export interface IBoardTheme {
accent?: string;
@ -46,119 +47,6 @@ namespace ks.rt.micro_bit {
disableTilt?:boolean;
}
class Svg {
static pt : SVGPoint;
static cursorPoint(pt: SVGPoint, svg: SVGSVGElement, evt : MouseEvent) : SVGPoint {
pt.x = evt.clientX;
pt.y = evt.clientY;
return pt.matrixTransform(svg.getScreenCTM().inverse());
}
static rotateElement(el : SVGElement, originX : number ,originY : number,degrees:number){
el.setAttribute(
'transform',
`translate(${originX},${originY}) rotate(${degrees+90}) translate(${-originX},${-originY})`
);
}
static elt(name:string) : SVGElement {
return document.createElementNS("http://www.w3.org/2000/svg", name)
}
static hydrate(el : SVGElement, props: any) {
for(let k in props) {
if (k == "title") {
Svg.title(el, props[k])
} else el.setAttributeNS(null, k, props[k])
}
}
static child(parent : Element, name: string, props: any) : SVGElement {
var el = <SVGElement>Svg.elt(name);
Svg.hydrate(el, props);
parent.appendChild(el);
return el;
}
static path(parent: Element, cls: string, data:string, title?: string) : SVGElement {
let p : any = {class:cls, d:data};
if (title) p["title"] = title;
return Svg.child(parent, "path", p);
}
static fill(el: SVGElement, c : string) {
(<SVGStylable><any>el).style.fill = c;
}
static fills(els: SVGElement[], c : string) {
els.forEach(el => (<SVGStylable><any>el).style.fill = c);
}
static buttonEvents(el : Element,
move: (ev: MouseEvent) => void,
start?: (ev:MouseEvent) => void,
stop?: (ev:MouseEvent) => void) {
let captured = false;
el.addEventListener('mousedown', (ev: MouseEvent) => {
captured = true;
if (start) start(ev)
return true;
});
el.addEventListener('mousemove', (ev:MouseEvent) => {
if (captured) {
move(ev);
ev.preventDefault();
return false;
}
return true;
});
el.addEventListener('mouseup', (ev:MouseEvent) => {
captured = false;
if (stop) stop(ev);
});
el.addEventListener('mouseleave', (ev:MouseEvent) => {
captured = false;
if (stop) stop(ev);
});
}
static linearGradient(defs: SVGDefsElement, id : string) : SVGLinearGradientElement {
let gradient = <SVGLinearGradientElement>Svg.child(defs, "linearGradient", { id: id, x1:"0%", y1:"0%", x2:"0%", y2:"100%" });
let stop1 = Svg.child(gradient, "stop", {offset:"0%"})
let stop2 = Svg.child(gradient, "stop", {offset:"100%"})
let stop3 = Svg.child(gradient, "stop", {offset:"100%"})
let stop4 = Svg.child(gradient, "stop", {offset:"100%"})
return gradient;
}
static setGradientColors(lg : SVGLinearGradientElement, start:string, end:string) {
if (!lg) return;
(<SVGStopElement>lg.childNodes[0]).style.stopColor = start;
(<SVGStopElement>lg.childNodes[1]).style.stopColor = start;
(<SVGStopElement>lg.childNodes[2]).style.stopColor = end;
(<SVGStopElement>lg.childNodes[3]).style.stopColor = end;
}
static setGradientValue(lg : SVGLinearGradientElement, percent: string) {
(<SVGStopElement>lg.childNodes[1]).setAttribute("offset", percent);
(<SVGStopElement>lg.childNodes[2]).setAttribute("offset", percent);
}
static animate(el: SVGElement, cls: string) {
el.classList.add(cls);
let p = el.parentElement;
p.removeChild(el);
p.appendChild(el)
}
static title(el : SVGElement, txt:string) {
let t = Svg.child(el, "title", {});
t.textContent = txt;
}
}
export class MicrobitBoardSvg
{
public element : SVGSVGElement;

View File

@ -596,8 +596,8 @@ namespace ks.rt {
writeSerial(s: string) {
for (let i = 0; i < s.length; ++i) {
let c = s[i];
switch (c) {
case '\n':
this.serialOutBuffer += c;
if (c == '\n') {
Runtime.postMessage(<SimulatorSerialMessage>{
type: 'serial',
data: this.serialOutBuffer,
@ -605,8 +605,6 @@ namespace ks.rt {
})
this.serialOutBuffer = ''
break;
case '\r': continue;
default: this.serialOutBuffer += c;
}
}
}