Compare commits
61 Commits
Author | SHA1 | Date | |
---|---|---|---|
0f273131f6 | |||
9ae0c48477 | |||
5f538f418e | |||
859b68b6e3 | |||
6576f7bd66 | |||
5a670f3291 | |||
7129487618 | |||
e1797b457a | |||
c82efa452d | |||
493014af01 | |||
fb4a96d81b | |||
bbf115f33c | |||
5d9c2cf590 | |||
b99231f6e2 | |||
2676907129 | |||
6f4c533ebb | |||
85dcaea979 | |||
8560b31657 | |||
b896588f45 | |||
0b4d4facfe | |||
52ad897ee3 | |||
72582f2a60 | |||
2b2048da7d | |||
e85fa990bd | |||
81a61538c3 | |||
cc8751bd09 | |||
03f933a1c8 | |||
10a77d9fef | |||
773f8a8688 | |||
f67743d935 | |||
237a57ee86 | |||
b80edb43fc | |||
6c9b609fe0 | |||
26d78768c0 | |||
6812767555 | |||
2aa7c91ca7 | |||
baf2c3247f | |||
c9536b0cf2 | |||
7fd7e15bd4 | |||
948b0ef304 | |||
715771b991 | |||
65d48f4b02 | |||
283c331a5e | |||
ba96e94fa7 | |||
7e1248b8dc | |||
cbe280187a | |||
761e4f38cd | |||
a9137f7761 | |||
3274e237cf | |||
5261b2b270 | |||
1adede163a | |||
bb80874ef9 | |||
9e9d11cb94 | |||
c004aa4b1b | |||
cdd4798945 | |||
0f56142317 | |||
6927085d64 | |||
c1b654f092 | |||
2f551c97b5 | |||
01e6aab376 | |||
df17ba09ae |
@ -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.
|
||||
|
@ -1,5 +1,6 @@
|
||||
# Lessons
|
||||
|
||||
|
||||
### @short Lessons
|
||||
|
||||
### ~column
|
||||
|
@ -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, () => {})
|
||||
|
||||
```
|
||||
|
||||
|
@ -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
|
||||
|
@ -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(() => {})
|
||||
```
|
||||
|
||||
|
||||
|
@ -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
|
||||
|
@ -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(`
|
||||
. . . . .
|
||||
. . . . .
|
||||
|
@ -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)
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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)
|
||||
|
||||
|
@ -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)
|
||||
|
||||
|
||||
|
||||
```
|
||||
|
@ -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!")
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
||||
|
@ -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(`
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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(() => {})
|
||||
```
|
||||
|
@ -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(`
|
||||
. . . . .
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -21,7 +21,7 @@ Learn how to get the **acceleration**, `acceleration` in one of three specified
|
||||
|
||||
## Documentation
|
||||
|
||||
```docs
|
||||
```cards
|
||||
basic.forever(() => {
|
||||
})
|
||||
let x = 0
|
||||
|
@ -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)
|
||||
|
||||

|
||||
|
||||
[on logo up](/microbit/reference/on-logo-up)
|
||||
|
||||

|
||||
|
||||
[on logo down](/microbit/reference/on-logo-down)
|
||||
|
||||

|
||||
|
||||
[on screen up](/microbit/reference/on-screen-up)
|
||||
|
||||

|
||||
|
||||
[on screen down](/microbit/reference/on-screen-down)
|
||||
|
||||

|
||||
|
||||
[button is pressed](/microbit/reference/button-is-pressed)
|
||||
|
||||

|
||||
|
||||
[compass heading](/microbit/reference/compass-heading)
|
||||
|
||||

|
||||
|
||||
[temperature](/microbit/reference/temperature)
|
||||
|
||||

|
||||
|
||||
[acceleration](/microbit/reference/input/acceleration)
|
||||
|
||||

|
||||
|
||||
[rotation](/microbit/reference/rotation)
|
||||
|
||||

|
||||
|
||||
[magnetic force](/microbit/reference/magnetic-force)
|
||||
|
||||

|
||||
|
||||
[running time](/microbit/reference/running-time)
|
||||
|
||||

|
||||
|
||||
### Loops
|
||||
|
||||
[for](/microbit/reference/loops/for)
|
||||
|
||||
```block
|
||||
for(let i = 0;i<5;i++) {}
|
||||
```
|
||||
|
||||
[repeat](/microbit/reference/loops/repeat)
|
||||
|
||||

|
||||
|
||||
[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)
|
||||
|
||||

|
||||
|
||||
[move](/microbit/reference/game/move)
|
||||
|
||||

|
||||
|
||||
[turn](/microbit/reference/game/turn)
|
||||
|
||||

|
||||
|
||||
[change](/microbit/reference/game/change)
|
||||
|
||||

|
||||
|
||||
[set](/microbit/reference/game/set)
|
||||
|
||||

|
||||
|
||||
[reports](/microbit/reference/reports)
|
||||
|
||||

|
||||
|
||||
[touching](/microbit/reference/touching)
|
||||
|
||||

|
||||
|
||||
[touching edge](/microbit/reference/touching-edge)
|
||||
|
||||

|
||||
|
||||
[if on edge, bounce](/microbit/reference/logic/if-on-edge-bounce)
|
||||
|
||||

|
||||
|
||||
[change score by](/microbit/reference/change-score-by)
|
||||
|
||||

|
||||
|
||||
[score](/microbit/reference/score)
|
||||
|
||||

|
||||
|
||||
[start countdown](/microbit/reference/start-countdown)
|
||||
|
||||

|
||||
|
||||
[game over](/microbit/reference/game-over)
|
||||
|
||||

|
||||
|
||||
### Music
|
||||
|
||||
[play tone](/microbit/reference/play-tone)
|
||||
|
||||

|
||||
|
||||
[ring tone](/microbit/reference/ring-tone)
|
||||
|
||||

|
||||
|
||||
[rest](/microbit/reference/rest)
|
||||
|
||||

|
||||
|
||||
[tempo](/microbit/reference/tempo)
|
||||
|
||||

|
||||
|
||||
[set tempo](/microbit/reference/set-tempo)
|
||||
|
||||

|
||||
|
||||
[change tempo](/microbit/reference/music/set-tempo)
|
||||
|
||||

|
||||
|
||||
### Comments
|
||||
|
||||
[comment](/microbit/reference/comment)
|
||||
|
||||
### Images
|
||||
|
||||
[show image](/microbit/reference/show-image)
|
||||
|
||||

|
||||
|
||||
[scroll image](/microbit/reference/scroll-image)
|
||||
|
||||

|
||||
|
||||
[create image](/microbit/reference/create-image)
|
||||
|
||||

|
||||
|
||||
|
||||
### ~
|
||||
|
||||
### ~column
|
||||
|
||||
### Pins
|
||||
|
||||
[digital read pin](/microbit/reference/pins/digital-read-pin)
|
||||
|
||||

|
||||
|
||||
[digital write pin](/microbit/reference/pins/digital-write-pin)
|
||||
|
||||

|
||||
|
||||
[analog read pin](/microbit/reference/pins/analog-read-pin)
|
||||
|
||||

|
||||
|
||||
[analog write pin](/microbit/reference/pins/analog-write-pin)
|
||||
|
||||

|
||||
|
||||
[analog set period](/microbit/reference/pins/analog-set-period)
|
||||
|
||||

|
||||
|
||||
[servo write pin](/microbit/reference/pins/servo-write-pin)
|
||||
|
||||

|
||||
|
||||
[servo set pulse](/microbit/reference/pins/servo-set-pulse)
|
||||
|
||||

|
||||
|
||||
[map](/microbit/reference/map)
|
||||
|
||||

|
||||
|
||||
|
||||
## Devices
|
||||
|
||||
Functions in this category require to be connected to a remote device.
|
||||
|
||||
[tell camera to](/microbit/reference/devices/tell-camera-to)
|
||||
|
||||

|
||||
|
||||
[tell remote control to](/microbit/reference/devices/tell-remote-control-to)
|
||||
|
||||

|
||||
|
||||
[raise alert to](/microbit/reference/devices/raise-alert-to)
|
||||
|
||||

|
||||
|
||||
[on notified](/microbit/reference/on-notified)
|
||||
|
||||

|
||||
|
||||
[on gamepad button](/microbit/reference/on-gamepad-button)
|
||||
|
||||

|
||||
|
||||
[on notified](/microbit/reference/on-notified)
|
||||
|
||||

|
||||
|
||||
[signal strength](/microbit/reference/signal-strength)
|
||||
|
||||

|
||||
|
||||
[on signal strength changed](/microbit/reference/on-signal-strength-changed)
|
||||
|
||||

|
||||
|
||||
### ~
|
||||
|
||||
|
35
docs/reference/basic.md
Normal file
35
docs/reference/basic.md
Normal 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
11
docs/reference/control.md
Normal file
@ -0,0 +1,11 @@
|
||||
# Control
|
||||
|
||||
|
||||
|
||||
|
||||
```cards
|
||||
control.inBackground(() => {
|
||||
|
||||
});
|
||||
control.reset();
|
||||
```
|
12
docs/reference/game.md
Normal file
12
docs/reference/game.md
Normal 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
21
docs/reference/images.md
Normal file
@ -0,0 +1,21 @@
|
||||
# Images
|
||||
|
||||
|
||||
|
||||
|
||||
```cards
|
||||
images.createImage(`
|
||||
. . . . .
|
||||
. . . . .
|
||||
. . # . .
|
||||
. . . . .
|
||||
. . . . .
|
||||
`);
|
||||
images.createBigImage(`
|
||||
. . . . .
|
||||
. . . . .
|
||||
. . # . .
|
||||
. . . . .
|
||||
. . . . .
|
||||
`);
|
||||
```
|
42
docs/reference/input.md
Normal file
42
docs/reference/input.md
Normal 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(() => {
|
||||
|
||||
});
|
||||
```
|
@ -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
21
docs/reference/led.md
Normal 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
39
docs/reference/logic.md
Normal 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
26
docs/reference/loops.md
Normal file
@ -0,0 +1,26 @@
|
||||
# Loops
|
||||
|
||||
Repeat code.
|
||||
|
||||
|
||||
[for](/reference/loops/for)
|
||||
|
||||
```blocks
|
||||
for(let i = 0;i<5;i++) {}
|
||||
```
|
||||
|
||||
[repeat](/reference/loops/repeat)
|
||||
|
||||

|
||||
|
||||
[while](/reference/loops/while)
|
||||
|
||||
```blocks
|
||||
while(true) {}
|
||||
```
|
||||
|
||||
[forever](/reference/basic/forever)
|
||||
|
||||
```blocks
|
||||
basic.forever(() => {})
|
||||
```
|
37
docs/reference/math.md
Normal file
37
docs/reference/math.md
Normal 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
15
docs/reference/music.md
Normal 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
17
docs/reference/pins.md
Normal 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
17
docs/reference/radio.md
Normal 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);
|
||||
```
|
21
docs/reference/variables.md
Normal file
21
docs/reference/variables.md
Normal 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
2
docs/static/microbitlogo.svg
vendored
Normal 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
30
libs/i2c-fram/README.md
Normal 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
55
libs/i2c-fram/fram.ts
Normal 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
16
libs/i2c-fram/ftest.ts
Normal 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
16
libs/i2c-fram/kind.json
Normal 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"
|
||||
}
|
@ -1,3 +1,6 @@
|
||||
/**
|
||||
* Communicate data using radio packets
|
||||
*/
|
||||
//% color=270 weight=34
|
||||
namespace radio {
|
||||
/**
|
||||
|
@ -1,3 +1,6 @@
|
||||
/**
|
||||
* Runtime and event utilities.
|
||||
*/
|
||||
//% weight=1 color="#333333"
|
||||
namespace control {
|
||||
|
||||
|
3
libs/microbit/core.d.ts
vendored
3
libs/microbit/core.d.ts
vendored
@ -153,6 +153,9 @@ declare interface Number {
|
||||
toString(): string;
|
||||
}
|
||||
|
||||
/**
|
||||
* Numbers and arithmetic operators
|
||||
*/
|
||||
declare namespace Math {
|
||||
|
||||
/**
|
||||
|
@ -18,6 +18,9 @@ enum LedSpriteProperty {
|
||||
Blink
|
||||
}
|
||||
|
||||
/**
|
||||
* A single-LED sprite game engine
|
||||
*/
|
||||
//% color=176 weight=32
|
||||
namespace game {
|
||||
var _score: number = 0;
|
||||
|
@ -1,5 +1,8 @@
|
||||
#include "ksbit.h"
|
||||
|
||||
/**
|
||||
* Creation, manipulation and display of LED images.
|
||||
*/
|
||||
//% color=45 weight=31
|
||||
namespace images {
|
||||
/**
|
||||
|
@ -1,3 +1,6 @@
|
||||
/**
|
||||
* Events and data from sensors
|
||||
*/
|
||||
//% color=300 weight=99
|
||||
namespace input {
|
||||
/**
|
||||
|
@ -1,3 +1,6 @@
|
||||
/**
|
||||
* Control of the LED screen.
|
||||
*/
|
||||
//% color=3 weight=35
|
||||
namespace led {
|
||||
|
||||
|
@ -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;
|
||||
|
@ -1,3 +1,6 @@
|
||||
/**
|
||||
* Control currents in Pins for analog/digital signals, servos, i2c, ...
|
||||
*/
|
||||
//% color=351 weight=30
|
||||
namespace pins {
|
||||
/**
|
||||
|
@ -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();
|
||||
}
|
||||
}
|
||||
|
@ -1,3 +1,6 @@
|
||||
/**
|
||||
* Reading and writing data over a serial connection.
|
||||
*/
|
||||
//% weight=2 color=30
|
||||
namespace serial {
|
||||
/**
|
||||
|
16
libs/microbit/shims.d.ts
vendored
16
libs/microbit/shims.d.ts
vendored
@ -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
47
libs/neopixel/README.md
Normal 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);
|
||||
}
|
||||
```
|
@ -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"
|
||||
}
|
||||
|
@ -39,7 +39,7 @@ namespace neopixel {
|
||||
/**
|
||||
* Shift LEDs forward.
|
||||
*/
|
||||
shift(off: number): void {
|
||||
shift(off: number = 1): void {
|
||||
this.buf.shift(-off * 3)
|
||||
}
|
||||
|
||||
|
@ -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);
|
||||
}
|
||||
});
|
||||
|
@ -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"
|
||||
}
|
||||
}
|
||||
|
114
sim/simsvg.ts
114
sim/simsvg.ts
@ -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;
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user