Compare commits

..

12 Commits

Author SHA1 Message Date
1ceec1d3b4 0.4.20 2016-10-01 20:59:44 +02:00
2e9ddb48df 0.4.19 2016-10-01 20:58:45 +02:00
2296220ad7 updated logos 2016-09-29 16:23:37 -07:00
22864bd26a pointing to cloud compile service 2016-09-29 16:13:33 -07:00
574a9e01d5 updating pinmap 2016-09-29 15:25:57 -07:00
00278036a4 fixing pin mapping 2016-09-29 15:20:45 -07:00
4b583e221b limited support for RGB led 2016-09-27 13:35:48 -07:00
c88645d0cd support for AB / Shake buttons 2016-09-27 11:00:21 -07:00
14e8eabd25 updated simulator ratio, domain names 2016-09-27 09:35:52 -07:00
5fab789763 merging microbit 2016-09-26 22:00:04 -07:00
33eca3c507 tweaked colors 2016-09-26 15:10:37 -07:00
9ccfcf19d9 initial round of visual updates 2016-09-26 15:05:06 -07:00
70 changed files with 2541 additions and 904 deletions

View File

@ -9,7 +9,7 @@ script:
- "(cd libs/lang-test1; node ../../node_modules/pxt-core/built/pxt.js test)"
- "node node_modules/pxt-core/built/pxt.js testdir tests"
- "node node_modules/pxt-core/built/pxt.js uploaddoc"
- "(cd libs/hello; node ../../node_modules/pxt-core/built/pxt.js testconv https://az851932.vo.msecnd.net/files/td-converter-tests-v1.json)"
- "(cd libs/hello; node ../../node_modules/pxt-core/built/pxt.js testconv https://az851932.vo.msecnd.net/files/td-converter-tests-v0.json)"
sudo: false
notifications:
email:

View File

@ -13,13 +13,10 @@ export function deployCoreAsync(res: ts.pxtc.CompileResult) {
return getBitDrivesAsync()
.then(drives => {
if (drives.length == 0) {
let msg = "cannot find any drives to deploy to";
console.log(msg);
return Promise.reject(new Error(msg));
console.log("cannot find any drives to deploy to")
} else {
console.log(`copy ${ts.pxtc.BINARY_HEX} to ` + drives.join(", "))
}
console.log(`copy ${ts.pxtc.BINARY_HEX} to ` + drives.join(", "))
return Promise.map(drives, d =>
writeFileAsync(d + ts.pxtc.BINARY_HEX, res.outfiles[ts.pxtc.BINARY_HEX])
.then(() => {

View File

@ -1,6 +1,13 @@
<script type="text/javascript">
var appInsights=window.appInsights||function(config){
function r(config){t[config]=function(){var i=arguments;t.queue.push(function(){t[config].apply(t,i)})}}var t={config:config},u=document,e=window,o="script",s=u.createElement(o),i,f;for(s.src=config.url||"//az416426.vo.msecnd.net/scripts/a/ai.0.js",u.getElementsByTagName(o)[0].parentNode.appendChild(s),t.cookie=u.cookie,t.queue=[],i=["Event","Exception","Metric","PageView","Trace"];i.length;)r("track"+i.pop());return r("setAuthenticatedUserContext"),r("clearAuthenticatedUserContext"),config.disableExceptionTracking||(i="onerror",r("_"+i),f=e[i],e[i]=function(config,r,u,e,o){var s=f&&f(config,r,u,e,o);return s!==!0&&t["_"+i](config,r,u,e,o),s}),t
}({
instrumentationKey:"e9ae05ca-350b-427a-9775-3ba3f6efabce"
});window.appInsights=appInsights;
</script>
<script type="text/javascript">
(function(e,b){if(!b.__SV){var a,f,i,g;window.mixpanel=b;b._i=[];b.init=function(a,e,d){function f(b,h){var a=h.split(".");2==a.length&&(b=b[a[0]],h=a[1]);b[h]=function(){b.push([h].concat(Array.prototype.slice.call(arguments,0)))}}var c=b;"undefined"!==typeof d?c=b[d]=[]:d="mixpanel";c.people=c.people||[];c.toString=function(b){var a="mixpanel";"mixpanel"!==d&&(a+="."+d);b||(a+=" (stub)");return a};c.people.toString=function(){return c.toString(1)+".people (stub)"};i="disable time_event track track_pageview track_links track_forms register register_once alias unregister identify name_tag set_config reset people.set people.set_once people.increment people.append people.union people.track_charge people.clear_charges people.delete_user".split(" ");
for(g=0;g<i.length;g++)f(c,i[g]);b._i.push([a,e,d])};b.__SV=1.2;a=e.createElement("script");a.type="text/javascript";a.async=!0;a.src="undefined"!==typeof MIXPANEL_CUSTOM_LIB_URL?MIXPANEL_CUSTOM_LIB_URL:"file:"===e.location.protocol&&"//cdn.mxpnl.com/libs/mixpanel-2-latest.min.js".match(/^\/\//)?"https://cdn.mxpnl.com/libs/mixpanel-2-latest.min.js":"//cdn.mxpnl.com/libs/mixpanel-2-latest.min.js";f=e.getElementsByTagName("script")[0];f.parentNode.insertBefore(a,f)}})(document,window.mixpanel||[]);
mixpanel.init("762fef19c053a0ea4cec43d2fecae76e", { disable_persistence: true });
if (pxtConfig) mixpanel.register({ target: pxtConfig.targetId, version: pxtConfig.targetVersion });
mixpanel.init("762fef19c053a0ea4cec43d2fecae76e");
</script>

View File

@ -1,6 +1,13 @@
<script type="text/javascript">
var appInsights=window.appInsights||function(config){
function r(config){t[config]=function(){var i=arguments;t.queue.push(function(){t[config].apply(t,i)})}}var t={config:config},u=document,e=window,o="script",s=u.createElement(o),i,f;for(s.src=config.url||"//az416426.vo.msecnd.net/scripts/a/ai.0.js",u.getElementsByTagName(o)[0].parentNode.appendChild(s),t.cookie=u.cookie,t.queue=[],i=["Event","Exception","Metric","PageView","Trace"];i.length;)r("track"+i.pop());return r("setAuthenticatedUserContext"),r("clearAuthenticatedUserContext"),config.disableExceptionTracking||(i="onerror",r("_"+i),f=e[i],e[i]=function(config,r,u,e,o){var s=f&&f(config,r,u,e,o);return s!==!0&&t["_"+i](config,r,u,e,o),s}),t
}({
instrumentationKey:"e9ae05ca-350b-427a-9775-3ba3f6efabce"
});window.appInsights=appInsights;
</script>
<script type="text/javascript">
(function(e,b){if(!b.__SV){var a,f,i,g;window.mixpanel=b;b._i=[];b.init=function(a,e,d){function f(b,h){var a=h.split(".");2==a.length&&(b=b[a[0]],h=a[1]);b[h]=function(){b.push([h].concat(Array.prototype.slice.call(arguments,0)))}}var c=b;"undefined"!==typeof d?c=b[d]=[]:d="mixpanel";c.people=c.people||[];c.toString=function(b){var a="mixpanel";"mixpanel"!==d&&(a+="."+d);b||(a+=" (stub)");return a};c.people.toString=function(){return c.toString(1)+".people (stub)"};i="disable time_event track track_pageview track_links track_forms register register_once alias unregister identify name_tag set_config reset people.set people.set_once people.increment people.append people.union people.track_charge people.clear_charges people.delete_user".split(" ");
for(g=0;g<i.length;g++)f(c,i[g]);b._i.push([a,e,d])};b.__SV=1.2;a=e.createElement("script");a.type="text/javascript";a.async=!0;a.src="undefined"!==typeof MIXPANEL_CUSTOM_LIB_URL?MIXPANEL_CUSTOM_LIB_URL:"file:"===e.location.protocol&&"//cdn.mxpnl.com/libs/mixpanel-2-latest.min.js".match(/^\/\//)?"https://cdn.mxpnl.com/libs/mixpanel-2-latest.min.js":"//cdn.mxpnl.com/libs/mixpanel-2-latest.min.js";f=e.getElementsByTagName("script")[0];f.parentNode.insertBefore(a,f)}})(document,window.mixpanel||[]);
mixpanel.init("762fef19c053a0ea4cec43d2fecae76e", { disable_persistence: true });
if (pxtConfig) mixpanel.register({ target: pxtConfig.targetId, version: pxtConfig.targetVersion });
mixpanel.init("762fef19c053a0ea4cec43d2fecae76e");
</script>

View File

@ -13,8 +13,14 @@ Music
## Prior learning/place of lesson in scheme of work
Learn how to convert your BBC micro:bit into a music player using pins P0 and GND, earphones (or speakers), as well as crocodile clips (or spring clips).
We will be learning how to code musical notes using simple commands such as play, keys, and notes.
Learn how to convert your BBC micro:bit into a music player using pins P0 and GND, earphones (or speakers), as well as crocodile clips (or spring clips). We will be learning how to code musical notes using simple commands such as play, keys, and notes.
## What the teacher needs to know / QuickStart Computing Glossary
* Hardware: The physical systems and components of digital devices; see also software.
* Programmable toys: Robots designed for children to use, accepting input, storing short sequences of simple instructions and moving according to this stored program.
* Program: A stored set of instructions encoded in a language understood by the computer that does some form of computation, processing input and/or stored data to generate output.
* Simulation: Using a computer to model the state and behaviour of real-world (or imaginary) systems, including physical or social systems; an integral part of most computer games.
## Objectives

View File

@ -1,5 +1,7 @@
# hero
make a game to test hand-eye coordination.
Make a game to test hand-eye coordination
* [activity](/lessons/hero/activity)

View File

@ -2,9 +2,6 @@
Here are some cool projects that you can build with your micro:bit!
## Games
Fun games to build with your micro:bit.
```codecard
[{
@ -23,42 +20,18 @@ Fun games to build with your micro:bit.
"name": "Rock Paper Scissors",
"url":"/projects/rock-paper-scissors",
"imageUrl":"/static/mb/projects/a4-motion.png"
}]
```
## Maker, Arts, Fashion
```codecard
[{
"name": "Hack your headphones",
"url":"/projects/hack-your-headphones",
"imageUrl":"/static/mb/projects/a6-music.png"
}, {
"name": "Banana keyboard",
"url":"/projects/banana-keyboard",
"imageUrl":"/static/mb/projects/a7-conductive.png"
}, {
"name": "Guitar",
"url":"/projects/guitar",
"imageUrl":"/static/mb/projects/guitar.png"
}, {
"name": "Watch",
"url":"/projects/the-watch",
"imageUrl":"/static/mb/projects/a10-watch.png"
}, {
"name": "Timing gates",
"url":"/projects/timing-gates",
"imageUrl":"/static/mb/projects/timing-gates.jpg"
}]
```
## More
```codecard
[{
},{
"name": "Compass",
"url":"/projects/compass",
"imageUrl":"/static/mb/projects/a5-compass.png"
},{
"name": "Hack your headphones",
"url":"/projects/hack-your-headphones",
"imageUrl":"/static/mb/projects/a6-music.png"
},{
"name": "Banana keyboard",
"url":"/projects/banana-keyboard",
"imageUrl":"/static/mb/projects/a7-conductive.png"
},{
"name": "Telegraph",
"url":"/projects/telegraph",
@ -67,9 +40,13 @@ Fun games to build with your micro:bit.
"name": "Radio",
"url":"/projects/radio",
"imageUrl":"/static/mb/projects/a9-radio.png"
},{
"name": "Watch",
"url":"/projects/the-watch",
"imageUrl":"/static/mb/projects/a10-watch.png"
}]
```
### See Also
[Flashing Heart](/projects/flashing-heart), [Smiley Buttons](/projects/smiley-buttons), [Love Meter](/projects/love-meter), [Rock Paper Scissors](/projects/rock-paper-scissors), [Compass](/projects/compass), [Hack your headphones](/projects/hack-your-headphones), [Banana keyboard](/projects/banana-keyboard), [Telegraph](/projects/telegraph), [Radio](/projects/radio), [Guitar](/projects/guitar), [Watch](/projects/the-watch)
[Flashing Heart](/projects/flashing-heart), [Smiley Buttons](/projects/smiley-buttons), [Love Meter](/projects/love-meter), [Rock Paper Scissors](/projects/rock-paper-scissors), [Compass](/projects/compass), [Hack your headphones](/projects/hack-your-headphones), [Banana keyboard](/projects/banana-keyboard), [Telegraph](/projects/telegraph), [Radio](/projects/radio), [Watch](/projects/the-watch)

View File

@ -1,4 +1,10 @@
# banana keyboard - beat box
# banana keyboard blocks challenges
control images with variables.
## Before we get started
Control images with variables.
Have you ever tried to making beat box sounds? Let's try making a beatbox with code!
@ -29,7 +35,7 @@ input.onPinPressed(TouchPin.P1, () => {
```
* click *Download* to see if the code works as expected.
* click *run* to see if the code works as expected.
@ -51,4 +57,8 @@ input.onPinPressed(TouchPin.P2, () => {
})
```
* click *Download* to see if the code works as expected.
* click *run* to see if the code works as expected.
### ~button /projects/telegraph
NEXT: Telegraph
### ~

View File

@ -1,16 +1,12 @@
# banana keyboard
# banana keyboard activity
### @description A beginner maker activity, building a piano from bananas.
build a banana keyboard
### ~avatar
Build your own micro:bit piano using bananas!
### ~
# micro:bit banana keyboard
![](/static/mb/lessons/banana-keyboard-0.png)
## Duration: ~20 minutes.
In this project, you will build your own music player micro:bit banana keyboard from household fruit. Project duration: 15 minutes.
## Materials
@ -19,11 +15,86 @@ Build your own micro:bit piano using bananas!
* Orange
* Crocodile clips
## Activities
## Steps
* [Making the keyboard](/projects/banana-keyboard/making)
* [Beat box](/projects/banana-keyboard/beat-box)
### Step 1
![](/static/mb/lessons/banana-keyboard-1.png)
Using the 1st crocodile clip, connect the end of the crocodile clip onto GND pin on the micro:bit.
### Step 2
![](/static/mb/lessons/banana-keyboard-2.png)
![](/static/mb/lessons/banana-keyboard-3.png)
Using the 2nd crocodile clip, connect the end of the crocodile clip onto the 0 pin on the micro:bit.
### Step 3
![](/static/mb/lessons/banana-keyboard-4.png)
Using the 1st crocodile clip, connect the second end of the crocodile clip onto based of the headphone jack.
### Step 4
![](/static/mb/lessons/banana-keyboard-5.png)
![](/static/mb/lessons/banana-keyboard-6.png)
Using the 2nd crocodile clip, connect the second end of the crocodile clip onto tip of the headphone jack.
### Step 5
![](/static/mb/lessons/banana-keyboard-7.png)
Using the 3rd crocodile clip, connect the end of the crocodile clip onto the 1st crocodile clip already clipped onto GND.
### Step 6
![](/static/mb/lessons/banana-keyboard-8.png)
![](/static/mb/lessons/banana-keyboard-9.png)
Using the 3rd crocodile clip, connect the unattached end of the crocodile clip onto the orange.
### Step 7
![](/static/mb/lessons/banana-keyboard-10.png)
Using the 4th crocodile clip, connect the end of the crocodile clip onto pin 1 on the micro:bit.
### Step 8
![](/static/mb/lessons/banana-keyboard-11.png)
Using the 4th crocodile clip, connect the unattached end of the crocodile clip onto the banana.
### Step 9
![](/static/mb/lessons/banana-keyboard-12.png)
Your banana keyboard is ready!
### Step 10
Connect your micro:bit to your computer using your USB cable and run this script:
```blocks
let sound = music.noteFrequency(Note.C);
input.onPinPressed(TouchPin.P1, () => {
for (let i = 0; i < 5; i++) {
sound = sound + 25;
music.playTone(sound, music.beat(BeatFraction.Sixteenth));
}
});
```
Tap your banana instrument to play sound against... the fruit!
### ~avatar boothing
Excellent, you're ready to continue with the [challenges](/projects/banana-keyboard-challenges)!
### ~button /projects/banana-keyboard/making
Let's get started!
### ~

View File

@ -1,85 +0,0 @@
# banana keyboard - making
## Materials
* micro:bit, battery holder and 2 AAA batteries
* Bananas
* Orange
* Crocodile clips
## Steps
### Step 1
![](/static/mb/lessons/banana-keyboard-1.png)
Using the 1st crocodile clip, connect the end of the crocodile clip onto GND pin on the micro:bit.
### Step 2
![](/static/mb/lessons/banana-keyboard-2.png)
![](/static/mb/lessons/banana-keyboard-3.png)
Using the 2nd crocodile clip, connect the end of the crocodile clip onto the 0 pin on the micro:bit.
### Step 3
![](/static/mb/lessons/banana-keyboard-4.png)
Using the 1st crocodile clip, connect the second end of the crocodile clip onto based of the headphone jack.
### Step 4
![](/static/mb/lessons/banana-keyboard-5.png)
![](/static/mb/lessons/banana-keyboard-6.png)
Using the 2nd crocodile clip, connect the second end of the crocodile clip onto tip of the headphone jack.
### Step 5
![](/static/mb/lessons/banana-keyboard-7.png)
Using the 3rd crocodile clip, connect the end of the crocodile clip onto the 1st crocodile clip already clipped onto GND.
### Step 6
![](/static/mb/lessons/banana-keyboard-8.png)
![](/static/mb/lessons/banana-keyboard-9.png)
Using the 3rd crocodile clip, connect the unattached end of the crocodile clip onto the orange.
### Step 7
![](/static/mb/lessons/banana-keyboard-10.png)
Using the 4th crocodile clip, connect the end of the crocodile clip onto pin 1 on the micro:bit.
### Step 8
![](/static/mb/lessons/banana-keyboard-11.png)
Using the 4th crocodile clip, connect the unattached end of the crocodile clip onto the banana.
### Step 9
![](/static/mb/lessons/banana-keyboard-12.png)
Your banana keyboard is ready!
### Step 10
Connect your micro:bit to your computer using your USB cable and run this script:
```blocks
input.onPinPressed(TouchPin.P1, () => {
music.playTone(music.noteFrequency(Note.C), music.beat(BeatFraction.Quarter));
});
```
Tap your banana instrument to play sound against... the fruit!
### ~button /projects/banana-keyboard/beat-box
NEXT: beat box
### ~

View File

@ -103,3 +103,7 @@ basic.forever(() => {
}
});
```
### ~button /projects/hack-your-headphones
NEXT: Hack Your Headphones
### ~

View File

@ -113,3 +113,7 @@ basic.clearScreen();
basic.pause(500);
})
```
### ~button /projects/smiley-buttons
NEXT: Smiley Buttons
### ~

View File

@ -1,12 +1,10 @@
# Guitar
![guitar icon](/static/mb/projects/guitar.png)
### @description A beginner-intermediate maker activity, building a guitar with the micro:bit
### ~avatar avatar
Make a micro:bit guitar with this guided tutorial!
Make a micro:bit guitar with this guided tutorial!
### ~
*playing micro:bit guitar*
@ -14,21 +12,19 @@ https://youtu.be/GYmdTFvxz80
## Duration
5 Activities, approx 30-45 min each based on familiarity with the coding concepts
5 Activities, approx 30-45 min each based on familiarity with the coding concepts
## Materials
* Cardboard large pieces (recycle!)
* Tape (masking, duct tape, and/or packing tape)
* Tape (masking, duct Tape, and/or packing tape)
* Markers and/or paint
* Aluminum Foil
* Scissors that can cut cardboard
* Scissors that can cut cardboard
* 1 micro:bit, battery holder and 2 AAA batteries
* 4-5 Crocodile clips
* Headphones
## Activities
* [Making the Guitar Body](/projects/guitar/making)
* [Buttons, Display & Sound](/projects/guitar/displaybuttons)
* [Light Sensor Tone control](/projects/guitar/lightsensor)
@ -36,7 +32,5 @@ https://youtu.be/GYmdTFvxz80
* [Pin Press Switch](/projects/guitar/pinpress)
### ~button /projects/guitar/making
Let's get started!
### ~

View File

@ -5,6 +5,7 @@
### ~avatar avatar
Use the Accelerometer to control guitar tempo
* Duration: 30 - 45 minutes
* Concepts:
* Gravity
* Acceleration
@ -17,8 +18,6 @@ Use the Accelerometer to control guitar tempo
### ~
## Duration: 30 - 45 minutes
*accelerometer controlled tempo*
https://youtu.be/h_gPkBaVkoo
TODO: add sound to video

View File

@ -2,7 +2,7 @@
### @description micro:bit guitar: using buttons with display and sound
### ~avatar avatar
Use Button Events to control LED Display and play Sound
Use Button Events to control LED Display and play Sound
* **Concepts:**
* Events
* Tone/Note
@ -42,8 +42,8 @@ music.rest(music.beat(BeatFraction.Whole))
music.beat(BeatFraction.Quarter)
```
## Step 1: Make a Smiley
Open [codethemicrobit.com](https://codethemicrobit.com) in your web browser
## Step 1: Make a Smiley
Open [codethemicrobit.com](https://codethemicrobit.com) in your web browser
```blocks
basic.showLeds(`
. # . # .
@ -53,14 +53,14 @@ Open [codethemicrobit.com](https://codethemicrobit.com) in your web browser
. # # # .
`);
```
From **Basics**, drag a **show LEDs** block into the coding area
* Create a face with LEDs
From **Basics**, drag a **show LEDs** block into the coding area
* Create a face with LEDs
![micro:bit USB connection](/static/mb/projects/guitar/connectmicrobit.jpg)
Connect your micro:bit to your computer via USB and click **`Download`**.
Follow the instructions to move the code to your micro:bit.
![micro:bit USB connection](/static/mb/projects/guitar/connectmicrobit.jpg)
Connect your micro:bit to your computer via USB and click **`Download`**.
Follow the instructions to move the code to your micro:bit.
## Step 2: Add Smiley LED Button Events
## Step 2: Add Smiley LED Button Events
```blocks
input.onButtonPressed(Button.A, () => {
basic.showLeds(`
@ -82,36 +82,36 @@ input.onButtonPressed(Button.B, () => {
})
```
From **Input**, drag an **on button 'A' pressed** block into the coding area
From **Input**, drag an **on button 'A' pressed** block into the coding area
* Snap the LED face into the block
* Snap the LED face into the block
* Create a 'B' button block with a different LED face
* Create a 'B' button block with a different LED face
* Download the code to your micro:bit and try the A & B buttons
* Download the code to your micro:bit and try the A & B buttons
## Step 3: Add Headphone Speakers using Crocodile clips
![crocodile clips attached to pins 0 and GND](/static/mb/projects/guitar/crocclipintoboard.jpg)
![crocodile clips attached to pins 0 and GND](/static/mb/projects/guitar/crocclipintoboard.jpg)
![crocodile clips attached to headphone jack](/static/mb/projects/guitar/jacktocrocs.jpg)
Connect **GND** to the **base of the headphone jack** using a second crocodile clip (usually black)
![crocodile clips attached to headphone jack](/static/mb/projects/guitar/jacktocrocs.jpg)
Connect **GND** to the **base of the headphone jack** using a second crocodile clip (usually black)
Connect **pin 0** to the **tip of the headphone jack** with a crocodile clip
Connect **pin 0** to the **tip of the headphone jack** with a crocodile clip
*attaching batteries and micro:bit*
https://youtu.be/zwRTmpKIaVU
Attach the micro:bit & battery-pack to the guitar body
*connecting headphone speaker*
https://youtu.be/ewyEW_U5G9M
Connect the headphones with crocodile clips
*attaching batteries and micro:bit*
https://youtu.be/zwRTmpKIaVU
Attach the micro:bit & battery-pack to the guitar body
*connecting headphone speaker*
https://youtu.be/ewyEW_U5G9M
Connect the headphones with crocodile clips
### ~hint
## The micro:bit can play music
The **play tone** block allows a range letter note tones from **C** to **B5**.
The **play tone** block allows a range letter note tones from **C** to **B5**.
Songs are played using sequences notes. Like the beginning of a birthday song (C, C, D, C, F, E).
```blocks
input.onButtonPressed(Button.A, () => {
@ -152,20 +152,20 @@ input.onButtonPressed(Button.B, () => {
`)
music.playTone(Note.G, music.beat(BeatFraction.Whole))
})
```
From **Music**, drag **play tone *C* for *1* beat** block under the **show leds** in **Button A Pressed**
```
From **Music**, drag **play tone *C* for *1* beat** block under the **show leds** in **Button A Pressed**
* modify **tone** by choosing a note (*letter*) and experiment with high and low pitches
* set **beat** to 1
**Repeat** for **Button B** event
**Download the code** to the micro:bit
* modify **tone** by choosing a note (*letter*) and experiment with high and low pitches
* set **beat** to 1
**Repeat** for **Button B** event
**Download the code** to the micro:bit
**Try the A & B buttons** with headphones and power connected
## Congratulations on completing the basic guitar!
**Challenge:** Create samples of longer music to play for each button instead of the single tone
## Congratulations on completing the basic guitar!
**Challenge:** Create Samples of longer music to play for each button instead of the single tone
* *Tip*: Search for "ABC music notation" or "Easy Music Notes" + the name of a song
## Extra

View File

@ -4,27 +4,28 @@
### ~avatar avatar
Use the Light Sensor to the control tone for this [Theremin](https://en.wikipedia.org/wiki/Theremin) inspired guitar
Use the Light Sensor to control guitar Tone
* **Duration:** 30 - 45 minutes
* **Concepts:**
* Inputs
* Light Intensity
* Tone/Frequency
* Ratio Mapping
* Forever Loop
* Math (multiplication) with code properties
### ~
* Math (multiplication) with code properties
* **Resources:**
* This guitar is inspired by the [Theremin](https://en.wikipedia.org/wiki/Theremin)
## Duration: 30 - 45 minutes
### ~
*playing tones with light sensor*
*playing tones with light sensor*
https://youtu.be/2cKg9pokVC4
## The micro:bit LEDs Light Sensors
## The micro:bit LEDs Light Sensors
- the micro:bit can detect external light level intensity reaching the LEDs
- the micro:bit can detect external light level intensity reaching the LEDs
- the light level block reports a reading of values 0 (*dark*) to 255 (*bright*)
- a **Forever Loop** is required to continually measure the current light level and control the tone
- a **Forever Loop** is required to continually use measure the current light level to control the tone
## Forever Loop
@ -46,70 +47,70 @@ basic.forever(() => {
})
```
**Build the blocks**
* From **Basic** drag a **forever loop** block into the coding area
* From **Led** drag a **plot bar graph** block into the **forever loop**
* From **Input** drag a **light level** block into **plot bar graph *of***
* From **Basic** drag a **forever loop** block into the coding area
* From **Led** drag a **plot bar graph** block into the **forever loop**
* From **Input** drag a **light level** block into **plot bar graph *of***
**Set the *plot bar graph* value *up to* = *255* **
**Set the *plot bar graph* value *up to* = *255* **
## Step 2: Test the light required to move the bar graph height
## Step 2: Test the light required to move the bar graph height
*graphing light input*
https://youtu.be/pqU7bTcfQ_s
Experiment to see the effect on graph height when the **plot bar graph** value ***up to*** is changed
*graphing light input*
https://youtu.be/pqU7bTcfQ_s
Experiment to see the effect on graph height when the **plot bar graph** value ***up to*** is changed
**255 is the maximum light input reading**, try numbers smaller than 255
**Find a value** that allows the graph to show 1 - 5 bars
**255 is the maximum light input reading**, try numbers smaller than 255
**Find a value** that allows the graph to show 1 - 5 bars
### ~hint
### Frequency
**Frequency** measured in Hz which are cycles per second or vibrations per second
* A healthy human ear can detect frequencies in the range of 20Hz to 20,000Hz.
* The micro:bit + headphones reliably produce detectable output ~50Hz - 6,000Hz.
### Frequency
**Frequency** measured in Hz which are cycles per second or vibrations per second
* A healthy human ear can detect frequencies in the range of 20Hz to 20,000Hz.
* The micro:bit + headphones reliably produce detectable output ~50Hz - 6,000Hz.
**261Hz** represents a C note
```blocks
music.playTone(261, music.beat(BeatFraction.Half))
```
**play tone** blocks can specify a numeric **Frequency**
by replacing the letter **C** note with a **number** block that has the value it represents
**play tone** blocks can specify a specific numeric **Frequency**
by replacing the letter note 261Hz represents a **C** note with a **number** block
```blocks
music.playTone(261, music.beat(BeatFraction.Half))
```
### ~
### ~
## Step 3: Multiply Frequency using Math blocks
```blocks
input.onButtonPressed(Button.A, () => {
music.playTone(261 * 2, music.beat(BeatFraction.Half))
})
```
Create a **play tone** block using a **Math** section, **multiplication** block to set *tone*
```
create a **play tone** block using a **Math** section, **multiplication** block to set *tone*
### Next
**Add** a **B** button block that multiplies the **261** tone by a number other than 2 to set tone
**Download the code to the micro:bit**
**Test the sound for multiples of the 261Hz *C* frequency**
### Next
**Add** a **B** button block that multiplies the **261** tone by a number other than 2 to set tone
**Download the code to the micro:bit**
**Test the sound for multiples of the 261Hz *C* frequency**
## Step 4: Control the Frequency with the light input
```blocks
basic.forever(() => {
music.playTone(input.lightLevel() * 25, music.beat(BeatFraction.Quarter))
})
```
**Create a *forever loop* containing a *play tone* block**
**Set *tone*, using *Math* multiplication block that multiplies *light level* input by 25**
or experiment with multipliers larger and smaller than 25
**Test light tone control on the guitar**
Cover the LEDs with your hand to vary light detected to control the tone
**Create a *forever loop* containing a *play tone* block**
**Set *tone*, using *Math* multiplication block that multiplies *light level* input by 25**
or experiment with multipliers larger and smaller than 25
**Test light tone control on the guitar**
Cover the LEDs with your hand to vary light detected to control the tone
## Good work, this guitar is sounding good!
**Challenge:** Create a variable for the light level multiplier that you can change using buttons (optional)
**Challenge:** Create a variable for the light level multiplier that you can change using buttons (optional)
### ~button /projects/guitar/accelerometer
NEXT: Accelerometer Beat control
### ~button /projects/guitar/accelerometer
NEXT: Accelerometer Beat control
### ~

View File

@ -1,5 +1,5 @@
# Making the Guitar Body
### @description Maker Project for Guitar Body for micro:bit
### @description Maker Project for Guitar Body for micro:bit
### ~avatar avatar
@ -11,9 +11,9 @@ Make the Guitar Body for your micro:bit Guitar
## Materials
* Cardboard large pieces (recycle!)
* Tape (masking, duct tape, and/or packing tape)
* Scissors that can cut cardboard
* Markers and/or paint
* Tape (masking, duct Tape, and/or packing tape)
* Scissors that can cut cardboard
* Markers and/or paint
![Materials: cardboard, tape, scissors, markers](/static/mb/projects/guitar/materials.jpg)
@ -28,7 +28,7 @@ the shape of your guitar
### ~hint
* Avoid small details that are difficult to cut into cardboard
* Unfolding a box gives longer pieces of cardboard and creases can be reinforced
* Unfolding a box gives longer pieces of cardboard, and creases can be reinforced
### ~
@ -39,21 +39,21 @@ https://youtu.be/aUQkrFoEank
## Step 3: Personalize the Guitar
Create unique styles using tape, markers, paint and other available materials (*calling all artists!*)
Create unique styling using tape, markers, paint and other available materials (*calling all artist!*)
*decorating the guitar*
https://youtu.be/zNAZTJeSxY8
Everyone can come up with a unique design!
Everyone can come up with a unique design!
![guitar design samples](/static/mb/projects/guitar/otherdesigns.jpg)
## Extra!
*strengthening the guitar*
*strengthening the guitar*
https://youtu.be/q0GkQdJmxjE
Strengthen the guitar next with an angled cardboard strip (*optional*).
Strengthen the guitar next with an angled cardboard strip (*optional*).
### ~button /projects/guitar/displaybuttons
NEXT: Buttons, Display and Sound
### ~

View File

@ -4,20 +4,17 @@
### ~avatar avatar
Use pin press to switch guitar play on/off
* **Duration:** approximately 45 minutes
* **Materials:**
* 2-3 Crocodile clips
* Concepts:
* Circuit
* Conductor
* Variable/Global-Variable
* Conditional: **`if`**, **`else`**
* Circuit
* Conductor
* Variable/Global-Variable
* Conditional: **`if`**, **`else`**
* Boolean: **`True`/`False`**
### ~
## Duration: approximately 45 minutes
## Materials:
2-3 Crocodile clips
## Blocks
```cards
@ -31,16 +28,16 @@ input.onPinPressed(TouchPin.P1, () => {})
### ~hint
## Circuits & Switches
* **Circuits** need a power supply (battery), a resister (like a LED) & a conductor (metal, water, hand)
* **Switches** turn electric power on by closing (completing) a circuit with a conductor so power can flow
* **Circuits** need a power supply (battery), a resister (like a LED) & a conductor (metal, water, hand)
* **Switches** turn electric power on by closing (completing) a circuit with a conductor so power can flow
**Metal foil and wires make excellent conductors**
**Metal foil and wires make excellent conductors**
**In this activity we use YOU to conduct electricity**
**to close the circuit that switches the guitar ON and OFF!**
**In this activity we use YOU to conduct electricity**
**to close the circuit that switches the guitar ON and OFF!**
### ~
## Step 1: Pin Press Test
## Step 1: Pin Press Test
```blocks
input.onPinPressed(TouchPin.P0, () => {
@ -52,34 +49,34 @@ input.onPinPressed(TouchPin.P1, () => {
input.onPinPressed(TouchPin.P2, () => {
basic.showNumber(2)
})
```
**Create the pin-press code**
```
**Create the pin-press code**
**Download the code** on the micro:bit
**Download the code** on the micro:bit
https://youtu.be/PAIU-vHqyGU
**Hold the micro:bit touching The GND pin with one hand**
**with the other hand alternately touch the 0, 1 and 2 pins**
https://youtu.be/PAIU-vHqyGU
**Hold the micro:bit touching The GND pin with one hand**
**with the other hand alternately touch the 0, 1 and 2 pins**
### ~hint
**The electric signal traveled from pins, between your hands to `GND` and the micro:bit detected the electric signal!**
### ~
**The electric signal traveled from pins, between your hands to `GND` and the micro:bit detected the electric signal!**
### ~
## Step 2: Installing conductive foil on the guitar
https://youtu.be/NX0ECcpXFes
**Add foil to the guitar body where it is easy to touch while playing**
## Step 2: Installing conductive foil on the guitar
https://youtu.be/NX0ECcpXFes
**Add foil to the guitar body where it is easy to touch while playing**
**Connect the foil to `GND` using a crocodile clip**
**Connect the foil to `GND` using a crocodile clip**
https://youtu.be/YkymZGNmkrE
**Add foil to the guitar neck**
**Connect the foil to `pin 1` using a crocodile clip**
https://youtu.be/YkymZGNmkrE
**Add foil to the guitar neck**
**Connect the foil to `pin 1` using a crocodile clip**
## Step 3: Add a switch to turn the guitar ON and OFF
**Using the `on` global variable we can switch the message on the micro:bit**
**between ON and OFF**
## Step 3: Add a switch to turn the guitar ON and OFF
**Using the `on` global variable we can switch the message on the micro:bit**
**between ON and OFF**
```blocks
let on = false
basic.forever(() => {
@ -96,11 +93,11 @@ input.onPinPressed(TouchPin.P1, () => {
on = true
}
})
```
**Create the ON/OFF switch code**
**Download the code on the micro:bit**
```
**Create the ON/OFF switch code**
**Download the code on the micro:bit**
**Test by touching `P1` to toggle the LED message between ON and OFF**
*Final code*
@ -123,9 +120,9 @@ basic.forever(() => {
input.onPinPressed(TouchPin.P1, () => {
on = !on;
})
```
## Now Play!
**Turn the guitar ON and OFF with a pin press on the connected foil by**
**touching both pieces of foil at the same time to connect the switches**
https://youtu.be/GYmdTFvxz80
```
## Now Play!
**Turn the guitar ON and OFF with a pin press on the connected foil**
**touching both pieces of foil at the same time to connect the switches**
https://youtu.be/GYmdTFvxz80

View File

@ -1,4 +1,6 @@
# hack your headphones - music of light
# hack your headphones challenges
Control sound with the light level.
### ~avatar avatar
@ -68,3 +70,7 @@ input.onButtonPressed(Button.A, () => {
```
* click **Download** and run your code on the micro:bit.
### ~button /projects/banana-keyboard
NEXT: Banana Keyboard
### ~

View File

@ -1,17 +1,12 @@
# hack your headphones
### @description A beginner maker activity, building a piano from bananas.
Hack your headphones
### ~avatar
Build your own music player micro:bit from headphones.
### ~
# micro:bit music
![](/static/mb/lessons/hack-your-headphones-0.png)
## Duration: ~15 minutes.
In this project, you will build your own music player micro:bit from headphones. Project duration: 15 minutes.
## Materials
@ -19,13 +14,48 @@ Build your own music player micro:bit from headphones.
* Headphones
* Crocodile clips
## Activities
## Steps
* [Connect your headphone](/projects/hack-your-headphone/making)
* [Play sounds!]()
### Step 1
### ~button /projects/hack-your-headphones/making
![](/static/mb/lessons/banana-keyboard-1.png)
Let's get started!
Using the 1st crocodile clip, connect the end of the crocodile clip onto GND pin on the micro:bit.
### Step 2
![](/static/mb/lessons/banana-keyboard-2.png)
![](/static/mb/lessons/banana-keyboard-3.png)
Using the 2nd crocodile clip, connect the end of the crocodile clip onto the 0 pin on the micro:bit.
### Step 3
![](/static/mb/lessons/banana-keyboard-4.png)
Using the 1st crocodile clip, connect the second end of the crocodile clip onto based of the headphone jack. The base of your headphone jack is considered the ground so it is connected to the GND of the micro:bit.
### Step 4
![](/static/mb/lessons/banana-keyboard-5.png)
![](/static/mb/lessons/hack-your-headphones-1.png)
Using the 2nd crocodile clip, connect the second end of the crocodile clip onto the tip of the headphone jack. The tip of your headphone jack feeds into the right speaker on the headphone. You connect from the micro:bit pin 0 to the tip of the right side of your headphone. Use the tip of the headphone jack to play sounds.
### Step 5
![](/static/mb/lessons/hack-your-headphones-0.png)
You hacked your headphones!
### Step 6
Connect your micro:bit to your computer using your USB cable and program [light beatbox](/projects/hack-your-headphones-challenges) music on it. Press the reset button to restart your music player!
### ~avatar avatar
Excellent, you're ready to continue with the [challenges](/projects/hack-your-headphones-challenges)!
### ~

View File

@ -1,47 +0,0 @@
# hack your headphones - making
### ~avatar avatar
Did you know you could attach your headhpones to the micro:bit to generate sounds?
### ~
### Step 1
![](/static/mb/lessons/banana-keyboard-1.png)
Using the 1st crocodile clip, connect the end of the crocodile clip onto GND pin on the micro:bit.
### Step 2
![](/static/mb/lessons/banana-keyboard-2.png)
![](/static/mb/lessons/banana-keyboard-3.png)
Using the 2nd crocodile clip, connect the end of the crocodile clip onto the 0 pin on the micro:bit.
### Step 3
![](/static/mb/lessons/banana-keyboard-4.png)
Using the 1st crocodile clip, connect the second end of the crocodile clip onto based of the headphone jack. The base of your headphone jack is considered the ground so it is connected to the GND of the micro:bit.
### Step 4
![](/static/mb/lessons/banana-keyboard-5.png)
![](/static/mb/lessons/hack-your-headphones-1.png)
Using the 2nd crocodile clip, connect the second end of the crocodile clip onto the tip of the headphone jack. The tip of your headphone jack feeds into the right speaker on the headphone. You connect from the micro:bit pin 0 to the tip of the right side of your headphone. Use the tip of the headphone jack to play sounds.
### Step 5
![](/static/mb/lessons/hack-your-headphones-0.png)
You hacked your headphones!
### ~button /projects/hack-your-headphones/music-of-light
NEXT: music of light
### ~

View File

@ -48,3 +48,7 @@ input.onPinPressed(TouchPin.P2, () => {
`);
});
```
### ~button /projects/rock-paper-scissors
NEXT: Rock Paper Scissors
### ~

View File

@ -89,6 +89,10 @@ Have fun reviewing your simulation and analyze the acceleration by chart the Exc
* Review and analyze the actual micro:bit device acceleration data on Excel
* Display acceleration with y or z using plot bar graph by changing acceleration from "x" to "y" or "z"
### ~button /projects/the-watch
NEXT: The Watch
### ~
```package
microbit-radio
```

View File

@ -236,3 +236,6 @@ input.onButtonPressed(Button.B, () => {
How else can you make your game better?
Ever hear of [Rock Paper Scissors Spock Lizard](http://www.samkass.com/theories/RPSSL.html)?
### ~button /projects/compass
NEXT: Compass
### ~

View File

@ -67,3 +67,7 @@ input.onButtonPressed(Button.B, () => {
. # # # .`);
});
```
### ~button /projects/love-meter
NEXT: Love Meter
### ~

View File

@ -1,10 +1,18 @@
# telegraph - manual telegraph
# telegraph activity
Let's build the code that will send a impulse while the user presses ``A``.
Build a telegraph.
# micro:bit telegraph
Have you ever tried to communicate through a telegraph? Let's try coding a "Telegraph" on two BBC micro:bits !
Complete the following [tutorial](/projects/telegraph), your hack should look like this:
![](/static/mb/lessons/telegraph-0.png)
### Step 1
We now need to digitally write to pin ``P0`` as **high** (1).
We now need to digitally write to the specified pin (P0) as digital. Let's start by adding the code in the pin drawer that includes 'digital write (0,1) to pin P0'.. Then insert 1 for digital write.
```blocks
pins.digitalWritePin(DigitalPin.P0, 1)
@ -13,8 +21,7 @@ pins.digitalWritePin(DigitalPin.P0, 1)
### Step 2
We want to add a block to turn on an LED in the middle area of the LED display using plot x, y.
So insert the appropriate LED plot x, y.
We want to add a block to turn on an LED in the middle area of the LED display using plot x, y. So insert the appropriate LED plot x, y.
```blocks
pins.digitalWritePin(DigitalPin.P0, 1)
@ -24,8 +31,7 @@ led.plot(2, 2)
### Step 3
We want to insert a condition that tells us when to turn on the LED. So insert the if block under logic drawer.
Then add a condition that occurs if we do not turn on a LED with plot x, y. We also should plot an LED on the display if button A is pressed. Your code should appear as follows:
We want to insert a condition that tells us when to turn on the LED. So insert the if block under logic drawer. Then add a condition that occurs if we do not turn on a LED with plot x, y. We also should plot an LED on the display if button A is pressed. Your code should appear as follows:
```blocks
if (input.buttonIsPressed(Button.A)) {
@ -39,7 +45,7 @@ if (input.buttonIsPressed(Button.A)) {
### Step 4
We want to write code if button A is NOT pressed. It is important to say that digital write is not on. We also want to turn off all the LED light.
We want to write code if button A is NOT pressed. It is important to say that digital write is not on. We also want to turn off all LED lights on the LED screen
```blocks
if (input.buttonIsPressed(Button.A)) {
@ -47,7 +53,7 @@ if (input.buttonIsPressed(Button.A)) {
led.plot(2, 2)
} else {
pins.digitalWritePin(DigitalPin.P0, 0)
led.unplot(2, 2)
basic.clearScreen()
}
```
@ -58,24 +64,27 @@ Let's add a forever loop so this code runs in the background forever. Modify you
```blocks
basic.forever(() => {
if (input.buttonIsPressed(Button.A)) {
pins.digitalWritePin(DigitalPin.P0, 1)
led.plot(2, 2)
} else {
pins.digitalWritePin(DigitalPin.P0, 0)
led.unplot(2, 2)
})
pins.digitalWritePin(DigitalPin.P0, 1)
led.plot(2, 2)
} else {
pins.digitalWritePin(DigitalPin.P0, 0)
basic.clearScreen()
}
})
```
### Step 6
We now need to digitally read to the specified pin (P1) as digital. Let's start by going to the pin drawer and adding digital read pin (0,1) and changing the pin to P1. Now we need to create a condition for digital read pin (0,1). So we go to the logic drawer and select the comparison operator. Then we want to set the comparison operator to 1 to turn on digital read on pin 1. We want to insert a condition that tells us if button A is pressed and we should turn on digital read on pin 1. So insert the if block under logic drawer. Then add a condition that occurs if digital read on P1 is on. Then we want to plot x, y at the x, y coordinates of 2,2. we also want to say that if digital read pin P1 is not on, we want to turn off all LED lights on the screen. Your code should appear as follows:
```blocks
if (pins.digitalReadPin(DigitalPin.P1) == 1) {
led.plot(4, 4);
led.plot(2, 2);
}
else {
led.unplot(4, 4);
basic.clearScreen();
}
basic.forever(() => {
if (input.buttonIsPressed(Button.A)) {
@ -99,3 +108,7 @@ Your telegraph is ready!
* Connect the first micro:bit to your computer using your USB cable and put the telegraph script on it.
* Connect the second micro:bit to your computer using your USB cable and run the telegraph script on it.
* The first person and second person take turns pressing button A to play the telegraph game!
### ~button /projects/radio
NEXT: Radio
### ~

View File

@ -1,25 +1,75 @@
# telegraph activity
Build a telgraph.
# micro:bit telegraph
![](/static/mb/lessons/telegraph-0.png)
### ~avatar
Build a telegraph between two micro:bits to communicate with your friends!
### ~
## Duration: ~30 minutes
In this project, you will build your telegraph between micro:bits. Project duration: 15 minutes.
## Materials
* micro:bit, battery holder and 2 AAA batteries
* Crocodile clips
## Activities
## Steps
* [Making the circuit](/projects/telegraph/making)
* [Manual telegraph](/projects/telegraph/manual-telegraph)
### Step 1
![](/static/mb/lessons/banana-keyboard-1.png)
Using the 1st crocodile clip, connect the end of the crocodile clip onto GND pin on the micro:bit.
### Step 2
![](/static/mb/lessons/ornament-chain-2.png)
Using the 2nd crocodile clip, connect the end of the crocodile clip onto the 3V pin on the micro:bit.
### Step 3
![](/static/mb/lessons/ornament-chain-3.png)
Using the 3rd crocodile clip, connect the end of the crocodile clip onto pin 1 of the micro:bit.
### Step 4
![](/static/mb/lessons/ornament-chain-4.png)
Using the 4th crocodile clip, connect the end of the crocodile clip onto pin 2 of the micro:bit.
### Step 5
![](/static/mb/lessons/ornament-chain-5.png)
Using the 1st crocodile clip, connect the unattached end of the crocodile clip onto the GND on the 2nd micro:bit.
### Step 6
![](/static/mb/lessons/ornament-chain-6.png)
Using the 2nd crocodile clip, connect the unattached end of the crocodile clip onto the 3V pin on the 2nd micro:bit.
### Step 7
![](/static/mb/lessons/ornament-chain-7.png)
Using the 3rd crocodile clip, connect the unattached end of the crocodile clip onto pin 2 of the 2nd micro:bit.
### Step 8
![](/static/mb/lessons/ornament-chain-8.png)
Using the 4th crocodile clip, connect the unattached end of the crocodile clip onto pin 1 of the 2nd micro:bit
### Step 9
![](/static/mb/lessons/telegraph-0.png)
### ~avatar avatar
Excellent, you're ready to continue with the [challenges](/projects/telegraph-challenges)!
### ~button /projects/telegraph/making
Let's get started!
### ~

View File

@ -1,75 +0,0 @@
# telegraph - making
### ~avatar
Let's build a telegraph between two micro:bits.
### ~
![](/static/mb/lessons/telegraph-0.png)
## Materials
* micro:bit, battery holder and 2 AAA batteries
* Crocodile clips
## Steps
### Step 1
![](/static/mb/lessons/banana-keyboard-1.png)
Using the 1st crocodile clip, connect the end of the crocodile clip onto GND pin on the micro:bit.
### Step 2
![](/static/mb/lessons/ornament-chain-2.png)
Using the 2nd crocodile clip, connect the end of the crocodile clip onto the 3V pin on the micro:bit.
### Step 3
![](/static/mb/lessons/ornament-chain-3.png)
Using the 3rd crocodile clip, connect the end of the crocodile clip onto pin 1 of the micro:bit.
### Step 4
![](/static/mb/lessons/ornament-chain-4.png)
Using the 4th crocodile clip, connect the end of the crocodile clip onto pin 2 of the micro:bit.
### Step 5
![](/static/mb/lessons/ornament-chain-5.png)
Using the 1st crocodile clip, connect the unattached end of the crocodile clip onto the GND on the 2nd micro:bit.
### Step 6
![](/static/mb/lessons/ornament-chain-6.png)
Using the 2nd crocodile clip, connect the unattached end of the crocodile clip onto the 3V pin on the 2nd micro:bit.
### Step 7
![](/static/mb/lessons/ornament-chain-7.png)
Using the 3rd crocodile clip, connect the unattached end of the crocodile clip onto pin 2 of the 2nd micro:bit.
### Step 8
![](/static/mb/lessons/ornament-chain-8.png)
Using the 4th crocodile clip, connect the unattached end of the crocodile clip onto pin 1 of the 2nd micro:bit
### Step 9
![](/static/mb/lessons/telegraph-0.png)
### ~button /projects/telegraph/manual-telegraph
NEXT: manual telegraph
### ~

View File

@ -1,231 +0,0 @@
# Timing gates
### ~avatar
This project explains the principles of timing gates using household materials.
### ~
## Timing gates
The two gates are connected to the micro:bit and can detect a car passing through.
![](/static/mb/projects/timing-gates/sketchgates.jpg "Sketch of the gates")
As the car passes through the gate ``0``, it sends an event to the micro:bit through the [on pin pressed](/reference/input/on-pin-pressed) block.
The micro:bit records the time in a variable ``t0``.
![](/static/mb/projects/timing-gates/sketchgate1.jpg "Sketch first gate")
As the car passes through the gate ``1``, it sends an event to the micro:bit through the [on pin pressed](/reference/input/on-pin-pressed) block.
The micro:bit records the time in a variable ``t1``.
![](/static/mb/projects/timing-gates/sketchgate2.jpg "Sketch first gate")
The rest is a bit of math and physics. The time taken to cross the gates is computed as the difference of ``t1 - t0``.
By dividing the distance between the gates by the duration, we get the speed of the car!
![](/static/mb/projects/timing-gates/sketchmath.jpg "Sketch math")
## Materials
* Carboard
* Aluminum fail
* Double-side tape (carpet tape)
* 4 crocodile clips
* A micro:bit board and USB cable
![](/static/mb/projects/timing-gates/materials.jpg "Materials")
## blocks
```cards
basic.showLeds(`
. . . . .
. . . . .
. . # . .
. . . . .
. . . . .
`)
input.onPinPressed(TouchPin.P0, () => {})
let t = 0
input.runningTime()
t - 1
control.eventTimestamp();
basic.showNumber(0)
```
## Building the gate
The sensor is made by tapping two strips of fail on the cardboard as close as possible.
Add two strips of double-sided tape on the cardboard. Remove the protective film.
![](/static/mb/projects/timing-gates/tape.jpg "Double sided tape")
Lay the Aluminum foil on the double-sided tape. Press firmly on the tape to get a good bonding of the foil.
![](/static/mb/projects/timing-gates/stickfoil.jpg "Foil sensor")
Strip the out foil around and between the tape strips. Make sure both foil strips don't touch each other.
![](/static/mb/projects/timing-gates/spreadfoil.jpg "Foil taped")
Connect a crocodile strip to each foil strip.
![](/static/mb/projects/timing-gates/connectsensor.jpg "Connecting sensor")
Connect the crocodile plugs to the ``GND`` and ``P0`` pins on the micro:bit.
![](/static/mb/projects/timing-gates/connectcrocs.jpg "Connecting the micro:bit")
The gate is ready to use! Your circuit should look like the picture below:
![](/static/mb/projects/timing-gates/sensordone.jpg "A single gate")
## Detecting the car with code
The micro:bit provides an event [on pin pressed](/reference/pins/on-pin-pressed)
that is raised when a circuit between ``GND`` and a pin is detected. The circuit conductor could be a wire or even your body!
We will attach a foil to the bottom of the car. When it passes over the gate, it connect both foil strips, close the circuit and trigger the event.
Open the [code editor](/) and start a new project and add the following blocks. Notice that we are using pin ``P0`` here.
```blocks
basic.showLeds(`
. . . . .
. . . . .
. . # . .
. . . . .
. . . . .
`)
input.onPinPressed(TouchPin.P0, () => {
basic.showLeds(`
# . . . .
# . . . .
# . . . .
# . . . .
# . . . .
`)
})
```
Testing the code with our finger, we see a LED column turn on when pressing both strips.
https://youtu.be/zi_-NAmdDpY
## Upgrading the car
In this lesson, we picked a random toy car and tapped foil to the bottom.
As the car goes through the gate, it will connect both sides of the gate and trigger it. Make sure to add enough foil to get a good connection on the ground.
![](/static/mb/projects/timing-gates/carfoil.jpg "Attaching foil to the car")
By moving the car (slowly) through the gate, you will see that it triggers the ``on pin pressed`` event.
https://youtu.be/M3DIUvDPlIA
### ~hint
It does not work always! Sometimes the foil does not touch long enough both strip to be detected. This is due to the poor quality of our sensor.
To fix this, you would have to consider using better sensors based on IR or Hall effect.
### ~
## Adding the second gate
Repeat the same process with tape and foil to build the first gate.
![](/static/mb/projects/timing-gates/sensor2.jpg "Double foil sensors")
Connect the crocodile plugs to the ``GND`` and ``P1`` pins on the micro:bit.
![](/static/mb/projects/timing-gates/sensormicrobit2.jpg "Sensor and microbit")
## Detecting the second gate
Since the second gate is connected to pin ``P1``, we add a second [on pin pressed](/reference/pins/on-pin-pressed) event
that display 2 columns of LEDs.
```blocks
basic.showLeds(`
. . . . .
. . . . .
. . # . .
. . . . .
. . . . .
`)
input.onPinPressed(TouchPin.P0, () => {
basic.showLeds(`
# . . . .
# . . . .
# . . . .
# . . . .
# . . . .
`)
})
input.onPinPressed(TouchPin.P1, () => {
basic.showLeds(`
# . . . #
# . . . #
# . . . #
# . . . #
# . . . #
`)
})
```
Strolling the car over both gates, you can see how the first gate triggers then the second.
https://youtu.be/N4bWQcu6yWs
## Computing time
The micro:bit has a clock that measures time precisely. It measures how many seconds the micro:bit has been on.
We will record the time where each gate is tripped in variables ``t0`` and ``t1``.
We take the different between ``t1`` and ``t0`` to compute the duration between the gates.
```blocks
let t0 = 0;
let t1 = 0;
basic.showLeds(`
. . . . .
. . . . .
. . # . .
. . . . .
. . . . .
`)
input.onPinPressed(TouchPin.P0, () => {
t0 = control.eventTimestamp();
basic.showLeds(`
# . . . .
# . . . .
# . . . .
# . . . .
# . . . .
`)
})
input.onPinPressed(TouchPin.P1, () => {
t1 = control.eventTimestamp();
basic.showLeds(`
# . . . #
# . . . #
# . . . #
# . . . #
# . . . #
`)
let d = t1 - t0
basic.showNumber(d)
})
```
https://youtu.be/piyym_ux1EM
## Computing velocity
Measure the distance between the gates and apply Newton's laws to compute the velocity of the car.
v = d / t
We'll let you try to code this one on your own!

View File

@ -23,16 +23,13 @@ Rather than just sharing the link, you can also embed the project so that your v
### General instructions
Select the kind of embedding you would like.
* Copy the HTML for embedding the page from the publish dialog. It will look like the following:
* **Screenshot** - a lightweight screenshot of the blocks that links to the snippet
* **Editor** - embedded editor with minimal UI
* **Simulator** - embedded simulator only
* **Command line** - specific instructions to unpack the project using the [command line](/cli) tools
```html
<div class="ui card sim"><div class="ui content"><div style="position:relative;height:0;padding-bottom:70%;overflow:hidden;"><iframe style="position:absolute;top:0;left:0;width:100%;height:100%;" src="https://codethemicrobit.com/?sandbox=1#pub:httuftrbtg" allowfullscreen="allowfullscreen" frameborder="0"></iframe></div></div></div>
```
Copy the HTML for embedding the page from the publish dialog. It will look like the following:
Open the HTML editor for your blog or website and paste it with your content
* Open the HTML editor for your blog or website and paste it with your content
### Wordpress

145
docs/static/Logo_Calliope_Woman.svg vendored Normal file
View File

@ -0,0 +1,145 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Generator: Adobe Illustrator 18.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
id="Ebene_1"
x="0px"
y="0px"
viewBox="0 0 175.49999 172.4"
enable-background="new 0 0 841.9 595.3"
xml:space="preserve"
inkscape:version="0.91 r13725"
sodipodi:docname="Logo_Calliope_Woman.svg"
width="175.5"
height="172.39999"><metadata
id="metadata5011"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs
id="defs5009" /><sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1137"
id="namedview5007"
showgrid="false"
inkscape:zoom="0.34208337"
inkscape:cx="420.95001"
inkscape:cy="297.64999"
inkscape:window-x="-8"
inkscape:window-y="156"
inkscape:window-maximized="1"
inkscape:current-layer="Ebene_1" /><g
id="g4955"
transform="translate(-260.90025,-204.1)"><g
id="g4957"><defs
id="defs4959"><rect
id="SVGID_7_"
x="193.10001"
y="204.10001"
width="318.29999"
height="256.29999" /></defs><clipPath
id="SVGID_1_"><use
xlink:href="#SVGID_7_"
overflow="visible"
id="use4963"
style="overflow:visible"
x="0"
y="0"
width="100%"
height="100%" /></clipPath></g><g
id="g4965"><defs
id="defs4967"><rect
id="SVGID_9_"
x="193.10001"
y="204.10001"
width="318.29999"
height="256.29999" /></defs><clipPath
id="SVGID_2_"><use
xlink:href="#SVGID_9_"
overflow="visible"
id="use4971"
style="overflow:visible"
x="0"
y="0"
width="100%"
height="100%" /></clipPath></g><g
id="g4973"><defs
id="defs4975"><rect
id="SVGID_11_"
x="193.10001"
y="204.10001"
width="318.29999"
height="256.29999" /></defs><clipPath
id="SVGID_3_"><use
xlink:href="#SVGID_11_"
overflow="visible"
id="use4979"
style="overflow:visible"
x="0"
y="0"
width="100%"
height="100%" /></clipPath><path
clip-path="url(#SVGID_3_)"
d="m 436.4,262 -47.9,0 0,-46 c 0,-4.7 3.8,-8.4 8.4,-8.4 l 31,0 c 4.7,0 8.4,3.8 8.4,8.4 l 0,46 z"
id="path4981"
inkscape:connector-curvature="0"
style="fill:#4a5261" /></g><rect
x="394.79999"
y="218.7"
width="35.099998"
height="43.200001"
id="rect4983"
style="fill:#8096a1" /><path
d="m 317.6,239.5 0,61 71,0.2 c 0,0 0,-57.3 0,-61 0,-19.5 -16.1,-35.6 -35.6,-35.6 -19.6,0 -35.4,15.8 -35.4,35.4"
id="path4985"
inkscape:connector-curvature="0"
style="fill:#855c33" /><path
d="m 412.4,376.5 -114.2,0 c -35.6,0 -50.9,-45.2 -22.6,-66.8 l 63.8,-47.8 96.9,0 0,90.7 c 0.1,13.2 -10.6,23.9 -23.9,23.9"
id="path4987"
inkscape:connector-curvature="0"
style="fill:#26a6ab" /><polygon
points="345.7,257.3 334.8,298.8 285.1,302.5 "
id="polygon4989"
style="fill:#42c9c9" /><polygon
points="354,283.8 332.5,283.8 345.7,257.3 "
id="polygon4991"
style="fill:#f7f5e8" /><polygon
points="375.4,283.8 354,283.8 362.2,257.3 "
id="polygon4993"
style="fill:#f7f5e8" /><polygon
points="373.1,298.8 334.8,298.8 332.5,283.8 375.4,283.8 "
id="polygon4995"
style="fill:#bdd1cf" /><path
d="m 400.6,376.5 c -3.5,-26.2 -10.6,-58 -27.3,-77.7 l -0.2,0 -19,0 -19,0 -0.2,0 c -16.7,19.8 -23.8,51.5 -27.3,77.7 l 93,0 z"
id="path4997"
inkscape:connector-curvature="0"
style="fill:#f7f5e8" /><path
d="m 357,258 -6.1,0 c -6.4,0 -11.5,-5.2 -11.5,-11.5 l 0,-19.7 29.2,0 0,19.7 c -0.1,6.3 -5.3,11.5 -11.6,11.5"
id="path4999"
inkscape:connector-curvature="0"
style="fill:#ffcc99" /><path
d="m 335.8,376.5 0,-77.7 c 12.4,29.1 27.7,64.3 46.5,77.7 l -46.5,0 z"
id="path5001"
inkscape:connector-curvature="0"
style="fill:#bdd1cf" /><polygon
points="362.2,257.3 345.7,257.3 354,283.8 "
id="polygon5003"
style="fill:#ffcc99" /><polygon
points="436.4,315.3 394.8,262 436.4,262 "
id="polygon5005"
style="fill:#42c9c9" /></g></svg>

After

Width:  |  Height:  |  Size: 5.2 KiB

70
docs/static/Logo_Calliope_lang.svg vendored Normal file
View File

@ -0,0 +1,70 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 18.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="Ebene_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 841.9 595.3" enable-background="new 0 0 841.9 595.3" xml:space="preserve">
<path fill="#4A5261" d="M406.9,292.9l0.2,0l5.6,17l-11.1,0.1L406.9,292.9z M402,281.8l-14.3,42.2l-3.5,0.5l0.1,5.8l16.5-0.1
l-0.1-5.8l-3.4-0.6l2.1-6.7l15.7-0.1l2.2,6.6l-3.3,0.6l0,5.8l16.5-0.2l0-5.8l-3.5-0.5l-15-41.9L402,281.8z"/>
<polygon fill="#4A5261" points="454.9,281.9 445.2,282 440,282 440.1,287.9 445.2,288.8 445.6,323.5 440.4,324.6 440.5,330.4
476.9,330.1 476.7,316.5 469.3,316.6 468.9,322.7 455.3,322.8 454.9,288.7 460.1,287.7 460.1,281.8 "/>
<polygon fill="#4A5261" points="501.6,281.9 491.9,282 486.7,282 486.8,287.9 491.9,288.8 492.2,323.5 487.1,324.6 487.2,330.4
523.6,330.1 523.4,316.5 516,316.6 515.6,322.7 501.9,322.8 501.6,288.7 506.8,287.7 506.8,281.8 "/>
<polygon fill="#4A5261" points="533.4,282 533.4,287.9 538.6,288.8 538.9,323.5 533.8,324.6 533.8,330.4 553.9,330.2 553.8,324.4
548.6,323.5 548.3,288.7 553.5,287.7 553.4,281.8 "/>
<polygon fill="#4A5261" points="674.9,282 669.7,282 669.8,287.9 674.9,288.8 675.2,323.5 670.1,324.6 670.2,330.4 708.4,330.1
708.3,316.8 700.9,316.9 700.6,322.7 684.9,322.8 684.8,309 701.2,308.8 701.1,301.4 684.7,301.5 684.6,289.4 700.1,289.2
700.6,295 708.1,294.9 707.9,281.7 "/>
<g>
<g>
<defs>
<rect id="SVGID_7_" x="133.2" y="204.1" width="234.3" height="188.7"/>
</defs>
<clipPath id="SVGID_1_">
<use xlink:href="#SVGID_7_" overflow="visible"/>
</clipPath>
</g>
<g>
<defs>
<rect id="SVGID_9_" x="133.2" y="204.1" width="234.3" height="188.7"/>
</defs>
<clipPath id="SVGID_2_">
<use xlink:href="#SVGID_9_" overflow="visible"/>
</clipPath>
</g>
<g>
<defs>
<rect id="SVGID_11_" x="133.2" y="204.1" width="234.3" height="188.7"/>
</defs>
<clipPath id="SVGID_3_">
<use xlink:href="#SVGID_11_" overflow="visible"/>
</clipPath>
<path clip-path="url(#SVGID_3_)" fill="#4A5261" d="M312.3,246.7H277v-33.8c0-3.4,2.8-6.2,6.2-6.2h22.9c3.4,0,6.2,2.8,6.2,6.2
V246.7z"/>
</g>
<rect x="281.8" y="214.8" fill="#8096A1" width="25.8" height="31.8"/>
<path fill="#855C33" d="M224.9,230.1V275l52.3,0.2c0,0,0-42.2,0-44.9c0-14.4-11.8-26.2-26.2-26.2
C236.6,204.1,224.9,215.7,224.9,230.1"/>
<path fill="#26A6AB" d="M294.7,331h-84.1c-26.2,0-37.4-33.3-16.6-49.2l47-35.2h71.3v66.8C312.3,323.2,304.4,331,294.7,331"/>
<polygon fill="#42C9C9" points="237.6,273.8 201,276.6 245.6,243.3 "/>
<polygon fill="#F7F5E8" points="235.9,262.7 245.6,243.3 251.7,262.7 "/>
<polygon fill="#F7F5E8" points="251.7,262.7 257.7,243.3 267.4,262.7 "/>
<polygon fill="#BDD1CF" points="265.7,273.8 237.6,273.8 235.9,262.7 267.4,262.7 "/>
<path fill="#F7F5E8" d="M286,331c-2.6-19.3-7.8-42.7-20.1-57.2h-0.1h-14h-14h-0.1c-12.3,14.5-17.6,37.9-20.1,57.2H286z"/>
<path fill="#FFCC99" d="M253.9,243.8h-4.5c-4.7,0-8.5-3.8-8.5-8.5v-14.5h21.5v14.5C262.4,240,258.6,243.8,253.9,243.8"/>
<path fill="#BDD1CF" d="M238.3,331v-57.2c9.1,21.4,20.4,47.3,34.2,57.2H238.3z"/>
<polygon fill="#FFCC99" points="245.6,243.3 251.7,262.7 257.7,243.3 "/>
<polygon fill="#42C9C9" points="281.8,246.7 312.3,246.7 312.3,285.9 "/>
</g>
<path fill="#4A5261" d="M373.2,297.5l-7.2,0.1l-1.1-6.4c-1-0.9-2.2-1.7-3.6-2.2c-1.5-0.5-3.2-0.8-5.1-0.8c-4.2,0-7.4,1.6-9.7,4.7
c-2.2,3.1-3.3,7.1-3.3,12l0,1.7c0,4.9,1.2,8.9,3.5,12c2.3,3.1,5.5,4.6,9.6,4.5c1.9,0,3.7-0.3,5.2-0.9c1.6-0.6,2.8-1.3,3.7-2.3
l0.9-6.5l7.2-0.1l0.1,9.6c-1.9,2.3-4.4,4.1-7.4,5.5c-3,1.4-6.4,2.1-10.1,2.1c-6.5,0.1-11.8-2.1-16-6.6c-4.2-4.5-6.3-10.2-6.4-17.3
l0-1.6c-0.1-7,1.9-12.8,6-17.4c4.1-4.6,9.4-6.9,15.9-6.9c3.7,0,7.1,0.6,10.2,2c3,1.3,5.5,3.1,7.5,5.3L373.2,297.5z"/>
<path fill="#4A5261" d="M598.7,305c0-5-1.1-9.1-3.2-12.2c-2.1-3.1-5.2-4.6-9.3-4.6c-4.1,0-7.1,1.6-9.1,4.7c-2,3.1-2.9,7.2-2.9,12.3
l0,0.8c0,5.1,1.1,9.2,3.2,12.3c2.1,3.1,5.1,4.6,9.2,4.6c4.1,0,7.2-1.6,9.2-4.8c2-3.1,3-7.2,3-12.3L598.7,305z M608.4,305.7
c0.1,7.1-1.9,13-5.9,17.6c-4,4.7-9.3,7-15.9,7.1c-6.5,0.1-11.8-2.2-15.9-6.8c-4.1-4.6-6.1-10.4-6.2-17.5l0-0.7
c-0.1-7,1.9-12.9,5.9-17.6c4-4.7,9.2-7.1,15.8-7.1c6.6-0.1,11.9,2.2,16,6.8c4.1,4.6,6.2,10.4,6.3,17.5L608.4,305.7z"/>
<path fill="#4A5261" d="M633.9,305.2l8.2-0.1c2.7,0,4.7-0.8,6.1-2.3c1.4-1.5,2-3.4,2-5.7c0-2.3-0.7-4.2-2.1-5.7
c-1.4-1.5-3.5-2.2-6.2-2.2l-8.2,0.1L633.9,305.2z M641.9,281.8c5.5,0,9.9,1.3,13.2,4.1c3.2,2.8,4.9,6.5,4.9,11.1
c0,4.6-1.5,8.4-4.7,11.2s-7.5,4.3-13.1,4.3l-8.2,0.1l0.1,10.7l5.2,0.9l0,5.8l-20,0.2l-0.1-5.8l5.1-1l-0.3-34.7l-5.2-1l-0.1-5.9
l5.2,0L641.9,281.8z"/>
</svg>

After

Width:  |  Height:  |  Size: 4.7 KiB

228
docs/static/Logo_Calliope_norm.svg vendored Normal file
View File

@ -0,0 +1,228 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Generator: Adobe Illustrator 18.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
id="Ebene_1"
x="0px"
y="0px"
viewBox="0 0 234.4 188.6"
enable-background="new 0 0 595.3 841.9"
xml:space="preserve"
inkscape:version="0.91 r13725"
sodipodi:docname="Logo_Calliope_norm.svg"
width="234.39999"
height="188.60001"><metadata
id="metadata89"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs
id="defs87" /><sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1137"
id="namedview85"
showgrid="false"
inkscape:zoom="3.1714397"
inkscape:cx="73.725892"
inkscape:cy="132.25623"
inkscape:window-x="-8"
inkscape:window-y="156"
inkscape:window-maximized="1"
inkscape:current-layer="Ebene_1" /><g
id="g4307"
transform="translate(0.15971695,653.11241)"><g
transform="translate(-180.35972,-805.91209)"
id="g3"><defs
id="defs5"><rect
height="188.7"
width="234.3"
y="152.7"
x="180.2"
id="SVGID_1_" /></defs><clipPath
id="SVGID_2_"><use
height="100%"
width="100%"
y="0"
x="0"
style="overflow:visible"
id="use9"
overflow="visible"
xlink:href="#SVGID_1_" /></clipPath><path
style="fill:#4a5261"
inkscape:connector-curvature="0"
id="path11"
d="m 205,320.8 -4.5,0 -0.7,-4 c -0.6,-0.6 -1.4,-1.1 -2.3,-1.4 -0.9,-0.3 -2,-0.5 -3.2,-0.5 -2.6,0 -4.6,1 -6.1,2.9 -1.4,1.9 -2.1,4.4 -2.1,7.5 l 0,1.1 c 0,3.1 0.8,5.6 2.2,7.5 1.4,1.9 3.4,2.9 6,2.8 1.2,0 2.3,-0.2 3.3,-0.5 1,-0.4 1.7,-0.8 2.3,-1.4 l 0.6,-4 4.5,0 0.1,6 c -1.2,1.4 -2.7,2.6 -4.6,3.4 -1.9,0.8 -4,1.3 -6.3,1.3 -4.1,0 -7.4,-1.3 -10,-4.1 -2.6,-2.8 -3.9,-6.4 -4,-10.8 l 0,-1 c 0,-4.4 1.2,-8 3.8,-10.9 2.6,-2.8 5.9,-4.3 10,-4.3 2.3,0 4.5,0.4 6.3,1.2 1.9,0.8 3.5,1.9 4.7,3.3 l 0,5.9 z"
clip-path="url(#SVGID_2_)" /></g><path
style="fill:#4a5261"
inkscape:connector-curvature="0"
id="path13"
d="m 45.740275,-488.51209 0.1,0 3.5,10.6 -6.9,0.1 3.3,-10.7 z m -3.1,-6.9 -9,26.4 -2.2,0.3 0,3.6 10.3,-0.1 0,-3.6 -2.1,-0.4 1.3,-4.2 9.8,-0.1 1.4,4.1 -2.1,0.4 0,3.6 10.3,-0.1 0,-3.6 -2.2,-0.3 -9.4,-26.2 -6.1,0.2 z" /><polygon
style="fill:#4a5261"
transform="translate(-180.35972,-805.91209)"
id="polygon15"
points="256.3,335.8 256.1,314.4 259.4,313.8 259.3,310.1 256.1,310.2 250,310.2 246.8,310.3 246.8,313.9 250.1,314.5 250.3,336.2 247,336.9 247.1,340.5 269.8,340.3 269.7,331.8 265.1,331.9 264.9,335.7 " /><polygon
style="fill:#4a5261"
transform="translate(-180.35972,-805.91209)"
id="polygon17"
points="285.5,335.5 285.3,314.2 288.5,313.5 288.5,309.9 285.3,309.9 279.2,310 276,310 276,313.6 279.2,314.2 279.4,335.9 276.2,336.6 276.3,340.2 299,340 298.9,331.6 294.3,331.6 294,335.4 " /><polygon
style="fill:#4a5261"
transform="translate(-180.35972,-805.91209)"
id="polygon19"
points="305.1,309.7 305.2,313.4 308.4,314 308.6,335.7 305.4,336.3 305.4,340 317.9,339.9 317.9,336.2 314.7,335.6 314.5,313.9 317.7,313.3 317.7,309.6 " /><g
transform="translate(-180.35972,-805.91209)"
id="g21"><defs
id="defs23"><rect
height="188.7"
width="234.3"
y="152.7"
x="180.2"
id="SVGID_3_" /></defs><clipPath
id="SVGID_4_"><use
height="100%"
width="100%"
y="0"
x="0"
style="overflow:visible"
id="use27"
overflow="visible"
xlink:href="#SVGID_3_" /></clipPath><path
style="fill:#4a5261"
inkscape:connector-curvature="0"
id="path29"
d="m 346,324.2 c 0,-3.1 -0.7,-5.7 -2,-7.6 -1.3,-1.9 -3.3,-2.9 -5.8,-2.9 -2.6,0 -4.4,1 -5.7,3 -1.2,2 -1.8,4.5 -1.8,7.7 l 0,0.5 c 0,3.2 0.7,5.7 2,7.7 1.3,1.9 3.2,2.9 5.7,2.9 2.6,0 4.5,-1 5.7,-3 1.3,-2 1.9,-4.5 1.9,-7.7 l 0,-0.6 z m 6,0.4 c 0,4.4 -1.2,8.1 -3.7,11 -2.5,2.9 -5.8,4.4 -9.9,4.4 -4.1,0 -7.4,-1.4 -9.9,-4.3 -2.5,-2.9 -3.8,-6.5 -3.9,-11 l 0,-0.5 c 0,-4.4 1.2,-8.1 3.7,-11 2.5,-2.9 5.8,-4.4 9.8,-4.5 4.1,0 7.4,1.4 10,4.3 2.6,2.9 3.9,6.5 3.9,10.9 l 0,0.7 z"
clip-path="url(#SVGID_4_)" /><path
style="fill:#4a5261"
inkscape:connector-curvature="0"
id="path31"
d="m 368,323.8 5.1,0 c 1.7,0 3,-0.5 3.8,-1.4 0.9,-0.9 1.3,-2.1 1.3,-3.5 0,-1.5 -0.5,-2.7 -1.3,-3.6 -0.9,-0.9 -2.2,-1.4 -3.8,-1.4 l -5.1,0 0,9.9 z m 5,-14.7 c 3.5,0 6.2,0.8 8.2,2.6 2,1.8 3,4.1 3.1,7 0,2.9 -1,5.2 -2.9,7 -2,1.8 -4.7,2.7 -8.2,2.7 l -5.1,0 0.1,6.7 3.2,0.6 0,3.6 -12.5,0.1 0,-3.6 3.2,-0.7 -0.2,-21.7 -3.2,-0.6 0,-3.7 3.2,0 11.1,0 z"
clip-path="url(#SVGID_4_)" /></g><polygon
style="fill:#4a5261"
transform="translate(-180.35972,-805.91209)"
id="polygon33"
points="399.8,325.8 410,325.7 410,321 399.8,321.1 399.7,313.5 409.4,313.4 409.7,317 414.3,317 414.2,308.7 393.6,308.9 390.3,308.9 390.4,312.6 393.6,313.2 393.8,334.9 390.6,335.6 390.6,339.2 414.6,339 414.5,330.7 409.9,330.7 409.6,334.4 399.9,334.4 " /><g
transform="translate(-180.35972,-805.91209)"
id="g35"><defs
id="defs37"><rect
height="188.7"
width="234.3"
y="152.7"
x="180.2"
id="SVGID_5_" /></defs><clipPath
id="SVGID_6_"><use
height="100%"
width="100%"
y="0"
x="0"
style="overflow:visible"
id="use41"
overflow="visible"
xlink:href="#SVGID_5_" /></clipPath><path
style="fill:#4a5261"
inkscape:connector-curvature="0"
id="path43"
d="m 359.3,195.4 -35.3,0 0,-33.8 c 0,-3.4 2.8,-6.2 6.2,-6.2 l 22.9,0 c 3.4,0 6.2,2.8 6.2,6.2 l 0,33.8 z"
clip-path="url(#SVGID_6_)" /></g><rect
style="fill:#8096a1"
id="rect45"
height="31.799999"
width="25.799999"
y="-642.41211"
x="148.44026" /><g
transform="translate(-180.35972,-805.91209)"
id="g47"><defs
id="defs49"><rect
height="188.7"
width="234.3"
y="152.7"
x="180.2"
id="SVGID_7_" /></defs><clipPath
id="SVGID_8_"><use
height="100%"
width="100%"
y="0"
x="0"
style="overflow:visible"
id="use53"
overflow="visible"
xlink:href="#SVGID_7_" /></clipPath><path
style="fill:#855c33"
inkscape:connector-curvature="0"
id="path55"
d="m 271.9,178.8 0,44.9 52.3,0.2 c 0,0 0,-42.2 0,-44.9 0,-14.4 -11.8,-26.2 -26.2,-26.2 -14.4,-0.1 -26.1,11.6 -26.1,26"
clip-path="url(#SVGID_8_)" /><path
style="fill:#26a6ab"
inkscape:connector-curvature="0"
id="path57"
d="m 341.7,279.7 -84.1,0 c -26.2,0 -37.4,-33.3 -16.6,-49.2 l 47,-35.2 71.3,0 0,66.8 c 0,9.7 -7.9,17.6 -17.6,17.6"
clip-path="url(#SVGID_8_)" /></g><polygon
style="fill:#42c9c9"
transform="translate(-180.35972,-805.91209)"
id="polygon59"
points="284.6,222.5 248,225.2 292.6,191.9 " /><polygon
style="fill:#f7f5e8"
transform="translate(-180.35972,-805.91209)"
id="polygon61"
points="282.9,211.4 292.6,191.9 298.7,211.4 " /><polygon
style="fill:#f7f5e8"
transform="translate(-180.35972,-805.91209)"
id="polygon63"
points="298.7,211.4 304.7,191.9 314.4,211.4 " /><polygon
style="fill:#bdd1cf"
transform="translate(-180.35972,-805.91209)"
id="polygon65"
points="312.7,222.5 284.6,222.5 282.9,211.4 314.4,211.4 " /><g
transform="translate(-180.35972,-805.91209)"
id="g67"><defs
id="defs69"><rect
height="188.7"
width="234.3"
y="152.7"
x="180.2"
id="SVGID_9_" /></defs><clipPath
id="SVGID_10_"><use
height="100%"
width="100%"
y="0"
x="0"
style="overflow:visible"
id="use73"
overflow="visible"
xlink:href="#SVGID_9_" /></clipPath><path
style="fill:#f7f5e8"
inkscape:connector-curvature="0"
id="path75"
d="m 333,279.7 c -2.6,-19.3 -7.8,-42.7 -20.1,-57.2 l -0.1,0 -14,0 -14,0 -0.1,0 c -12.3,14.5 -17.6,37.9 -20.1,57.2 l 68.4,0 z"
clip-path="url(#SVGID_10_)" /><path
style="fill:#ffcc99"
inkscape:connector-curvature="0"
id="path77"
d="m 300.9,192.4 -4.5,0 c -4.7,0 -8.5,-3.8 -8.5,-8.5 l 0,-14.5 21.5,0 0,14.5 c 0,4.7 -3.8,8.5 -8.5,8.5"
clip-path="url(#SVGID_10_)" /><path
style="fill:#bdd1cf"
inkscape:connector-curvature="0"
id="path79"
d="m 285.3,279.7 0,-57.2 c 9.1,21.4 20.4,47.3 34.2,57.2 l -34.2,0 z"
clip-path="url(#SVGID_10_)" /></g><polygon
style="fill:#ffcc99"
transform="translate(-180.35972,-805.91209)"
id="polygon81"
points="292.6,191.9 298.7,211.4 304.7,191.9 " /><polygon
style="fill:#42c9c9"
transform="translate(-180.35972,-805.91209)"
id="polygon83"
points="328.8,195.4 359.3,195.4 359.3,234.6 " /></g></svg>

After

Width:  |  Height:  |  Size: 9.9 KiB

921
docs/static/calliope.simplified.svg vendored Normal file
View File

@ -0,0 +1,921 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Generator: Adobe Illustrator 18.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
x="0px"
y="0px"
viewBox="0 0 340.2 311.8"
enable-background="new 0 0 340.2 311.8"
xml:space="preserve"
id="svg2"
inkscape:version="0.91 r13725"
sodipodi:docname="calliope.simplified.svg"><metadata
id="metadata945"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs
id="defs943" /><sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1137"
id="namedview941"
showgrid="false"
inkscape:zoom="3.0275819"
inkscape:cx="131.29885"
inkscape:cy="162.10198"
inkscape:window-x="-8"
inkscape:window-y="156"
inkscape:window-maximized="1"
inkscape:current-layer="svg2" /><symbol
id="Mini_front"
viewBox="-122.3 -112.9 244.6 225.8"><g
id="g5"><use
xlink:href="#calliope_mini_backside"
width="298.9"
height="263.3"
id="XMLID_3_"
x="-150.5"
y="-131.7"
transform="matrix(0.8169 0 0 0.8169 0.6672 -5.3582)"
overflow="visible" /><g
id="holes_3_"><g
id="g9"><g
id="g11"><path
d="M-42.4-78.2c-1.2,0-2.1-1-2.1-2.1s1-2.1,2.1-2.1s2.1,1,2.1,2.1S-41.3-78.2-42.4-78.2z M-42.4-81.4 c-0.6,0-1,0.5-1,1c0,0.6,0.5,1,1,1c0.6,0,1-0.5,1-1C-41.4-80.9-41.9-81.4-42.4-81.4z"
id="path13"
fill="#EFDA48" /><path
d="M-42.4-81.4c-0.6,0-1,0.5-1,1c0,0.6,0.5,1,1,1c0.6,0,1-0.5,1-1C-41.4-80.9-41.9-81.4-42.4-81.4z"
id="path15" /></g><g
id="g17"><path
d="M-35.2-78.2c-1.2,0-2.1-1-2.1-2.1s1-2.1,2.1-2.1c1.2,0,2.1,1,2.1,2.1S-34.1-78.2-35.2-78.2z M-35.2-81.4c-0.6,0-1,0.5-1,1c0,0.6,0.5,1,1,1c0.6,0,1-0.5,1-1C-34.2-80.9-34.7-81.4-35.2-81.4z"
id="path19"
fill="#EFDA48" /><path
d="M-35.2-81.4c-0.6,0-1,0.5-1,1c0,0.6,0.5,1,1,1c0.6,0,1-0.5,1-1C-34.2-80.9-34.7-81.4-35.2-81.4z"
id="path21" /></g><g
id="g23"><path
d="M-28-78.2c-1.2,0-2.1-1-2.1-2.1s1-2.1,2.1-2.1c1.2,0,2.1,1,2.1,2.1S-26.9-78.2-28-78.2z M-28-81.4 c-0.6,0-1,0.5-1,1c0,0.6,0.5,1,1,1s1-0.5,1-1C-27-80.9-27.5-81.4-28-81.4z"
id="path25"
fill="#EFDA48" /><path
d="M-28-81.4c-0.6,0-1,0.5-1,1c0,0.6,0.5,1,1,1s1-0.5,1-1C-27-80.9-27.5-81.4-28-81.4z"
id="path27" /></g><g
id="g29"><path
d="M-20.9-78.2c-1.2,0-2.1-1-2.1-2.1s1-2.1,2.1-2.1c1.2,0,2.1,1,2.1,2.1S-19.7-78.2-20.9-78.2z M-20.9-81.4c-0.6,0-1,0.5-1,1c0,0.6,0.5,1,1,1s1-0.5,1-1C-19.8-80.9-20.3-81.4-20.9-81.4z"
id="path31"
fill="#EFDA48" /><path
d="M-20.9-81.4c-0.6,0-1,0.5-1,1c0,0.6,0.5,1,1,1s1-0.5,1-1C-19.8-80.9-20.3-81.4-20.9-81.4z"
id="path33" /></g><g
id="g35"><path
d="M-13.7-78.2c-1.2,0-2.1-1-2.1-2.1s1-2.1,2.1-2.1s2.1,1,2.1,2.1S-12.5-78.2-13.7-78.2z M-13.7-81.4 c-0.6,0-1,0.5-1,1c0,0.6,0.5,1,1,1s1-0.5,1-1C-12.6-80.9-13.1-81.4-13.7-81.4z"
id="path37"
fill="#EFDA48" /><path
d="M-13.7-81.4c-0.6,0-1,0.5-1,1c0,0.6,0.5,1,1,1s1-0.5,1-1C-12.6-80.9-13.1-81.4-13.7-81.4z"
id="path39" /></g><g
id="g41"><path
d="M-6.5-78.2c-1.2,0-2.1-1-2.1-2.1s1-2.1,2.1-2.1s2.1,1,2.1,2.1S-5.3-78.2-6.5-78.2z M-6.5-81.4 c-0.6,0-1,0.5-1,1c0,0.6,0.5,1,1,1s1-0.5,1-1C-5.4-80.9-5.9-81.4-6.5-81.4z"
id="path43"
fill="#EFDA48" /><path
d="M-6.5-81.4c-0.6,0-1,0.5-1,1c0,0.6,0.5,1,1,1s1-0.5,1-1C-5.4-80.9-5.9-81.4-6.5-81.4z"
id="path45" /></g><g
id="g47"><path
d="M0.7-78.2c-1.2,0-2.1-1-2.1-2.1s1-2.1,2.1-2.1s2.1,1,2.1,2.1S1.9-78.2,0.7-78.2z M0.7-81.4 c-0.6,0-1,0.5-1,1c0,0.6,0.5,1,1,1s1-0.5,1-1C1.8-80.9,1.3-81.4,0.7-81.4z"
id="path49"
fill="#EFDA48" /><path
d="M0.7-81.4c-0.6,0-1,0.5-1,1c0,0.6,0.5,1,1,1s1-0.5,1-1C1.8-80.9,1.3-81.4,0.7-81.4z"
id="path51" /></g><g
id="g53"><path
d="M7.9-78.2c-1.2,0-2.1-1-2.1-2.1s1-2.1,2.1-2.1s2.1,1,2.1,2.1S9.1-78.2,7.9-78.2z M7.9-81.4 c-0.6,0-1,0.5-1,1c0,0.6,0.5,1,1,1s1-0.5,1-1C8.9-80.9,8.5-81.4,7.9-81.4z"
id="path55"
fill="#EFDA48" /><path
d="M7.9-81.4c-0.6,0-1,0.5-1,1c0,0.6,0.5,1,1,1s1-0.5,1-1C8.9-80.9,8.5-81.4,7.9-81.4z"
id="path57" /></g><g
id="g59"><path
d="M15.1-78.2c-1.2,0-2.1-1-2.1-2.1s1-2.1,2.1-2.1s2.1,1,2.1,2.1S16.3-78.2,15.1-78.2z M15.1-81.4 c-0.6,0-1,0.5-1,1c0,0.6,0.5,1,1,1c0.6,0,1-0.5,1-1C16.1-80.9,15.7-81.4,15.1-81.4z"
id="path61"
fill="#EFDA48" /><path
d="M15.1-81.4c-0.6,0-1,0.5-1,1c0,0.6,0.5,1,1,1c0.6,0,1-0.5,1-1C16.1-80.9,15.7-81.4,15.1-81.4z"
id="path63" /></g><g
id="g65"><path
d="M22.3-78.2c-1.2,0-2.1-1-2.1-2.1s1-2.1,2.1-2.1c1.2,0,2.1,1,2.1,2.1S23.5-78.2,22.3-78.2z M22.3-81.4 c-0.6,0-1,0.5-1,1c0,0.6,0.5,1,1,1s1-0.5,1-1C23.3-80.9,22.9-81.4,22.3-81.4z"
id="path67"
fill="#EFDA48" /><path
d="M22.3-81.4c-0.6,0-1,0.5-1,1c0,0.6,0.5,1,1,1s1-0.5,1-1C23.3-80.9,22.9-81.4,22.3-81.4z"
id="path69" /></g><g
id="g71"><path
d="M29.5-78.2c-1.2,0-2.1-1-2.1-2.1s1-2.1,2.1-2.1c1.2,0,2.1,1,2.1,2.1S30.7-78.2,29.5-78.2z M29.5-81.4 c-0.6,0-1,0.5-1,1c0,0.6,0.5,1,1,1s1-0.5,1-1C30.5-80.9,30.1-81.4,29.5-81.4z"
id="path73"
fill="#EFDA48" /><path
d="M29.5-81.4c-0.6,0-1,0.5-1,1c0,0.6,0.5,1,1,1s1-0.5,1-1C30.5-80.9,30.1-81.4,29.5-81.4z"
id="path75" /></g><g
id="g77"><path
d="M36.7-78.2c-1.2,0-2.1-1-2.1-2.1s1-2.1,2.1-2.1c1.2,0,2.1,1,2.1,2.1S37.9-78.2,36.7-78.2z M36.7-81.4 c-0.6,0-1,0.5-1,1c0,0.6,0.5,1,1,1c0.6,0,1-0.5,1-1C37.7-80.9,37.3-81.4,36.7-81.4z"
id="path79"
fill="#EFDA48" /><path
d="M36.7-81.4c-0.6,0-1,0.5-1,1c0,0.6,0.5,1,1,1c0.6,0,1-0.5,1-1C37.7-80.9,37.3-81.4,36.7-81.4z"
id="path81" /></g><g
id="g83"><path
d="M43.9-78.2c-1.2,0-2.1-1-2.1-2.1s1-2.1,2.1-2.1c1.2,0,2.1,1,2.1,2.1S45.1-78.2,43.9-78.2z M43.9-81.4 c-0.6,0-1,0.5-1,1c0,0.6,0.5,1,1,1c0.6,0,1-0.5,1-1C44.9-80.9,44.5-81.4,43.9-81.4z"
id="path85"
fill="#EFDA48" /><path
d="M43.9-81.4c-0.6,0-1,0.5-1,1c0,0.6,0.5,1,1,1c0.6,0,1-0.5,1-1C44.9-80.9,44.5-81.4,43.9-81.4z"
id="path87" /></g></g><g
id="g89"><g
id="g91"><path
d="M-42.4-71c-1.2,0-2.1-1-2.1-2.1c0-1.2,1-2.1,2.1-2.1s2.1,1,2.1,2.1C-40.3-71.9-41.3-71-42.4-71z M-42.4-74.1c-0.6,0-1,0.5-1,1c0,0.6,0.5,1,1,1c0.6,0,1-0.5,1-1C-41.4-73.7-41.9-74.1-42.4-74.1z"
id="path93"
fill="#EFDA48" /><path
d="M-42.4-74.1c-0.6,0-1,0.5-1,1c0,0.6,0.5,1,1,1c0.6,0,1-0.5,1-1C-41.4-73.7-41.9-74.1-42.4-74.1z"
id="path95" /></g><g
id="g97"><path
d="M-35.2-71c-1.2,0-2.1-1-2.1-2.1c0-1.2,1-2.1,2.1-2.1c1.2,0,2.1,1,2.1,2.1C-33.1-71.9-34.1-71-35.2-71z M-35.2-74.1c-0.6,0-1,0.5-1,1c0,0.6,0.5,1,1,1c0.6,0,1-0.5,1-1C-34.2-73.7-34.7-74.1-35.2-74.1z"
id="path99"
fill="#EFDA48" /><path
d="M-35.2-74.1c-0.6,0-1,0.5-1,1c0,0.6,0.5,1,1,1c0.6,0,1-0.5,1-1C-34.2-73.7-34.7-74.1-35.2-74.1z"
id="path101" /></g><g
id="g103"><path
d="M-28-71c-1.2,0-2.1-1-2.1-2.1c0-1.2,1-2.1,2.1-2.1c1.2,0,2.1,1,2.1,2.1C-25.9-71.9-26.9-71-28-71z M-28-74.1c-0.6,0-1,0.5-1,1c0,0.6,0.5,1,1,1s1-0.5,1-1C-27-73.7-27.5-74.1-28-74.1z"
id="path105"
fill="#EFDA48" /><path
d="M-28-74.1c-0.6,0-1,0.5-1,1c0,0.6,0.5,1,1,1s1-0.5,1-1C-27-73.7-27.5-74.1-28-74.1z"
id="path107" /></g><g
id="g109"><path
d="M-20.9-71c-1.2,0-2.1-1-2.1-2.1c0-1.2,1-2.1,2.1-2.1c1.2,0,2.1,1,2.1,2.1C-18.7-71.9-19.7-71-20.9-71z M-20.9-74.1c-0.6,0-1,0.5-1,1c0,0.6,0.5,1,1,1s1-0.5,1-1C-19.8-73.7-20.3-74.1-20.9-74.1z"
id="path111"
fill="#EFDA48" /><path
d="M-20.9-74.1c-0.6,0-1,0.5-1,1c0,0.6,0.5,1,1,1s1-0.5,1-1C-19.8-73.7-20.3-74.1-20.9-74.1z"
id="path113" /></g><g
id="g115"><path
d="M-13.7-71c-1.2,0-2.1-1-2.1-2.1c0-1.2,1-2.1,2.1-2.1s2.1,1,2.1,2.1C-11.5-71.9-12.5-71-13.7-71z M-13.7-74.1c-0.6,0-1,0.5-1,1c0,0.6,0.5,1,1,1s1-0.5,1-1C-12.6-73.7-13.1-74.1-13.7-74.1z"
id="path117"
fill="#EFDA48" /><path
d="M-13.7-74.1c-0.6,0-1,0.5-1,1c0,0.6,0.5,1,1,1s1-0.5,1-1C-12.6-73.7-13.1-74.1-13.7-74.1z"
id="path119" /></g><g
id="g121"><path
d="M-6.5-71c-1.2,0-2.1-1-2.1-2.1c0-1.2,1-2.1,2.1-2.1s2.1,1,2.1,2.1C-4.3-71.9-5.3-71-6.5-71z M-6.5-74.1 c-0.6,0-1,0.5-1,1c0,0.6,0.5,1,1,1s1-0.5,1-1C-5.4-73.7-5.9-74.1-6.5-74.1z"
id="path123"
fill="#EFDA48" /><path
d="M-6.5-74.1c-0.6,0-1,0.5-1,1c0,0.6,0.5,1,1,1s1-0.5,1-1C-5.4-73.7-5.9-74.1-6.5-74.1z"
id="path125" /></g><g
id="g127"><path
d="M0.7-71c-1.2,0-2.1-1-2.1-2.1c0-1.2,1-2.1,2.1-2.1s2.1,1,2.1,2.1C2.9-71.9,1.9-71,0.7-71z M0.7-74.1 c-0.6,0-1,0.5-1,1c0,0.6,0.5,1,1,1s1-0.5,1-1C1.8-73.7,1.3-74.1,0.7-74.1z"
id="path129"
fill="#EFDA48" /><path
d="M0.7-74.1c-0.6,0-1,0.5-1,1c0,0.6,0.5,1,1,1s1-0.5,1-1C1.8-73.7,1.3-74.1,0.7-74.1z"
id="path131" /></g><g
id="g133"><path
d="M7.9-71c-1.2,0-2.1-1-2.1-2.1c0-1.2,1-2.1,2.1-2.1s2.1,1,2.1,2.1C10.1-71.9,9.1-71,7.9-71z M7.9-74.1 c-0.6,0-1,0.5-1,1c0,0.6,0.5,1,1,1s1-0.5,1-1C8.9-73.7,8.5-74.1,7.9-74.1z"
id="path135"
fill="#EFDA48" /><path
d="M7.9-74.1c-0.6,0-1,0.5-1,1c0,0.6,0.5,1,1,1s1-0.5,1-1C8.9-73.7,8.5-74.1,7.9-74.1z"
id="path137" /></g><g
id="g139"><path
d="M15.1-71c-1.2,0-2.1-1-2.1-2.1c0-1.2,1-2.1,2.1-2.1s2.1,1,2.1,2.1C17.3-71.9,16.3-71,15.1-71z M15.1-74.1c-0.6,0-1,0.5-1,1c0,0.6,0.5,1,1,1c0.6,0,1-0.5,1-1C16.1-73.7,15.7-74.1,15.1-74.1z"
id="path141"
fill="#EFDA48" /><path
d="M15.1-74.1c-0.6,0-1,0.5-1,1c0,0.6,0.5,1,1,1c0.6,0,1-0.5,1-1C16.1-73.7,15.7-74.1,15.1-74.1z"
id="path143" /></g><g
id="g145"><path
d="M22.3-71c-1.2,0-2.1-1-2.1-2.1c0-1.2,1-2.1,2.1-2.1c1.2,0,2.1,1,2.1,2.1C24.5-71.9,23.5-71,22.3-71z M22.3-74.1c-0.6,0-1,0.5-1,1c0,0.6,0.5,1,1,1s1-0.5,1-1C23.3-73.7,22.9-74.1,22.3-74.1z"
id="path147"
fill="#EFDA48" /><path
d="M22.3-74.1c-0.6,0-1,0.5-1,1c0,0.6,0.5,1,1,1s1-0.5,1-1C23.3-73.7,22.9-74.1,22.3-74.1z"
id="path149" /></g><g
id="g151"><path
d="M29.5-71c-1.2,0-2.1-1-2.1-2.1c0-1.2,1-2.1,2.1-2.1c1.2,0,2.1,1,2.1,2.1C31.7-71.9,30.7-71,29.5-71z M29.5-74.1c-0.6,0-1,0.5-1,1c0,0.6,0.5,1,1,1s1-0.5,1-1C30.5-73.7,30.1-74.1,29.5-74.1z"
id="path153"
fill="#EFDA48" /><path
d="M29.5-74.1c-0.6,0-1,0.5-1,1c0,0.6,0.5,1,1,1s1-0.5,1-1C30.5-73.7,30.1-74.1,29.5-74.1z"
id="path155" /></g><g
id="g157"><path
d="M36.7-71c-1.2,0-2.1-1-2.1-2.1c0-1.2,1-2.1,2.1-2.1c1.2,0,2.1,1,2.1,2.1C38.9-71.9,37.9-71,36.7-71z M36.7-74.1c-0.6,0-1,0.5-1,1c0,0.6,0.5,1,1,1c0.6,0,1-0.5,1-1C37.7-73.7,37.3-74.1,36.7-74.1z"
id="path159"
fill="#EFDA48" /><path
d="M36.7-74.1c-0.6,0-1,0.5-1,1c0,0.6,0.5,1,1,1c0.6,0,1-0.5,1-1C37.7-73.7,37.3-74.1,36.7-74.1z"
id="path161" /></g><g
id="g163"><path
d="M43.9-71c-1.2,0-2.1-1-2.1-2.1c0-1.2,1-2.1,2.1-2.1c1.2,0,2.1,1,2.1,2.1C46-71.9,45.1-71,43.9-71z M43.9-74.1c-0.6,0-1,0.5-1,1c0,0.6,0.5,1,1,1c0.6,0,1-0.5,1-1C44.9-73.7,44.5-74.1,43.9-74.1z"
id="path165"
fill="#EFDA48" /><path
d="M43.9-74.1c-0.6,0-1,0.5-1,1c0,0.6,0.5,1,1,1c0.6,0,1-0.5,1-1C44.9-73.7,44.5-74.1,43.9-74.1z"
id="path167" /></g></g><g
id="g169"><g
id="g171"><path
d="M-13.7-57.2c-1.2,0-2.1-1-2.1-2.1c0-1.2,1-2.1,2.1-2.1s2.1,1,2.1,2.1C-11.5-58.1-12.5-57.2-13.7-57.2z M-13.7-60.3c-0.6,0-1,0.5-1,1c0,0.6,0.5,1,1,1s1-0.5,1-1C-12.6-59.9-13.1-60.3-13.7-60.3z"
id="path173"
fill="#EFDA48" /><path
d="M-13.7-60.3c-0.6,0-1,0.5-1,1c0,0.6,0.5,1,1,1s1-0.5,1-1C-12.6-59.9-13.1-60.3-13.7-60.3z"
id="path175" /></g><g
id="g177"><path
d="M-6.5-57.2c-1.2,0-2.1-1-2.1-2.1c0-1.2,1-2.1,2.1-2.1s2.1,1,2.1,2.1C-4.3-58.1-5.3-57.2-6.5-57.2z M-6.5-60.3c-0.6,0-1,0.5-1,1c0,0.6,0.5,1,1,1s1-0.5,1-1C-5.4-59.9-5.9-60.3-6.5-60.3z"
id="path179"
fill="#EFDA48" /><path
d="M-6.5-60.3c-0.6,0-1,0.5-1,1c0,0.6,0.5,1,1,1s1-0.5,1-1C-5.4-59.9-5.9-60.3-6.5-60.3z"
id="path181" /></g><g
id="g183"><path
d="M0.7-57.2c-1.2,0-2.1-1-2.1-2.1c0-1.2,1-2.1,2.1-2.1s2.1,1,2.1,2.1C2.9-58.1,1.9-57.2,0.7-57.2z M0.7-60.3c-0.6,0-1,0.5-1,1c0,0.6,0.5,1,1,1s1-0.5,1-1C1.8-59.9,1.3-60.3,0.7-60.3z"
id="path185"
fill="#EFDA48" /><path
d="M0.7-60.3c-0.6,0-1,0.5-1,1c0,0.6,0.5,1,1,1s1-0.5,1-1C1.8-59.9,1.3-60.3,0.7-60.3z"
id="path187" /></g><g
id="g189"><path
d="M7.9-57.2c-1.2,0-2.1-1-2.1-2.1c0-1.2,1-2.1,2.1-2.1s2.1,1,2.1,2.1C10.1-58.1,9.1-57.2,7.9-57.2z M7.9-60.3c-0.6,0-1,0.5-1,1c0,0.6,0.5,1,1,1s1-0.5,1-1C8.9-59.9,8.5-60.3,7.9-60.3z"
id="path191"
fill="#EFDA48" /><path
d="M7.9-60.3c-0.6,0-1,0.5-1,1c0,0.6,0.5,1,1,1s1-0.5,1-1C8.9-59.9,8.5-60.3,7.9-60.3z"
id="path193" /></g><g
id="g195"><path
d="M15.1-57.2c-1.2,0-2.1-1-2.1-2.1c0-1.2,1-2.1,2.1-2.1s2.1,1,2.1,2.1C17.3-58.1,16.3-57.2,15.1-57.2z M15.1-60.3c-0.6,0-1,0.5-1,1c0,0.6,0.5,1,1,1c0.6,0,1-0.5,1-1C16.1-59.9,15.7-60.3,15.1-60.3z"
id="path197"
fill="#EFDA48" /><path
d="M15.1-60.3c-0.6,0-1,0.5-1,1c0,0.6,0.5,1,1,1c0.6,0,1-0.5,1-1C16.1-59.9,15.7-60.3,15.1-60.3z"
id="path199" /></g></g><g
id="g201"><g
id="g203"><polygon
points="80.6,17.6 77.6,20.5 80.6,23.5 83.5,20.5 "
id="polygon205"
fill="#EFDA48" /><path
d="M79.9,19.8c-0.4,0.4-0.4,1,0,1.4c0.4,0.4,1,0.4,1.4,0s0.4-1,0-1.4C80.9,19.4,80.3,19.4,79.9,19.8z"
id="path207" /></g><g
id="g209"><path
d="M86.3,18.1c-0.8,0.8-2.2,0.8-3,0c-0.8-0.8-0.8-2.2,0-3c0.8-0.8,2.2-0.8,3,0 C87.1,15.9,87.1,17.2,86.3,18.1z M84.1,15.8c-0.4,0.4-0.4,1,0,1.4s1,0.4,1.4,0s0.4-1,0-1.4S84.5,15.4,84.1,15.8z"
id="path211"
fill="#EFDA48" /><path
d="M84.1,15.8c-0.4,0.4-0.4,1,0,1.4s1,0.4,1.4,0s0.4-1,0-1.4S84.5,15.4,84.1,15.8z"
id="path213" /></g><g
id="g215"><path
d="M90.1,14.3c-0.8,0.8-2.2,0.8-3,0c-0.8-0.8-0.8-2.2,0-3s2.2-0.8,3,0C90.9,12.1,90.9,13.5,90.1,14.3z M87.9,12.1c-0.4,0.4-0.4,1,0,1.4c0.4,0.4,1,0.4,1.4,0s0.4-1,0-1.4C88.9,11.7,88.3,11.7,87.9,12.1z"
id="path217"
fill="#EFDA48" /><path
d="M87.9,12.1c-0.4,0.4-0.4,1,0,1.4c0.4,0.4,1,0.4,1.4,0s0.4-1,0-1.4C88.9,11.7,88.3,11.7,87.9,12.1z"
id="path219" /></g><g
id="g221"><path
d="M94.4,10c-0.8,0.8-2.2,0.8-3,0c-0.8-0.8-0.8-2.2,0-3s2.2-0.8,3,0C95.3,7.8,95.3,9.2,94.4,10z M92.2,7.8 c-0.4,0.4-0.4,1,0,1.4c0.4,0.4,1,0.4,1.4,0s0.4-1,0-1.4C93.2,7.4,92.6,7.4,92.2,7.8z"
id="path223"
fill="#EFDA48" /><path
d="M92.2,7.8c-0.4,0.4-0.4,1,0,1.4c0.4,0.4,1,0.4,1.4,0s0.4-1,0-1.4C93.2,7.4,92.6,7.4,92.2,7.8z"
id="path225" /></g></g><g
id="g227"><g
id="g229"><polygon
points="-88,8.6 -91,5.7 -94,8.6 -91,11.6 "
id="polygon231"
fill="#EFDA48" /><path
d="M-90.3,8c-0.4-0.4-1-0.4-1.4,0c-0.4,0.4-0.4,1,0,1.4s1,0.4,1.4,0C-89.9,9-89.9,8.3-90.3,8z"
id="path233" /></g><g
id="g235"><path
d="M-88.5,14.4c-0.8-0.8-0.8-2.2,0-3c0.8-0.8,2.2-0.8,3,0c0.8,0.8,0.8,2.2,0,3 C-86.3,15.2-87.7,15.2-88.5,14.4z M-86.3,12.2c-0.4-0.4-1-0.4-1.4,0c-0.4,0.4-0.4,1,0,1.4s1,0.4,1.4,0 C-85.9,13.2-85.9,12.5-86.3,12.2z"
id="path237"
fill="#EFDA48" /><path
d="M-86.3,12.2c-0.4-0.4-1-0.4-1.4,0c-0.4,0.4-0.4,1,0,1.4s1,0.4,1.4,0C-85.9,13.2-85.9,12.5-86.3,12.2z"
id="path239" /></g><g
id="g241"><path
d="M-84.8,18.2c-0.8-0.8-0.8-2.2,0-3c0.8-0.8,2.2-0.8,3,0c0.8,0.8,0.8,2.2,0,3C-82.6,19-84,19-84.8,18.2z M-82.6,16c-0.4-0.4-1-0.4-1.4,0c-0.4,0.4-0.4,1,0,1.4s1,0.4,1.4,0C-82.2,17-82.2,16.4-82.6,16z"
id="path243"
fill="#EFDA48" /><path
d="M-82.6,16c-0.4-0.4-1-0.4-1.4,0c-0.4,0.4-0.4,1,0,1.4s1,0.4,1.4,0C-82.2,17-82.2,16.4-82.6,16z"
id="path245" /></g><g
id="g247"><path
d="M-80.5,22.5c-0.8-0.8-0.8-2.2,0-3c0.8-0.8,2.2-0.8,3,0c0.8,0.8,0.8,2.2,0,3 C-78.3,23.3-79.7,23.3-80.5,22.5z M-78.3,20.3c-0.4-0.4-1-0.4-1.4,0c-0.4,0.4-0.4,1,0,1.4s1,0.4,1.4,0 C-77.9,21.3-77.9,20.7-78.3,20.3z"
id="path249"
fill="#EFDA48" /><path
d="M-78.3,20.3c-0.4-0.4-1-0.4-1.4,0c-0.4,0.4-0.4,1,0,1.4s1,0.4,1.4,0C-77.9,21.3-77.9,20.7-78.3,20.3z"
id="path251" /></g></g><g
id="g253"><path
d="M-107.8,8.6c-7.7,0-13.9-6.2-13.9-13.9s6.2-13.9,13.9-13.9s13.9,6.2,13.9,13.9S-100.1,8.6-107.8,8.6z M-107.8-12c-3.7,0-6.6,3-6.6,6.6s3,6.6,6.6,6.6c3.7,0,6.6-3,6.6-6.6S-104.1-12-107.8-12z"
id="path255"
fill="#EFDA48" /><path
d="M54.8,102.3c-7.7,0-13.9-6.2-13.9-13.9s6.2-13.9,13.9-13.9s13.9,6.2,13.9,13.9S62.4,102.3,54.8,102.3z M54.8,81.7c-3.7,0-6.6,3-6.6,6.6s3,6.6,6.6,6.6s6.6-3,6.6-6.6S58.4,81.7,54.8,81.7z"
id="path257"
fill="#EFDA48" /><path
d="M108.4,8.6c-7.7,0-13.9-6.2-13.9-13.9s6.2-13.9,13.9-13.9s13.9,6.2,13.9,13.9S116.1,8.6,108.4,8.6z M108.4-12c-3.7,0-6.6,3-6.6,6.6s3,6.6,6.6,6.6s6.6-3,6.6-6.6S112-12,108.4-12z"
id="path259"
fill="#EFDA48" /><path
d="M54.8-84.2c-7.7,0-13.9-6.2-13.9-13.9S47.1-112,54.8-112s13.9,6.2,13.9,13.9S62.4-84.2,54.8-84.2z M54.8-104.7c-3.7,0-6.6,3-6.6,6.6s3,6.6,6.6,6.6c3.7,0,6.6-3,6.6-6.6S58.4-104.7,54.8-104.7z"
id="path261"
fill="#EFDA48" /><path
d="M-53.1-85C-60.8-85-67-91.2-67-98.9s6.2-13.9,13.9-13.9s13.9,6.2,13.9,13.9S-45.4-85-53.1-85z M-53.1-105.5c-3.7,0-6.6,3-6.6,6.6c0,3.7,3,6.6,6.6,6.6s6.6-3,6.6-6.6C-46.5-102.6-49.4-105.5-53.1-105.5z"
id="path263"
fill="#EFDA48" /><path
d="M-53.1,102.3c-7.7,0-13.9-6.2-13.9-13.9s6.2-13.9,13.9-13.9s13.9,6.2,13.9,13.9S-45.4,102.3-53.1,102.3z M-53.1,81.7c-3.7,0-6.6,3-6.6,6.6s3,6.6,6.6,6.6c3.7,0,6.6-3,6.6-6.6S-49.4,81.7-53.1,81.7z"
id="path265"
fill="#EFDA48" /></g></g></g><g
id="g273"><g
id="g275"><polygon
points="-20.9,36.6 -23,36.6 -23,42 -20.9,42 "
id="polygon277"
fill="#FFFFFF" /><polygon
points="-9.9,36.6 -12.1,36.6 -12.1,42 -9.9,42 "
id="polygon279"
fill="#FFFFFF" /><polygon
points="1,36.6 -1.1,36.6 -1.1,42 1,42 "
id="polygon281"
fill="#FFFFFF" /><polygon
points="12,36.6 9.8,36.6 9.8,42 12,42 "
id="polygon283"
fill="#FFFFFF" /><polygon
points="22.9,36.6 20.8,36.6 20.8,42 22.9,42 "
id="polygon285"
fill="#FFFFFF" /></g><g
id="g287"><polygon
points="-20.9,25.9 -23,25.9 -23,31.3 -20.9,31.3 "
id="polygon289"
fill="#FFFFFF" /><polygon
points="-9.9,25.9 -12.1,25.9 -12.1,31.3 -9.9,31.3 "
id="polygon291"
fill="#FFFFFF" /><polygon
points="1,25.9 -1.1,25.9 -1.1,31.3 1,31.3 "
id="polygon293"
fill="#FFFFFF" /><polygon
points="12,25.9 9.8,25.9 9.8,31.3 12,31.3 "
id="polygon295"
fill="#FFFFFF" /><polygon
points="22.9,25.9 20.8,25.9 20.8,31.3 22.9,31.3 "
id="polygon297"
fill="#FFFFFF" /></g><g
id="g299"><polygon
points="-20.9,15.1 -23,15.1 -23,20.6 -20.9,20.6 "
id="polygon301"
fill="#FFFFFF" /><polygon
points="-9.9,15.1 -12.1,15.1 -12.1,20.6 -9.9,20.6 "
id="polygon303"
fill="#FFFFFF" /><polygon
points="1,15.1 -1.1,15.1 -1.1,20.6 1,20.6 "
id="polygon305"
fill="#FFFFFF" /><polygon
points="12,15.1 9.8,15.1 9.8,20.6 12,20.6 "
id="polygon307"
fill="#FFFFFF" /><polygon
points="22.9,15.1 20.8,15.1 20.8,20.6 22.9,20.6 "
id="polygon309"
fill="#FFFFFF" /></g><g
id="g311"><polygon
points="-20.9,4.4 -23,4.4 -23,9.9 -20.9,9.9 "
id="polygon313"
fill="#FFFFFF" /><polygon
points="-9.9,4.4 -12.1,4.4 -12.1,9.9 -9.9,9.9 "
id="polygon315"
fill="#FFFFFF" /><polygon
points="1,4.4 -1.1,4.4 -1.1,9.9 1,9.9 "
id="polygon317"
fill="#FFFFFF" /><polygon
points="12,4.4 9.8,4.4 9.8,9.9 12,9.9 "
id="polygon319"
fill="#FFFFFF" /><polygon
points="22.9,4.4 20.8,4.4 20.8,9.9 22.9,9.9 "
id="polygon321"
fill="#FFFFFF" /></g><g
id="g323"><polygon
points="-20.9,-6.3 -23,-6.3 -23,-0.9 -20.9,-0.9 "
id="polygon325"
fill="#FFFFFF" /><polygon
points="-9.9,-6.3 -12.1,-6.3 -12.1,-0.9 -9.9,-0.9 "
id="polygon327"
fill="#FFFFFF" /><polygon
points="1,-6.3 -1.1,-6.3 -1.1,-0.9 1,-0.9 "
id="polygon329"
fill="#FFFFFF" /><polygon
points="12,-6.3 9.8,-6.3 9.8,-0.9 12,-0.9 "
id="polygon331"
fill="#FFFFFF" /><polygon
points="22.9,-6.3 20.8,-6.3 20.8,-0.9 22.9,-0.9 "
id="polygon333"
fill="#FFFFFF" /></g></g><g
id="g335"><path
d="M-61.4,47.4c0-0.9-0.7-1.6-1.6-1.6s-1.6,0.7-1.6,1.6s0.7,1.6,1.6,1.6S-61.4,48.3-61.4,47.4z"
id="path337"
fill="#EFDA48" /><path
d="M-55.9,47.4c0-0.9-0.7-1.6-1.6-1.6s-1.6,0.7-1.6,1.6s0.7,1.6,1.6,1.6S-55.9,48.3-55.9,47.4z"
id="path339"
fill="#EFDA48" /><path
d="M-50.4,47.4c0-0.9-0.7-1.6-1.6-1.6s-1.6,0.7-1.6,1.6s0.7,1.6,1.6,1.6S-50.4,48.3-50.4,47.4z"
id="path341"
fill="#EFDA48" /><path
d="M-45,47.4c0-0.9-0.7-1.6-1.6-1.6c-0.9,0-1.6,0.7-1.6,1.6s0.7,1.6,1.6,1.6C-45.7,49.1-45,48.3-45,47.4z"
id="path343"
fill="#EFDA48" /><path
d="M-39.5,47.4c0-0.9-0.7-1.6-1.6-1.6s-1.6,0.7-1.6,1.6s0.7,1.6,1.6,1.6S-39.5,48.3-39.5,47.4z"
id="path345"
fill="#EFDA48" /><path
d="M-34.1,47.4c0-0.9-0.7-1.6-1.6-1.6s-1.6,0.7-1.6,1.6s0.7,1.6,1.6,1.6S-34.1,48.3-34.1,47.4z"
id="path347"
fill="#EFDA48" /></g><g
id="g349"><path
d="M-39.5,76.6c0-0.9-0.7-1.6-1.6-1.6s-1.6,0.7-1.6,1.6c0,0.9,0.7,1.6,1.6,1.6S-39.5,77.5-39.5,76.6z"
id="path351"
fill="#EFDA48" /><path
d="M-34.1,76.6c0-0.9-0.7-1.6-1.6-1.6s-1.6,0.7-1.6,1.6c0,0.9,0.7,1.6,1.6,1.6S-34.1,77.5-34.1,76.6z"
id="path353"
fill="#EFDA48" /><path
d="M-28.6,76.6c0-0.9-0.7-1.6-1.6-1.6s-1.6,0.7-1.6,1.6c0,0.9,0.7,1.6,1.6,1.6S-28.6,77.5-28.6,76.6z"
id="path355"
fill="#EFDA48" /><path
d="M-23.1,76.6c0-0.9-0.7-1.6-1.6-1.6s-1.6,0.7-1.6,1.6c0,0.9,0.7,1.6,1.6,1.6S-23.1,77.5-23.1,76.6z"
id="path357"
fill="#EFDA48" /><path
d="M-17.7,76.6c0-0.9-0.7-1.6-1.6-1.6s-1.6,0.7-1.6,1.6c0,0.9,0.7,1.6,1.6,1.6S-17.7,77.5-17.7,76.6z"
id="path359"
fill="#EFDA48" /><path
d="M-17.7,68.3c0-0.9-0.7-1.6-1.6-1.6s-1.6,0.7-1.6,1.6c0,0.9,0.7,1.6,1.6,1.6S-17.7,69.1-17.7,68.3z"
id="path361"
fill="#EFDA48" /></g><g
id="g363"><path
d="M-0.1,47.4c0-0.9-0.7-1.6-1.6-1.6s-1.6,0.7-1.6,1.6s0.7,1.6,1.6,1.6S-0.1,48.3-0.1,47.4z"
id="path365"
fill="#EFDA48" /><path
d="M5.4,47.4c0-0.9-0.7-1.6-1.6-1.6s-1.6,0.7-1.6,1.6s0.7,1.6,1.6,1.6S5.4,48.3,5.4,47.4z"
id="path367"
fill="#EFDA48" /></g><path
d="M8.8,66.6H-8.8c-0.7,0-1.2,0.5-1.2,1.2v13.5c0,0.7,0.5,1.2,1.2,1.2H8.8c0.7,0,1.2-0.5,1.2-1.2V67.8 C10,67.2,9.4,66.6,8.8,66.6z"
id="path369"
fill="#BDD1CF" /><g
id="g371"><g
id="g373"><polygon
points="-59.9,36.6 -62,36.6 -62,42 -59.9,42 "
id="polygon375"
fill="#FFFFFF" /><polygon
points="-48.2,36.6 -50.3,36.6 -50.3,42 -48.2,42 "
id="polygon377"
fill="#FFFFFF" /><polygon
points="-59.9,16 -62,16 -62,21.5 -59.9,21.5 "
id="polygon379"
fill="#FFFFFF" /><polygon
points="-48.2,16 -50.3,16 -50.3,21.5 -48.2,21.5 "
id="polygon381"
fill="#FFFFFF" /></g><path
d="M-48.3,21.4h-13.6c-0.6,0-1.1,0.5-1.1,1.1v13.7c0,0.6,0.5,1.1,1.1,1.1h13.6c0.6,0,1.1-0.5,1.1-1.1V22.4 C-47.2,21.8-47.7,21.4-48.3,21.4z"
id="path383"
fill="#BDD1CF" /><path
d="M-50.2,29.3c0-2.7-2.2-4.9-4.9-4.9c-2.7,0-4.9,2.2-4.9,4.9s2.2,4.9,4.9,4.9C-52.4,34.2-50.2,32-50.2,29.3z "
id="path385"
fill="#476975" /><path
d="M-59.3,35.2c0-0.9-0.7-1.6-1.6-1.6c-0.9,0-1.6,0.7-1.6,1.6c0,0.9,0.7,1.6,1.6,1.6C-60,36.8-59.3,36.1-59.3,35.2z"
id="path387" /><path
d="M-47.6,35.2c0-0.9-0.7-1.6-1.6-1.6c-0.9,0-1.6,0.7-1.6,1.6c0,0.9,0.7,1.6,1.6,1.6C-48.4,36.8-47.6,36.1-47.6,35.2z"
id="path389" /><path
d="M-59.3,23.6c0-0.9-0.7-1.6-1.6-1.6c-0.9,0-1.6,0.7-1.6,1.6s0.7,1.6,1.6,1.6C-60,25.2-59.3,24.5-59.3,23.6z"
id="path391" /><path
d="M-47.6,23.6c0-0.9-0.7-1.6-1.6-1.6c-0.9,0-1.6,0.7-1.6,1.6s0.7,1.6,1.6,1.6C-48.4,25.2-47.6,24.5-47.6,23.6z"
id="path393" /></g><g
id="g395"><path
d="M68.7-61.4h-17c-0.8,0-1.5,0.7-1.5,1.5V-39c0,0.8,0.7,1.5,1.5,1.5h17c0.8,0,1.5-0.7,1.5-1.5v-20.9 C70.2-60.7,69.5-61.4,68.7-61.4z"
id="path397"
fill="#FFFFFF" /><polygon
points="54.4,-40.8 44,-40.8 44,-37.5 54.4,-37.5 "
id="polygon399"
fill="#FFFFFF" /><polygon
points="54.4,-61.4 44,-61.4 44,-58 54.4,-58 "
id="polygon401"
fill="#FFFFFF" /></g><path
d="M76.6-2.2c-9.9,0-17.9-8-17.9-17.9S66.7-38,76.6-38s17.9,8,17.9,17.9S86.5-2.2,76.6-2.2z"
id="path403" /><g
id="g405"><path
d="M39.1-57.2c-1.2,0-2.1-1-2.1-2.1c0-1.2,1-2.1,2.1-2.1s2.1,1,2.1,2.1C41.3-58.1,40.3-57.2,39.1-57.2z"
id="path407"
fill="#EFDA48" /></g><g
id="g409"><g
id="g411"><polygon
points="51.6,36.6 49.5,36.6 49.5,42 51.6,42 "
id="polygon413"
fill="#FFFFFF" /><polygon
points="63.3,36.6 61.1,36.6 61.1,42 63.3,42 "
id="polygon415"
fill="#FFFFFF" /><polygon
points="51.6,16 49.5,16 49.5,21.5 51.6,21.5 "
id="polygon417"
fill="#FFFFFF" /><polygon
points="63.3,16 61.1,16 61.1,21.5 63.3,21.5 "
id="polygon419"
fill="#FFFFFF" /></g><path
d="M63.2,21.4H49.6c-0.6,0-1.1,0.5-1.1,1.1v13.7c0,0.6,0.5,1.1,1.1,1.1h13.6c0.6,0,1.1-0.5,1.1-1.1V22.4 C64.3,21.8,63.8,21.4,63.2,21.4z"
id="path421"
fill="#BDD1CF" /><path
d="M61.3,29.3c0-2.7-2.2-4.9-4.9-4.9c-2.7,0-4.9,2.2-4.9,4.9s2.2,4.9,4.9,4.9C59.1,34.2,61.3,32,61.3,29.3z"
id="path423"
fill="#476975" /><path
d="M52.2,35.2c0-0.9-0.7-1.6-1.6-1.6c-0.9,0-1.6,0.7-1.6,1.6c0,0.9,0.7,1.6,1.6,1.6C51.5,36.8,52.2,36.1,52.2,35.2z"
id="path425" /><path
d="M63.8,35.2c0-0.9-0.7-1.6-1.6-1.6c-0.9,0-1.6,0.7-1.6,1.6c0,0.9,0.7,1.6,1.6,1.6C63.1,36.8,63.8,36.1,63.8,35.2z"
id="path427" /><path
d="M52.2,23.6c0-0.9-0.7-1.6-1.6-1.6c-0.9,0-1.6,0.7-1.6,1.6s0.7,1.6,1.6,1.6C51.5,25.2,52.2,24.5,52.2,23.6z"
id="path429" /><path
d="M63.8,23.6c0-0.9-0.7-1.6-1.6-1.6c-0.9,0-1.6,0.7-1.6,1.6s0.7,1.6,1.6,1.6C63.1,25.2,63.8,24.5,63.8,23.6z"
id="path431" /></g><g
id="g433"><path
d="M37.3,60H23.7c-0.6,0-1.1,0.5-1.1,1.1v13.7c0,0.6,0.5,1.1,1.1,1.1h13.6c0.6,0,1.1-0.5,1.1-1.1V61.1 C38.4,60.5,37.9,60,37.3,60z"
id="path435"
fill="#BDD1CF" /><path
d="M35.5,68c0-2.7-2.2-4.9-4.9-4.9s-4.9,2.2-4.9,4.9s2.2,4.9,4.9,4.9S35.5,70.7,35.5,68z"
id="path437"
fill="#476975" /></g><polygon
points="37.1,-46 25.4,-46 25.4,-25 37.1,-25 "
id="polygon439"
fill="#F9B233" /><polygon
points="-31.8,-47.4 -43.7,-35.5 -31.8,-23.6 -19.9,-35.5 "
id="polygon441" /><polygon
points="-3.6,-52.5 -3.6,-46.4 2.5,-46.4 2.5,-52.5 "
id="polygon443" /><g
id="g445"><polygon
points="5.3,-35.5 -5.5,-35.5 -5.5,-25 5.3,-25 "
id="polygon447"
fill="#FFFFFF" /><path
d="M4-30.2c0-2.3-1.8-4.1-4.1-4.1s-4.1,1.8-4.1,4.1s1.8,4.1,4.1,4.1S4-28,4-30.2z"
id="path449"
fill="#BDD1CF" /></g><polygon
points="-36.8,-54.6 -43.6,-59 -47.5,-52.9 -40.7,-48.5 "
id="polygon451"
fill="#FFFFFF" /></symbol><symbol
id="calliope_mini_backside"
viewBox="-150.5 -131.7 298.9 263.3"><path
d="M-77.1,127.5L-77.1,127.5c6.2,4.6,14.6,4.8,20.9,0.5c12.5-8.4,34.7-21,56-21c23.2,0,45.7,13.5,56.4,21 c4.3,3,9.8,3.8,14.7,2l0.6-0.2c7.3-2.6,11.8-9.8,11-17.4c-1.7-15.4-3-41.9,13-62.9c16.8-21.9,31.7-31.2,42.3-34.8 c5.9-2,9.9-7.4,10.4-13.6v0c0.5-8-5.1-13.6-12.3-17c-12-5.7-30.8-15.7-42.8-36.2C78.7-77,80.1-103.4,81.7-114.8 c0.7-5.1-1.6-10.1-5.9-12.8c-4.8-3-11.9-4.6-21.4,1.5c-5.5,3.6-12,8.6-20.8,12c-10.8,4.1-16.9,5.5-20.3,5.8c-2.4,0.2-4.4,1.8-5.2,4 c-1.1,2.9-3.4,6.2-8.2,6.2c-5,0-7.2-3.6-8.2-6.6c-0.8-2.5-3.3-3.4-5.9-3.7c-4.9-0.4-12.5-2.4-20.5-6.1c-7.1-3.3-14-7.9-20.4-12.7 c-5.5-4.1-15-5.5-20.4-1.3l0,0c-5.7,4.4-7.4,11.7-6.5,18.8c1.9,15.3,1.1,43.3-16.7,64.2c-17.6,20.8-28.2,26.2-37.2,29.2 c-3.9,1.3-11.4,5.4-12.3,14.1s3,14.5,10.9,18.4c12.3,6.1,30.5,17.2,42.1,34.1c15.1,22,15.1,48.1,13.1,61.7 C-82.8,117.7-81.7,124.1-77.1,127.5z"
id="path454"
fill="#034854" /><g
id="holes_9_"><g
display="none"
id="g457"><g
display="inline"
id="g459"><path
d="M-53.5-89.3c-1.4,0-2.6-1.2-2.6-2.6s1.2-2.6,2.6-2.6s2.6,1.2,2.6,2.6S-52-89.3-53.5-89.3z M-53.5-93.1 c-0.7,0-1.2,0.6-1.2,1.2c0,0.7,0.6,1.2,1.2,1.2c0.7,0,1.2-0.6,1.2-1.2C-52.2-92.6-52.8-93.1-53.5-93.1z"
id="path461"
fill="#EFDA48" /><path
d="M-53.5-93.1c-0.7,0-1.2,0.6-1.2,1.2c0,0.7,0.6,1.2,1.2,1.2c0.7,0,1.2-0.6,1.2-1.2C-52.2-92.6-52.8-93.1-53.5-93.1z"
id="path463" /></g><g
display="inline"
id="g465"><path
d="M-44.7-89.3c-1.4,0-2.6-1.2-2.6-2.6s1.2-2.6,2.6-2.6s2.6,1.2,2.6,2.6S-43.2-89.3-44.7-89.3z M-44.7-93.1 c-0.7,0-1.2,0.6-1.2,1.2c0,0.7,0.6,1.2,1.2,1.2c0.7,0,1.2-0.6,1.2-1.2C-43.4-92.6-44-93.1-44.7-93.1z"
id="path467"
fill="#EFDA48" /><path
d="M-44.7-93.1c-0.7,0-1.2,0.6-1.2,1.2c0,0.7,0.6,1.2,1.2,1.2c0.7,0,1.2-0.6,1.2-1.2C-43.4-92.6-44-93.1-44.7-93.1z"
id="path469" /></g><g
display="inline"
id="g471"><path
d="M-35.9-89.3c-1.4,0-2.6-1.2-2.6-2.6s1.2-2.6,2.6-2.6s2.6,1.2,2.6,2.6S-34.4-89.3-35.9-89.3z M-35.9-93.1 c-0.7,0-1.2,0.6-1.2,1.2c0,0.7,0.6,1.2,1.2,1.2c0.7,0,1.2-0.6,1.2-1.2C-34.6-92.6-35.2-93.1-35.9-93.1z"
id="path473"
fill="#EFDA48" /><path
d="M-35.9-93.1c-0.7,0-1.2,0.6-1.2,1.2c0,0.7,0.6,1.2,1.2,1.2c0.7,0,1.2-0.6,1.2-1.2C-34.6-92.6-35.2-93.1-35.9-93.1z"
id="path475" /></g><g
display="inline"
id="g477"><path
d="M-27-89.3c-1.4,0-2.6-1.2-2.6-2.6s1.2-2.6,2.6-2.6c1.4,0,2.6,1.2,2.6,2.6S-25.6-89.3-27-89.3z M-27-93.1 c-0.7,0-1.2,0.6-1.2,1.2c0,0.7,0.6,1.2,1.2,1.2c0.7,0,1.2-0.6,1.2-1.2C-25.8-92.6-26.4-93.1-27-93.1z"
id="path479"
fill="#EFDA48" /><path
d="M-27-93.1c-0.7,0-1.2,0.6-1.2,1.2c0,0.7,0.6,1.2,1.2,1.2c0.7,0,1.2-0.6,1.2-1.2C-25.8-92.6-26.4-93.1-27-93.1z"
id="path481" /></g><g
display="inline"
id="g483"><path
d="M-18.2-89.3c-1.4,0-2.6-1.2-2.6-2.6s1.2-2.6,2.6-2.6c1.4,0,2.6,1.2,2.6,2.6S-16.8-89.3-18.2-89.3z M-18.2-93.1c-0.7,0-1.2,0.6-1.2,1.2c0,0.7,0.6,1.2,1.2,1.2c0.7,0,1.2-0.6,1.2-1.2C-17-92.6-17.6-93.1-18.2-93.1z"
id="path485"
fill="#EFDA48" /><path
d="M-18.2-93.1c-0.7,0-1.2,0.6-1.2,1.2c0,0.7,0.6,1.2,1.2,1.2c0.7,0,1.2-0.6,1.2-1.2C-17-92.6-17.6-93.1-18.2-93.1z"
id="path487" /></g><g
display="inline"
id="g489"><path
d="M-9.4-89.3c-1.4,0-2.6-1.2-2.6-2.6s1.2-2.6,2.6-2.6s2.6,1.2,2.6,2.6S-8-89.3-9.4-89.3z M-9.4-93.1 c-0.7,0-1.2,0.6-1.2,1.2c0,0.7,0.6,1.2,1.2,1.2s1.2-0.6,1.2-1.2C-8.2-92.6-8.7-93.1-9.4-93.1z"
id="path491"
fill="#EFDA48" /><path
d="M-9.4-93.1c-0.7,0-1.2,0.6-1.2,1.2c0,0.7,0.6,1.2,1.2,1.2s1.2-0.6,1.2-1.2C-8.2-92.6-8.7-93.1-9.4-93.1z"
id="path493" /></g><g
display="inline"
id="g495"><path
d="M-0.6-89.3c-1.4,0-2.6-1.2-2.6-2.6s1.2-2.6,2.6-2.6S2-93.3,2-91.9S0.8-89.3-0.6-89.3z M-0.6-93.1 c-0.7,0-1.2,0.6-1.2,1.2c0,0.7,0.6,1.2,1.2,1.2s1.2-0.6,1.2-1.2C0.6-92.6,0.1-93.1-0.6-93.1z"
id="path497"
fill="#EFDA48" /><path
d="M-0.6-93.1c-0.7,0-1.2,0.6-1.2,1.2c0,0.7,0.6,1.2,1.2,1.2s1.2-0.6,1.2-1.2C0.6-92.6,0.1-93.1-0.6-93.1z"
id="path499" /></g><g
display="inline"
id="g501"><path
d="M8.2-89.3c-1.4,0-2.6-1.2-2.6-2.6s1.2-2.6,2.6-2.6s2.6,1.2,2.6,2.6S9.6-89.3,8.2-89.3z M8.2-93.1 c-0.7,0-1.2,0.6-1.2,1.2c0,0.7,0.6,1.2,1.2,1.2s1.2-0.6,1.2-1.2C9.4-92.6,8.9-93.1,8.2-93.1z"
id="path503"
fill="#EFDA48" /><path
d="M8.2-93.1c-0.7,0-1.2,0.6-1.2,1.2c0,0.7,0.6,1.2,1.2,1.2s1.2-0.6,1.2-1.2C9.4-92.6,8.9-93.1,8.2-93.1z"
id="path505" /></g><g
display="inline"
id="g507"><path
d="M17-89.3c-1.4,0-2.6-1.2-2.6-2.6s1.2-2.6,2.6-2.6s2.6,1.2,2.6,2.6S18.4-89.3,17-89.3z M17-93.1 c-0.7,0-1.2,0.6-1.2,1.2c0,0.7,0.6,1.2,1.2,1.2c0.7,0,1.2-0.6,1.2-1.2C18.2-92.6,17.7-93.1,17-93.1z"
id="path509"
fill="#EFDA48" /><path
d="M17-93.1c-0.7,0-1.2,0.6-1.2,1.2c0,0.7,0.6,1.2,1.2,1.2c0.7,0,1.2-0.6,1.2-1.2C18.2-92.6,17.7-93.1,17-93.1z"
id="path511" /></g><g
display="inline"
id="g513"><path
d="M25.8-89.3c-1.4,0-2.6-1.2-2.6-2.6s1.2-2.6,2.6-2.6c1.4,0,2.6,1.2,2.6,2.6S27.2-89.3,25.8-89.3z M25.8-93.1c-0.7,0-1.2,0.6-1.2,1.2c0,0.7,0.6,1.2,1.2,1.2s1.2-0.6,1.2-1.2C27-92.6,26.5-93.1,25.8-93.1z"
id="path515"
fill="#EFDA48" /><path
d="M25.8-93.1c-0.7,0-1.2,0.6-1.2,1.2c0,0.7,0.6,1.2,1.2,1.2s1.2-0.6,1.2-1.2C27-92.6,26.5-93.1,25.8-93.1z"
id="path517" /></g><g
display="inline"
id="g519"><path
d="M34.6-89.3c-1.4,0-2.6-1.2-2.6-2.6s1.2-2.6,2.6-2.6s2.6,1.2,2.6,2.6S36.1-89.3,34.6-89.3z M34.6-93.1 c-0.7,0-1.2,0.6-1.2,1.2c0,0.7,0.6,1.2,1.2,1.2c0.7,0,1.2-0.6,1.2-1.2C35.9-92.6,35.3-93.1,34.6-93.1z"
id="path521"
fill="#EFDA48" /><path
d="M34.6-93.1c-0.7,0-1.2,0.6-1.2,1.2c0,0.7,0.6,1.2,1.2,1.2c0.7,0,1.2-0.6,1.2-1.2C35.9-92.6,35.3-93.1,34.6-93.1z"
id="path523" /></g><g
display="inline"
id="g525"><path
d="M43.4-89.3c-1.4,0-2.6-1.2-2.6-2.6s1.2-2.6,2.6-2.6s2.6,1.2,2.6,2.6S44.9-89.3,43.4-89.3z M43.4-93.1 c-0.7,0-1.2,0.6-1.2,1.2c0,0.7,0.6,1.2,1.2,1.2s1.2-0.6,1.2-1.2C44.7-92.6,44.1-93.1,43.4-93.1z"
id="path527"
fill="#EFDA48" /><path
d="M43.4-93.1c-0.7,0-1.2,0.6-1.2,1.2c0,0.7,0.6,1.2,1.2,1.2s1.2-0.6,1.2-1.2C44.7-92.6,44.1-93.1,43.4-93.1z"
id="path529" /></g><g
display="inline"
id="g531"><path
d="M52.2-89.3c-1.4,0-2.6-1.2-2.6-2.6s1.2-2.6,2.6-2.6s2.6,1.2,2.6,2.6S53.7-89.3,52.2-89.3z M52.2-93.1 c-0.7,0-1.2,0.6-1.2,1.2c0,0.7,0.6,1.2,1.2,1.2c0.7,0,1.2-0.6,1.2-1.2C53.5-92.6,52.9-93.1,52.2-93.1z"
id="path533"
fill="#EFDA48" /><path
d="M52.2-93.1c-0.7,0-1.2,0.6-1.2,1.2c0,0.7,0.6,1.2,1.2,1.2c0.7,0,1.2-0.6,1.2-1.2C53.5-92.6,52.9-93.1,52.2-93.1z"
id="path535" /></g></g><g
display="none"
id="g537"><g
display="inline"
id="g539"><path
d="M-53.5-80.4c-1.4,0-2.6-1.2-2.6-2.6s1.2-2.6,2.6-2.6s2.6,1.2,2.6,2.6S-52-80.4-53.5-80.4z M-53.5-84.3 c-0.7,0-1.2,0.6-1.2,1.2s0.6,1.2,1.2,1.2c0.7,0,1.2-0.6,1.2-1.2S-52.8-84.3-53.5-84.3z"
id="path541"
fill="#EFDA48" /><path
d="M-53.5-84.3c-0.7,0-1.2,0.6-1.2,1.2s0.6,1.2,1.2,1.2c0.7,0,1.2-0.6,1.2-1.2S-52.8-84.3-53.5-84.3z"
id="path543" /></g><g
display="inline"
id="g545"><path
d="M-44.7-80.4c-1.4,0-2.6-1.2-2.6-2.6s1.2-2.6,2.6-2.6s2.6,1.2,2.6,2.6S-43.2-80.4-44.7-80.4z M-44.7-84.3 c-0.7,0-1.2,0.6-1.2,1.2s0.6,1.2,1.2,1.2c0.7,0,1.2-0.6,1.2-1.2S-44-84.3-44.7-84.3z"
id="path547"
fill="#EFDA48" /><path
d="M-44.7-84.3c-0.7,0-1.2,0.6-1.2,1.2s0.6,1.2,1.2,1.2c0.7,0,1.2-0.6,1.2-1.2S-44-84.3-44.7-84.3z"
id="path549" /></g><g
display="inline"
id="g551"><path
d="M-35.9-80.4c-1.4,0-2.6-1.2-2.6-2.6s1.2-2.6,2.6-2.6s2.6,1.2,2.6,2.6S-34.4-80.4-35.9-80.4z M-35.9-84.3 c-0.7,0-1.2,0.6-1.2,1.2s0.6,1.2,1.2,1.2c0.7,0,1.2-0.6,1.2-1.2S-35.2-84.3-35.9-84.3z"
id="path553"
fill="#EFDA48" /><path
d="M-35.9-84.3c-0.7,0-1.2,0.6-1.2,1.2s0.6,1.2,1.2,1.2c0.7,0,1.2-0.6,1.2-1.2S-35.2-84.3-35.9-84.3z"
id="path555" /></g><g
display="inline"
id="g557"><path
d="M-27-80.4c-1.4,0-2.6-1.2-2.6-2.6s1.2-2.6,2.6-2.6c1.4,0,2.6,1.2,2.6,2.6S-25.6-80.4-27-80.4z M-27-84.3 c-0.7,0-1.2,0.6-1.2,1.2s0.6,1.2,1.2,1.2c0.7,0,1.2-0.6,1.2-1.2S-26.4-84.3-27-84.3z"
id="path559"
fill="#EFDA48" /><path
d="M-27-84.3c-0.7,0-1.2,0.6-1.2,1.2s0.6,1.2,1.2,1.2c0.7,0,1.2-0.6,1.2-1.2S-26.4-84.3-27-84.3z"
id="path561" /></g><g
display="inline"
id="g563"><path
d="M-18.2-80.4c-1.4,0-2.6-1.2-2.6-2.6s1.2-2.6,2.6-2.6c1.4,0,2.6,1.2,2.6,2.6S-16.8-80.4-18.2-80.4z M-18.2-84.3c-0.7,0-1.2,0.6-1.2,1.2s0.6,1.2,1.2,1.2c0.7,0,1.2-0.6,1.2-1.2S-17.6-84.3-18.2-84.3z"
id="path565"
fill="#EFDA48" /><path
d="M-18.2-84.3c-0.7,0-1.2,0.6-1.2,1.2s0.6,1.2,1.2,1.2c0.7,0,1.2-0.6,1.2-1.2S-17.6-84.3-18.2-84.3z"
id="path567" /></g><g
display="inline"
id="g569"><path
d="M-9.4-80.4c-1.4,0-2.6-1.2-2.6-2.6s1.2-2.6,2.6-2.6s2.6,1.2,2.6,2.6S-8-80.4-9.4-80.4z M-9.4-84.3 c-0.7,0-1.2,0.6-1.2,1.2s0.6,1.2,1.2,1.2s1.2-0.6,1.2-1.2S-8.7-84.3-9.4-84.3z"
id="path571"
fill="#EFDA48" /><path
d="M-9.4-84.3c-0.7,0-1.2,0.6-1.2,1.2s0.6,1.2,1.2,1.2s1.2-0.6,1.2-1.2S-8.7-84.3-9.4-84.3z"
id="path573" /></g><g
display="inline"
id="g575"><path
d="M-0.6-80.4c-1.4,0-2.6-1.2-2.6-2.6s1.2-2.6,2.6-2.6S2-84.5,2-83.1S0.8-80.4-0.6-80.4z M-0.6-84.3 c-0.7,0-1.2,0.6-1.2,1.2s0.6,1.2,1.2,1.2s1.2-0.6,1.2-1.2S0.1-84.3-0.6-84.3z"
id="path577"
fill="#EFDA48" /><path
d="M-0.6-84.3c-0.7,0-1.2,0.6-1.2,1.2s0.6,1.2,1.2,1.2s1.2-0.6,1.2-1.2S0.1-84.3-0.6-84.3z"
id="path579" /></g><g
display="inline"
id="g581"><path
d="M8.2-80.4c-1.4,0-2.6-1.2-2.6-2.6s1.2-2.6,2.6-2.6s2.6,1.2,2.6,2.6S9.6-80.4,8.2-80.4z M8.2-84.3 c-0.7,0-1.2,0.6-1.2,1.2s0.6,1.2,1.2,1.2s1.2-0.6,1.2-1.2S8.9-84.3,8.2-84.3z"
id="path583"
fill="#EFDA48" /><path
d="M8.2-84.3c-0.7,0-1.2,0.6-1.2,1.2s0.6,1.2,1.2,1.2s1.2-0.6,1.2-1.2S8.9-84.3,8.2-84.3z"
id="path585" /></g><g
display="inline"
id="g587"><path
d="M17-80.4c-1.4,0-2.6-1.2-2.6-2.6s1.2-2.6,2.6-2.6s2.6,1.2,2.6,2.6S18.4-80.4,17-80.4z M17-84.3 c-0.7,0-1.2,0.6-1.2,1.2s0.6,1.2,1.2,1.2c0.7,0,1.2-0.6,1.2-1.2S17.7-84.3,17-84.3z"
id="path589"
fill="#EFDA48" /><path
d="M17-84.3c-0.7,0-1.2,0.6-1.2,1.2s0.6,1.2,1.2,1.2c0.7,0,1.2-0.6,1.2-1.2S17.7-84.3,17-84.3z"
id="path591" /></g><g
display="inline"
id="g593"><path
d="M25.8-80.4c-1.4,0-2.6-1.2-2.6-2.6s1.2-2.6,2.6-2.6c1.4,0,2.6,1.2,2.6,2.6S27.2-80.4,25.8-80.4z M25.8-84.3c-0.7,0-1.2,0.6-1.2,1.2s0.6,1.2,1.2,1.2s1.2-0.6,1.2-1.2S26.5-84.3,25.8-84.3z"
id="path595"
fill="#EFDA48" /><path
d="M25.8-84.3c-0.7,0-1.2,0.6-1.2,1.2s0.6,1.2,1.2,1.2s1.2-0.6,1.2-1.2S26.5-84.3,25.8-84.3z"
id="path597" /></g><g
display="inline"
id="g599"><path
d="M34.6-80.4c-1.4,0-2.6-1.2-2.6-2.6s1.2-2.6,2.6-2.6s2.6,1.2,2.6,2.6S36.1-80.4,34.6-80.4z M34.6-84.3 c-0.7,0-1.2,0.6-1.2,1.2s0.6,1.2,1.2,1.2c0.7,0,1.2-0.6,1.2-1.2S35.3-84.3,34.6-84.3z"
id="path601"
fill="#EFDA48" /><path
d="M34.6-84.3c-0.7,0-1.2,0.6-1.2,1.2s0.6,1.2,1.2,1.2c0.7,0,1.2-0.6,1.2-1.2S35.3-84.3,34.6-84.3z"
id="path603" /></g><g
display="inline"
id="g605"><path
d="M43.4-80.4c-1.4,0-2.6-1.2-2.6-2.6s1.2-2.6,2.6-2.6s2.6,1.2,2.6,2.6S44.9-80.4,43.4-80.4z M43.4-84.3 c-0.7,0-1.2,0.6-1.2,1.2s0.6,1.2,1.2,1.2s1.2-0.6,1.2-1.2S44.1-84.3,43.4-84.3z"
id="path607"
fill="#EFDA48" /><path
d="M43.4-84.3c-0.7,0-1.2,0.6-1.2,1.2s0.6,1.2,1.2,1.2s1.2-0.6,1.2-1.2S44.1-84.3,43.4-84.3z"
id="path609" /></g><g
display="inline"
id="g611"><path
d="M52.2-80.4c-1.4,0-2.6-1.2-2.6-2.6s1.2-2.6,2.6-2.6s2.6,1.2,2.6,2.6S53.7-80.4,52.2-80.4z M52.2-84.3 c-0.7,0-1.2,0.6-1.2,1.2s0.6,1.2,1.2,1.2c0.7,0,1.2-0.6,1.2-1.2S52.9-84.3,52.2-84.3z"
id="path613"
fill="#EFDA48" /><path
d="M52.2-84.3c-0.7,0-1.2,0.6-1.2,1.2s0.6,1.2,1.2,1.2c0.7,0,1.2-0.6,1.2-1.2S52.9-84.3,52.2-84.3z"
id="path615" /></g></g><g
display="none"
id="g617"><g
display="inline"
id="g619"><path
d="M-18.2-63.5c-1.4,0-2.6-1.2-2.6-2.6s1.2-2.6,2.6-2.6c1.4,0,2.6,1.2,2.6,2.6S-16.8-63.5-18.2-63.5z M-18.2-67.4c-0.7,0-1.2,0.6-1.2,1.2s0.6,1.2,1.2,1.2c0.7,0,1.2-0.6,1.2-1.2S-17.6-67.4-18.2-67.4z"
id="path621"
fill="#EFDA48" /><path
d="M-18.2-67.4c-0.7,0-1.2,0.6-1.2,1.2s0.6,1.2,1.2,1.2c0.7,0,1.2-0.6,1.2-1.2S-17.6-67.4-18.2-67.4z"
id="path623" /></g><g
display="inline"
id="g625"><path
d="M-9.4-63.5c-1.4,0-2.6-1.2-2.6-2.6s1.2-2.6,2.6-2.6s2.6,1.2,2.6,2.6S-8-63.5-9.4-63.5z M-9.4-67.4 c-0.7,0-1.2,0.6-1.2,1.2s0.6,1.2,1.2,1.2s1.2-0.6,1.2-1.2S-8.7-67.4-9.4-67.4z"
id="path627"
fill="#EFDA48" /><path
d="M-9.4-67.4c-0.7,0-1.2,0.6-1.2,1.2s0.6,1.2,1.2,1.2s1.2-0.6,1.2-1.2S-8.7-67.4-9.4-67.4z"
id="path629" /></g><g
display="inline"
id="g631"><path
d="M-0.6-63.5c-1.4,0-2.6-1.2-2.6-2.6s1.2-2.6,2.6-2.6S2-67.6,2-66.1S0.8-63.5-0.6-63.5z M-0.6-67.4 c-0.7,0-1.2,0.6-1.2,1.2s0.6,1.2,1.2,1.2s1.2-0.6,1.2-1.2S0.1-67.4-0.6-67.4z"
id="path633"
fill="#EFDA48" /><path
d="M-0.6-67.4c-0.7,0-1.2,0.6-1.2,1.2s0.6,1.2,1.2,1.2s1.2-0.6,1.2-1.2S0.1-67.4-0.6-67.4z"
id="path635" /></g><g
display="inline"
id="g637"><path
d="M8.2-63.5c-1.4,0-2.6-1.2-2.6-2.6s1.2-2.6,2.6-2.6s2.6,1.2,2.6,2.6S9.6-63.5,8.2-63.5z M8.2-67.4 c-0.7,0-1.2,0.6-1.2,1.2s0.6,1.2,1.2,1.2s1.2-0.6,1.2-1.2S8.9-67.4,8.2-67.4z"
id="path639"
fill="#EFDA48" /><path
d="M8.2-67.4c-0.7,0-1.2,0.6-1.2,1.2s0.6,1.2,1.2,1.2s1.2-0.6,1.2-1.2S8.9-67.4,8.2-67.4z"
id="path641" /></g><g
display="inline"
id="g643"><path
d="M17-63.5c-1.4,0-2.6-1.2-2.6-2.6s1.2-2.6,2.6-2.6s2.6,1.2,2.6,2.6S18.4-63.5,17-63.5z M17-67.4 c-0.7,0-1.2,0.6-1.2,1.2s0.6,1.2,1.2,1.2c0.7,0,1.2-0.6,1.2-1.2S17.7-67.4,17-67.4z"
id="path645"
fill="#EFDA48" /><path
d="M17-67.4c-0.7,0-1.2,0.6-1.2,1.2s0.6,1.2,1.2,1.2c0.7,0,1.2-0.6,1.2-1.2S17.7-67.4,17-67.4z"
id="path647" /></g></g><g
display="none"
id="g649"><g
display="inline"
id="g651"><polygon
points="97.1,28 93.5,31.6 97.1,35.2 100.7,31.6 "
id="polygon653"
fill="#EFDA48" /><path
d="M96.2,30.8c-0.5,0.5-0.5,1.3,0,1.8c0.5,0.5,1.3,0.5,1.8,0c0.5-0.5,0.5-1.3,0-1.8C97.5,30.3,96.7,30.3,96.2,30.8z"
id="path655" /></g><g
display="inline"
id="g657"><path
d="M104.1,28.6c-1,1-2.7,1-3.7,0s-1-2.7,0-3.7c1-1,2.7-1,3.7,0S105.1,27.5,104.1,28.6z M101.4,25.8 c-0.5,0.5-0.5,1.3,0,1.8c0.5,0.5,1.3,0.5,1.8,0c0.5-0.5,0.5-1.3,0-1.8C102.7,25.3,101.9,25.3,101.4,25.8z"
id="path659"
fill="#EFDA48" /><path
d="M101.4,25.8c-0.5,0.5-0.5,1.3,0,1.8c0.5,0.5,1.3,0.5,1.8,0c0.5-0.5,0.5-1.3,0-1.8C102.7,25.3,101.9,25.3,101.4,25.8z"
id="path661" /></g><g
display="inline"
id="g663"><path
d="M108.8,24c-1,1-2.7,1-3.7,0s-1-2.7,0-3.7c1-1,2.7-1,3.7,0S109.8,23,108.8,24z M106,21.3 c-0.5,0.5-0.5,1.3,0,1.8c0.5,0.5,1.3,0.5,1.8,0c0.5-0.5,0.5-1.3,0-1.8C107.3,20.8,106.5,20.8,106,21.3z"
id="path665"
fill="#EFDA48" /><path
d="M106,21.3c-0.5,0.5-0.5,1.3,0,1.8c0.5,0.5,1.3,0.5,1.8,0c0.5-0.5,0.5-1.3,0-1.8C107.3,20.8,106.5,20.8,106,21.3z"
id="path667" /></g><g
display="inline"
id="g669"><path
d="M114.1,18.7c-1,1-2.7,1-3.7,0s-1-2.7,0-3.7s2.7-1,3.7,0S115.1,17.7,114.1,18.7z M111.3,16 c-0.5,0.5-0.5,1.3,0,1.8c0.5,0.5,1.3,0.5,1.8,0c0.5-0.5,0.5-1.3,0-1.8C112.6,15.5,111.8,15.5,111.3,16z"
id="path671"
fill="#EFDA48" /><path
d="M111.3,16c-0.5,0.5-0.5,1.3,0,1.8c0.5,0.5,1.3,0.5,1.8,0c0.5-0.5,0.5-1.3,0-1.8C112.6,15.5,111.8,15.5,111.3,16z"
id="path673" /></g></g><g
display="none"
id="g675"><g
display="inline"
id="g677"><polygon
points="-109.3,17 -112.9,13.4 -116.6,17 -112.9,20.7 "
id="polygon679"
fill="#EFDA48" /><path
d="M-112.1,16.2c-0.5-0.5-1.3-0.5-1.8,0c-0.5,0.5-0.5,1.3,0,1.8c0.5,0.5,1.3,0.5,1.8,0C-111.6,17.5-111.6,16.7-112.1,16.2z "
id="path681" /></g><g
display="inline"
id="g683"><path
d="M-109.9,24.1c-1-1-1-2.7,0-3.7c1-1,2.7-1,3.7,0s1,2.7,0,3.7S-108.9,25.1-109.9,24.1z M-107.2,21.3 c-0.5-0.5-1.3-0.5-1.8,0c-0.5,0.5-0.5,1.3,0,1.8c0.5,0.5,1.3,0.5,1.8,0C-106.7,22.6-106.7,21.8-107.2,21.3z"
id="path685"
fill="#EFDA48" /><path
d="M-107.2,21.3c-0.5-0.5-1.3-0.5-1.8,0c-0.5,0.5-0.5,1.3,0,1.8c0.5,0.5,1.3,0.5,1.8,0C-106.7,22.6-106.7,21.8-107.2,21.3z "
id="path687" /></g><g
display="inline"
id="g689"><path
d="M-105.3,28.7c-1-1-1-2.7,0-3.7s2.7-1,3.7,0s1,2.7,0,3.7S-104.3,29.8-105.3,28.7z M-102.6,26 c-0.5-0.5-1.3-0.5-1.8,0c-0.5,0.5-0.5,1.3,0,1.8c0.5,0.5,1.3,0.5,1.8,0C-102.1,27.3-102.1,26.5-102.6,26z"
id="path691"
fill="#EFDA48" /><path
d="M-102.6,26c-0.5-0.5-1.3-0.5-1.8,0c-0.5,0.5-0.5,1.3,0,1.8c0.5,0.5,1.3,0.5,1.8,0C-102.1,27.3-102.1,26.5-102.6,26z"
id="path693" /></g><g
display="inline"
id="g695"><path
d="M-100.1,34c-1-1-1-2.7,0-3.7c1-1,2.7-1,3.7,0c1,1,1,2.7,0,3.7S-99,35-100.1,34z M-97.3,31.3 c-0.5-0.5-1.3-0.5-1.8,0c-0.5,0.5-0.5,1.3,0,1.8s1.3,0.5,1.8,0C-96.8,32.6-96.8,31.8-97.3,31.3z"
id="path697"
fill="#EFDA48" /><path
d="M-97.3,31.3c-0.5-0.5-1.3-0.5-1.8,0c-0.5,0.5-0.5,1.3,0,1.8s1.3,0.5,1.8,0C-96.8,32.6-96.8,31.8-97.3,31.3z"
id="path699" /></g></g><g
id="g701"><path
d="M-133.5,17c-9.4,0-17.1-7.6-17.1-17.1s7.6-17.1,17.1-17.1s17.1,7.6,17.1,17.1S-124.1,17-133.5,17z M-133.5-8.2c-4.5,0-8.1,3.6-8.1,8.1S-138,8-133.5,8s8.1-3.6,8.1-8.1S-129-8.2-133.5-8.2z"
id="path703"
fill="#EFDA48" /><path
d="M65.5,131.7c-9.4,0-17.1-7.6-17.1-17.1s7.6-17.1,17.1-17.1s17.1,7.6,17.1,17.1S74.9,131.7,65.5,131.7z M65.5,106.5c-4.5,0-8.1,3.6-8.1,8.1c0,4.5,3.6,8.1,8.1,8.1s8.1-3.6,8.1-8.1C73.6,110.1,70,106.5,65.5,106.5z"
id="path705"
fill="#EFDA48" /><path
d="M131.2,17c-9.4,0-17.1-7.6-17.1-17.1s7.6-17.1,17.1-17.1s17.1,7.6,17.1,17.1S140.6,17,131.2,17z M131.2-8.2c-4.5,0-8.1,3.6-8.1,8.1s3.6,8.1,8.1,8.1s8.1-3.6,8.1-8.1S135.6-8.2,131.2-8.2z"
id="path707"
fill="#EFDA48" /><path
d="M65.5-96.6c-9.4,0-17.1-7.6-17.1-17.1s7.6-17.1,17.1-17.1s17.1,7.6,17.1,17.1S74.9-96.6,65.5-96.6z M65.5-121.7c-4.5,0-8.1,3.6-8.1,8.1c0,4.5,3.6,8.1,8.1,8.1s8.1-3.6,8.1-8.1C73.6-118.1,70-121.7,65.5-121.7z"
id="path709"
fill="#EFDA48" /><path
d="M-66.5-97.6c-9.4,0-17.1-7.6-17.1-17.1s7.6-17.1,17.1-17.1s17.1,7.6,17.1,17.1S-57.1-97.6-66.5-97.6z M-66.5-122.7c-4.5,0-8.1,3.6-8.1,8.1c0,4.5,3.6,8.1,8.1,8.1c4.5,0,8.1-3.6,8.1-8.1C-58.4-119.1-62-122.7-66.5-122.7z"
id="path711"
fill="#EFDA48" /><path
d="M-66.5,131.7c-9.4,0-17.1-7.6-17.1-17.1s7.6-17.1,17.1-17.1s17.1,7.6,17.1,17.1S-57.1,131.7-66.5,131.7z M-66.5,106.5c-4.5,0-8.1,3.6-8.1,8.1c0,4.5,3.6,8.1,8.1,8.1s8.1-3.6,8.1-8.1C-58.4,110.1-62,106.5-66.5,106.5z"
id="path713"
fill="#EFDA48" /></g></g><path
d="M131.2-8.2c-4.5,0-8.1,3.6-8.1,8.1s3.6,8.1,8.1,8.1s8.1-3.6,8.1-8.1S135.6-8.2,131.2-8.2z"
id="path715"
fill="#FFFFFF" /><path
d="M65.5,106.5c-4.5,0-8.1,3.6-8.1,8.1c0,4.5,3.6,8.1,8.1,8.1s8.1-3.6,8.1-8.1C73.6,110.1,70,106.5,65.5,106.5 z"
id="path717"
fill="#FFFFFF" /><path
d="M-66.5,106.5c-4.5,0-8.1,3.6-8.1,8.1c0,4.5,3.6,8.1,8.1,8.1c4.5,0,8.1-3.6,8.1-8.1 C-58.4,110.1-62,106.5-66.5,106.5z"
id="path719"
fill="#FFFFFF" /><path
d="M-133.5-8.1c-4.5,0-8.1,3.6-8.1,8.1s3.6,8.1,8.1,8.1s8.1-3.6,8.1-8.1S-129-8.1-133.5-8.1z"
id="path721"
fill="#FFFFFF" /><path
d="M-66.5-122.7c-4.5,0-8.1,3.6-8.1,8.1c0,4.5,3.6,8.1,8.1,8.1c4.5,0,8.1-3.6,8.1-8.1 C-58.4-119.1-62-122.7-66.5-122.7z"
id="path723"
fill="#FFFFFF" /><path
d="M65.5-121.7c-4.5,0-8.1,3.6-8.1,8.1c0,4.5,3.6,8.1,8.1,8.1s8.1-3.6,8.1-8.1C73.6-118.1,70-121.7,65.5-121.7 z"
id="path725"
fill="#FFFFFF" /></symbol><g
id="Ebene_2"
display="none"><image
display="inline"
overflow="visible"
width="1024"
height="898"
xlink:href="file:///C:/Users/jhalleux/AppData/Local/Microsoft/Windows/INetCache/Content.Outlook/POK9Z6FJ/../../1607_Juli/Calliope/mini_mit_logo_1024.png"
transform="matrix(0.3025 0 0 0.3025 17.8521 265.1405)"
id="image728"
sodipodi:absref="C:\Users\jhalleux\AppData\Local\Microsoft\Windows\INetCache\Content.Outlook\POK9Z6FJ\..\..\1607_Juli\Calliope\mini_mit_logo_1024.png" /></g><g
id="Ebene_1" /><g
id="Ebene_3" /><g
id="Ebene_4" /><use
style="overflow:visible"
overflow="visible"
transform="matrix(1.3709867,0,0,-1.3709867,170.13972,147.46239)"
y="-112.9"
x="-122.3"
id="XMLID_11_"
height="225.8"
width="244.60001"
xlink:href="#Mini_front" /><g
id="Ebene_7"
display="none"><polygon
display="inline"
points="717.6,154.6 604.5,154.6 604.5,54.2 589.7,54.2 589.7,154.6 476.6,154.6 476.6,169.4 589.7,169.4 589.7,221.4 604.5,221.4 604.5,169.4 717.6,169.4 "
id="polygon928"
fill="#E6007E" /><polygon
display="inline"
points="1145.9,152.4 1032.8,152.4 1032.8,52 1018,52 1018,152.4 904.9,152.4 904.9,167.2 1018,167.2 1018,219.2 1032.8,219.2 1032.8,167.2 1145.9,167.2 "
id="polygon930"
fill="#E6007E" /><polygon
display="inline"
points="1986.9,163.6 1873.8,163.6 1873.8,63.2 1859.1,63.2 1859.1,163.6 1746,163.6 1746,178.4 1859.1,178.4 1859.1,230.5 1873.8,230.5 1873.8,178.4 1986.9,178.4 "
id="polygon932"
fill="#E6007E" /><polygon
display="inline"
points="2403,163.6 2289.9,163.6 2289.9,63.2 2275.1,63.2 2275.1,163.6 2162,163.6 2162,178.4 2275.1,178.4 2275.1,230.5 2289.9,230.5 2289.9,178.4 2403,178.4 "
id="polygon934"
fill="#E6007E" /></g><g
id="Ebene_6"
display="none"><rect
x="1859.1"
y="432.2"
display="inline"
width="14.8"
height="167.2"
id="rect937"
fill="#E6007E" /><rect
x="1746"
y="532.6"
display="inline"
width="240.9"
height="14.8"
id="rect939"
fill="#E6007E" /></g></svg>

After

Width:  |  Height:  |  Size: 55 KiB

134
docs/static/calliope.svg vendored Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 113 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 75 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 75 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 69 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 78 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 70 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 53 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 70 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 91 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 87 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 108 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 21 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 18 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 20 KiB

56
libs/microbit/basic.ts Normal file
View File

@ -0,0 +1,56 @@
/**
Well known colors
*/
enum Colors {
//% blockIdentity=basic.color
//% block=red
Red = 0xFF0000,
//% blockIdentity=basic.color
//% block=orange
Orange = 0xFFA500,
//% blockIdentity=basic.color
//% block=yellow
Yellow = 0xFFFF00,
//% blockIdentity=basic.color
//% block=green
Green = 0x00FF00,
//% blockIdentity=basic.color
//% block=blue
Blue = 0x0000FF,
//% blockIdentity=basic.color
//% block=indigo
Indigo = 0x4b0082,
//% blockIdentity=basic.color
//% block=violet
Violet = 0x8a2be2,
//% blockIdentity=basic.color
//% block=purple
Purple = 0xFF00FF,
//% blockIdentity=basic.color
//% block=white
White = 0xFFFFFF
}
/**
* Provides access to basic micro:bit functionality.
*/
//% color=#0078D7 weight=100
namespace basic {
/**
* Sets the color on the build-in LED
*/
//% blockId=device_set_led_color block="set led to %color=color_id" icon="\uf00a"
//% weight=50
export function setLedColor(color: number) {
// TODO
}
/**
* Converts the color name to a number
*/
//% blockId=color_id block="%c" shim=TD_ID
export function color(c: Colors): number {
return c;
}
}

View File

@ -34,15 +34,15 @@ enum EventBusSource {
MICROBIT_ID_IO_P5_ = MICROBIT_ID_IO_P5,
MICROBIT_ID_IO_P6_ = MICROBIT_ID_IO_P6,
MICROBIT_ID_IO_P7_ = MICROBIT_ID_IO_P7,
MICROBIT_ID_IO_P8_ = MICROBIT_ID_IO_P8,
//MICROBIT_ID_IO_P8_ = MICROBIT_ID_IO_P8,
MICROBIT_ID_IO_P9_ = MICROBIT_ID_IO_P9,
MICROBIT_ID_IO_P10_ = MICROBIT_ID_IO_P10,
MICROBIT_ID_IO_P11_ = MICROBIT_ID_IO_P11,
MICROBIT_ID_IO_P12_ = MICROBIT_ID_IO_P12,
MICROBIT_ID_IO_P13_ = MICROBIT_ID_IO_P13,
MICROBIT_ID_IO_P14_ = MICROBIT_ID_IO_P14,
MICROBIT_ID_IO_P15_ = MICROBIT_ID_IO_P15,
MICROBIT_ID_IO_P16_ = MICROBIT_ID_IO_P16,
//MICROBIT_ID_IO_P12_ = MICROBIT_ID_IO_P12,
//MICROBIT_ID_IO_P13_ = MICROBIT_ID_IO_P13,
//MICROBIT_ID_IO_P14_ = MICROBIT_ID_IO_P14,
//MICROBIT_ID_IO_P15_ = MICROBIT_ID_IO_P15,
//MICROBIT_ID_IO_P16_ = MICROBIT_ID_IO_P16,
MICROBIT_ID_IO_P19_ = MICROBIT_ID_IO_P19,
MICROBIT_ID_IO_P20_ = MICROBIT_ID_IO_P20,
MES_DEVICE_INFO_ID_ = MES_DEVICE_INFO_ID,

227
libs/microbit/dal.d.ts vendored
View File

@ -79,6 +79,7 @@ declare const enum DAL {
MICROBIT_BLE_PAIRING_TIMEOUT = 90,
MICROBIT_BLE_POWER_LEVELS = 8,
MICROBIT_BLE_MAXIMUM_BONDS = 4,
MICROBIT_BLE_EDDYSTONE_URL_ADV_INTERVAL = 400,
// built/yt/yotta_modules/microbit-dal/inc//bluetooth/MicroBitButtonService.h
// built/yt/yotta_modules/microbit-dal/inc//bluetooth/MicroBitDFUService.h
MICROBIT_DFU_OPCODE_START_DFU = 1,
@ -88,6 +89,7 @@ declare const enum DAL {
// built/yt/yotta_modules/microbit-dal/inc//bluetooth/MicroBitIOPinService.h
MICROBIT_IO_PIN_SERVICE_PINCOUNT = 19,
MICROBIT_IO_PIN_SERVICE_DATA_SIZE = 10,
MICROBIT_PWM_PIN_SERVICE_DATA_SIZE = 2,
// built/yt/yotta_modules/microbit-dal/inc//bluetooth/MicroBitLEDService.h
MICROBIT_BLE_MAXIMUM_SCROLLTEXT = 20,
// built/yt/yotta_modules/microbit-dal/inc//bluetooth/MicroBitMagnetometerService.h
@ -131,15 +133,9 @@ declare const enum DAL {
MICROBIT_ID_IO_P5 = 12,
MICROBIT_ID_IO_P6 = 13,
MICROBIT_ID_IO_P7 = 14,
MICROBIT_ID_IO_P8 = 15,
MICROBIT_ID_IO_P9 = 16,
MICROBIT_ID_IO_P10 = 17,
MICROBIT_ID_IO_P11 = 18,
MICROBIT_ID_IO_P12 = 19,
MICROBIT_ID_IO_P13 = 20,
MICROBIT_ID_IO_P14 = 21,
MICROBIT_ID_IO_P15 = 22,
MICROBIT_ID_IO_P16 = 23,
MICROBIT_ID_IO_P19 = 24,
MICROBIT_ID_IO_P20 = 25,
MICROBIT_ID_BUTTON_AB = 26,
@ -149,6 +145,13 @@ declare const enum DAL {
MICROBIT_ID_RADIO_DATA_READY = 30,
MICROBIT_ID_MULTIBUTTON_ATTACH = 31,
MICROBIT_ID_SERIAL = 32,
CALLIOPE_ID_IO_P0 = 33,
CALLIOPE_ID_IO_P7 = 34,
CALLIOPE_ID_IO_P8 = 35,
CALLIOPE_ID_IO_P9 = 36,
CALLIOPE_ID_IO_P13 = 37,
CALLIOPE_ID_IO_P14 = 38,
CALLIOPE_ID_IO_P15 = 39,
MICROBIT_ID_MESSAGE_BUS_LISTENER = 1021,
MICROBIT_ID_NOTIFY_ONE = 1022,
MICROBIT_ID_NOTIFY = 1023,
@ -186,15 +189,220 @@ declare const enum DAL {
MICROBIT_DISPLAY_EVT_FREE = 1,
MICROBIT_SERIAL_EVT_TX_EMPTY = 2,
MICROBIT_UART_S_EVT_TX_EMPTY = 3,
// built/yt/yotta_modules/microbit-dal/inc//drivers/CalliopeRGB.h
RGB_LED_DEFAULT_GREEN = 0,
RGB_LED_DEFAULT_RED = 0,
RGB_LED_DEFAULT_BLUE = 0,
RGB_LED_DEFAULT_WHITE = 0,
RGB_KEEP_VALUE = -1,
RGB_LED_MAX_INTENSITY = 50,
// built/yt/yotta_modules/microbit-dal/inc//drivers/CalliopeSoundMotor.h
CALLIOPE_SM_DEFAULT_DUTY_M = 50,
CALLIOPE_SM_DEFAULT_DUTY_S = 100,
CALLIOPE_SM_DEFAULT_FREQUENCY_S = 4000,
CALLIOPE_SM_DEFAULT_SILENT_MODE = 1,
CALLIOPE_SM_PRESCALER_M = 2,
CALLIOPE_SM_PRESCALER_S = 0,
CALLIOPE_SM_PRESCALER_S_LF = 4,
CALLIOPE_SM_PERIOD_M = 100,
CALLIOPE_MIN_FREQUENCY_HZ_S_NP = 245,
CALLIOPE_MIN_FREQUENCY_HZ_S = 20,
CALLIOPE_MAX_FREQUENCY_HZ_S = 20000,
CALLIOPE_BOARD_FREQUENCY = 16000000,
// built/yt/yotta_modules/microbit-dal/inc//drivers/DynamicPwm.h
NO_PWMS = 3,
MICROBIT_DEFAULT_PWM_PERIOD = 20000,
PWM_PERSISTENCE_TRANSIENT = 1,
PWM_PERSISTENCE_PERSISTENT = 2,
// built/yt/yotta_modules/microbit-dal/inc//drivers/MicroBitAccelerometer.h
// built/yt/yotta_modules/microbit-dal/inc//drivers/MicroBitAccelerometer-bmx.h
BMX055_ACC_WHOAMI = 0x00,
BMX055_ACC_D_X_LSB = 0x02,
BMX055_ACC_D_X_MSB = 0x03,
BMX055_ACC_D_Y_LSB = 0x04,
BMX055_ACC_D_Y_MSB = 0x05,
BMX055_ACC_D_Z_LSB = 0x06,
BMX055_ACC_D_Z_MSB = 0x07,
BMX055_ACC_D_TEMP = 0x08,
BMX055_ACC_INT_STATUS_0 = 0x09,
BMX055_ACC_INT_STATUS_1 = 0x0A,
BMX055_ACC_INT_STATUS_2 = 0x0B,
BMX055_ACC_INT_STATUS_3 = 0x0C,
BMX055_ACC_FIFO_STATUS = 0x0E,
BMX055_ACC_PMU_RANGE = 0x0F,
BMX055_ACC_PMU_BW = 0x10,
BMX055_ACC_PMU_LPW = 0x11,
BMX055_ACC_PMU_LOW_POWER = 0x12,
BMX055_ACC_D_HBW = 0x13,
BMX055_ACC_BGW_SOFTRESET = 0x14,
BMX055_ACC_INT_EN_0 = 0x16,
BMX055_ACC_INT_EN_1 = 0x17,
BMX055_ACC_INT_EN_2 = 0x18,
BMX055_ACC_INT_MAP_0 = 0x19,
BMX055_ACC_INT_MAP_1 = 0x1A,
BMX055_ACC_INT_MAP_2 = 0x1B,
BMX055_ACC_INT_SRC = 0x1E,
BMX055_ACC_INT_OUT_CTRL = 0x20,
BMX055_ACC_INT_RST_LATCH = 0x21,
BMX055_ACC_INT_0 = 0x22,
BMX055_ACC_INT_1 = 0x23,
BMX055_ACC_INT_2 = 0x24,
BMX055_ACC_INT_3 = 0x25,
BMX055_ACC_INT_4 = 0x26,
BMX055_ACC_INT_5 = 0x27,
BMX055_ACC_INT_6 = 0x28,
BMX055_ACC_INT_7 = 0x29,
BMX055_ACC_INT_8 = 0x2A,
BMX055_ACC_INT_9 = 0x2B,
BMX055_ACC_INT_A = 0x2C,
BMX055_ACC_INT_B = 0x2D,
BMX055_ACC_INT_C = 0x2E,
BMX055_ACC_INT_D = 0x2F,
BMX055_ACC_FIFO_CONFIG_0 = 0x30,
BMX055_ACC_PMU_SELF_TEST = 0x32,
BMX055_ACC_TRIM_NVM_CTRL = 0x33,
BMX055_ACC_BGW_SPI3_WDT = 0x34,
BMX055_ACC_OFC_CTRL = 0x36,
BMX055_ACC_OFC_SETTING = 0x37,
BMX055_ACC_OFC_OFFSET_X = 0x38,
BMX055_ACC_OFC_OFFSET_Y = 0x39,
BMX055_ACC_OFC_OFFSET_Z = 0x3A,
BMX055_ACC_TRIM_GPO = 0x3B,
BMX055_ACC_TRIM_GP1 = 0x3C,
BMX055_ACC_FIFO_CONFIG_1 = 0x3E,
BMX055_ACC_FIFO_DATA = 0x3F,
BMX055_GYRO_WHOAMI = 0x00,
BMX055_GYRO_RATE_X_LSB = 0x02,
BMX055_GYRO_RATE_X_MSB = 0x03,
BMX055_GYRO_RATE_Y_LSB = 0x04,
BMX055_GYRO_RATE_Y_MSB = 0x05,
BMX055_GYRO_RATE_Z_LSB = 0x06,
BMX055_GYRO_RATE_Z_MSB = 0x07,
BMX055_GYRO_INT_STATUS_0 = 0x09,
BMX055_GYRO_INT_STATUS_1 = 0x0A,
BMX055_GYRO_INT_STATUS_2 = 0x0B,
BMX055_GYRO_INT_STATUS_3 = 0x0C,
BMX055_GYRO_FIFO_STATUS = 0x0E,
BMX055_GYRO_RANGE = 0x0F,
BMX055_GYRO_BW = 0x10,
BMX055_GYRO_LPM1 = 0x11,
BMX055_GYRO_LPM2 = 0x12,
BMX055_GYRO_RATE_HBW = 0x13,
BMX055_GYRO_BGW_SOFTRESET = 0x14,
BMX055_GYRO_INT_EN_0 = 0x15,
BMX055_GYRO_INT_EN_1 = 0x16,
BMX055_GYRO_INT_MAP_0 = 0x17,
BMX055_GYRO_INT_MAP_1 = 0x18,
BMX055_GYRO_INT_MAP_2 = 0x19,
BMX055_GYRO_INT_SRC_1 = 0x1A,
BMX055_GYRO_INT_SRC_2 = 0x1B,
BMX055_GYRO_INT_SRC_3 = 0x1C,
BMX055_GYRO_FIFO_EN = 0x1E,
BMX055_GYRO_INT_RST_LATCH = 0x21,
BMX055_GYRO_HIGH_TH_X = 0x22,
BMX055_GYRO_HIGH_DUR_X = 0x23,
BMX055_GYRO_HIGH_TH_Y = 0x24,
BMX055_GYRO_HIGH_DUR_Y = 0x25,
BMX055_GYRO_HIGH_TH_Z = 0x26,
BMX055_GYRO_HIGH_DUR_Z = 0x27,
BMX055_GYRO_SOC = 0x31,
BMX055_GYRO_A_FOC = 0x32,
BMX055_GYRO_TRIM_NVM_CTRL = 0x33,
BMX055_GYRO_BGW_SPI3_WDT = 0x34,
BMX055_GYRO_OFC1 = 0x36,
BMX055_GYRO_OFC2 = 0x37,
BMX055_GYRO_OFC3 = 0x38,
BMX055_GYRO_OFC4 = 0x39,
BMX055_GYRO_TRIM_GP0 = 0x3A,
BMX055_GYRO_TRIM_GP1 = 0x3B,
BMX055_GYRO_BIST = 0x3C,
BMX055_GYRO_FIFO_CONFIG_0 = 0x3D,
BMX055_GYRO_FIFO_CONFIG_1 = 0x3E,
BMX055_MAG_WHOAMI = 0x40,
BMX055_MAG_Reserved = 0x41,
BMX055_MAG_XOUT_LSB = 0x42,
BMX055_MAG_XOUT_MSB = 0x43,
BMX055_MAG_YOUT_LSB = 0x44,
BMX055_MAG_YOUT_MSB = 0x45,
BMX055_MAG_ZOUT_LSB = 0x46,
BMX055_MAG_ZOUT_MSB = 0x47,
BMX055_MAG_ROUT_LSB = 0x48,
BMX055_MAG_ROUT_MSB = 0x49,
BMX055_MAG_INT_STATUS = 0x4A,
BMX055_MAG_PWR_CNTL1 = 0x4B,
BMX055_MAG_PWR_CNTL2 = 0x4C,
BMX055_MAG_INT_EN_1 = 0x4D,
BMX055_MAG_INT_EN_2 = 0x4E,
BMX055_MAG_LOW_THS = 0x4F,
BMX055_MAG_HIGH_THS = 0x50,
BMX055_MAG_REP_XY = 0x51,
BMX055_MAG_REP_Z = 0x52,
BMM050_DIG_X1 = 0x5D,
BMM050_DIG_Y1 = 0x5E,
BMM050_DIG_Z4_LSB = 0x62,
BMM050_DIG_Z4_MSB = 0x63,
BMM050_DIG_X2 = 0x64,
BMM050_DIG_Y2 = 0x65,
BMM050_DIG_Z2_LSB = 0x68,
BMM050_DIG_Z2_MSB = 0x69,
BMM050_DIG_Z1_LSB = 0x6A,
BMM050_DIG_Z1_MSB = 0x6B,
BMM050_DIG_XYZ1_LSB = 0x6C,
BMM050_DIG_XYZ1_MSB = 0x6D,
BMM050_DIG_Z3_LSB = 0x6E,
BMM050_DIG_Z3_MSB = 0x6F,
BMM050_DIG_XY2 = 0x70,
BMM050_DIG_XY1 = 0x71,
BMX055_ACC_ADDRESS = 0x18,
BMX055_GYRO_ADDRESS = 0x68,
BMX055_MAG_ADDRESS = 0x10,
MS5637_ADDRESS = 0x76,
AFS_2G = 0x03,
AFS_4G = 0x05,
AFS_8G = 0x08,
AFS_16G = 0x0C,
ABW_8Hz = 0,
ABW_16Hz = 1,
ABW_31Hz = 2,
ABW_63Hz = 3,
ABW_125Hz = 4,
ABW_250Hz = 5,
ABW_500Hz = 6,
ABW_100Hz = 7,
GFS_2000DPS = 0,
GFS_1000DPS = 1,
GFS_500DPS = 2,
GFS_250DPS = 3,
GFS_125DPS = 4,
G_2000Hz523Hz = 0,
G_2000Hz230Hz = 1,
G_1000Hz116Hz = 2,
G_400Hz47Hz = 3,
G_200Hz23Hz = 4,
G_100Hz12Hz = 5,
G_200Hz64Hz = 6,
G_100Hz32Hz = 7,
MODR_10Hz = 0,
MODR_2Hz = 1,
MODR_6Hz = 2,
MODR_8Hz = 3,
MODR_15Hz = 4,
MODR_20Hz = 5,
MODR_25Hz = 6,
MODR_30Hz = 7,
lowPower = 0,
Regular = 1,
enhancedRegular = 2,
highAccuracy = 3,
ADC_256 = 0x00,
ADC_512 = 0x02,
ADC_1024 = 0x04,
ADC_2048 = 0x06,
ADC_4096 = 0x08,
ADC_8192 = 0x0A,
ADC_D1 = 0x40,
ADC_D2 = 0x50,
MICROBIT_ACCEL_PITCH_ROLL_VALID = 0x02,
MICROBIT_ACCEL_ADDED_TO_IDLE = 0x04,
MMA8653_DEFAULT_ADDR = 0x3A,
MMA8653_STATUS = 0x00,
MMA8653_OUT_X_MSB = 0x01,
MMA8653_WHOAMI = 0x0D,
@ -231,6 +439,7 @@ declare const enum DAL {
MICROBIT_ACCELEROMETER_SHAKE_DAMPING = 10,
MICROBIT_ACCELEROMETER_SHAKE_RTX = 30,
MICROBIT_ACCELEROMETER_SHAKE_COUNT_THRESHOLD = 4,
// built/yt/yotta_modules/microbit-dal/inc//drivers/MicroBitAccelerometer.h
// built/yt/yotta_modules/microbit-dal/inc//drivers/MicroBitButton.h
MICROBIT_BUTTON_EVT_DOWN = 1,
MICROBIT_BUTTON_EVT_UP = 2,
@ -335,6 +544,7 @@ declare const enum DAL {
IO_STATUS_TOUCH_IN = 0x10,
IO_STATUS_EVENT_ON_EDGE = 0x20,
IO_STATUS_EVENT_PULSE_ON_EDGE = 0x40,
IO_STATUS_EVENTBUS_ENABLED = 0x80,
MICROBIT_PIN_MAX_OUTPUT = 1023,
MICROBIT_PIN_MAX_SERVO_RANGE = 180,
MICROBIT_PIN_DEFAULT_SERVO_RANGE = 2000,
@ -349,6 +559,7 @@ declare const enum DAL {
MICROBIT_PIN_EVT_PULSE_LO = 5,
PIN_CAPABILITY_DIGITAL = 0x01,
PIN_CAPABILITY_ANALOG = 0x02,
PIN_CAPABILITY_TOUCH = 0x04,
// built/yt/yotta_modules/microbit-dal/inc//drivers/MicroBitRadio.h
MICROBIT_RADIO_STATUS_INITIALISED = 0x0001,
MICROBIT_RADIO_BASE_ADDRESS = 0x75626974,

View File

@ -151,15 +151,15 @@ declare namespace input {
MICROBIT_ID_IO_P5 = 12, // MICROBIT_ID_IO_P5
MICROBIT_ID_IO_P6 = 13, // MICROBIT_ID_IO_P6
MICROBIT_ID_IO_P7 = 14, // MICROBIT_ID_IO_P7
MICROBIT_ID_IO_P8 = 15, // MICROBIT_ID_IO_P8
//MICROBIT_ID_IO_P8_ = MICROBIT_ID_IO_P8,
MICROBIT_ID_IO_P9 = 16, // MICROBIT_ID_IO_P9
MICROBIT_ID_IO_P10 = 17, // MICROBIT_ID_IO_P10
MICROBIT_ID_IO_P11 = 18, // MICROBIT_ID_IO_P11
MICROBIT_ID_IO_P12 = 19, // MICROBIT_ID_IO_P12
MICROBIT_ID_IO_P13 = 20, // MICROBIT_ID_IO_P13
MICROBIT_ID_IO_P14 = 21, // MICROBIT_ID_IO_P14
MICROBIT_ID_IO_P15 = 22, // MICROBIT_ID_IO_P15
MICROBIT_ID_IO_P16 = 23, // MICROBIT_ID_IO_P16
//MICROBIT_ID_IO_P12_ = MICROBIT_ID_IO_P12,
//MICROBIT_ID_IO_P13_ = MICROBIT_ID_IO_P13,
//MICROBIT_ID_IO_P14_ = MICROBIT_ID_IO_P14,
//MICROBIT_ID_IO_P15_ = MICROBIT_ID_IO_P15,
//MICROBIT_ID_IO_P16_ = MICROBIT_ID_IO_P16,
MICROBIT_ID_IO_P19 = 24, // MICROBIT_ID_IO_P19
MICROBIT_ID_IO_P20 = 25, // MICROBIT_ID_IO_P20
MES_DEVICE_INFO_ID = 1103, // MES_DEVICE_INFO_ID
@ -250,15 +250,15 @@ declare namespace led {
P5 = 12, // MICROBIT_ID_IO_P5
P6 = 13, // MICROBIT_ID_IO_P6
P7 = 14, // MICROBIT_ID_IO_P7
P8 = 15, // MICROBIT_ID_IO_P8
//P8 = MICROBIT_ID_IO_P8,
P9 = 16, // MICROBIT_ID_IO_P9
P10 = 17, // MICROBIT_ID_IO_P10
P11 = 18, // MICROBIT_ID_IO_P11
P12 = 19, // MICROBIT_ID_IO_P12
P13 = 20, // MICROBIT_ID_IO_P13
P14 = 21, // MICROBIT_ID_IO_P14
P15 = 22, // MICROBIT_ID_IO_P15
P16 = 23, // MICROBIT_ID_IO_P16
//P12 = MICROBIT_ID_IO_P12,
//P13 = MICROBIT_ID_IO_P13,
//P14 = MICROBIT_ID_IO_P14,
//P15 = MICROBIT_ID_IO_P15,
//P16 = MICROBIT_ID_IO_P16,
P19 = 24, // MICROBIT_ID_IO_P19
P20 = 25, // MICROBIT_ID_IO_P20
}
@ -294,12 +294,12 @@ declare namespace led {
P0 = 7, // MICROBIT_ID_IO_P0
P1 = 8, // MICROBIT_ID_IO_P1
P2 = 9, // MICROBIT_ID_IO_P2
P8 = 15, // MICROBIT_ID_IO_P8
P12 = 19, // MICROBIT_ID_IO_P12
P13 = 20, // MICROBIT_ID_IO_P13
P14 = 21, // MICROBIT_ID_IO_P14
P15 = 22, // MICROBIT_ID_IO_P15
P16 = 23, // MICROBIT_ID_IO_P16
//P8 = MICROBIT_ID_IO_P8,
//P12 = MICROBIT_ID_IO_P12,
//P13 = MICROBIT_ID_IO_P13,
//P14 = MICROBIT_ID_IO_P14,
//P15 = MICROBIT_ID_IO_P15,
//P16 = MICROBIT_ID_IO_P16
}

View File

@ -9,15 +9,15 @@ enum class DigitalPin {
P5 = MICROBIT_ID_IO_P5,
P6 = MICROBIT_ID_IO_P6,
P7 = MICROBIT_ID_IO_P7,
P8 = MICROBIT_ID_IO_P8,
//P8 = MICROBIT_ID_IO_P8,
P9 = MICROBIT_ID_IO_P9,
P10 = MICROBIT_ID_IO_P10,
P11 = MICROBIT_ID_IO_P11,
P12 = MICROBIT_ID_IO_P12,
P13 = MICROBIT_ID_IO_P13,
P14 = MICROBIT_ID_IO_P14,
P15 = MICROBIT_ID_IO_P15,
P16 = MICROBIT_ID_IO_P16,
//P12 = MICROBIT_ID_IO_P12,
//P13 = MICROBIT_ID_IO_P13,
//P14 = MICROBIT_ID_IO_P14,
//P15 = MICROBIT_ID_IO_P15,
//P16 = MICROBIT_ID_IO_P16,
P19 = MICROBIT_ID_IO_P19,
P20 = MICROBIT_ID_IO_P20,
};
@ -55,15 +55,15 @@ MicroBitPin *getPin(int id) {
case MICROBIT_ID_IO_P5: return &uBit.io.P5;
case MICROBIT_ID_IO_P6: return &uBit.io.P6;
case MICROBIT_ID_IO_P7: return &uBit.io.P7;
case MICROBIT_ID_IO_P8: return &uBit.io.P8;
//case MICROBIT_ID_IO_P8: return &uBit.io.P8;
case MICROBIT_ID_IO_P9: return &uBit.io.P9;
case MICROBIT_ID_IO_P10: return &uBit.io.P10;
case MICROBIT_ID_IO_P11: return &uBit.io.P11;
case MICROBIT_ID_IO_P12: return &uBit.io.P12;
case MICROBIT_ID_IO_P13: return &uBit.io.P13;
case MICROBIT_ID_IO_P14: return &uBit.io.P14;
case MICROBIT_ID_IO_P15: return &uBit.io.P15;
case MICROBIT_ID_IO_P16: return &uBit.io.P16;
//case MICROBIT_ID_IO_P12: return &uBit.io.P12;
//case MICROBIT_ID_IO_P13: return &uBit.io.P13;
//case MICROBIT_ID_IO_P14: return &uBit.io.P14;
//case MICROBIT_ID_IO_P15: return &uBit.io.P15;
//case MICROBIT_ID_IO_P16: return &uBit.io.P16;
case MICROBIT_ID_IO_P19: return &uBit.io.P19;
case MICROBIT_ID_IO_P20: return &uBit.io.P20;
default: return NULL;

View File

@ -14,6 +14,7 @@
"helpers.ts",
"images.cpp",
"basic.cpp",
"basic.ts",
"input.cpp",
"input.ts",
"control.ts",

View File

@ -4,12 +4,12 @@ enum class SerialPin {
P0 = MICROBIT_ID_IO_P0,
P1 = MICROBIT_ID_IO_P1,
P2 = MICROBIT_ID_IO_P2,
P8 = MICROBIT_ID_IO_P8,
P12 = MICROBIT_ID_IO_P12,
P13 = MICROBIT_ID_IO_P13,
P14 = MICROBIT_ID_IO_P14,
P15 = MICROBIT_ID_IO_P15,
P16 = MICROBIT_ID_IO_P16
//P8 = MICROBIT_ID_IO_P8,
//P12 = MICROBIT_ID_IO_P12,
//P13 = MICROBIT_ID_IO_P13,
//P14 = MICROBIT_ID_IO_P14,
//P15 = MICROBIT_ID_IO_P15,
//P16 = MICROBIT_ID_IO_P16
};
enum class BaudRate {

View File

@ -1,7 +1,7 @@
{
"name": "pxt-microbit",
"version": "0.4.41",
"description": "micro:bit target for PXT",
"name": "pxt-calliope",
"version": "0.4.20",
"description": "calliope target for PXT",
"keywords": [
"JavaScript",
"education",
@ -9,11 +9,11 @@
],
"repository": {
"type": "git",
"url": "git+https://github.com/Microsoft/pxt-microbit.git"
"url": "git+https://github.com/Microsoft/pxt-calliope.git"
},
"author": "",
"license": "MIT",
"homepage": "https://github.com/Microsoft/pxt-microbit#readme",
"homepage": "https://github.com/Microsoft/pxt-calliope#readme",
"files": [
"README.md",
"pxtarget.json",
@ -29,6 +29,6 @@
"typescript": "^1.8.7"
},
"dependencies": {
"pxt-core": "0.4.48"
"pxt-core": "0.4.26"
}
}

View File

@ -1,9 +1,8 @@
{
"id": "microbit",
"nickname": "microbit",
"name": "code the micro:bit",
"title": "code the micro:bit - Blocks / Javascript editor",
"description": "A Blocks / JavaScript code editor for the micro:bit.",
"id": "calliope",
"name": " calliope",
"title": "calliope - Blocks / Javascript editor",
"description": "A Blocks / JavaScript code editor for the calliope.",
"corepkg": "microbit",
"bundleddirs": [
"libs/microbit",
@ -14,15 +13,8 @@
"cloud": {
"workspace": false,
"packages": true,
"sharing": false,
"publish": false,
"preferredPackages": [
"Microsoft/pxt-neopixel",
"Microsoft/pxt-sonar",
"Microsoft/pxt-max6675",
"Microsoft/pxt-i2c-fram"
],
"githubPackages": true
]
},
"blocksprj": {
"id": "blocksprj",
@ -67,9 +59,9 @@
"compile": {
"isNative": false,
"hasHex": true,
"deployDrives": "(MICROBIT|MBED)",
"driveName": "MICROBIT",
"hexMimeType": "application/x-microbit-hex"
"deployDrives": "MINI",
"driveName": "MINI",
"hexMimeType": "application/x-calliope-hex"
},
"runtime": {
"mathBlocks": true,
@ -80,11 +72,21 @@
"simulator": {
"autoRun": true,
"streams": true,
"aspectRatio": 1.22,
"aspectRatio": 1.08,
"parts": true,
"partsAspectRatio": 0.69,
"builtinParts": {
"accelerometer": true,
"buttonpair": true,
"ledmatrix": true,
"speaker": true,
"bluetooth": true,
"thermometer": true,
"compass": true,
"headphone": true
},
"boardDefinition": {
"visual": "microbit",
"visual": "calliope",
"gpioPinBlocks": [
[
"P0"
@ -166,7 +168,10 @@
"speaker",
"bluetooth",
"thermometer",
"compass"
"compass",
"speaker",
"microphone",
"rgbled"
],
"useCrocClips": true,
"marginWhenBreadboarding": [
@ -179,10 +184,10 @@
},
"compileService": {
"yottaTarget": "bbc-microbit-classic-gcc",
"yottaCorePackage": "pxt-microbit-core",
"githubCorePackage": "microsoft/pxt-microbit-core",
"gittag": "v0.5.0",
"serviceId": "ws"
"yottaCorePackage": "pxt-calliope-core",
"githubCorePackage": "microsoft/pxt-calliope-core",
"gittag": "v0.5.2",
"serviceId": "calliope"
},
"serial": {
"manufacturerFilter": "^mbed$",
@ -191,21 +196,18 @@
},
"appTheme": {
"accentColor": "#5C005C",
"logoUrl": "https://codethemicrobit.com/about",
"logo": "./static/microbit.simplified.svg",
"docsLogo": "./static/microbit.simplified.svg",
"portraitLogo": "./static/microbit.simplified.svg",
"footerLogo": "./static/microbit.simplified.svg",
"logoUrl": "https://calliope.cc/about",
"logo": "./static/Logo_Calliope_Woman.svg",
"docsLogo": "./static/Logo_Calliope_Woman.svg",
"portraitLogo": "./static/Logo_Calliope_Woman.svg",
"footerLogo": "./static/Logo_Calliope_Woman.svg",
"cardLogo": "https://az851932.vo.msecnd.net/pub/drbwxcth",
"appLogo": "https://az851932.vo.msecnd.net/pub/tbhemtig",
"organization": "Microsoft",
"organizationUrl": "https://codethemicrobit.com/",
"organizationLogo": "./static/Microsoft-logo_rgb_c-gray.png",
"homeUrl": "https://codethemicrobit.com/",
"embedUrl": "https://codethemicrobit.com/",
"homeUrl": "https://calliope.cc/",
"privacyUrl": "https://go.microsoft.com/fwlink/?LinkId=521839",
"termsOfUseUrl": "https://go.microsoft.com/fwlink/?LinkID=206977",
"githubUrl": "https://github.com/Microsoft/pxt-microbit",
"githubUrl": "https://github.com/Microsoft/pxt-calliope",
"browserSupport": [
{
"name": "unsupported",
@ -325,4 +327,4 @@
}
]
}
}
}

View File

@ -13,6 +13,7 @@ namespace pxsim {
buttonPairState: ButtonPairState;
radioState: RadioState;
neopixelState: NeoPixelState;
rgbLedState: number;
constructor() {
super()
@ -36,19 +37,19 @@ namespace pxsim {
DAL.MICROBIT_ID_IO_P5,
DAL.MICROBIT_ID_IO_P6,
DAL.MICROBIT_ID_IO_P7,
DAL.MICROBIT_ID_IO_P8,
0, //DAL.MICROBIT_ID_IO_P8,
DAL.MICROBIT_ID_IO_P9,
DAL.MICROBIT_ID_IO_P10,
DAL.MICROBIT_ID_IO_P11,
DAL.MICROBIT_ID_IO_P12,
DAL.MICROBIT_ID_IO_P13,
DAL.MICROBIT_ID_IO_P14,
DAL.MICROBIT_ID_IO_P15,
DAL.MICROBIT_ID_IO_P16,
0, //DAL.MICROBIT_ID_IO_P12,
0, //DAL.MICROBIT_ID_IO_P13,
0, //DAL.MICROBIT_ID_IO_P14,
0, //DAL.MICROBIT_ID_IO_P15,
0, //DAL.MICROBIT_ID_IO_P16,
0,
0,
DAL.MICROBIT_ID_IO_P19,
DAL.MICROBIT_ID_IO_P20
DAL.MICROBIT_ID_IO_P20
]
});
this.builtinParts["radio"] = this.radioState = new RadioState(runtime);
@ -61,11 +62,11 @@ namespace pxsim {
this.builtinVisuals["buttonpair"] = () => new visuals.ButtonPairView();
this.builtinVisuals["ledmatrix"] = () => new visuals.LedMatrixView();
this.builtinVisuals["neopixel"] = () => new visuals.NeoPixelView();
this.builtinVisuals["neopixel"] = () => new visuals.NeoPixelView();
this.builtinPartVisuals["buttonpair"] = (xy: visuals.Coord) => visuals.mkBtnSvg(xy);
this.builtinPartVisuals["ledmatrix"] = (xy: visuals.Coord) => visuals.mkLedMatrixSvg(xy, 8, 8);
this.builtinPartVisuals["neopixel"] = (xy: visuals.Coord) => visuals.mkNeoPixelPart(xy);
this.builtinPartVisuals["neopixel"] = (xy: visuals.Coord) => visuals.mkNeoPixelPart(xy);
}
receiveMessage(msg: SimulatorMessage) {
@ -97,7 +98,7 @@ namespace pxsim {
const cmpDefs = msg.partDefinitions || {};
const fnArgs = msg.fnArgs;
const opts : visuals.BoardHostOpts = {
const opts: visuals.BoardHostOpts = {
state: this,
boardDef: boardDef,
partsList: cmpsList,

View File

@ -114,11 +114,6 @@ namespace pxsim.pins {
export function i2cWriteBuffer(address: number, buf: RefBuffer, repeat?: boolean): void {
// fake - noop
}
// this likely shouldn't be called
export function getPinAddress(name: number) {
return getPin(name)
}
}
namespace pxsim.devices {

5
sim/state/rgbled.ts Normal file
View File

@ -0,0 +1,5 @@
namespace pxsim.basic {
export function setLedColor(c: number) {
board().rgbLedState = c;
}
}

File diff suppressed because one or more lines are too long

View File

@ -7,4 +7,4 @@ export KS_FORCE_CLOUD=yes
(cd libs/lang-test0; node ../../node_modules/pxt-core/built/pxt.js test)
(cd libs/lang-test1; node ../../node_modules/pxt-core/built/pxt.js test)
node node_modules/pxt-core/built/pxt.js testdir tests
(cd libs/hello; node ../../node_modules/pxt-core/built/pxt.js testconv https://az851932.vo.msecnd.net/files/td-converter-tests-v1.json)
(cd libs/hello; node ../../node_modules/pxt-core/built/pxt.js testconv https://az851932.vo.msecnd.net/files/td-converter-tests-v0.json)