Compare commits

...

25 Commits

Author SHA1 Message Date
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
9c09a427c9 0.2.19 2016-04-04 22:17:12 -07:00
4b35f0f751 Bump kindscript to 0.2.22 2016-04-04 22:17:10 -07:00
bb03cc4357 static microbit image (svg) 2016-04-04 22:15:52 -07:00
6f8b17e4ba 0.2.18 2016-04-04 21:52:10 -07:00
60c5dfc539 Bump kindscript to 0.2.21 2016-04-04 21:52:09 -07:00
bca5839b49 Forever moved to common sim 2016-04-04 21:52:03 -07:00
47e3737245 Use common helpers/core 2016-04-04 21:18:16 -07:00
b8d5ec853e Prep for moving common stuff out to main ks 2016-04-04 20:28:08 -07:00
46d42e5300 0.2.17 2016-04-04 19:13:35 -07:00
ffabb9b16d Bump kindscript to 0.2.19 2016-04-04 19:13:34 -07:00
d62c10d278 Use the improved default parameters 2016-04-04 19:11:33 -07:00
e2b2aa7ff1 0.2.16 2016-04-04 19:04:04 -07:00
664c8dcd35 Bump kindscript to 0.2.18 2016-04-04 19:04:03 -07:00
bd7430b642 Add Buffer.get/setNumber and i2c methods 2016-04-04 19:02:40 -07:00
61fd28d840 Move all target stuff to kindtarget.json 2016-04-04 18:03:52 -07:00
c33df897d5 Remove unused code 2016-04-04 12:56:57 -07:00
54 changed files with 766 additions and 953 deletions

View File

@ -1,3 +1,8 @@
```sim
basic.forever(() => {
basic.showString("Hi!");
})
```
# About # 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. 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

@ -22,12 +22,9 @@ Learn how to creating a message with a **string**, `show string` to write your m
## Documentation ## Documentation
```docs ```cards
basic.showString('Hi!') 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 ## Documentation
```docs ```cards
basic.showLeds(` basic.showLeds(`
. . . . . . . . . .
. . . . . . . . . .
@ -28,10 +28,7 @@ basic.showLeds(`
. . . . . . . . . .
. . . . . . . . . .
`) `)
basic.pause(100) basic.pause(100)
``` ```
## Objectives ## Objectives

View File

@ -23,18 +23,11 @@ Learn how to control a blinking LED. We will be learning how to create a blinkin
## Documentation ## Documentation
```docs ```cards
led.plot(0, 0) led.plot(0, 0)
led.unplot(0, 0) led.unplot(0, 0)
basic.pause(100) 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 ## Documentation
```docs ```cards
basic.showNumber(0) basic.showNumber(0)
input.acceleration(Dimension.X) input.acceleration(Dimension.X)
led.plotBarGraph(0, 1023) led.plotBarGraph(0, 1023)
radio.onDataReceived(() => {})
radio.onDataReceived(() => {
})
radio.sendNumber(0) radio.sendNumber(0)
radio.receiveNumber() radio.receiveNumber()
``` ```
## Objectives ## 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 ## Documentation
```docs ```cards
input.compassHeading() input.compassHeading()
basic.forever(() => {}) basic.forever(() => {})
let x = 0 let x = 0
if (true) {} if (true) {}
basic.showString("Hello!") basic.showString("Hello!")
basic.showLeds(` basic.showLeds(`
. . . . . . . . . .
. . . . . . . . . .

View File

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

View File

@ -21,13 +21,11 @@ Learn how to creating a **while loop**, `while condition do` to repeat code whil
## Documentation ## Documentation
```docs ```cards
let x = 0 let x = 0
basic.showNumber(0) basic.showNumber(0)
while (true) { while (true) {}
basic.pause(20)
basic.pause(20)
}
``` ```
## Objectives ## 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 ## Documentation
```docs ```cards
basic.forever(() => { basic.forever(() => {})
})
basic.showLeds(` basic.showLeds(`
. . . . . . . . . .
. . . . . . . . . .
@ -34,11 +29,8 @@ basic.showLeds(`
. . . . . . . . . .
. . . . . . . . . .
`) `)
basic.pause(100) basic.pause(100)
basic.clearScreen() basic.clearScreen()
``` ```
## Objectives ## 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 ## Documentation
```docs ```cards
game.addScore(1) game.addScore(1)
input.onButtonPressed(Button.A, () => {})
input.onButtonPressed(Button.A, () => {
})
basic.showNumber(0) basic.showNumber(0)
``` ```
## Objectives ## Objectives

View File

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

View File

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

View File

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

View File

@ -26,10 +26,8 @@ Learn how to control a blinking LED. We will be learning how to create a blinkin
## Documentation ## Documentation
```docs ```cards
for (let i = 0; i < 5; i++) { for (let i = 0; i < 5; i++) {}
}
basic.showNumber(0) basic.showNumber(0)
basic.pause(100) 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 ## Documentation
```docs ```cards
if (true) { if (true) {}
input.onPinPressed(TouchPin.P0, () => {})
}
input.onPinPressed(TouchPin.P0, () => {
})
let x = 0 let x = 0
Math.random(3) Math.random(3)
basic.showNumber(0) basic.showNumber(0)
basic.pause(100) basic.pause(100)
``` ```

View File

@ -19,14 +19,10 @@ Learn how to creating **conditionals**, `if condition do` to conditionally run c
## Documentation ## Documentation
```docs ```cards
if (true) { if (true) {}
}
Math.random(3) Math.random(3)
input.onGesture(Gesture.Shake, () => { input.onGesture(Gesture.Shake, () => {})
})
basic.showNumber(7) basic.showNumber(7)
basic.clearScreen() basic.clearScreen()
basic.showString("Hello!") 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. 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 ## Documentation
```docs ```cards
input.onLogoUp(() => { input.onLogoUp(() => {})
input.onLogoDown(() => {})
})
input.onLogoDown(() => {
})
basic.showLeds(` basic.showLeds(`
. . . . . . . . . .
. . . . . . . . . .
@ -34,8 +30,6 @@ basic.showLeds(`
. . . . . . . . . .
. . . . . . . . . .
`) `)
``` ```
## Objectives ## Objectives

View File

@ -21,11 +21,9 @@ Learn how to **set brightness** of an image `set brightness` to set the brightne
## Documentation ## Documentation
```docs ```cards
led.setBrightness(255) led.setBrightness(255)
input.onButtonPressed(Button.A, () => { input.onButtonPressed(Button.A, () => {})
})
basic.showLeds(` basic.showLeds(`
. . . . . . . . . .
. . . . . . . . . .
@ -33,7 +31,6 @@ basic.showLeds(`
. . . . . . . . . .
. . . . . . . . . .
`) `)
``` ```
## Objectives ## 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. 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 ## Documentation
```docs ```cards
let jumps = 0 let jumps = 0
let acc = input.acceleration(Dimension.Y) let acc = input.acceleration(Dimension.Y)
basic.showNumber(jumps) basic.showNumber(0)
basic.showNumber(radio.receiveNumber()) radio.receiveNumber()
led.stopAnimation() led.stopAnimation()
jumps = jumps + 1; radio.sendNumber(0)
radio.sendNumber(jumps)
basic.forever(() => { }) basic.forever(() => { })
basic.showLeds(` basic.showLeds(`
. . . . . . . . . .
@ -32,11 +31,8 @@ basic.showLeds(`
. # # # . . # # # .
`) `)
basic.clearScreen() basic.clearScreen()
if (acc > 2000) { if (true) {}
}
radio.onDataReceived(() => { }) radio.onDataReceived(() => { })
``` ```
## Objectives ## Objectives

View File

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

View File

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

View File

@ -23,7 +23,7 @@ Learn how to **clear screen**, `clear screen` to turn off all the LED lights on
## Documentation ## Documentation
```docs ```cards
basic.clearScreen() basic.clearScreen()
basic.showLeds(` basic.showLeds(`
. . . . . . . . . .
@ -32,10 +32,7 @@ basic.showLeds(`
. . . . . . . . . .
. . . . . . . . . .
`) `)
input.onButtonPressed(Button.A, () => { input.onButtonPressed(Button.A, () => {})
})
``` ```
## Objectives ## 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) * **show LEDs** : [read more...](/microbit/reference/basic/show-leds)
* **on button pressed** : [read more...](/microbit/reference/input/on-button-pressed) * **on button pressed** : [read more...](/microbit/reference/input/on-button-pressed)
```docs ```cards
input.onButtonPressed(Button.A, () => { input.onButtonPressed(Button.A, () => {})
})
basic.showLeds(` basic.showLeds(`
. . . . . . . . . .
. . . . . . . . . .
@ -35,7 +33,6 @@ basic.showLeds(`
. . . . . . . . . .
. . . . . . . . . .
`) `)
``` ```
## Objectives ## 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) * **pause** : [read more...](/microbit/reference/basic/pause)
* **forever** : [read more...](/microbit/reference/basic/forever) * **forever** : [read more...](/microbit/reference/basic/forever)
```docs ```cards
basic.showLeds(` basic.showLeds(`
. . . . . . . . . .
. . . . . . . . . .
@ -34,8 +34,5 @@ basic.showLeds(`
. . . . . . . . . .
`) `)
basic.pause(100) 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 ## Documentation
```docs ```cards
if (true) { if (true) {}
}
let x = 0 let x = 0
input.onGesture(Gesture.Shake, () => { input.onGesture(Gesture.Shake, () => {})
})
Math.random(3) Math.random(3)
basic.showLeds(` basic.showLeds(`
. . . . . . . . . .

View File

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

View File

@ -17,15 +17,12 @@ Learn how to get the ambient temperature (degree Celsius °C). The temperature i
## Documentation ## Documentation
```docs ```cards
input.temperature() input.temperature()
let x = 0 let x = 0
basic.showNumber(7) basic.showNumber(7)
basic.showString("Hello!") basic.showString("Hello!")
input.onGesture(Gesture.Shake, () => { input.onGesture(Gesture.Shake, () => {})
})
``` ```
## Objectives ## 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 ## Documentation
```docs ```cards
basic.showLeds(` basic.showLeds(`
. . . . . . . . . .
. . . . . . . . . .
@ -29,16 +29,11 @@ basic.showLeds(`
. . . . . . . . . .
. . . . . . . . . .
`) `)
input.onButtonPressed(Button.A, () => { input.onButtonPressed(Button.A, () => {})
})
let x = 0 let x = 0
Math.random(3) Math.random(3)
if (true) { if (true) {}
}
basic.showString("Hello!") basic.showString("Hello!")
``` ```
## Objectives ## Objectives

View File

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

View File

@ -1,113 +1,25 @@
# Reference # Reference
## micro:bit
```namespaces
basic.showString("Hello!");
input.onButtonPressed(Button.A, () => {});
led.plot(0,0);
radio.sendNumber(0);
music.playTone(music.noteFrequency(Note.C), music.beat(BeatFraction.Whole));
game.createSprite();
pins.digitalReadPin(DigitalPin.P0);
serial.WriteLine("Hello!")
control.inBackground(() => {});
```
## Language
### @section full ### @section full
### ~column ### ~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 ### Loops
[for](/microbit/reference/loops/for) [for](/microbit/reference/loops/for)
@ -132,8 +44,6 @@ while(true) {}
basic.forever(() => {}) basic.forever(() => {})
``` ```
### ~ ### ~
### ~column ### ~column
@ -199,6 +109,10 @@ x;
let x = 0; let x = 0;
x+=1; x+=1;
``` ```
### ~
### ~column
### Math ### Math
@ -237,224 +151,8 @@ Random value
```block ```block
Math.random(5); Math.random(5);
``` ```
### 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 ### Comments
[comment](/microbit/reference/comment) [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, () => {
});
input.onGesture(.Gesture, () => {
});
input.onPinPressed(.TouchPin, () => {
});
input.buttonIsPressed(.Button);
input.compassHeading();
input.temperature();
input.acceleration(.Dimension);
input.lightLevel();
input.rotation(.Rotation);
input.magneticForce(.Dimension);
input.runningTime();
input.setAccelerometerRange(.AcceleratorRange);
input.pinIsPressed(.TouchPin);
input.calibrate();
input.onLogoDown(() => {
});
input.onLogoUp(() => {
});
input.onScreenDown(() => {
});
input.onScreenUp(() => {
});
input.onShake(() => {
});
```

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

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);
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);
pins.digitalWritePin(.DigitalPin, 0);
pins.analogReadPin(.AnalogPin);
pins.analogWritePin(.AnalogPin, 1023);
pins.analogSetPeriod(.AnalogPin, 20000);
pins.servoWritePin(.AnalogPin, 180);
pins.servoSetPulse(.AnalogPin, 1500);
pins.map(0, 0, 1023, 0, 4);
pins.analogPitch(0, 0);
pins.analogSetPitchPin(.AnalogPin);
```

94
docs/static/microbitheart.svg vendored Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 26 KiB

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,5 +1,19 @@
#include "ksbit.h" #include "ksbit.h"
enum class NumberFormat {
Int8LE = 1,
UInt8LE,
Int16LE,
UInt16LE,
Int32LE,
Int8BE,
UInt8BE,
Int16BE,
UInt16BE,
Int32BE,
// UInt32,
};
//% indexerGet=BufferMethods::getByte indexerSet=BufferMethods::setByte //% indexerGet=BufferMethods::getByte indexerSet=BufferMethods::setByte
namespace BufferMethods { namespace BufferMethods {
//% //%
@ -17,6 +31,70 @@ namespace BufferMethods {
return buf->payload; return buf->payload;
} }
/**
* Write a number in specified format in the buffer.
*/
//%
void setNumber(Buffer buf, NumberFormat format, int offset, int value)
{
int8_t i8;
uint8_t u8;
int16_t i16;
uint16_t u16;
int32_t i32;
ManagedBuffer b(buf);
// Assume little endian
#define WRITEBYTES(isz, swap) isz = value; b.writeBytes(offset, (uint8_t*)&isz, sizeof(isz), swap); break
switch (format) {
case NumberFormat::Int8LE: WRITEBYTES(i8, false);
case NumberFormat::UInt8LE: WRITEBYTES(u8, false);
case NumberFormat::Int16LE: WRITEBYTES(i16, false);
case NumberFormat::UInt16LE: WRITEBYTES(u16, false);
case NumberFormat::Int32LE: WRITEBYTES(i32, false);
case NumberFormat::Int8BE: WRITEBYTES(i8, true);
case NumberFormat::UInt8BE: WRITEBYTES(u8, true);
case NumberFormat::Int16BE: WRITEBYTES(i16, true);
case NumberFormat::UInt16BE: WRITEBYTES(u16, true);
case NumberFormat::Int32BE: WRITEBYTES(i32, true);
}
}
/**
* Read a number in specified format from the buffer.
*/
//%
int getNumber(Buffer buf, NumberFormat format, int offset)
{
int8_t i8;
uint8_t u8;
int16_t i16;
uint16_t u16;
int32_t i32;
ManagedBuffer b(buf);
// Assume little endian
#define READBYTES(isz, swap) b.readBytes((uint8_t*)&isz, offset, sizeof(isz), swap); return isz
switch (format) {
case NumberFormat::Int8LE: READBYTES(i8, false);
case NumberFormat::UInt8LE: READBYTES(u8, false);
case NumberFormat::Int16LE: READBYTES(i16, false);
case NumberFormat::UInt16LE: READBYTES(u16, false);
case NumberFormat::Int32LE: READBYTES(i32, false);
case NumberFormat::Int8BE: READBYTES(i8, true);
case NumberFormat::UInt8BE: READBYTES(u8, true);
case NumberFormat::Int16BE: READBYTES(i16, true);
case NumberFormat::UInt16BE: READBYTES(u16, true);
case NumberFormat::Int32BE: READBYTES(i32, true);
}
return 0;
}
/** Returns the length of a Buffer object. */ /** Returns the length of a Buffer object. */
//% property //% property
int length(Buffer s) { int length(Buffer s) {

View File

@ -1,81 +1,31 @@
#include "ksbit.h" #include "ksbit.h"
#include <limits.h> #include <limits.h>
namespace StringMethods { namespace String_ {
/**
* Returns the character at the specified index.
* @param pos The zero-based index of the desired character.
*/
//% //%
StringData *charAt(StringData *s, int pos) { StringData *charAt(StringData *s, int pos) {
return ManagedString((char)ManagedString(s).charAt(pos)).leakData(); return ManagedString((char)ManagedString(s).charAt(pos)).leakData();
} }
/**
* Returns the Unicode value of the character at the specified location.
* @param index The zero-based index of the desired character. If there is no character at the specified index, NaN is returned.
*/
//% //%
int charCodeAt(StringData *s, int index) { int charCodeAt(StringData *s, int index) {
return ManagedString(s).charAt(index); return ManagedString(s).charAt(index);
} }
/**
* Returns a string that contains the concatenation of two or more strings.
* @param other The string to append to the end of the string.
*/
//% //%
StringData *concat(StringData *s, StringData *other) { StringData *concat(StringData *s, StringData *other) {
ManagedString a(s), b(other); ManagedString a(s), b(other);
return (a + b).leakData(); return (a + b).leakData();
} }
/**
* Determines whether relative order of two strings (in ASCII encoding).
* @param that String to compare to target string
*/
//% //%
int compare(StringData *s, StringData *that) { int compare(StringData *s, StringData *that) {
return strcmp(s->data, that->data); return strcmp(s->data, that->data);
} }
/** Returns the length of a String object. */
//% property
int length(StringData *s) {
return s->len;
}
}
namespace BooleanMethods {
// Cache the string literals "true" and "false" when used.
// Note that the representation of booleans stays the usual C-one.
static const char sTrue[] __attribute__ ((aligned (4))) = "\xff\xff\x04\x00" "true\0";
static const char sFalse[] __attribute__ ((aligned (4))) = "\xff\xff\x05\x00" "false\0";
/**
* Returns a string representation of an object.
*/
//% //%
StringData* toString(bool v) int length(StringData *s) { return s->len; }
{
if (v) {
return (StringData*)(void*)sTrue;
} else {
return (StringData*)(void*)sFalse;
}
}
//%
bool bang(bool v) { return !v; }
}
namespace String_ {
/**
* Make a string from the given ASCII character code.
*/
//% //%
StringData *fromCharCode(int code) StringData *fromCharCode(int code)
{ {
@ -94,18 +44,35 @@ namespace String_ {
} }
} }
namespace NumberMethods {
/** namespace Boolean_ {
* Returns a string representation of a number. // Cache the string literals "true" and "false" when used.
*/ // Note that the representation of booleans stays the usual C-one.
static const char sTrue[] __attribute__ ((aligned (4))) = "\xff\xff\x04\x00" "true\0";
static const char sFalse[] __attribute__ ((aligned (4))) = "\xff\xff\x05\x00" "false\0";
//%
StringData* toString(bool v)
{
if (v) {
return (StringData*)(void*)sTrue;
} else {
return (StringData*)(void*)sFalse;
}
}
//%
bool bang(bool v) { return !v; }
}
namespace Number_ {
//% //%
StringData* toString(int n) StringData* toString(int n)
{ {
return ManagedString(n).leakData(); return ManagedString(n).leakData();
} }
}
namespace NumberImpl {
// +, - and friends are handled directly by assembly instructions // +, - and friends are handled directly by assembly instructions
// The comparisons are here as they are more code-size efficient // The comparisons are here as they are more code-size efficient
@ -130,11 +97,6 @@ namespace NumberImpl {
} }
namespace Math_ { namespace Math_ {
/**
* Returns the value of a base expression taken to a specified power.
* @param x The base value of the expression.
* @param y The exponent value of the expression.
*/
//% //%
int pow(int x, int y) int pow(int x, int y)
{ {
@ -150,9 +112,6 @@ namespace Math_ {
return r; return r;
} }
/**
* Returns a pseudorandom number between 0 and `max`.
*/
//% //%
int random(int max) { int random(int max) {
if (max == INT_MIN) if (max == INT_MIN)
@ -165,10 +124,6 @@ namespace Math_ {
return uBit.random(max); return uBit.random(max);
} }
/**
* Returns the square root of a number.
* @param x A numeric expression.
*/
//% //%
int sqrt(int x) int sqrt(int x)
{ {
@ -176,7 +131,7 @@ namespace Math_ {
} }
} }
namespace ArrayImpl { namespace Array_ {
//% //%
RefCollection *mk(uint32_t flags) RefCollection *mk(uint32_t flags)
{ {
@ -334,65 +289,3 @@ namespace ksrt {
uBit.panic(code); uBit.panic(code);
} }
} }
namespace buffer {
RefBuffer *mk(uint32_t size)
{
RefBuffer *r = new RefBuffer();
r->data.resize(size);
return r;
}
char *cptr(RefBuffer *c)
{
return (char*)&c->data[0];
}
int count(RefBuffer *c) { return c->data.size(); }
void fill(RefBuffer *c, int v)
{
memset(cptr(c), v, count(c));
}
void fill_random(RefBuffer *c)
{
int len = count(c);
for (int i = 0; i < len; ++i)
c->data[i] = uBit.random(0x100);
}
void add(RefBuffer *c, uint32_t x) {
c->data.push_back(x);
}
inline bool in_range(RefBuffer *c, int x) {
return (0 <= x && x < (int)c->data.size());
}
uint32_t at(RefBuffer *c, int x) {
if (in_range(c, x)) {
return c->data[x];
}
else {
error(ERR_OUT_OF_BOUNDS);
return 0;
}
}
void set(RefBuffer *c, int x, uint32_t y) {
if (!in_range(c, x))
return;
c->data[x] = y;
}
}
namespace bitvm_bits {
RefBuffer *create_buffer(int size)
{
return buffer::mk(size);
}
}

View File

@ -4,14 +4,14 @@ interface Array<T> {
/** /**
* Gets or sets the length of the array. This is a number one higher than the highest element defined in an array. * Gets or sets the length of the array. This is a number one higher than the highest element defined in an array.
*/ */
//% shim=ArrayImpl::length //% shim=Array_::length
length: number; length: number;
/** /**
* Appends new elements to an array. * Appends new elements to an array.
* @param items New elements of the Array. * @param items New elements of the Array.
*/ */
//% shim=ArrayImpl::push //% shim=Array_::push
push(item: T): void; push(item: T): void;
/** /**
@ -41,11 +41,11 @@ interface Array<T> {
slice(start: number, end: number): T[]; slice(start: number, end: number): T[];
/** Removes the first occurence of an object. Returns true if removed. */ /** Removes the first occurence of an object. Returns true if removed. */
//% shim=ArrayImpl::removeElement //% shim=Array_::removeElement
removeElement(element:T) : boolean; removeElement(element:T) : boolean;
/** Removes the object at position index. */ /** Removes the object at position index. */
//% shim=ArrayImpl::removeAt //% shim=Array_::removeAt
removeAt(idx:number) : void; removeAt(idx:number) : void;
@ -69,31 +69,110 @@ interface Array<T> {
* @param searchElement The value to locate in the array. * @param searchElement The value to locate in the array.
* @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the search starts at index 0. * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the search starts at index 0.
*/ */
//% shim=ArrayImpl::indexOf //% shim=Array_::indexOf
indexOf(searchElement: T, fromIndex?: number): number; indexOf(searchElement: T, fromIndex?: number): number;
[n: number]: T; [n: number]: T;
} }
declare interface String {
/**
* Returns the character at the specified index.
* @param pos The zero-based index of the desired character.
*/
//% shim=String_::charAt
charAt(pos: number): string;
/**
* Returns the Unicode value of the character at the specified location.
* @param index The zero-based index of the desired character. If there is no character at the specified index, NaN is returned.
*/
//% shim=String_::charCodeAt
charCodeAt(index: number): number;
/**
* Returns a string that contains the concatenation of two or more strings.
* @param other The string to append to the end of the string.
*/
//% shim=String_::concat
concat(other: string): string;
/**
* Determines whether relative order of two strings (in ASCII encoding).
* @param that String to compare to target string
*/
//% shim=String_::compare
compare(that: string): number;
/** Returns the length of a String object. */
//% property shim=String_::length
length: number;
interface String {
[index: number]: string; [index: number]: string;
} }
interface Buffer {
[index: number]: number;
}
/** /**
* Converts A string to an integer. * Converts A string to an integer.
* @param s A string to convert into a number. * @param s A string to convert into a number.
*/ */
//% shim=String_::toNumber //% shim=String_::toNumber
declare function parseInt(s: string): number; declare function parseInt(s: string): number;
interface Object {} interface Object {}
interface Function {} interface Function {}
interface IArguments {} interface IArguments {}
interface RegExp {} interface RegExp {}
declare interface Boolean {
/**
* Returns a string representation of an object.
*/
//% shim=Boolean_::toString
toString(): string;
}
declare namespace String {
/**
* Make a string from the given ASCII character code.
*/
//% shim=String_::fromCharCode
function fromCharCode(code: number): string;
}
declare interface Number {
/**
* Returns a string representation of a number.
*/
//% shim=Number_::toString
toString(): string;
}
declare namespace Math {
/**
* Returns the value of a base expression taken to a specified power.
* @param x The base value of the expression.
* @param y The exponent value of the expression.
*/
//% shim=Math_::pow
function pow(x: number, y: number): number;
/**
* Returns a pseudorandom number between 0 and `max`.
*/
//% shim=Math_::random
function random(max: number): number;
/**
* Returns the square root of a number.
* @param x A numeric expression.
*/
//% shim=Math_::sqrt
function sqrt(x: number): number;
}

View File

@ -271,4 +271,19 @@ declare namespace pins {
declare namespace serial { declare namespace serial {
} }
declare enum NumberFormat {
Int8LE = 1,
UInt8LE = 2,
Int16LE = 3,
UInt16LE = 4,
Int32LE = 5,
Int8BE = 6,
UInt8BE = 7,
Int16BE = 8,
UInt16BE = 9,
Int32BE = 10,
// UInt32,
}
// Auto-generated. Do not edit. Really. // Auto-generated. Do not edit. Really.

6
libs/microbit/helpers.ts Normal file
View File

@ -0,0 +1,6 @@
namespace console {
export function log(msg: string) {
serial.writeString(msg);
serial.writeString("\r\n");
}
}

View File

@ -7,10 +7,11 @@
"dal.d.ts", "dal.d.ts",
"enums.d.ts", "enums.d.ts",
"shims.d.ts", "shims.d.ts",
"core.d.ts", "ks-core.d.ts",
"ksbit.h", "ksbit.h",
"core.cpp", "core.cpp",
"mbit.ts", "ks-helpers.ts",
"helpers.ts",
"images.cpp", "images.cpp",
"basic.cpp", "basic.cpp",
"input.cpp", "input.cpp",
@ -22,6 +23,7 @@
"led.ts", "led.ts",
"music.ts", "music.ts",
"pins.cpp", "pins.cpp",
"pins.ts",
"serial.cpp", "serial.cpp",
"serial.ts", "serial.ts",
"buffer.cpp" "buffer.cpp"
@ -32,69 +34,5 @@
"config": { "config": {
"MESSAGE_BUS_LISTENER_DEFAULT_FLAGS": "MESSAGE_BUS_LISTENER_QUEUE_IF_BUSY" "MESSAGE_BUS_LISTENER_DEFAULT_FLAGS": "MESSAGE_BUS_LISTENER_QUEUE_IF_BUSY"
} }
},
"target": {
"id": "microbit",
"name": "BBC micro:bit",
"title": "JavaScript for BBC micro:bit",
"cloud": {
"workspace": false,
"packages": true
},
"blocksprj": {
"id": "blocksprj",
"config": {
"name": "{0} block",
"dependencies": {
"microbit": "*",
"microbit-radio": "*"
},
"description": "",
"files": [
"main.blocks",
"main.blocks.ts",
"README.md"
]
},
"files": {
"main.blocks": "<xml xmlns=\"http://www.w3.org/1999/xhtml\"><block type=\"device_print_message\"><value name=\"text\"><shadow type=\"text\"><field name=\"TEXT\">Hello!</field></shadow></value></block></xml>",
"main.blocks.ts": "\n",
"README.md": "Describe your project here!"
}
},
"tsprj": {
"id": "tsprj",
"config": {
"name": "{0} bit",
"dependencies": {
"microbit": "*",
"microbit-radio": "*"
},
"description": "",
"files": [
"main.ts",
"README.md"
]
},
"files": {
"main.ts": "basic.showString('Hello!')\n",
"README.md": "Describe your project here!"
}
},
"compile": {
"isNative": false,
"hasHex": true
},
"simulator": {
"autoRun": true
},
"compileService": {
"gittag": "v0.1.5",
"serviceId": "ws"
},
"serial": {
"manufacturerFilter": "^mbed$",
"log": true
}
} }
} }

View File

@ -1,64 +0,0 @@
type Action = () => void;
namespace helpers {
export function arraySplice<T>(arr: T[], start: number, len: number) {
if (start < 0) {
return;
}
for (let i = 0; i < len; ++i) {
arr.removeAt(start)
}
}
}
namespace console {
export function log(msg: string) {
serial.writeString(msg);
serial.writeString("\r\n");
}
}
namespace Math {
export function clamp(min: number, max:number, value:number): number {
return Math.min(max, Math.max(min, value));
}
/**
* Returns the absolute value of a number (the value without regard to whether it is positive or negative).
* For example, the absolute value of -5 is the same as the absolute value of 5.
* @param x A numeric expression for which the absolute value is needed.
*/
export function abs(x: number): number
{
return x < 0 ? -x : x;
}
/**
* Returns the sign of the x, indicating whether x is positive, negative or zero.
* @param x The numeric expression to test
*/
export function sign(x: number): number
{
if (x == 0) return 0;
if (x > 0) return 1;
return -1;
}
/**
* Returns the larger of two supplied numeric expressions.
*/
export function max(a:number, b:number): number
{
if (a >= b) return a;
return b;
}
/**
* Returns the smaller of two supplied numeric expressions.
*/
export function min(a:number, b:number): number
{
if (a <= b) return a;
return b;
}
}

View File

@ -196,24 +196,23 @@ namespace pins {
return ManagedBuffer(size).leakData(); return ManagedBuffer(size).leakData();
} }
// TODO: /**
void i2cReadBuffer(int address, RefBuffer *buf) * Read `size` bytes from a 7-bit I2C `address`.
*/
//%
Buffer i2cReadBuffer(int address, int size, bool repeat = false)
{ {
uBit.i2c.read(address << 1, buf->cptr(), buf->size()); Buffer buf = createBuffer(size);
uBit.i2c.read(address << 1, (char*)buf->payload, size, repeat);
return buf;
} }
void i2cWriteBuffer(int address, RefBuffer *buf) /**
* Write bytes to a 7-bit I2C `address`.
*/
//%
void i2cWriteBuffer(int address, Buffer buf, bool repeat = false)
{ {
uBit.i2c.write(address << 1, buf->cptr(), buf->size()); uBit.i2c.write(address << 1, (char*)buf->payload, buf->length, repeat);
}
int i2cReadRaw(int address, char *data, int length, int repeated)
{
return uBit.i2c.read(address, data, length, repeated);
}
int i2cWriteRaw(int address, const char *data, int length, int repeated)
{
return uBit.i2c.write(address, data, length, repeated);
} }
} }

View File

@ -13,4 +13,49 @@ namespace pins {
export function map(value: number, fromLow: number, fromHigh: number, toLow: number, toHigh: number): number { export function map(value: number, fromLow: number, fromHigh: number, toLow: number, toHigh: number): number {
return ((value - fromLow) * (toHigh - toLow)) / (fromHigh - fromLow) + toLow; return ((value - fromLow) * (toHigh - toLow)) / (fromHigh - fromLow) + toLow;
} }
/**
* Read one number from 7-bit I2C address.
*/
export function i2cReadNumber(address: number, format: NumberFormat): number {
let buf = pins.i2cReadBuffer(address, pins.sizeOf(format))
return buf.getNumber(format, 0)
}
/**
* Write one number to a 7-bit I2C address.
*/
export function i2cWriteNumber(address: number, value: number, format: NumberFormat): void {
let buf = createBuffer(pins.sizeOf(format))
buf.setNumber(format, 0, value)
pins.i2cWriteBuffer(address, buf)
}
/**
* Get the size in bytes of specified number format.
*/
export function sizeOf(format: NumberFormat) {
switch (format) {
case NumberFormat.Int8LE:
case NumberFormat.UInt8LE:
case NumberFormat.Int8BE:
case NumberFormat.UInt8BE:
return 1;
case NumberFormat.Int16LE:
case NumberFormat.UInt16LE:
case NumberFormat.Int16BE:
case NumberFormat.UInt16BE:
return 2;
case NumberFormat.Int32LE:
case NumberFormat.Int32BE:
return 4;
}
return 0;
}
}
interface Buffer {
[index: number]: number;
// rest defined in buffer.cpp
} }

View File

@ -1,90 +1,6 @@
// Auto-generated. Do not edit. // Auto-generated. Do not edit.
declare interface String {
/**
* Returns the character at the specified index.
* @param pos The zero-based index of the desired character.
*/
//% shim=StringMethods::charAt
charAt(pos: number): string;
/**
* Returns the Unicode value of the character at the specified location.
* @param index The zero-based index of the desired character. If there is no character at the specified index, NaN is returned.
*/
//% shim=StringMethods::charCodeAt
charCodeAt(index: number): number;
/**
* Returns a string that contains the concatenation of two or more strings.
* @param other The string to append to the end of the string.
*/
//% shim=StringMethods::concat
concat(other: string): string;
/**
* Determines whether relative order of two strings (in ASCII encoding).
* @param that String to compare to target string
*/
//% shim=StringMethods::compare
compare(that: string): number;
/** Returns the length of a String object. */
//% property shim=StringMethods::length
length: number;
}
declare interface Boolean {
/**
* Returns a string representation of an object.
*/
//% shim=BooleanMethods::toString
toString(): string;
}
declare namespace String {
/**
* Make a string from the given ASCII character code.
*/
//% shim=String_::fromCharCode
function fromCharCode(code: number): string;
}
declare interface Number {
/**
* Returns a string representation of a number.
*/
//% shim=NumberMethods::toString
toString(): string;
}
declare namespace Math {
/**
* Returns the value of a base expression taken to a specified power.
* @param x The base value of the expression.
* @param y The exponent value of the expression.
*/
//% shim=Math_::pow
function pow(x: number, y: number): number;
/**
* Returns a pseudorandom number between 0 and `max`.
*/
//% shim=Math_::random
function random(max: number): number;
/**
* Returns the square root of a number.
* @param x A numeric expression.
*/
//% shim=Math_::sqrt
function sqrt(x: number): number;
}
//% color=45 weight=31 //% color=45 weight=31
declare namespace images { declare namespace images {
@ -375,7 +291,7 @@ declare namespace control {
*/ */
//% 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 //% 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
//% mode.defl=1 shim=control::raiseEvent //% mode.defl=1 shim=control::raiseEvent
function raiseEvent(src: number, value: number, mode: EventCreationMode): void; function raiseEvent(src: number, value: number, mode?: EventCreationMode): void;
/** /**
* Raises an event in the event bus. * Raises an event in the event bus.
@ -541,6 +457,18 @@ declare namespace pins {
*/ */
//% shim=pins::createBuffer //% shim=pins::createBuffer
function createBuffer(size: number): Buffer; function createBuffer(size: number): Buffer;
/**
* Read `size` bytes from a 7-bit I2C `address`.
*/
//% repeat.defl=0 shim=pins::i2cReadBuffer
function i2cReadBuffer(address: number, size: number, repeat?: boolean): Buffer;
/**
* Write bytes to a 7-bit I2C `address`.
*/
//% repeat.defl=0 shim=pins::i2cWriteBuffer
function i2cWriteBuffer(address: number, buf: Buffer, repeat?: boolean): void;
} }
@ -577,6 +505,18 @@ declare namespace serial {
//% indexerGet=BufferMethods::getByte indexerSet=BufferMethods::setByte //% indexerGet=BufferMethods::getByte indexerSet=BufferMethods::setByte
declare interface Buffer { declare interface Buffer {
/**
* Write a number in specified format in the buffer.
*/
//% shim=BufferMethods::setNumber
setNumber(format: NumberFormat, offset: number, value: number): void;
/**
* Read a number in specified format from the buffer.
*/
//% shim=BufferMethods::getNumber
getNumber(format: NumberFormat, offset: number): number;
/** Returns the length of a Buffer object. */ /** Returns the length of a Buffer object. */
//% property shim=BufferMethods::length //% property shim=BufferMethods::length
length: number; length: number;

View File

@ -1,6 +1,6 @@
{ {
"name": "kindscript-microbit", "name": "kindscript-microbit",
"version": "0.2.15", "version": "0.2.23",
"description": "BBC micro:bit target for KindScript", "description": "BBC micro:bit target for KindScript",
"keywords": [ "keywords": [
"JavaScript", "JavaScript",
@ -17,7 +17,6 @@
"files": [ "files": [
"README.md", "README.md",
"kindtarget.json", "kindtarget.json",
"kindtheme.json",
"built/*.js", "built/*.js",
"built/*.json", "built/*.json",
"built/*.d.ts", "built/*.d.ts",
@ -30,6 +29,6 @@
"typescript": "^1.8.7" "typescript": "^1.8.7"
}, },
"dependencies": { "dependencies": {
"kindscript": "0.2.17" "kindscript": "0.2.24"
} }
} }

View File

@ -145,6 +145,7 @@ namespace ks.rt {
namespace ks.rt.basic { namespace ks.rt.basic {
export var pause = thread.pause; export var pause = thread.pause;
export var forever = thread.forever;
export function showNumber(x: number, interval: number) { export function showNumber(x: number, interval: number) {
if (interval < 0) return; if (interval < 0) return;
@ -198,17 +199,6 @@ namespace ks.rt.basic {
scrollImage(leds, interval, 5); scrollImage(leds, interval, 5);
} }
export function forever(a: RefAction) {
function loop() {
runtime.runFiberAsync(a)
.then(() => Promise.delay(20))
.then(loop)
.done()
}
incr(a)
loop()
}
export function plotLeds(leds: Image): void { export function plotLeds(leds: Image): void {
leds.copyTo(0, 5, board().image, 0) leds.copyTo(0, 5, board().image, 0)
runtime.queueDisplayUpdate() runtime.queueDisplayUpdate()