Merge remote-tracking branch 'origin/master' into V3

This commit is contained in:
Juri 2020-09-17 09:19:11 +02:00
commit 81af3a4a39
51 changed files with 565 additions and 2242 deletions

13
calliope.code-workspace Normal file
View File

@ -0,0 +1,13 @@
{
"folders": [
{
"path": "..\\pxt"
},
{
"path": "..\\pxt-common-packages"
},
{
"path": "."
}
]
}

96
docs/about.md Normal file
View File

@ -0,0 +1,96 @@
![](/static/mb/device/calliope_website.jpg)
# About
## @description A Blocks / Javascript code editor for the Calliope mini, a pocket-size computer with 5x5 display, sensors and Bluetooth.
The [Calliope mini](https://calliope.cc) is a [pocket-size computer]([/device](https://calliope.cc/en/calliope-mini/tech-facts)) with a 5x5 display of 25 LEDs, Bluetooth and sensors that can be programmed by anyone.
The Calliope mini provides an easy and fun introduction to programming and making ??? switch on, program it to do something fun ??? wear it, customize it.
Just like Arduino, the Calliope mini can additionally be connected to and interact with sensors, displays, and other devices.
* [Read the docs](/docs)
## [Hardware: The Device](/device)
The Calliope mini is packaged with sensors, radio and other goodies. Learn about the [hardware components]([/device](https://calliope.cc/en/calliope-mini/tech-facts)) of the Calliope mini to make the most of it!
## ~ hint
**Looking to buy a Calliope mini?** See the [list of resellers](https://calliope.cc/en/shops).
## ~
## Programming: [Blocks](/blocks) or [JavaScript](/javascript)
You can program the Calliope mini using [Blocks](/blocks) or [JavaScript](/javascript) in your web browser via the [Calliope mini APIs](/reference):
```block
input.onButtonPressed(Button.A, () => {
basic.showString("Hi!");
})
```
```typescript
input.onButtonPressed(Button.A, () => {
basic.showString("Hi!");
})
```
The editor work in [most modern browsers](/browsers), work [offline](/offline) once loaded and do not require any installation.
## [Compile and Flash: Your Program!](/device/usb)
When you have your code ready, you connect your Calliope mini to a computer via a USB cable, so it appears as a mounted drive (named MINI). If you are using the Calliope mini REV2 you also see another drive (FLASH) that handels up to 25 additional programs.
Compilation to ARM thumb machine code from [Blocks](/blocks) or [JavaScript](/javascript) happens in the browser. You save the ARM binary
program to a file, which you then copy to the micro:bit drive, which flashes the micro:bit device with the new program.
## Simulator: Test Your Code
You can run your code using the micro:bit simulator, all within the confines of a web browser.
The simulator has support for the LED screen, buttons, as well as compass, accelerometer, and digital I/O pins.
```sim
basic.forever(() => {
basic.showString("Hi!");
})
input.onButtonPressed(Button.A, () => {
led.stopAnimation();
basic.showLeds(`
. . . . .
. # . # .
. . . . .
# . . . #
. # # # .`);
});
input.onButtonPressed(Button.B, () => {
led.stopAnimation();
basic.showLeds(`
. # . # .
# . # . #
# . . . #
. # . # .
. . # . .`);
});
```
## Learn!
We have tons of [projects](/projects), [examples](/examples) and [courses](/courses) to get your started!
## [Command Line Tools](/cli)
Looking to use @homeurl@ in your favorite editor? Install the [command line tools](/cli) and get rolling!
## [Extensions](/extensions)
Create, edit and distribute your own blocks and JavaScript using [extensions](/extensions). Extensions are hosted on GitHub and may be written using C++, JavaScript and/or ARM thumb.
## [Open Source](/open-source)
The code for the Calliope mini is [open source](/open-source) on GitHub. Contributors are welcome!
```package
radio
```

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 4.5 KiB

BIN
docs/static/download/unpair.gif vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

After

Width:  |  Height:  |  Size: 6.6 KiB

View File

@ -1,38 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 22.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1"
id="svg2" inkscape:export-filename="/Users/sammysam/Work/pxt-microbit/docs/static/packages/bluetooth/icon.png" inkscape:export-xdpi="100.04" inkscape:export-ydpi="100.04" inkscape:version="0.91 r13725" sodipodi:docname="icon.svg" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 286 176"
style="enable-background:new 0 0 286 176;" xml:space="preserve">
<style type="text/css">
.st0{fill:#0082FB;stroke:#CDCDCD;stroke-width:3.333091e-02;stroke-linecap:round;stroke-linejoin:round;}
.st1{fill:#FFFFFF;}
.st2{fill:#00FFFF;}
.st3{fill:#0A3D91;}
.st4{fill:none;stroke:#FFFFFF;stroke-width:5.3;}
</style>
<sodipodi:namedview bordercolor="#666666" borderopacity="1" gridtolerance="10" guidetolerance="10" id="namedview4" inkscape:current-layer="svg2" inkscape:cx="138.77058" inkscape:cy="82.582563" inkscape:pageopacity="0" inkscape:pageshadow="2" inkscape:window-height="744" inkscape:window-maximized="0" inkscape:window-width="1558" inkscape:window-x="0" inkscape:window-y="0" inkscape:zoom="1.9493364" objecttolerance="10" pagecolor="#ffffff" showgrid="false">
</sodipodi:namedview>
<rect id="rect4138" x="0" y="0" class="st0" width="286" height="176"/>
<image style="overflow:visible;enable-background:new ;" width="1440" height="496" id="image4156" xlink:href="99048C5B9AD515D2.png" transform="matrix(0.3665 0 0 0.3665 -73.8575 -2.0237)">
</image>
<path class="st1" d="M228.1,65.4l-59.5-10.1c-3.2-0.4-6.1,1.7-6.8,4.8l-9.8,45.8c-0.7,2.9,1,5.9,4,6.6c0.1,0,0.2,0.1,0.3,0.1
l59.5,10.1c3.2,0.4,6.1-1.7,6.8-4.8l9.9-45.8c0.7-2.9-1.1-5.9-4-6.6C228.3,65.5,228.2,65.4,228.1,65.4L228.1,65.4z M164.3,62
c0.5-2.4,2.7-3.9,5.1-3.6l12.6,2.1l8.5,1.4l4.2,0.7l-5.2,3.6l0.9-4.3l-10.3,7.3l1.9-8.8l-20.4,14.3L164.3,62z M168.6,88.7l-0.6,2.9
c-0.2,1.2-1.4,2-2.5,1.8l-2.8-0.5c-1.1-0.2-1.8-1.3-1.6-2.4c0,0,0-0.1,0-0.1l0.6-2.9c0.2-1.2,1.3-1.9,2.5-1.8l2.8,0.5
c1.1,0.2,1.8,1.3,1.6,2.4C168.6,88.6,168.6,88.6,168.6,88.7z M209.5,87.8c-2.1,3.9-6.5,5.9-10.8,5.2l-14.2-2.4
c-4.3-0.7-7.5-4.1-7.9-8.4c-0.6-5.9,3.7-11.1,9.6-11.7c0.8-0.1,1.7-0.1,2.5,0l14.5,2.5C209.5,74.1,213.1,81.3,209.5,87.8L209.5,87.8
z M221.2,97.6l-0.6,2.9c-0.2,1.2-1.4,2-2.6,1.8l-2.8-0.5c-1.1-0.2-1.8-1.3-1.6-2.4c0,0,0-0.1,0-0.1l0.6-2.9c0.2-1.2,1.3-2,2.5-1.8
l2.8,0.5c1.1,0.2,1.8,1.3,1.6,2.4C221.2,97.5,221.2,97.5,221.2,97.6L221.2,97.6z"/>
<path class="st1" d="M201.6,77.2L188.3,75c-3-0.5-6,1.3-6.9,4.2c-1,2.9,0.5,6,3.4,7c0.3,0.1,0.5,0.2,0.8,0.2l13.8,2.3
c3.3,0.4,6.4-1.9,6.8-5.2c0,0,0-0.1,0-0.1C206.6,80.4,204.5,77.7,201.6,77.2L201.6,77.2z M188.6,80.4c-0.2,1.1-1.2,1.8-2.3,1.7
c-1-0.2-1.7-1.2-1.5-2.2c0,0,0-0.1,0-0.1c0.2-1.1,1.3-1.8,2.4-1.7c1,0.2,1.7,1.2,1.5,2.2C188.6,80.3,188.6,80.3,188.6,80.4z
M202.7,82.8c-0.2,1.1-1.2,1.8-2.3,1.7c-1-0.2-1.7-1.2-1.5-2.2c0,0,0-0.1,0-0.1c0.2-1.1,1.3-1.8,2.4-1.7c1,0.2,1.7,1.2,1.5,2.2
C202.7,82.7,202.7,82.7,202.7,82.8L202.7,82.8z"/>
<path class="st2" d="M144.6,100c0,9.2,3.2,18.2,9.1,25.3l-3.1,2.6c-6.4-7.8-10-17.7-10-27.8H144.6z M231.6,51
c5.9,7.1,9.1,16.1,9.1,25.3h4c0-10.2-3.5-20-10-27.8L231.6,51z M240,47c5.9,7.1,9.1,16.1,9.1,25.3h4c0-10.2-3.5-20-10-27.8L240,47z
M134.9,103.7c0,9.2,3.2,18.2,9.1,25.3l-3.1,2.6c-6.4-7.8-10-17.7-10-27.8H134.9z"/>
<path class="st3" d="M59.2,37.5H65c16.1,0,29.1,13,29.1,29.1V106c0,16.1-13,29.1-29.1,29.1h-5.8c-16.1,0-29.1-13-29.1-29.1V66.6
C30.1,50.5,43.2,37.5,59.2,37.5z"/>
<path class="st4" d="M45.8,70.5l30.5,30.7L61.6,119V55.4l14.7,17l-30.5,29.9"/>
</svg>

Before

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 6.7 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 92 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 39 KiB

After

Width:  |  Height:  |  Size: 6.8 KiB

View File

@ -1,65 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 22.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1"
id="svg2" inkscape:export-filename="/Users/sammysam/Work/pxt-microbit/docs/static/packages/radio/icon.png" inkscape:export-xdpi="100.04" inkscape:export-ydpi="100.04" inkscape:version="0.91 r13725" sodipodi:docname="icon.svg" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 286 176"
style="enable-background:new 0 0 286 176;" xml:space="preserve">
<style type="text/css">
.st0{fill:#E3008B;stroke:#CDCDCD;stroke-width:3.333091e-02;stroke-linecap:round;stroke-linejoin:round;}
.st1{fill:#FFFFFF;}
.st2{fill:#00FFFF;}
</style>
<sodipodi:namedview bordercolor="#666666" borderopacity="1" gridtolerance="10" guidetolerance="10" id="namedview4" inkscape:current-layer="svg2" inkscape:cx="240.23897" inkscape:cy="53.563179" inkscape:pageopacity="0" inkscape:pageshadow="2" inkscape:window-height="744" inkscape:window-maximized="0" inkscape:window-width="1558" inkscape:window-x="11" inkscape:window-y="0" inkscape:zoom="1.378389" objecttolerance="10" pagecolor="#ffffff" showgrid="false">
</sodipodi:namedview>
<rect id="rect4138" x="0" y="0" class="st0" width="286" height="176"/>
<image style="overflow:visible;enable-background:new ;" width="1440" height="496" id="image4156" xlink:href="B3A78EF0E366567F.png" transform="matrix(0.3665 0 0 0.3665 -73.8575 -2.0237)">
</image>
<path class="st1" d="M250.8,26l-44-7.5c-2.3-0.3-4.5,1.2-5,3.5L194.5,56c-0.5,2.2,0.8,4.3,2.9,4.9c0.1,0,0.2,0,0.2,0.1l44,7.5
c2.3,0.3,4.5-1.2,5-3.5l7.3-33.9c0.5-2.2-0.8-4.3-2.9-4.9C251,26,250.9,26,250.8,26L250.8,26z M203.6,23.5c0.3-1.7,2-2.9,3.8-2.7
l9.3,1.6l6.3,1.1l3.1,0.5l-3.8,2.7l0.7-3.2l-7.7,5.4l1.4-6.5L201.5,33L203.6,23.5z M206.8,43.2l-0.4,2.1c-0.2,0.9-1,1.4-1.9,1.3
l-2-0.4c-0.8-0.1-1.4-0.9-1.2-1.7c0,0,0-0.1,0-0.1l0.4-2.1c0.2-0.9,1-1.4,1.9-1.3l2.1,0.3C206.4,41.5,206.9,42.3,206.8,43.2
C206.8,43.2,206.8,43.2,206.8,43.2z M237.1,42.6c-1.6,2.9-4.8,4.4-8,3.9l-10.5-1.8c-3.1-0.5-5.6-3.1-5.8-6.2
c-0.4-4.3,2.7-8.2,7.1-8.6c0.6-0.1,1.2-0.1,1.8,0l10.8,1.8C237,32.5,239.7,37.8,237.1,42.6L237.1,42.6z M245.7,49.8l-0.4,2.1
c-0.2,0.9-1,1.5-1.9,1.3l-2-0.4c-0.8-0.1-1.4-0.9-1.2-1.7c0,0,0-0.1,0-0.1l0.4-2.1c0.2-0.9,1-1.5,1.9-1.3l2,0.4
C245.3,48.1,245.9,48.9,245.7,49.8C245.7,49.8,245.7,49.8,245.7,49.8L245.7,49.8z"/>
<path class="st1" d="M231.2,34.7l-9.8-1.7c-2.2-0.4-4.4,1-5.1,3.1c-0.7,2.1,0.4,4.4,2.5,5.2c0.2,0.1,0.4,0.1,0.6,0.2l10.2,1.7
c2.5,0.3,4.7-1.4,5.1-3.9c0,0,0,0,0-0.1C234.9,37.1,233.4,35.1,231.2,34.7L231.2,34.7z M221.6,37.1c-0.2,0.8-0.9,1.3-1.7,1.2
c-0.8-0.1-1.3-0.9-1.1-1.6c0,0,0-0.1,0-0.1c0.2-0.8,0.9-1.4,1.7-1.2C221.2,35.5,221.7,36.3,221.6,37.1
C221.6,37,221.6,37.1,221.6,37.1z M232,38.9c-0.2,0.8-0.9,1.3-1.7,1.2c-0.8-0.1-1.3-0.9-1.1-1.6c0,0,0-0.1,0-0.1
c0.2-0.8,0.9-1.4,1.7-1.2C231.7,37.3,232.2,38,232,38.9C232.1,38.8,232.1,38.8,232,38.9L232,38.9z"/>
<path class="st2" d="M189,51.6c0,6.8,2.4,13.4,6.7,18.7l-2.3,1.9c-4.8-5.8-7.4-13.1-7.4-20.6H189z M253.4,15.3
c4.3,5.3,6.7,11.9,6.7,18.7h3c0-7.5-2.6-14.8-7.4-20.6L253.4,15.3z M259.7,12.4c4.3,5.3,6.7,11.9,6.7,18.7h3
c0-7.5-2.6-14.8-7.4-20.6L259.7,12.4z M181.8,54.4c0,6.8,2.4,13.4,6.7,18.7l-2.3,1.9c-4.8-5.8-7.4-13.1-7.4-20.6H181.8z"/>
<path class="st1" d="M90.3,29.8l-44-7.5c-2.3-0.3-4.5,1.2-5,3.5L34,59.8c-0.5,2.2,0.8,4.3,2.9,4.9c0.1,0,0.2,0,0.2,0.1l44,7.5
c2.3,0.3,4.5-1.2,5-3.5l7.3-33.9c0.5-2.2-0.8-4.3-2.9-4.9C90.5,29.9,90.4,29.9,90.3,29.8L90.3,29.8z M43.1,27.3
c0.3-1.7,2-2.9,3.8-2.7l9.3,1.6l6.3,1.1l3.1,0.5l-3.8,2.7l0.7-3.2l-7.7,5.4l1.4-6.5L41.1,36.8L43.1,27.3z M46.3,47.1l-0.4,2.1
c-0.2,0.9-1,1.4-1.9,1.3l-2-0.4c-0.8-0.1-1.4-0.9-1.2-1.7c0,0,0-0.1,0-0.1l0.4-2.1c0.2-0.9,1-1.4,1.9-1.3l2.1,0.3
C45.9,45.4,46.5,46.1,46.3,47.1C46.3,47,46.3,47,46.3,47.1z M76.6,46.4c-1.6,2.9-4.8,4.4-8,3.9l-10.5-1.8c-3.1-0.5-5.6-3.1-5.8-6.2
c-0.4-4.3,2.7-8.2,7.1-8.6c0.6-0.1,1.2-0.1,1.8,0l10.8,1.8C76.6,36.3,79.2,41.6,76.6,46.4L76.6,46.4z M85.2,53.7l-0.4,2.1
c-0.2,0.9-1,1.5-1.9,1.3l-2-0.4c-0.8-0.1-1.4-0.9-1.2-1.7c0,0,0-0.1,0-0.1l0.4-2.1c0.2-0.9,1-1.5,1.9-1.3l2,0.4
C84.8,52,85.4,52.7,85.2,53.7C85.2,53.6,85.2,53.6,85.2,53.7L85.2,53.7z"/>
<path class="st1" d="M70.7,38.6l-9.8-1.7c-2.2-0.4-4.4,1-5.1,3.1c-0.7,2.1,0.4,4.4,2.5,5.2c0.2,0.1,0.4,0.1,0.6,0.2l10.2,1.7
c2.5,0.3,4.7-1.4,5.1-3.9c0,0,0,0,0-0.1C74.4,40.9,72.9,38.9,70.7,38.6L70.7,38.6z M61.1,40.9c-0.2,0.8-0.9,1.3-1.7,1.2
c-0.8-0.1-1.3-0.9-1.1-1.6c0,0,0-0.1,0-0.1c0.2-0.8,0.9-1.4,1.7-1.2C60.8,39.4,61.3,40.1,61.1,40.9C61.1,40.9,61.1,40.9,61.1,40.9z
M71.6,42.7c-0.2,0.8-0.9,1.3-1.7,1.2c-0.8-0.1-1.3-0.9-1.1-1.6c0,0,0-0.1,0-0.1c0.2-0.8,0.9-1.4,1.7-1.2
C71.2,41.1,71.7,41.9,71.6,42.7C71.6,42.6,71.6,42.7,71.6,42.7L71.6,42.7z"/>
<path class="st2" d="M28.5,55.5c0,6.8,2.4,13.4,6.7,18.7L33,76.1c-4.8-5.8-7.4-13.1-7.4-20.6H28.5z M93,19.2
c4.3,5.3,6.7,11.9,6.7,18.7h3c0-7.5-2.6-14.8-7.4-20.6L93,19.2z M99.2,16.2c4.3,5.3,6.7,11.9,6.7,18.7h3c0-7.5-2.6-14.8-7.4-20.6
L99.2,16.2z M21.3,58.2c0,6.8,2.4,13.4,6.7,18.7l-2.3,1.9C21,73,18.4,65.7,18.4,58.2H21.3z"/>
<path class="st1" d="M157.4,107.7l-44-7.5c-2.3-0.3-4.5,1.2-5,3.5l-7.3,33.9c-0.5,2.2,0.8,4.3,2.9,4.9c0.1,0,0.2,0,0.2,0.1l44,7.5
c2.3,0.3,4.5-1.2,5-3.5l7.3-33.9c0.5-2.2-0.8-4.3-2.9-4.9C157.6,107.8,157.5,107.8,157.4,107.7L157.4,107.7z M110.2,105.2
c0.3-1.7,2-2.9,3.8-2.7l9.3,1.6l6.3,1.1l3.1,0.5l-3.8,2.7l0.7-3.2l-7.7,5.4l1.4-6.5l-15.1,10.6L110.2,105.2z M113.4,125l-0.4,2.1
c-0.2,0.9-1,1.4-1.9,1.3l-2-0.4c-0.8-0.1-1.4-0.9-1.2-1.7c0,0,0-0.1,0-0.1l0.4-2.1c0.2-0.9,1-1.4,1.9-1.3l2.1,0.3
C113.1,123.3,113.6,124.1,113.4,125C113.4,124.9,113.4,124.9,113.4,125z M143.7,124.3c-1.6,2.9-4.8,4.4-8,3.9l-10.5-1.8
c-3.1-0.5-5.6-3.1-5.8-6.2c-0.4-4.3,2.7-8.2,7.1-8.6c0.6-0.1,1.2-0.1,1.8,0l10.8,1.8C143.7,114.2,146.3,119.5,143.7,124.3
L143.7,124.3z M152.4,131.6l-0.4,2.1c-0.2,0.9-1,1.5-1.9,1.3l-2-0.4c-0.8-0.1-1.4-0.9-1.2-1.7c0,0,0-0.1,0-0.1l0.4-2.1
c0.2-0.9,1-1.5,1.9-1.3l2,0.4C152,129.9,152.5,130.6,152.4,131.6C152.4,131.5,152.3,131.5,152.4,131.6L152.4,131.6z"/>
<path class="st1" d="M137.9,116.5l-9.8-1.7c-2.2-0.4-4.4,1-5.1,3.1c-0.7,2.1,0.4,4.4,2.5,5.2c0.2,0.1,0.4,0.1,0.6,0.2l10.2,1.7
c2.5,0.3,4.7-1.4,5.1-3.9c0,0,0,0,0-0.1C141.6,118.8,140,116.8,137.9,116.5L137.9,116.5z M128.2,118.8c-0.2,0.8-0.9,1.3-1.7,1.2
c-0.8-0.1-1.3-0.9-1.1-1.6c0,0,0-0.1,0-0.1c0.2-0.8,0.9-1.4,1.7-1.2C127.9,117.3,128.4,118,128.2,118.8
C128.3,118.8,128.2,118.8,128.2,118.8z M138.7,120.6c-0.2,0.8-0.9,1.3-1.7,1.2c-0.8-0.1-1.3-0.9-1.1-1.6c0,0,0-0.1,0-0.1
c0.2-0.8,0.9-1.4,1.7-1.2C138.4,119,138.9,119.8,138.7,120.6C138.7,120.6,138.7,120.6,138.7,120.6L138.7,120.6z"/>
<path class="st2" d="M95.7,133.4c0,6.8,2.4,13.4,6.7,18.7l-2.3,1.9c-4.8-5.8-7.4-13.1-7.4-20.6H95.7z M160.1,97.1
c4.3,5.3,6.7,11.9,6.7,18.7h3c0-7.5-2.6-14.8-7.4-20.6L160.1,97.1z M166.3,94.1c4.3,5.3,6.7,11.9,6.7,18.7h3
c0-7.5-2.6-14.8-7.4-20.6L166.3,94.1z M88.5,136.1c0,6.8,2.4,13.4,6.7,18.7l-2.3,1.9c-4.8-5.8-7.4-13.1-7.4-20.6H88.5z"/>
</svg>

Before

Width:  |  Height:  |  Size: 7.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 39 KiB

After

Width:  |  Height:  |  Size: 7.9 KiB

View File

@ -1,65 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 22.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1"
id="svg2" inkscape:export-filename="/Users/sammysam/Work/pxt-microbit/docs/static/packages/radio/icon.png" inkscape:export-xdpi="100.04" inkscape:export-ydpi="100.04" inkscape:version="0.91 r13725" sodipodi:docname="icon.svg" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 286 176"
style="enable-background:new 0 0 286 176;" xml:space="preserve">
<style type="text/css">
.st0{fill:#E3008B;stroke:#CDCDCD;stroke-width:3.333091e-02;stroke-linecap:round;stroke-linejoin:round;}
.st1{fill:#FFFFFF;}
.st2{fill:#00FFFF;}
</style>
<sodipodi:namedview bordercolor="#666666" borderopacity="1" gridtolerance="10" guidetolerance="10" id="namedview4" inkscape:current-layer="svg2" inkscape:cx="240.23897" inkscape:cy="53.563179" inkscape:pageopacity="0" inkscape:pageshadow="2" inkscape:window-height="744" inkscape:window-maximized="0" inkscape:window-width="1558" inkscape:window-x="11" inkscape:window-y="0" inkscape:zoom="1.378389" objecttolerance="10" pagecolor="#ffffff" showgrid="false">
</sodipodi:namedview>
<rect id="rect4138" x="0" y="0" class="st0" width="286" height="176"/>
<image style="overflow:visible;enable-background:new ;" width="1440" height="496" id="image4156" xlink:href="B3A78EF0E366567F.png" transform="matrix(0.3665 0 0 0.3665 -73.8575 -2.0237)">
</image>
<path class="st1" d="M250.8,26l-44-7.5c-2.3-0.3-4.5,1.2-5,3.5L194.5,56c-0.5,2.2,0.8,4.3,2.9,4.9c0.1,0,0.2,0,0.2,0.1l44,7.5
c2.3,0.3,4.5-1.2,5-3.5l7.3-33.9c0.5-2.2-0.8-4.3-2.9-4.9C251,26,250.9,26,250.8,26L250.8,26z M203.6,23.5c0.3-1.7,2-2.9,3.8-2.7
l9.3,1.6l6.3,1.1l3.1,0.5l-3.8,2.7l0.7-3.2l-7.7,5.4l1.4-6.5L201.5,33L203.6,23.5z M206.8,43.2l-0.4,2.1c-0.2,0.9-1,1.4-1.9,1.3
l-2-0.4c-0.8-0.1-1.4-0.9-1.2-1.7c0,0,0-0.1,0-0.1l0.4-2.1c0.2-0.9,1-1.4,1.9-1.3l2.1,0.3C206.4,41.5,206.9,42.3,206.8,43.2
C206.8,43.2,206.8,43.2,206.8,43.2z M237.1,42.6c-1.6,2.9-4.8,4.4-8,3.9l-10.5-1.8c-3.1-0.5-5.6-3.1-5.8-6.2
c-0.4-4.3,2.7-8.2,7.1-8.6c0.6-0.1,1.2-0.1,1.8,0l10.8,1.8C237,32.5,239.7,37.8,237.1,42.6L237.1,42.6z M245.7,49.8l-0.4,2.1
c-0.2,0.9-1,1.5-1.9,1.3l-2-0.4c-0.8-0.1-1.4-0.9-1.2-1.7c0,0,0-0.1,0-0.1l0.4-2.1c0.2-0.9,1-1.5,1.9-1.3l2,0.4
C245.3,48.1,245.9,48.9,245.7,49.8C245.7,49.8,245.7,49.8,245.7,49.8L245.7,49.8z"/>
<path class="st1" d="M231.2,34.7l-9.8-1.7c-2.2-0.4-4.4,1-5.1,3.1c-0.7,2.1,0.4,4.4,2.5,5.2c0.2,0.1,0.4,0.1,0.6,0.2l10.2,1.7
c2.5,0.3,4.7-1.4,5.1-3.9c0,0,0,0,0-0.1C234.9,37.1,233.4,35.1,231.2,34.7L231.2,34.7z M221.6,37.1c-0.2,0.8-0.9,1.3-1.7,1.2
c-0.8-0.1-1.3-0.9-1.1-1.6c0,0,0-0.1,0-0.1c0.2-0.8,0.9-1.4,1.7-1.2C221.2,35.5,221.7,36.3,221.6,37.1
C221.6,37,221.6,37.1,221.6,37.1z M232,38.9c-0.2,0.8-0.9,1.3-1.7,1.2c-0.8-0.1-1.3-0.9-1.1-1.6c0,0,0-0.1,0-0.1
c0.2-0.8,0.9-1.4,1.7-1.2C231.7,37.3,232.2,38,232,38.9C232.1,38.8,232.1,38.8,232,38.9L232,38.9z"/>
<path class="st2" d="M189,51.6c0,6.8,2.4,13.4,6.7,18.7l-2.3,1.9c-4.8-5.8-7.4-13.1-7.4-20.6H189z M253.4,15.3
c4.3,5.3,6.7,11.9,6.7,18.7h3c0-7.5-2.6-14.8-7.4-20.6L253.4,15.3z M259.7,12.4c4.3,5.3,6.7,11.9,6.7,18.7h3
c0-7.5-2.6-14.8-7.4-20.6L259.7,12.4z M181.8,54.4c0,6.8,2.4,13.4,6.7,18.7l-2.3,1.9c-4.8-5.8-7.4-13.1-7.4-20.6H181.8z"/>
<path class="st1" d="M90.3,29.8l-44-7.5c-2.3-0.3-4.5,1.2-5,3.5L34,59.8c-0.5,2.2,0.8,4.3,2.9,4.9c0.1,0,0.2,0,0.2,0.1l44,7.5
c2.3,0.3,4.5-1.2,5-3.5l7.3-33.9c0.5-2.2-0.8-4.3-2.9-4.9C90.5,29.9,90.4,29.9,90.3,29.8L90.3,29.8z M43.1,27.3
c0.3-1.7,2-2.9,3.8-2.7l9.3,1.6l6.3,1.1l3.1,0.5l-3.8,2.7l0.7-3.2l-7.7,5.4l1.4-6.5L41.1,36.8L43.1,27.3z M46.3,47.1l-0.4,2.1
c-0.2,0.9-1,1.4-1.9,1.3l-2-0.4c-0.8-0.1-1.4-0.9-1.2-1.7c0,0,0-0.1,0-0.1l0.4-2.1c0.2-0.9,1-1.4,1.9-1.3l2.1,0.3
C45.9,45.4,46.5,46.1,46.3,47.1C46.3,47,46.3,47,46.3,47.1z M76.6,46.4c-1.6,2.9-4.8,4.4-8,3.9l-10.5-1.8c-3.1-0.5-5.6-3.1-5.8-6.2
c-0.4-4.3,2.7-8.2,7.1-8.6c0.6-0.1,1.2-0.1,1.8,0l10.8,1.8C76.6,36.3,79.2,41.6,76.6,46.4L76.6,46.4z M85.2,53.7l-0.4,2.1
c-0.2,0.9-1,1.5-1.9,1.3l-2-0.4c-0.8-0.1-1.4-0.9-1.2-1.7c0,0,0-0.1,0-0.1l0.4-2.1c0.2-0.9,1-1.5,1.9-1.3l2,0.4
C84.8,52,85.4,52.7,85.2,53.7C85.2,53.6,85.2,53.6,85.2,53.7L85.2,53.7z"/>
<path class="st1" d="M70.7,38.6l-9.8-1.7c-2.2-0.4-4.4,1-5.1,3.1c-0.7,2.1,0.4,4.4,2.5,5.2c0.2,0.1,0.4,0.1,0.6,0.2l10.2,1.7
c2.5,0.3,4.7-1.4,5.1-3.9c0,0,0,0,0-0.1C74.4,40.9,72.9,38.9,70.7,38.6L70.7,38.6z M61.1,40.9c-0.2,0.8-0.9,1.3-1.7,1.2
c-0.8-0.1-1.3-0.9-1.1-1.6c0,0,0-0.1,0-0.1c0.2-0.8,0.9-1.4,1.7-1.2C60.8,39.4,61.3,40.1,61.1,40.9C61.1,40.9,61.1,40.9,61.1,40.9z
M71.6,42.7c-0.2,0.8-0.9,1.3-1.7,1.2c-0.8-0.1-1.3-0.9-1.1-1.6c0,0,0-0.1,0-0.1c0.2-0.8,0.9-1.4,1.7-1.2
C71.2,41.1,71.7,41.9,71.6,42.7C71.6,42.6,71.6,42.7,71.6,42.7L71.6,42.7z"/>
<path class="st2" d="M28.5,55.5c0,6.8,2.4,13.4,6.7,18.7L33,76.1c-4.8-5.8-7.4-13.1-7.4-20.6H28.5z M93,19.2
c4.3,5.3,6.7,11.9,6.7,18.7h3c0-7.5-2.6-14.8-7.4-20.6L93,19.2z M99.2,16.2c4.3,5.3,6.7,11.9,6.7,18.7h3c0-7.5-2.6-14.8-7.4-20.6
L99.2,16.2z M21.3,58.2c0,6.8,2.4,13.4,6.7,18.7l-2.3,1.9C21,73,18.4,65.7,18.4,58.2H21.3z"/>
<path class="st1" d="M157.4,107.7l-44-7.5c-2.3-0.3-4.5,1.2-5,3.5l-7.3,33.9c-0.5,2.2,0.8,4.3,2.9,4.9c0.1,0,0.2,0,0.2,0.1l44,7.5
c2.3,0.3,4.5-1.2,5-3.5l7.3-33.9c0.5-2.2-0.8-4.3-2.9-4.9C157.6,107.8,157.5,107.8,157.4,107.7L157.4,107.7z M110.2,105.2
c0.3-1.7,2-2.9,3.8-2.7l9.3,1.6l6.3,1.1l3.1,0.5l-3.8,2.7l0.7-3.2l-7.7,5.4l1.4-6.5l-15.1,10.6L110.2,105.2z M113.4,125l-0.4,2.1
c-0.2,0.9-1,1.4-1.9,1.3l-2-0.4c-0.8-0.1-1.4-0.9-1.2-1.7c0,0,0-0.1,0-0.1l0.4-2.1c0.2-0.9,1-1.4,1.9-1.3l2.1,0.3
C113.1,123.3,113.6,124.1,113.4,125C113.4,124.9,113.4,124.9,113.4,125z M143.7,124.3c-1.6,2.9-4.8,4.4-8,3.9l-10.5-1.8
c-3.1-0.5-5.6-3.1-5.8-6.2c-0.4-4.3,2.7-8.2,7.1-8.6c0.6-0.1,1.2-0.1,1.8,0l10.8,1.8C143.7,114.2,146.3,119.5,143.7,124.3
L143.7,124.3z M152.4,131.6l-0.4,2.1c-0.2,0.9-1,1.5-1.9,1.3l-2-0.4c-0.8-0.1-1.4-0.9-1.2-1.7c0,0,0-0.1,0-0.1l0.4-2.1
c0.2-0.9,1-1.5,1.9-1.3l2,0.4C152,129.9,152.5,130.6,152.4,131.6C152.4,131.5,152.3,131.5,152.4,131.6L152.4,131.6z"/>
<path class="st1" d="M137.9,116.5l-9.8-1.7c-2.2-0.4-4.4,1-5.1,3.1c-0.7,2.1,0.4,4.4,2.5,5.2c0.2,0.1,0.4,0.1,0.6,0.2l10.2,1.7
c2.5,0.3,4.7-1.4,5.1-3.9c0,0,0,0,0-0.1C141.6,118.8,140,116.8,137.9,116.5L137.9,116.5z M128.2,118.8c-0.2,0.8-0.9,1.3-1.7,1.2
c-0.8-0.1-1.3-0.9-1.1-1.6c0,0,0-0.1,0-0.1c0.2-0.8,0.9-1.4,1.7-1.2C127.9,117.3,128.4,118,128.2,118.8
C128.3,118.8,128.2,118.8,128.2,118.8z M138.7,120.6c-0.2,0.8-0.9,1.3-1.7,1.2c-0.8-0.1-1.3-0.9-1.1-1.6c0,0,0-0.1,0-0.1
c0.2-0.8,0.9-1.4,1.7-1.2C138.4,119,138.9,119.8,138.7,120.6C138.7,120.6,138.7,120.6,138.7,120.6L138.7,120.6z"/>
<path class="st2" d="M95.7,133.4c0,6.8,2.4,13.4,6.7,18.7l-2.3,1.9c-4.8-5.8-7.4-13.1-7.4-20.6H95.7z M160.1,97.1
c4.3,5.3,6.7,11.9,6.7,18.7h3c0-7.5-2.6-14.8-7.4-20.6L160.1,97.1z M166.3,94.1c4.3,5.3,6.7,11.9,6.7,18.7h3
c0-7.5-2.6-14.8-7.4-20.6L166.3,94.1z M88.5,136.1c0,6.8,2.4,13.4,6.7,18.7l-2.3,1.9c-4.8-5.8-7.4-13.1-7.4-20.6H88.5z"/>
</svg>

Before

Width:  |  Height:  |  Size: 7.1 KiB

BIN
docs/static/packages/servo/icon.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.1 KiB

View File

@ -257,6 +257,8 @@
"basic.showArrow": "Draws an arrow on the LED screen",
"basic.showArrow|param|direction": "the direction of the arrow",
"basic.showArrow|param|interval": "the amount of time (milliseconds) to show the icon. Default is 600.",
"basic.showCompass": "Draws needle on the screen which always points to north",
"basic.showCompass|param|interval": "the amount of time (milliseconds) to show the needle. Default is 600.",
"basic.showIcon": "Draws the selected icon on the LED screen",
"basic.showIcon|param|icon": "the predefined icon id",
"basic.showIcon|param|interval": "the amount of time (milliseconds) to show the icon. Default is 600.",
@ -537,7 +539,6 @@
"pins.C16": "Pin C16",
"pins.C17": "Pin C17",
"pins.C18": "Pin C18",
"pins.C19": "Pin C19",
"pins.C4": "Pin C4",
"pins.C5": "Pin C5",
"pins.C6": "Pin C6",
@ -553,16 +554,16 @@
"pins.analogPitch|param|frequency": "frequency to modulate in Hz.",
"pins.analogPitch|param|ms": "duration of the pitch in milli seconds.",
"pins.analogReadPin": "Read the connector value as analog, that is, as a value comprised between 0 and 1023.",
"pins.analogReadPin|param|name": "pin to write to, eg: AnalogPin.P0",
"pins.analogReadPin|param|name": "pin to write to, eg: AnalogPin.P1",
"pins.analogSetPeriod": "Configure the pulse-width modulation (PWM) period of the analog output in microseconds.\nIf this pin is not configured as an analog output (using `analog write pin`), the operation has no effect.",
"pins.analogSetPeriod|param|micros": "period in micro seconds. eg:20000",
"pins.analogSetPeriod|param|name": "analog pin to set period to, eg: AnalogPin.P0",
"pins.analogSetPeriod|param|name": "analog pin to set period to, eg: AnalogPin.P1",
"pins.analogSetPitchPin": "Set the pin used when using analog pitch or music.",
"pins.analogSetPitchPin|param|name": "pin to modulate pitch from",
"pins.analogSetPitchVolume": "Sets the volume on the pitch pin",
"pins.analogSetPitchVolume|param|volume": "the intensity of the sound from 0..255",
"pins.analogWritePin": "Set the connector value as analog. Value must be comprised between 0 and 1023.",
"pins.analogWritePin|param|name": "pin name to write to, eg: AnalogPin.P0",
"pins.analogWritePin|param|name": "pin name to write to, eg: AnalogPin.P1",
"pins.analogWritePin|param|value": "value to write to the pin between ``0`` and ``1023``. eg:1023,0",
"pins.createBuffer": "Create a new zero-initialized buffer.",
"pins.createBuffer|param|size": "number of bytes in the buffer",
@ -594,7 +595,7 @@
"pins.servoSetPulse|param|micros": "pulse duration in micro seconds, eg:1500",
"pins.servoSetPulse|param|name": "pin name",
"pins.servoWritePin": "Write a value to the servo, controlling the shaft accordingly. On a standard servo, this will set the angle of the shaft (in degrees), moving the shaft to that orientation. On a continuous rotation servo, this will set the speed of the servo (with ``0`` being full-speed in one direction, ``180`` being full speed in the other, and a value near ``90`` being no movement).",
"pins.servoWritePin|param|name": "pin to write to, eg: AnalogPin.P0",
"pins.servoWritePin|param|name": "pin to write to, eg: AnalogPin.P1",
"pins.servoWritePin|param|value": "angle or rotation speed, eg:180,90,0",
"pins.setEvents": "Configure the events emitted by this pin. Events can be subscribed to\nusing ``control.onEvent()``.",
"pins.setEvents|param|name": "pin to set the event mode on, eg: DigitalPin.P0",

View File

@ -103,6 +103,14 @@
"Gesture.TiltRight": "Raised when the screen is pointing right",
"Gesture.TiltRight|block": "tilt right",
"IconNames.Angry|block": "angry",
"IconNames.ArrowEast|block": "arrow East",
"IconNames.ArrowNorthEast|block": "arrow north east",
"IconNames.ArrowNorthWest|block": "arrow north west",
"IconNames.ArrowNorth|block": "arrow north",
"IconNames.ArrowSouthEast|block": "arrow south east",
"IconNames.ArrowSouthWest|block": "arrow south west",
"IconNames.ArrowSouth|block": "arrow south",
"IconNames.ArrowWest|block": "arrow west",
"IconNames.Asleep|block": "asleep",
"IconNames.Butterfly|block": "butterfly",
"IconNames.Chessboard|block": "chess board",
@ -258,6 +266,7 @@
"basic.rgbw|block": "red %red|green %green|blue %blue|white %white",
"basic.setLedColor|block": "set led to %color=colorNumberPicker",
"basic.showArrow|block": "show arrow %i=device_arrow",
"basic.showCompass|block": "show compass needle for $interval|ms",
"basic.showIcon|block": "show icon %i",
"basic.showLeds|block": "show leds",
"basic.showNumber|block": "show|number %number",

273
libs/core/compass.ts Normal file
View File

@ -0,0 +1,273 @@
let compassImages = [
images.createImage(`
. . # . .
. . . . .
. . # . .
. . . . .
. . . . .
`),
images.createImage(`
. # . . .
. . . . .
. . # . .
. . . . .
. . . . .
`),
images.createImage(`
# . . . .
. . . . .
. . # . .
. . . . .
. . . . .
`),
images.createImage(`
. . . . .
# . . . .
. . # . .
. . . . .
. . . . .
`),
images.createImage(`
. . . . .
. . . . .
# . # . .
. . . . .
. . . . .
`),
images.createImage(`
. . . . .
. . . . .
. . # . .
# . . . .
. . . . .
`),
images.createImage(`
. . . . .
. . . . .
. . # . .
. . . . .
# . . . .
`),
images.createImage(`
. . . . .
. . . . .
. . # . .
. . . . .
. # . . .
`),
images.createImage(`
. . . . .
. . . . .
. . # . .
. . . . .
. . # . .
`),
images.createImage(`
. . . . .
. . . . .
. . # . .
. . . . .
. . . # .
`),
images.createImage(`
. . . . .
. . . . .
. . # . .
. . . . .
. . . . #
`),
images.createImage(`
. . . . .
. . . . .
. . # . .
. . . . #
. . . . .
`),
images.createImage(`
. . . . .
. . . . .
. . # . #
. . . . .
. . . . .
`),
images.createImage(`
. . . . .
. . . . #
. . # . .
. . . . .
. . . . .
`),
images.createImage(`
. . . . #
. . . . .
. . # . .
. . . . .
. . . . .
`),
images.createImage(`
. . . # .
. . . . .
. . # . .
. . . . .
. . . . .
`)];
let compassImagesDownside = [
images.createImage(`
. . . . .
. . . . .
. . # . .
. . . . .
. . # . .
`),
images.createImage(`
. . . . .
. . . . .
. . # . .
. . . . .
. . . # .
`),
images.createImage(`
. . . . .
. . . . .
. . # . .
. . . . .
. . . . #
`),
images.createImage(`
. . . . .
. . . . .
. . # . .
. . . . #
. . . . .
`),
images.createImage(`
. . . . .
. . . . .
. . # . #
. . . . .
. . . . .
`),
images.createImage(`
. . . . .
. . . . #
. . # . .
. . . . .
. . . . .
`),
images.createImage(`
. . . . #
. . . . .
. . # . .
. . . . .
. . . . .
`),
images.createImage(`
. . . # .
. . . . .
. . # . .
. . . . .
. . . . .
`),
images.createImage(`
. . # . .
. . . . .
. . # . .
. . . . .
. . . . .
`),
images.createImage(`
. # . . .
. . . . .
. . # . .
. . . . .
. . . . .
`),
images.createImage(`
# . . . .
. . . . .
. . # . .
. . . . .
. . . . .
`),
images.createImage(`
. . . . .
# . . . .
. . # . .
. . . . .
. . . . .
`),
images.createImage(`
. . . . .
. . . . .
# . # . .
. . . . .
. . . . .
`),
images.createImage(`
. . . . .
. . . . .
. . # . .
# . . . .
. . . . .
`),
images.createImage(`
. . . . .
. . . . .
. . # . .
. . . . .
# . . . .
`),
images.createImage(`
. . . . .
. . . . .
. . # . .
. . . . .
. # . . .
`)];
namespace basic {
/**
* Draws needle on the screen which always points to north
* @param interval the amount of time (milliseconds) to show the needle. Default is 600.
*/
//% weight=50 blockGap=8
//% blockId=basic_show_compass
//% block="show compass needle for $interval|ms"
//% interval.shadow=timePicker
//% interval.min=1
//% interval.defl=600
//% parts="ledmatrix"
//% advanced=true
export function showCompass(interval = 600) {
let i = 0
let startTime = input.runningTime()
let endTime = startTime + interval
let refreshRate = 100
let rest = 0
while ((endTime) > (input.runningTime() + refreshRate)) {
i = Math.round((input.compassHeading() - 11.25) / 22.5)
if (input.isGesture(Gesture.ScreenDown)) {
compassImagesDownside[i].showImage(0, refreshRate)
} else {
compassImages[i].showImage(0, refreshRate)
}
}
rest = (endTime - input.runningTime())
if(rest > 0) {
i = Math.round((input.compassHeading() - 11.25) / 22.5)
if (input.isGesture(Gesture.ScreenDown)) {
compassImagesDownside[i].showImage(0, rest)
} else {
compassImages[i].showImage(0, rest)
}
}
}
}

View File

@ -465,7 +465,6 @@ declare namespace motors {
C16 = 102, // MICROBIT_ID_IO_P2
C17 = 108, // MICROBIT_ID_IO_P8
C18 = 120, // MICROBIT_ID_IO_P20
C19 = 119, // MICROBIT_ID_IO_P19
}

View File

@ -122,5 +122,29 @@
},
"scissors": {
"icon": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAYAAACtWK6eAAAACXBIWXMAAAsTAAALEwEAmpwYAAAFUUlEQVR4nO3dMW6cRRgG4G+RaCL6AAfgAjkA4k5Jg9JCE+6EoM8FOEBC+ihNiqVYU0TZeT3rnd/6/vXztB57Ps3odWTFnrcKAAAAaOGQPng8Hn+uqldV9aKqvl+8979V9baq3hwOh78e8gW6z1dV31XV86p6VlXfrhrszueq+lRVH6rq4wO/Ruv5OtzvMCDH4/HXqvpt8VBnt6qq14fD4feLPqn5fHW60B83mOecd3W68Eu0nq/L/Z4NyF1y/xx9fAPHqvpl9jt19/nq9J35pw3nOeefmv9O3Xq+Tvf7zeATXtXjDVd3e728YH33+Z5vNciiPbvP1+Z+RwF5sd0sQ5fs2X2+Z5tNsWbP7vO1ud9RQFb/QDTjhwvWdp9v9Q+8q/fsPl+b+x0FBCgBgUhAIBAQCAQEAgGBQEAgEBAIBAQCAYFAQCAQEAgEBAIBgUBAIBAQCAQEAgGBQEAgGAXk0jeWVnh/wdru833ebIo1e3afr839jgLydsNBRi7Zs/t8nzabYs2e3edrc7+jgLyp02Naj+V4t+es7vN92GqQRXt2n6/N/Z4NyN0Lc6/rcYb8/+nHv2c/oft8dXpB8N1G85zzri57/7b1fJ3ud+bx6pd1elTrknehZryv0z9rf1z5eHXb+ar549DVfL4d3C8AAAAAAAAAPDF60sduvifd+d1/fnrSJ7aqG+xJd35fGJ6fnvQ5N9WT7vzOOnt+etLn3FpPuvOb3FNP+jZ76iG/bs8256cnfd4t9aQ7v8k9vWoCgYBAICAQCAgEAgKBgEAgIBAICAQCAoGAQCAgEAgIBAICgYBAICAQCAgEAgKBgEAgIBDoSZ93Sz3pzm9yTz3p2+yph/y6Pducn570ObfWk+78JvfUk36/m+tJd35fGZ6fnvSxm+9Jd35X98wDAAAAAAAAwBNzX5Fj9//qbz2fHvL9328KSIue6qD1fHrIv7Db+x0FpE1P9UDr+fSQn7XL+x39PUibnuoFa1fRQ36dXd7vKCBteqoXrF1FD/l1dnm/o4C06alesHYVPeTX2eX9etUEAgGBQEAgEBAIBAQCAYFAQCAQEAgEBAIBgUBAIBAQCAQEAgGBQEAgEBAIBAQCAYFAQCAYBaRNT/WCtavoIb/OLu93FJA2PdUL1q6ih/w6u7zfUUDa9FQvWLuKHvLr7PJ+RwFp01M90Ho+PeRf2e39erx6TA/5dW7+fgEAAAAAAADg6Ym/atK957v7fNX8VyWc3xU96d17vrvPV016vkec3xcu60nv3vPdfb5q1PN9jvM766Ke9O49393na9PzPeD8JvccBaR7z3f3+dr0fA84v8k9RwHp3vPdfb42Pd8Dzm9yT6+aQCAgEAgIBAICgYBAICAQCAgEAgKBgEAgIBAICAQCAoGAQCAgEAgIBAICgYBAICAQCAgEo4B07/nuPl+bnu8B5ze55ygg3Xu+u8/Xpud7wPlN7jkKSPee7+7zten5HnB+k3ueDUj3nu/u81Wjnu9znN9XHtaT3r3nu/t81eDx5cT56UkHAAAAAAAAgMvoSR+7iZ7ve7Ser8P96kmf2Kp23PMdtJ6vy/3qSZ+z257vgdbzdbpfPelzdtvzvWDtKrvscdeTvs2ebXq+F6xdZZc97nrS5+2y53vB2lV22ePuVRMIBAQCAYFAQCAQEAgEBAIBgUBAIBAQCAQEAgGBQEAgEBAIBAQCAYFAQCAQEAgEBAIBgUBP+rxd9nwvWLvKLnvc9aRvs2ebnu8Fa1fZZY+7nvQ5u+35XrB2lV32uOtJv9+ue74HWs/X6X71pI89hZ7v1vPt4H4BAACAx/IfV5v6DSxvZ+4AAAAASUVORK5CYII="
},
"arrownorth": {
"icon": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAYAAACtWK6eAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyVpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDYuMC1jMDAyIDc5LjE2NDQ2MCwgMjAyMC8wNS8xMi0xNjowNDoxNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIDIxLjIgKE1hY2ludG9zaCkiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QTg1QjQxRjlFQzNCMTFFQTkwMDREMjM3Rjg3MzY4NzkiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QTg1QjQxRkFFQzNCMTFFQTkwMDREMjM3Rjg3MzY4NzkiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpBODVCNDFGN0VDM0IxMUVBOTAwNEQyMzdGODczNjg3OSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpBODVCNDFGOEVDM0IxMUVBOTAwNEQyMzdGODczNjg3OSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PrDq62kAAAdCSURBVHja7N2x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"
},
"arrownortheast": {
"icon": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAYAAACtWK6eAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyVpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDYuMC1jMDAyIDc5LjE2NDQ2MCwgMjAyMC8wNS8xMi0xNjowNDoxNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIDIxLjIgKE1hY2ludG9zaCkiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MTE3Njk4REZFQzNDMTFFQTkwMDREMjM3Rjg3MzY4NzkiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MTE3Njk4RTBFQzNDMTFFQTkwMDREMjM3Rjg3MzY4NzkiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpDNDM5M0RCMEVDM0IxMUVBOTAwNEQyMzdGODczNjg3OSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDoxMTc2OThERUVDM0MxMUVBOTAwNEQyMzdGODczNjg3OSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pts1YdYAAAXoSURBVHja7N3B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"
},
"arroweast": {
"icon": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAYAAACtWK6eAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyVpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDYuMC1jMDAyIDc5LjE2NDQ2MCwgMjAyMC8wNS8xMi0xNjowNDoxNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIDIxLjIgKE1hY2ludG9zaCkiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QTg1QjQxRkRFQzNCMTFFQTkwMDREMjM3Rjg3MzY4NzkiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QTg1QjQxRkVFQzNCMTFFQTkwMDREMjM3Rjg3MzY4NzkiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpBODVCNDFGQkVDM0IxMUVBOTAwNEQyMzdGODczNjg3OSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpBODVCNDFGQ0VDM0IxMUVBOTAwNEQyMzdGODczNjg3OSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PkRp+VEAAAbPSURBVHja7N09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"
},
"arrowsoutheast": {
"icon": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAYAAACtWK6eAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyVpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDYuMC1jMDAyIDc5LjE2NDQ2MCwgMjAyMC8wNS8xMi0xNjowNDoxNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIDIxLjIgKE1hY2ludG9zaCkiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MTE3Njk4RTNFQzNDMTFFQTkwMDREMjM3Rjg3MzY4NzkiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MTE3Njk4RTRFQzNDMTFFQTkwMDREMjM3Rjg3MzY4NzkiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDoxMTc2OThFMUVDM0MxMUVBOTAwNEQyMzdGODczNjg3OSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDoxMTc2OThFMkVDM0MxMUVBOTAwNEQyMzdGODczNjg3OSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pu4vAMQAAAXfSURBVHja7N3B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"
},
"arrowsouth": {
"icon": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAYAAACtWK6eAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyVpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDYuMC1jMDAyIDc5LjE2NDQ2MCwgMjAyMC8wNS8xMi0xNjowNDoxNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIDIxLjIgKE1hY2ludG9zaCkiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QzQzOTNEQTZFQzNCMTFFQTkwMDREMjM3Rjg3MzY4NzkiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QzQzOTNEQTdFQzNCMTFFQTkwMDREMjM3Rjg3MzY4NzkiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpBODVCNDFGRkVDM0IxMUVBOTAwNEQyMzdGODczNjg3OSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpBODVCNDIwMEVDM0IxMUVBOTAwNEQyMzdGODczNjg3OSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PrnT/wkAAAdjSURBVHja7N0/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"
},
"arrowsouthwest": {
"icon": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAYAAACtWK6eAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyVpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDYuMC1jMDAyIDc5LjE2NDQ2MCwgMjAyMC8wNS8xMi0xNjowNDoxNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIDIxLjIgKE1hY2ludG9zaCkiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MTE3Njk4RTdFQzNDMTFFQTkwMDREMjM3Rjg3MzY4NzkiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MTE3Njk4RThFQzNDMTFFQTkwMDREMjM3Rjg3MzY4NzkiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDoxMTc2OThFNUVDM0MxMUVBOTAwNEQyMzdGODczNjg3OSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDoxMTc2OThFNkVDM0MxMUVBOTAwNEQyMzdGODczNjg3OSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PgEb5sEAAAXPSURBVHja7N3N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"
},
"arrowwest": {
"icon": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAYAAACtWK6eAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyVpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDYuMC1jMDAyIDc5LjE2NDQ2MCwgMjAyMC8wNS8xMi0xNjowNDoxNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIDIxLjIgKE1hY2ludG9zaCkiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QzQzOTNEQUFFQzNCMTFFQTkwMDREMjM3Rjg3MzY4NzkiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QzQzOTNEQUJFQzNCMTFFQTkwMDREMjM3Rjg3MzY4NzkiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpDNDM5M0RBOEVDM0IxMUVBOTAwNEQyMzdGODczNjg3OSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpDNDM5M0RBOUVDM0IxMUVBOTAwNEQyMzdGODczNjg3OSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PvkudBoAAAcJSURBVHja7N3B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"
},
"arrownorthwest": {
"icon": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAYAAACtWK6eAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyVpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDYuMC1jMDAyIDc5LjE2NDQ2MCwgMjAyMC8wNS8xMi0xNjowNDoxNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIDIxLjIgKE1hY2ludG9zaCkiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QzQzOTNEQUVFQzNCMTFFQTkwMDREMjM3Rjg3MzY4NzkiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QzQzOTNEQUZFQzNCMTFFQTkwMDREMjM3Rjg3MzY4NzkiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpDNDM5M0RBQ0VDM0IxMUVBOTAwNEQyMzdGODczNjg3OSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpDNDM5M0RBREVDM0IxMUVBOTAwNEQyMzdGODczNjg3OSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pncgm/sAAAXOSURBVHja7N3NThtXGAbgceQuQOxoRGEFm+xyH1HvJ/25gqrt/VTtdXTXDaxMo5ZdBIsguTPgShYaDzNz7PF3jp9HsiIlkPPpjF//gc47Wy6XFdDujS0AAQEBAQGBCc3b/nI2mz39eX19/eH09PS7o6Oj9/P5/OttLvz4+Pjvw8PDn3d3d79cXV39Pub/MF/afLWT+nZW347r21dbvm99qW/39e1Tffucw3xtH1jNWv+yDshisfjp/Pz8hwlCury9vf354uLixyHfZL60+Wrf1LeLiR6IF/Xt7+jz9Q7Izc3Nh8vLy9+af59owGW95rd9HwmbR2bzjZ9v9cj8buJXK38NeCbZy3x1Fj73eg/SvCyY8OI+BbVe82PfLzZf2nyrly1TO8txvtaANK+Zp55uyJrmS17zeA93wOMc52sNyLbfUPb6tGA+fzvga82XMN8O3vBue80w8/mYFzoICAgICAgICAgICAgICAgICAgICCAgICAgICAgICAgICAgICBwsAFpDiWbepB6zX8GfK35Euarng9Nm9qXHOdrDUhzYt/U0w1Z03zJa97v4Q54n+N8rQFpjrOs/5iyOGS5WrMX86XNVz0ftzm1TznO1xqQ5oS+5jjLiS7y09GZ9Zp/9P0G86XNVz2fcLiY8M63qIadzxtmvo1n8zZWhy9/XB2+/HabEzWvmVeHL/+aeDi0+RxevZX5Bh1eDYemLQs+5oUOAgICAgICAgICAgICAgJZm9uCcdp+qMQ4kX8w3RkQPeTj5lu74Hv/VYkc51uz91+F0ZM+cr6ui726A4bo+c5hvg3PIHrS1+9vufWQvxKQMD3fOczXEhA96S/3SA95sjPzbX8+Pem7WVMPeSHz6UnfwXyVHvJi5vNzEOggICAgICAgICAgICAgICAgICAgIICAgICAgICAgICAgICAgIDAwQZED3nafJUe8mLm05O+mzX1kBcyn570HcxX6SEvZj496TuYr9JDXsx8etJHztfjbN6Gw6t7zNdxurue9FypP9ieKPc3PekwkIBABw1Tmb8swDMIeAbJ+Y2xZxMBIXMeXLzEAgEBAYEc3oPoIU/r+bZ/w/bv/3/f13yte5VTT/qLDQzd8x1t/9Znj7R/63sX8fq+2fTIV1/c76f6IKNZq1lzwPecTLh51WqtkyHPHPZv/P5Fmi/LnvQqeM+3/UteU0964pqhe77tX/KaetJb1iymh9z+Ja+pJx1yICAgICAgICAgICAgICAgICAgICCAgICAgICAgICAgICAgICAwMEGRA952pr2L3lNPemJa4bu+bZ/yWvqSX+hqB5y+5e8pp709YtbWg+5/Uvbv0pP+rie9H0fbjy05zvS/rWczRti/zrO5o0xX0496VqSyt67iDP6mBcEBMZR4omXqh0v8TyDQCnPIPrIERA8uAhIOXz0XDbvQUBAYDcvsfbeU53jfHrc03rcI13frl81mbyneuD3hJgv0v5t+H2r9m8I1uMe4foO+TmIHu2C59Pj3n//NgVEj3bB8+lx77/mpoDo0S54Pj3u/dfcFBA92gXPp8e9/5o+5oUOAgICAgICAgICAgICAgICAgICAgIICAgICAgICAgICAgICAgIHHJA9GgXPJ8e9/5rbgqIHu2C59Pj3n/NTQHRo13wfHrc+6+5KSB6tAueT497//17rQba4dWvzBdp/4aczduI1OMe4fpm35MekQKdsq+lj3mhg4CAgICAgICAgICAgICAgECp9KTvYL5cetKjX98IPe560hPny7UnPfr13UePu55082UxX6Qedz3p5gs3X6Qedz3p5gs3X6Qedz3p5gs3X6Qedx/zQgcBAQEBAQEBAQEBAQEBAQEBAQEBAQQEBAQEBAQEBAQEBAQEBAQOOSB6yM23t/ki9bjrSTdfuPki9bjrSTdfuPki9bjrSTdfuPki9bjrSU+cL+ee9CqPw6sn63Hv3ZMOdL/EAgQEBAQEBHbhPwEGAINqOacrDo3YAAAAAElFTkSuQmCC"
}
}

View File

@ -145,7 +145,31 @@ enum IconNames {
SmallSquare,
//% block="scissors"
//% jres=icons.scissors
Scissors
Scissors,
//% block="arrow north"
//% jres=icons.arrownorth
ArrowNorth,
//% block="arrow north east"
//% jres=icons.arrownortheast
ArrowNorthEast,
//% block="arrow East"
//% jres=icons.arroweast
ArrowEast,
//% block="arrow south east"
//% jres=icons.arrowsoutheast
ArrowSouthEast,
//% block="arrow south"
//% jres=icons.arrowsouth
ArrowSouth,
//% block="arrow south west"
//% jres=icons.arrowsouthwest
ArrowSouthWest,
//% block="arrow west"
//% jres=icons.arrowwest
ArrowWest,
//% block="arrow north west"
//% jres=icons.arrownorthwest
ArrowNorthWest
}
enum ArrowNames {
@ -164,7 +188,7 @@ enum ArrowNames {
//% blockIdentity=images.arrowNumber block="West"
West,
//% blockIdentity=images.arrowNumber block="North West"
NorthWest,
NorthWest
}
namespace basic {
@ -199,6 +223,7 @@ namespace basic {
//% parts="ledmatrix"
//% advanced=true
//% help=basic/show-arrow
//% deprecated=true
export function showArrow(direction: number, interval = 600) {
let res = images.arrowImage(direction)
res.showImage(0, interval)
@ -211,6 +236,7 @@ namespace images {
//% weight=50 blockGap=8
//% help=images/arrow-image
//% blockId=builtin_arrow_image block="arrow image %i"
//% deprecated=true
export function arrowImage(i: ArrowNames): Image {
switch (i) {
// compass directions
@ -528,6 +554,55 @@ namespace images {
# # . # #
. # # # .
. . # . .`);
// arrows
case IconNames.ArrowNorth: return images.createImage(`
. . # . .
. # # # .
# . # . #
. . # . .
. . # . .`);
case IconNames.ArrowNorthEast: return images.createImage(`
. . # # #
. . . # #
. . # . #
. # . . .
# . . . .`);
case IconNames.ArrowEast: return images.createImage(`
. . # . .
. . . # .
# # # # #
. . . # .
. . # . .`);
case IconNames.ArrowSouthEast: return images.createImage(`
# . . . .
. # . . .
. . # . #
. . . # #
. . # # #`);
case IconNames.ArrowSouth: return images.createImage(`
. . # . .
. . # . .
# . # . #
. # # # .
. . # . .`);
case IconNames.ArrowSouthWest: return images.createImage(`
. . . . #
. . . # .
# . # . .
# # . . .
# # # . .`);
case IconNames.ArrowWest: return images.createImage(`
. . # . .
. # . . .
# # # # #
. # . . .
. . # . .`);
case IconNames.ArrowNorthWest: return images.createImage(`
# # # . .
# # . . .
# . # . .
. . . # .
. . . . #`);
default: return images.createImage(`
. . . . .
. . . . .
@ -542,6 +617,7 @@ namespace images {
//% help=images/arrow-number
//% blockId=device_arrow block="%arrow"
//% shim=TD_ID
//% deprecated=true
export function arrowNumber(arrow: ArrowNames): number {
return arrow;
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 699 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1014 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 919 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 808 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

View File

@ -482,6 +482,7 @@ namespace music {
//% help=music/set-volume
//% weight=70
//% group="Volume"
//% deprecated=true
export function setVolume(volume: number): void {
pins.analogSetPitchVolume(volume);
}
@ -494,6 +495,7 @@ namespace music {
//% help=music/volume
//% weight=69
//% group="Volume"
//% deprecated=true
export function volume(): number {
return pins.analogPitchVolume();
}

View File

@ -16,8 +16,7 @@ enum class DigitalPin {
C12 = MICROBIT_ID_IO_P6, // LED matrix C9
C16 = MICROBIT_ID_IO_P2, // RX
C17 = MICROBIT_ID_IO_P8, // TX
C18 = MICROBIT_ID_IO_P20, // SDA
C19 = MICROBIT_ID_IO_P19 // SCL
C18 = MICROBIT_ID_IO_P20 // SDA
};
enum class AnalogPin {

View File

@ -212,16 +212,11 @@ namespace pins {
*/
//% fixedInstance whenUsed
export const C17: AnalogInPin = new MicrobitPin(DigitalPin.C17);
/**
* Pin C18
*/
//% fixedInstance whenUsed
export const C18: DigitalInOutPin = new MicrobitPin(DigitalPin.C18);
/**
* Pin C19
*/
//% fixedInstance whenUsed
export const C19: DigitalInOutPin = new MicrobitPin(DigitalPin.C19);
}

View File

@ -56,6 +56,7 @@
"templates.ts",
"sendbuffer.s",
"light.cpp",
"compass.ts",
"parts/speaker.svg",
"parts/headphone.svg",
"parts/dcmotor.svg",

View File

@ -662,7 +662,7 @@ declare namespace pins {
/**
* Read the connector value as analog, that is, as a value comprised between 0 and 1023.
* @param name pin to write to, eg: AnalogPin.P0
* @param name pin to write to, eg: AnalogPin.P1
*/
//% help=pins/analog-read-pin weight=25
//% blockId=device_get_analog_pin block="analog read|pin %name" blockGap="8"
@ -672,7 +672,7 @@ declare namespace pins {
/**
* Set the connector value as analog. Value must be comprised between 0 and 1023.
* @param name pin name to write to, eg: AnalogPin.P0
* @param name pin name to write to, eg: AnalogPin.P1
* @param value value to write to the pin between ``0`` and ``1023``. eg:1023,0
*/
//% help=pins/analog-write-pin weight=24
@ -685,7 +685,7 @@ declare namespace pins {
/**
* Configure the pulse-width modulation (PWM) period of the analog output in microseconds.
* If this pin is not configured as an analog output (using `analog write pin`), the operation has no effect.
* @param name analog pin to set period to, eg: AnalogPin.P0
* @param name analog pin to set period to, eg: AnalogPin.P1
* @param micros period in micro seconds. eg:20000
*/
//% help=pins/analog-set-period weight=23 blockGap=8
@ -728,7 +728,7 @@ declare namespace pins {
/**
* Write a value to the servo, controlling the shaft accordingly. On a standard servo, this will set the angle of the shaft (in degrees), moving the shaft to that orientation. On a continuous rotation servo, this will set the speed of the servo (with ``0`` being full-speed in one direction, ``180`` being full speed in the other, and a value near ``90`` being no movement).
* @param name pin to write to, eg: AnalogPin.P0
* @param name pin to write to, eg: AnalogPin.P1
* @param value angle or rotation speed, eg:180,90,0
*/
//% help=pins/servo-write-pin weight=20

View File

@ -1,3 +1,4 @@
{
"additionalFilePath": "../../node_modules/pxt-common-packages/libs/radio-broadcast"
"additionalFilePath": "../../node_modules/pxt-common-packages/libs/radio-broadcast",
"icon": "./static/packages/radio-broadcast/icon.png"
}

View File

@ -1,5 +1,6 @@
{
"additionalFilePath": "../../node_modules/pxt-common-packages/libs/radio",
"icon": "./static/packages/radio/icon.png",
"yotta": {
"config": {
"microbit-dal": {

View File

@ -6,6 +6,7 @@
"ns.ts",
"targetoverrides.ts"
],
"icon": "./static/packages/servo/icon.png",
"public": true,
"dependencies": {
"core": "file:../core"

8
package-lock.json generated
View File

@ -1,6 +1,6 @@
{
"name": "pxt-calliope",
"version": "3.0.26",
"version": "3.0.33",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
@ -4322,9 +4322,9 @@
}
},
"pxt-core": {
"version": "6.0.20",
"resolved": "https://registry.npmjs.org/pxt-core/-/pxt-core-6.0.20.tgz",
"integrity": "sha512-dugQC1/10P72exsR3Ed3vGuK8rLkP3+NjrWE+NrLqSH9064Fl20d1fGe8yHGjlbPYyKACDjJeX3fZy1Y12GzEA==",
"version": "6.0.23",
"resolved": "https://registry.npmjs.org/pxt-core/-/pxt-core-6.0.23.tgz",
"integrity": "sha512-3RYVuojjcN3AkFxivFnjRkghknXGbfVGYwkzdx6UGLlr4c+AtZqKJf9SNV0eJBDpQEukpe4DXEct7ADWHtXwoA==",
"requires": {
"applicationinsights-js": "^1.0.20",
"bluebird": "3.5.1",

View File

@ -1,6 +1,6 @@
{
"name": "pxt-calliope",
"version": "3.0.26",
"name": "pxt-calliopemini",
"version": "3.0.33",
"description": "micro:bit target for Microsoft MakeCode (PXT)",
"keywords": [
"JavaScript",

View File

@ -21,9 +21,6 @@
"thumbnails": true,
"publishing": true,
"importing": true,
"preferredPackages": [
"Microsoft/pxt-neopixel"
],
"githubPackages": true,
"cloudProviders": {
"github": {}
@ -113,14 +110,14 @@
"pid": "0x1025"
}
],
"webUSB": true,
"webUSB": false,
"useNewFunctions": true
},
"compileService": {
"yottaTarget": "calliope-mini-classic-gcc",
"yottaCorePackage": "microbit",
"githubCorePackage": "Amerlander/microbit",
"gittag": "v2.2.0-rc6.03",
"githubCorePackage": "calliope-mini/microbit",
"gittag": "v2.2.0-rc6-calliope.rc3",
"serviceId": "calliope",
"dockerImage": "pext/yotta:latest"
},
@ -159,7 +156,7 @@
"autoRun": true,
"streams": false,
"aspectRatio": 1.13,
"parts": true,
"parts": false,
"partsAspectRatio": 0.69,
"boardDefinition": {
"visual": "calliope",
@ -313,7 +310,6 @@
"boardName": "Calliope mini",
"driveDisplayName": "MINI",
"appStoreID": "1309545545",
"mobileSafariDownloadProtocol": "microbithex://?data",
"crowdinProject": "kindscript",
"extendEditor": true,
"extendFieldEditors": true,
@ -335,19 +331,23 @@
"docMenu": [
{
"name": "Support",
"path": "https://calliope.cc/faq"
"path": "https://calliope.cc/en/impressum"
},
{
"name": "Reference",
"path": "/reference"
"path": "/about"
},
{
"name": "Hardware",
"path": "/device"
"path": "https://calliope.cc/en/calliope-mini/tech-facts/"
},
{
"name": "Buy",
"path": "https://shop.calliope.cc/"
},
{
"name": "Forum",
"path": "https://forum.calliope.cc/"
}
],
"hasReferenceDocs": false,
@ -357,10 +357,10 @@
"monacoToolbox": true,
"hasAudio": true,
"socialOptions": {
"orgTwitterHandle": "MSMakeCode",
"hashtags": "MakeCode",
"discourse": "https://forum.makecode.com/",
"discourseCategory": "micro:bit"
"orgTwitterHandle": "calliopemini",
"hashtags": "calliopemini",
"discourse": "https://forum.calliope.cc/",
"discourseCategory": "Probleme-Software"
},
"blocklyOptions": {
"grid": {

View File

@ -46,13 +46,10 @@
"KitronikLtd/pxt-kitronik-stopbit",
"KitronikLtd/pxt-kitronik-lampbit",
"KitronikLtd/pxt-kitronik-klimate",
"KitronikLtd/pxt-kitronik-zip-64",
"KitronikLtd/pxt-kitronik-rtc",
"KitronikLtd/pxt-kitronik-game-controller",
"KitronikLtd/pxt-kitronik-robotics-board",
"KitronikLtd/pxt-kitronik-klef-piano",
"Seeed-Studio/pxt-grove",
"Seeed-Studio/pxt-grove-zero-for-microbit",
"Tinkertanker/pxt-ir-receiver",
"Tinkertanker/pxt-iot-environment-kit",
"Tinkertanker/pxt-motorbit",
@ -73,46 +70,16 @@
"CoderDojoOlney/pxt-olney",
"PaulDFoster/pxt-microbit-GY521",
"chevyng/pxt-ucl-junkrobot",
"srs/pxt-bitbot",
"sparkfun/pxt-gamer-bit",
"sparkfun/pxt-moto-bit",
"sparkfun/pxt-weather-bit",
"sparkfun/pxt-gator-environment",
"minodekit/pxt-minode",
"LaboratoryForPlayfulComputation/pxt-BlockyTalkyBLE",
"mbitfun/pxt-katakana",
"jdarling/pxt-pca9685",
"MUSELAB/pxt-wifi-shield",
"kittenbot/pxt-robotbit",
"pizayanz/pxt-linebeacon",
"sunfounder/pxt-sloth",
"4tronix/BitBot",
"pimoroni/pxt-scrollbit",
"emwta/pxt-iBit",
"vengit/pxt-sbrick",
"pimoroni/pxt-envirobit",
"Annikken/pxt-Andee",
"1010Technologies/pxt-makerbit",
"1010Technologies/pxt-makerbit-motor",
"1010Technologies/pxt-makerbit-mp3",
"1010Technologies/pxt-makerbit-ultrasonic",
"1010Technologies/pxt-makerbit-lcd1602",
"1010Technologies/pxt-makerbit-ir-receiver",
"1010Technologies/pxt-makerbit-touch",
"1010Technologies/pxt-makerbit-pins",
"pimoroni/pxt-automationbit",
"k8robotics/pxt-k8",
"dexterind/pxt-giggle",
"dexterind/pxt-gigglebot",
"Imagimaker/pxt-imagimaker",
"sparkfun/pxt-gator-light",
"sparkfun/pxt-gator-temp",
"4tronix/Robobit",
"alsrobot-microbit-makecode-packages/ALSRobotJoyBit",
"alsrobot-microbit-makecode-packages/ALSRobotKeyboard",
"alsrobot-microbit-makecode-packages/ALSRobotElectromagnet",
"alsrobot-microbit-makecode-packages/CooCoo",
"alsrobot-microbit-makecode-packages/CruiseBit",
"makecode-extensions/i2cLCD1602",
"makecode-extensions/OLED12864_I2C",
"makecode-extensions/DS1307",
@ -128,47 +95,21 @@
"makecode-extensions/TM1650",
"makecode-extensions/NTC",
"makecode-extensions/DS1302",
"BirdBrainTechnologies/pxt-hummingbird-bit",
"PiSupply/pxt-iot-lora-node",
"PiSupply/pxt-tinker-kit",
"PiSupply/pxt-bitbuggy",
"PiSupply/pxt-oled-ssd1306",
"pimoroni/pxt-touchbit",
"4tronix/cubebit",
"4tronix/BitCommander",
"alankrantas/pxt-MAX7219_8x8",
"ReRoKit/pxt-reromicro",
"51bit/ColorBit",
"51bit/SFC",
"51bit/SmartTools",
"alankrantas/pxt-MAX7219_8x8",
"KitronikLtd/pxt-kitronik-zip-tile",
"lwchkg/pxt-proportional-font",
"jcubuntu/pxt-iKB1",
"KitronikLtd/pxt-kitronik-accessbit",
"kaku111/pxt-tobbieII",
"alankrantas/pxt-DHT11_DHT22",
"cgs-matthew-pham/pxt-hitechnic-irseeker-v2",
"Freenove/Makecode-Extension-Rover",
"letstalkscience/pxt-cozir",
"e-radionicacom/pxt-wifi",
"monkmakes/pxt-sensor",
"beyond-coding-tw/pxt-nexusbot",
"elecfreaks/pxt-cutebot",
"KitronikLtd/pxt-kitronik-fischertechnik",
"keigan-motor/pxt-KeiganMotor",
"KitronikLtd/pxt-kitronik-klip-motor",
"alankrantas/pxt-ESP8266_ThingSpeak",
"KitronikLtd/pxt-kitronik-viewtext32",
"plenprojectcompany/pxt-PLENbit",
"4tronix/MiniBit",
"elecfreaks/pxt-wukong",
"sparkfun/pxt-gator-particle",
"sparkfun/pxt-gator-soil",
"sparkfun/pxt-gator-microphone",
"rebeccaclavier/pxt-bmp280",
"xinabox/pxt-SW01",
"xinabox/pxt-OD01",
"51bit/dfplayermini",
"makecode-extensions/STTS751",
"makecode-extensions/LSM6DSO",
@ -177,37 +118,39 @@
"makecode-extensions/LIS2MDL",
"makecode-extensions/HTS221",
"assirati/pxt-inventura",
"Veilkrand/pxt-RobotCar",
"4tronix/DriveBit",
"Freenove/Makecode-Extension-Starter-Kit",
"sphero-inc/sphero-sdk-microbit-makecode",
"BrightWearables/pxt-microbit-brightboard",
"EBOTICS/pxt-eboticsMIBO",
"KitronikLtd/pxt-kitronik-halohd",
"dugbraden/pxt-climate-action-kit",
"alsrobot-microbit-makecode-packages/MiniCruise",
"4tronix/ServoBit",
"DFRobot/pxt-maqueen",
"DFRobot/pxt-DFRobot-microIoT",
"mu-opensource/pxt-muvision",
"KitronikLtd/pxt-kitronik-clip-detector",
"DFRobot/pxt-DFRobot-NaturalScience",
"strawbees/pxt-robotic-inventions",
"daferdur/pxt-myHX711",
"CytronTechnologies/pxt-edubit",
"MakeAndLearn/pxt-microshield",
"elecfreaks/pxt-TPBot"
],
"preferredRepos": [
"Microsoft/pxt-neopixel",
"calliope-edu/pxt-grove",
"tinysuperlab/motionkit",
"tinysuperlab/touchkit",
"MKleinSB/pxt-seeed-temperature",
"MKleinSB/pxt-dht11",
"MKleinSB/pxt-esp-thingspeak",
"MKleinSB/pxt-OLED-SSD1306",
"MKleinSB/pxt-pca9685",
"MKleinSB/pxt-mpr121",
"MKleinSB/pxt-gatorlog-calliope",
"MKleinSB/pxt-callibot",
"dl1ekm/pxt-calliope-ADS1x15",
"dl1ekm/pxt-calliope-PCF85063-RTC"
],
"preferredRepos": [
"tinysuperlab/motionkit",
"tinysuperlab/touchkit",
"calliope-edu/pxt-grove",
"Microsoft/pxt-microturtle",
"MKleinSB/pxt-OLED-SSD1306",
"MKleinSB/pxt-iot-lora-node",
"kittenbot/pxt-robotbit",
"MKleinSB/pxt-foldio"
"MKleinSB/pxt-foldio",
"MKleinSB/pxt-seeed-temperature",
"MKleinSB/pxt-dht11",
"MKleinSB/pxt-esp-thingspeak",
"Microsoft/pxt-neopixel",
"MKleinSB/pxt-pca9685",
"MKleinSB/pxt-mpr121",
"MKleinSB/pxt-gatorlog-calliope",
"MKleinSB/pxt-callibot",
"dl1ekm/pxt-calliope-ADS1x15",
"dl1ekm/pxt-calliope-PCF85063-RTC"
]
},
"galleries": {

View File

@ -69,6 +69,11 @@
}
}
.ui.searchdialog .ui.card .ui.cardimage.upload {
margin: auto;
padding: 25% 0;
}
/* Mobile */
@media only screen and (max-width: @largestMobileScreen) {
#filelist {