Compare commits
66 Commits
Author | SHA1 | Date | |
---|---|---|---|
2e9ddb48df | |||
2296220ad7 | |||
22864bd26a | |||
574a9e01d5 | |||
00278036a4 | |||
4b583e221b | |||
c88645d0cd | |||
14e8eabd25 | |||
5fab789763 | |||
2c39e249f9 | |||
c486a9db94 | |||
816438fa79 | |||
33eca3c507 | |||
9ccfcf19d9 | |||
5edd06c9b9 | |||
a114dc32e7 | |||
019bc34d90 | |||
0676d780ab | |||
96e23d99b2 | |||
15b1f95394 | |||
552b0d8165 | |||
faed492a87 | |||
0ce1738653 | |||
f5cabe6e94 | |||
f2e7a640f1 | |||
7fb057af66 | |||
c0b9329401 | |||
c04ddbb459 | |||
4aac4ef92d | |||
979b2b892a | |||
4c3f9910f7 | |||
9aef584966 | |||
e62d15ba85 | |||
adf97d9b5c | |||
2bb6c6ae27 | |||
0919eff0c5 | |||
e31279938b | |||
2655843b74 | |||
527d323ea7 | |||
5d40a48477 | |||
850fb54f52 | |||
6bb35c1a72 | |||
6569231ba6 | |||
a3a1c8a480 | |||
c90dfaa6e7 | |||
02cd0e1da3 | |||
0f9dde0c4e | |||
1e0cd48316 | |||
d959282c68 | |||
d513ad7713 | |||
b7da28285e | |||
dbaf406703 | |||
2cb467f22b | |||
9585e2276d | |||
a591d9f072 | |||
471a30ca3d | |||
205b94afe8 | |||
18caf554e9 | |||
67cdf16fe4 | |||
bdbe8371dd | |||
21a36eb9ee | |||
376b20b035 | |||
7ce41b52aa | |||
46f7831e7c | |||
dda29a5cb6 | |||
6e4f4595a2 |
2
clients/electron/.gitignore
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
node_modules
|
||||
projects
|
5
clients/electron/README.md
Normal file
@ -0,0 +1,5 @@
|
||||
# PXT micro:bit Electron app
|
||||
|
||||
A very basic wrapper around the web app. To install, copy the contents of this
|
||||
directory to somewhere outside the main `pxt-microbit` repository. Then run `npm
|
||||
install && npm start`.
|
15
clients/electron/index.html
Normal file
@ -0,0 +1,15 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>code the micro:bit</title>
|
||||
</head>
|
||||
<body>
|
||||
<webview id="webview" style="position:absolute; left:0; top:0; right:0; bottom:0"/>
|
||||
<script>
|
||||
const webview = document.getElementById("webview")
|
||||
const url = `http://localhost:3232/${window.location.hash}`
|
||||
webview.src = url
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
@ -1,67 +1,39 @@
|
||||
const electron = require('electron')
|
||||
// Module to control application life.
|
||||
const app = electron.app
|
||||
// Module to create native browser window.
|
||||
const BrowserWindow = electron.BrowserWindow
|
||||
// pxt toolchain
|
||||
const {app, BrowserWindow, Menu} = require('electron')
|
||||
const pxt = require('pxt-core')
|
||||
const path = require('path')
|
||||
|
||||
// Keep a global reference of the window object, if you don't, the window will
|
||||
// be closed automatically when the JavaScript object is garbage collected.
|
||||
let mainWindow
|
||||
let win
|
||||
|
||||
function createWindow() {
|
||||
console.log('starting app...')
|
||||
// Create the browser window.
|
||||
mainWindow = new BrowserWindow({
|
||||
width: 800, height: 600,
|
||||
webPreferences: {
|
||||
nodeIntegration: false,
|
||||
}
|
||||
const cliPath = path.join(process.cwd(), "node_modules/pxt-microbit")
|
||||
|
||||
function startServerAndCreateWindow() {
|
||||
pxt.mainCli(cliPath, ["serve", "-no-browser"])
|
||||
createWindow()
|
||||
}
|
||||
|
||||
function createWindow () {
|
||||
win = new BrowserWindow({
|
||||
width: 800,
|
||||
height: 600,
|
||||
title: "code the micro:bit"
|
||||
})
|
||||
|
||||
ts.pxt.Util.debug = true;
|
||||
pxt.mainCli("C:/gh/pxt-microbit/clients/electron/node_modules/pxt-microbit", ["serve", "-just"]);
|
||||
|
||||
// no menu
|
||||
mainWindow.setMenu(null);
|
||||
|
||||
// and load the index.html of the app.
|
||||
mainWindow.loadURL(`http://localhost:3232/#local_token=08ba9b8f-6ccb-4202-296d-28fac7a553d9`)
|
||||
|
||||
// Open the DevTools.
|
||||
mainWindow.webContents.openDevTools()
|
||||
|
||||
// Emitted when the window is closed.
|
||||
mainWindow.on('closed', function () {
|
||||
// Dereference the window object, usually you would store windows
|
||||
// in an array if your app supports multi windows, this is the time
|
||||
// when you should delete the corresponding element.
|
||||
mainWindow = null
|
||||
Menu.setApplicationMenu(null)
|
||||
win.loadURL(`file://${__dirname}/index.html#local_token=${pxt.globalConfig.localToken}`)
|
||||
win.on('closed', () => {
|
||||
win = null
|
||||
})
|
||||
}
|
||||
|
||||
// This method will be called when Electron has finished
|
||||
// initialization and is ready to create browser windows.
|
||||
// Some APIs can only be used after this event occurs.
|
||||
app.on('ready', createWindow)
|
||||
app.on('ready', startServerAndCreateWindow)
|
||||
|
||||
// Quit when all windows are closed.
|
||||
app.on('window-all-closed', function () {
|
||||
// On OS X it is common for applications and their menu bar
|
||||
// to stay active until the user quits explicitly with Cmd + Q
|
||||
app.on('window-all-closed', () => {
|
||||
if (process.platform !== 'darwin') {
|
||||
app.quit()
|
||||
}
|
||||
})
|
||||
|
||||
app.on('activate', function () {
|
||||
// On OS X it's common to re-create a window in the app when the
|
||||
// dock icon is clicked and there are no other windows open.
|
||||
if (mainWindow === null) {
|
||||
app.on('activate', () => {
|
||||
if (win === null) {
|
||||
createWindow()
|
||||
}
|
||||
})
|
||||
|
||||
// In this file you can include the rest of your app's specific main process
|
||||
// code. You can also put them in separate files and require them here.
|
@ -1,19 +1,14 @@
|
||||
{
|
||||
"name": "codethemicrobit",
|
||||
"version": "0.1.0",
|
||||
"description": "A Blocks / JavaScript editor for the micro:bit",
|
||||
"main": "main.js",
|
||||
"scripts": {
|
||||
"start": "electron ."
|
||||
},
|
||||
"name" : "code-the-microbit",
|
||||
"version" : "1.0.0",
|
||||
"description": "Blocks / Javascript editor",
|
||||
"author": "Microsoft",
|
||||
"license": "MIT",
|
||||
"devDependencies": {
|
||||
"electron-prebuilt": "^1.2.0"
|
||||
"main" : "main.js",
|
||||
"scripts": {
|
||||
"start": "node_modules/.bin/electron ."
|
||||
},
|
||||
"dependencies": {
|
||||
"typescript": "1.8.7",
|
||||
"pxt-core": "*",
|
||||
"pxt-microbit": "*"
|
||||
"devDependencies": {
|
||||
"electron": "*",
|
||||
"pxt-microbit": "*"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -4,7 +4,6 @@
|
||||
|
||||
@interface AppDelegate ()<DirectoryWatcherDelegate, UploaderDelegate, NSUserNotificationCenterDelegate>
|
||||
|
||||
@property (weak) IBOutlet NSWindow *window;
|
||||
@property DirectoryWatcher * watcher;
|
||||
@property Uploader * uploader;
|
||||
@property NSStatusItem * menubarItem;
|
||||
@ -115,10 +114,17 @@
|
||||
microBitCount.enabled = NO;
|
||||
[menu addItem:microBitCount];
|
||||
|
||||
NSMenuItem * websiteItem = [[NSMenuItem alloc] initWithTitle:@"Editor" action:@selector(launchEditor:) keyEquivalent:@"e"];
|
||||
[menu addItem:websiteItem];
|
||||
|
||||
NSMenuItem * quitItem = [[NSMenuItem alloc] initWithTitle:@"Quit" action:@selector(terminate:) keyEquivalent:@"q"];
|
||||
[menu addItem:quitItem];
|
||||
|
||||
self.menubarItem.menu = menu;
|
||||
}
|
||||
|
||||
- (void)launchEditor:(id)sender {
|
||||
[[NSWorkspace sharedWorkspace] openURL:[NSURL URLWithString:@"https://codethemicrobit.com/"]];
|
||||
}
|
||||
|
||||
@end
|
||||
|
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 11 KiB |
Before Width: | Height: | Size: 51 KiB After Width: | Height: | Size: 23 KiB |
Before Width: | Height: | Size: 744 B After Width: | Height: | Size: 574 B |
Before Width: | Height: | Size: 1.8 KiB After Width: | Height: | Size: 1.5 KiB |
Before Width: | Height: | Size: 51 KiB After Width: | Height: | Size: 23 KiB |
Before Width: | Height: | Size: 149 KiB After Width: | Height: | Size: 55 KiB |
Before Width: | Height: | Size: 1.8 KiB After Width: | Height: | Size: 1.5 KiB |
Before Width: | Height: | Size: 6.4 KiB After Width: | Height: | Size: 4.0 KiB |
Before Width: | Height: | Size: 149 KiB After Width: | Height: | Size: 55 KiB |
Before Width: | Height: | Size: 435 KiB After Width: | Height: | Size: 136 KiB |
@ -12,670 +12,7 @@
|
||||
</customObject>
|
||||
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
|
||||
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
|
||||
<customObject id="Voe-Tx-rLC" customClass="AppDelegate">
|
||||
<connections>
|
||||
<outlet property="window" destination="QvC-M9-y7g" id="gIp-Ho-8D9"/>
|
||||
</connections>
|
||||
</customObject>
|
||||
<customObject id="Voe-Tx-rLC" customClass="AppDelegate"/>
|
||||
<customObject id="YLy-65-1bz" customClass="NSFontManager"/>
|
||||
<menu title="Main Menu" systemMenu="main" id="AYu-sK-qS6">
|
||||
<items>
|
||||
<menuItem title="Microbit Uploader" id="1Xt-HY-uBw">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<menu key="submenu" title="Microbit Uploader" systemMenu="apple" id="uQy-DD-JDr">
|
||||
<items>
|
||||
<menuItem title="About Microbit Uploader" id="5kV-Vb-QxS">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="orderFrontStandardAboutPanel:" target="-1" id="Exp-CZ-Vem"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem isSeparatorItem="YES" id="VOq-y0-SEH"/>
|
||||
<menuItem title="Preferences…" keyEquivalent="," id="BOF-NM-1cW"/>
|
||||
<menuItem isSeparatorItem="YES" id="wFC-TO-SCJ"/>
|
||||
<menuItem title="Services" id="NMo-om-nkz">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<menu key="submenu" title="Services" systemMenu="services" id="hz9-B4-Xy5"/>
|
||||
</menuItem>
|
||||
<menuItem isSeparatorItem="YES" id="4je-JR-u6R"/>
|
||||
<menuItem title="Hide Microbit Uploader" keyEquivalent="h" id="Olw-nP-bQN">
|
||||
<connections>
|
||||
<action selector="hide:" target="-1" id="PnN-Uc-m68"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Hide Others" keyEquivalent="h" id="Vdr-fp-XzO">
|
||||
<modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
|
||||
<connections>
|
||||
<action selector="hideOtherApplications:" target="-1" id="VT4-aY-XCT"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Show All" id="Kd2-mp-pUS">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="unhideAllApplications:" target="-1" id="Dhg-Le-xox"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem isSeparatorItem="YES" id="kCx-OE-vgT"/>
|
||||
<menuItem title="Quit Microbit Uploader" keyEquivalent="q" id="4sb-4s-VLi">
|
||||
<connections>
|
||||
<action selector="terminate:" target="-1" id="Te7-pn-YzF"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
</items>
|
||||
</menu>
|
||||
</menuItem>
|
||||
<menuItem title="File" id="dMs-cI-mzQ">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<menu key="submenu" title="File" id="bib-Uj-vzu">
|
||||
<items>
|
||||
<menuItem title="New" keyEquivalent="n" id="Was-JA-tGl">
|
||||
<connections>
|
||||
<action selector="newDocument:" target="-1" id="4Si-XN-c54"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Open…" keyEquivalent="o" id="IAo-SY-fd9">
|
||||
<connections>
|
||||
<action selector="openDocument:" target="-1" id="bVn-NM-KNZ"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Open Recent" id="tXI-mr-wws">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<menu key="submenu" title="Open Recent" systemMenu="recentDocuments" id="oas-Oc-fiZ">
|
||||
<items>
|
||||
<menuItem title="Clear Menu" id="vNY-rz-j42">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="clearRecentDocuments:" target="-1" id="Daa-9d-B3U"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
</items>
|
||||
</menu>
|
||||
</menuItem>
|
||||
<menuItem isSeparatorItem="YES" id="m54-Is-iLE"/>
|
||||
<menuItem title="Close" keyEquivalent="w" id="DVo-aG-piG">
|
||||
<connections>
|
||||
<action selector="performClose:" target="-1" id="HmO-Ls-i7Q"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Save…" keyEquivalent="s" id="pxx-59-PXV">
|
||||
<connections>
|
||||
<action selector="saveDocument:" target="-1" id="teZ-XB-qJY"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Save As…" keyEquivalent="S" id="Bw7-FT-i3A">
|
||||
<connections>
|
||||
<action selector="saveDocumentAs:" target="-1" id="mDf-zr-I0C"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Revert to Saved" id="KaW-ft-85H">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="revertDocumentToSaved:" target="-1" id="iJ3-Pv-kwq"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem isSeparatorItem="YES" id="aJh-i4-bef"/>
|
||||
<menuItem title="Page Setup…" keyEquivalent="P" id="qIS-W8-SiK">
|
||||
<modifierMask key="keyEquivalentModifierMask" shift="YES" command="YES"/>
|
||||
<connections>
|
||||
<action selector="runPageLayout:" target="-1" id="Din-rz-gC5"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Print…" keyEquivalent="p" id="aTl-1u-JFS">
|
||||
<connections>
|
||||
<action selector="print:" target="-1" id="qaZ-4w-aoO"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
</items>
|
||||
</menu>
|
||||
</menuItem>
|
||||
<menuItem title="Edit" id="5QF-Oa-p0T">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<menu key="submenu" title="Edit" id="W48-6f-4Dl">
|
||||
<items>
|
||||
<menuItem title="Undo" keyEquivalent="z" id="dRJ-4n-Yzg">
|
||||
<connections>
|
||||
<action selector="undo:" target="-1" id="M6e-cu-g7V"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Redo" keyEquivalent="Z" id="6dh-zS-Vam">
|
||||
<connections>
|
||||
<action selector="redo:" target="-1" id="oIA-Rs-6OD"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem isSeparatorItem="YES" id="WRV-NI-Exz"/>
|
||||
<menuItem title="Cut" keyEquivalent="x" id="uRl-iY-unG">
|
||||
<connections>
|
||||
<action selector="cut:" target="-1" id="YJe-68-I9s"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Copy" keyEquivalent="c" id="x3v-GG-iWU">
|
||||
<connections>
|
||||
<action selector="copy:" target="-1" id="G1f-GL-Joy"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Paste" keyEquivalent="v" id="gVA-U4-sdL">
|
||||
<connections>
|
||||
<action selector="paste:" target="-1" id="UvS-8e-Qdg"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Paste and Match Style" keyEquivalent="V" id="WeT-3V-zwk">
|
||||
<modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
|
||||
<connections>
|
||||
<action selector="pasteAsPlainText:" target="-1" id="cEh-KX-wJQ"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Delete" id="pa3-QI-u2k">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="delete:" target="-1" id="0Mk-Ml-PaM"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Select All" keyEquivalent="a" id="Ruw-6m-B2m">
|
||||
<connections>
|
||||
<action selector="selectAll:" target="-1" id="VNm-Mi-diN"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem isSeparatorItem="YES" id="uyl-h8-XO2"/>
|
||||
<menuItem title="Find" id="4EN-yA-p0u">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<menu key="submenu" title="Find" id="1b7-l0-nxx">
|
||||
<items>
|
||||
<menuItem title="Find…" tag="1" keyEquivalent="f" id="Xz5-n4-O0W">
|
||||
<connections>
|
||||
<action selector="performFindPanelAction:" target="-1" id="cD7-Qs-BN4"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Find and Replace…" tag="12" keyEquivalent="f" id="YEy-JH-Tfz">
|
||||
<modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
|
||||
<connections>
|
||||
<action selector="performFindPanelAction:" target="-1" id="WD3-Gg-5AJ"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Find Next" tag="2" keyEquivalent="g" id="q09-fT-Sye">
|
||||
<connections>
|
||||
<action selector="performFindPanelAction:" target="-1" id="NDo-RZ-v9R"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Find Previous" tag="3" keyEquivalent="G" id="OwM-mh-QMV">
|
||||
<connections>
|
||||
<action selector="performFindPanelAction:" target="-1" id="HOh-sY-3ay"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Use Selection for Find" tag="7" keyEquivalent="e" id="buJ-ug-pKt">
|
||||
<connections>
|
||||
<action selector="performFindPanelAction:" target="-1" id="U76-nv-p5D"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Jump to Selection" keyEquivalent="j" id="S0p-oC-mLd">
|
||||
<connections>
|
||||
<action selector="centerSelectionInVisibleArea:" target="-1" id="IOG-6D-g5B"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
</items>
|
||||
</menu>
|
||||
</menuItem>
|
||||
<menuItem title="Spelling and Grammar" id="Dv1-io-Yv7">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<menu key="submenu" title="Spelling" id="3IN-sU-3Bg">
|
||||
<items>
|
||||
<menuItem title="Show Spelling and Grammar" keyEquivalent=":" id="HFo-cy-zxI">
|
||||
<connections>
|
||||
<action selector="showGuessPanel:" target="-1" id="vFj-Ks-hy3"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Check Document Now" keyEquivalent=";" id="hz2-CU-CR7">
|
||||
<connections>
|
||||
<action selector="checkSpelling:" target="-1" id="fz7-VC-reM"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem isSeparatorItem="YES" id="bNw-od-mp5"/>
|
||||
<menuItem title="Check Spelling While Typing" id="rbD-Rh-wIN">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="toggleContinuousSpellChecking:" target="-1" id="7w6-Qz-0kB"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Check Grammar With Spelling" id="mK6-2p-4JG">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="toggleGrammarChecking:" target="-1" id="muD-Qn-j4w"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Correct Spelling Automatically" id="78Y-hA-62v">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="toggleAutomaticSpellingCorrection:" target="-1" id="2lM-Qi-WAP"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
</items>
|
||||
</menu>
|
||||
</menuItem>
|
||||
<menuItem title="Substitutions" id="9ic-FL-obx">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<menu key="submenu" title="Substitutions" id="FeM-D8-WVr">
|
||||
<items>
|
||||
<menuItem title="Show Substitutions" id="z6F-FW-3nz">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="orderFrontSubstitutionsPanel:" target="-1" id="oku-mr-iSq"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem isSeparatorItem="YES" id="gPx-C9-uUO"/>
|
||||
<menuItem title="Smart Copy/Paste" id="9yt-4B-nSM">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="toggleSmartInsertDelete:" target="-1" id="3IJ-Se-DZD"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Smart Quotes" id="hQb-2v-fYv">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="toggleAutomaticQuoteSubstitution:" target="-1" id="ptq-xd-QOA"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Smart Dashes" id="rgM-f4-ycn">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="toggleAutomaticDashSubstitution:" target="-1" id="oCt-pO-9gS"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Smart Links" id="cwL-P1-jid">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="toggleAutomaticLinkDetection:" target="-1" id="Gip-E3-Fov"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Data Detectors" id="tRr-pd-1PS">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="toggleAutomaticDataDetection:" target="-1" id="R1I-Nq-Kbl"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Text Replacement" id="HFQ-gK-NFA">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="toggleAutomaticTextReplacement:" target="-1" id="DvP-Fe-Py6"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
</items>
|
||||
</menu>
|
||||
</menuItem>
|
||||
<menuItem title="Transformations" id="2oI-Rn-ZJC">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<menu key="submenu" title="Transformations" id="c8a-y6-VQd">
|
||||
<items>
|
||||
<menuItem title="Make Upper Case" id="vmV-6d-7jI">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="uppercaseWord:" target="-1" id="sPh-Tk-edu"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Make Lower Case" id="d9M-CD-aMd">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="lowercaseWord:" target="-1" id="iUZ-b5-hil"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Capitalize" id="UEZ-Bs-lqG">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="capitalizeWord:" target="-1" id="26H-TL-nsh"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
</items>
|
||||
</menu>
|
||||
</menuItem>
|
||||
<menuItem title="Speech" id="xrE-MZ-jX0">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<menu key="submenu" title="Speech" id="3rS-ZA-NoH">
|
||||
<items>
|
||||
<menuItem title="Start Speaking" id="Ynk-f8-cLZ">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="startSpeaking:" target="-1" id="654-Ng-kyl"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Stop Speaking" id="Oyz-dy-DGm">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="stopSpeaking:" target="-1" id="dX8-6p-jy9"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
</items>
|
||||
</menu>
|
||||
</menuItem>
|
||||
</items>
|
||||
</menu>
|
||||
</menuItem>
|
||||
<menuItem title="Format" id="jxT-CU-nIS">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<menu key="submenu" title="Format" id="GEO-Iw-cKr">
|
||||
<items>
|
||||
<menuItem title="Font" id="Gi5-1S-RQB">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<menu key="submenu" title="Font" systemMenu="font" id="aXa-aM-Jaq">
|
||||
<items>
|
||||
<menuItem title="Show Fonts" keyEquivalent="t" id="Q5e-8K-NDq">
|
||||
<connections>
|
||||
<action selector="orderFrontFontPanel:" target="YLy-65-1bz" id="WHr-nq-2xA"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Bold" tag="2" keyEquivalent="b" id="GB9-OM-e27">
|
||||
<connections>
|
||||
<action selector="addFontTrait:" target="YLy-65-1bz" id="hqk-hr-sYV"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Italic" tag="1" keyEquivalent="i" id="Vjx-xi-njq">
|
||||
<connections>
|
||||
<action selector="addFontTrait:" target="YLy-65-1bz" id="IHV-OB-c03"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Underline" keyEquivalent="u" id="WRG-CD-K1S">
|
||||
<connections>
|
||||
<action selector="underline:" target="-1" id="FYS-2b-JAY"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem isSeparatorItem="YES" id="5gT-KC-WSO"/>
|
||||
<menuItem title="Bigger" tag="3" keyEquivalent="+" id="Ptp-SP-VEL">
|
||||
<connections>
|
||||
<action selector="modifyFont:" target="YLy-65-1bz" id="Uc7-di-UnL"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Smaller" tag="4" keyEquivalent="-" id="i1d-Er-qST">
|
||||
<connections>
|
||||
<action selector="modifyFont:" target="YLy-65-1bz" id="HcX-Lf-eNd"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem isSeparatorItem="YES" id="kx3-Dk-x3B"/>
|
||||
<menuItem title="Kern" id="jBQ-r6-VK2">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<menu key="submenu" title="Kern" id="tlD-Oa-oAM">
|
||||
<items>
|
||||
<menuItem title="Use Default" id="GUa-eO-cwY">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="useStandardKerning:" target="-1" id="6dk-9l-Ckg"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Use None" id="cDB-IK-hbR">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="turnOffKerning:" target="-1" id="U8a-gz-Maa"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Tighten" id="46P-cB-AYj">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="tightenKerning:" target="-1" id="hr7-Nz-8ro"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Loosen" id="ogc-rX-tC1">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="loosenKerning:" target="-1" id="8i4-f9-FKE"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
</items>
|
||||
</menu>
|
||||
</menuItem>
|
||||
<menuItem title="Ligatures" id="o6e-r0-MWq">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<menu key="submenu" title="Ligatures" id="w0m-vy-SC9">
|
||||
<items>
|
||||
<menuItem title="Use Default" id="agt-UL-0e3">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="useStandardLigatures:" target="-1" id="7uR-wd-Dx6"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Use None" id="J7y-lM-qPV">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="turnOffLigatures:" target="-1" id="iX2-gA-Ilz"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Use All" id="xQD-1f-W4t">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="useAllLigatures:" target="-1" id="KcB-kA-TuK"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
</items>
|
||||
</menu>
|
||||
</menuItem>
|
||||
<menuItem title="Baseline" id="OaQ-X3-Vso">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<menu key="submenu" title="Baseline" id="ijk-EB-dga">
|
||||
<items>
|
||||
<menuItem title="Use Default" id="3Om-Ey-2VK">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="unscript:" target="-1" id="0vZ-95-Ywn"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Superscript" id="Rqc-34-cIF">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="superscript:" target="-1" id="3qV-fo-wpU"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Subscript" id="I0S-gh-46l">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="subscript:" target="-1" id="Q6W-4W-IGz"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Raise" id="2h7-ER-AoG">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="raiseBaseline:" target="-1" id="4sk-31-7Q9"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Lower" id="1tx-W0-xDw">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="lowerBaseline:" target="-1" id="OF1-bc-KW4"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
</items>
|
||||
</menu>
|
||||
</menuItem>
|
||||
<menuItem isSeparatorItem="YES" id="Ndw-q3-faq"/>
|
||||
<menuItem title="Show Colors" keyEquivalent="C" id="bgn-CT-cEk">
|
||||
<connections>
|
||||
<action selector="orderFrontColorPanel:" target="-1" id="mSX-Xz-DV3"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem isSeparatorItem="YES" id="iMs-zA-UFJ"/>
|
||||
<menuItem title="Copy Style" keyEquivalent="c" id="5Vv-lz-BsD">
|
||||
<modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
|
||||
<connections>
|
||||
<action selector="copyFont:" target="-1" id="GJO-xA-L4q"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Paste Style" keyEquivalent="v" id="vKC-jM-MkH">
|
||||
<modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
|
||||
<connections>
|
||||
<action selector="pasteFont:" target="-1" id="JfD-CL-leO"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
</items>
|
||||
</menu>
|
||||
</menuItem>
|
||||
<menuItem title="Text" id="Fal-I4-PZk">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<menu key="submenu" title="Text" id="d9c-me-L2H">
|
||||
<items>
|
||||
<menuItem title="Align Left" keyEquivalent="{" id="ZM1-6Q-yy1">
|
||||
<connections>
|
||||
<action selector="alignLeft:" target="-1" id="zUv-R1-uAa"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Center" keyEquivalent="|" id="VIY-Ag-zcb">
|
||||
<connections>
|
||||
<action selector="alignCenter:" target="-1" id="spX-mk-kcS"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Justify" id="J5U-5w-g23">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="alignJustified:" target="-1" id="ljL-7U-jND"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Align Right" keyEquivalent="}" id="wb2-vD-lq4">
|
||||
<connections>
|
||||
<action selector="alignRight:" target="-1" id="r48-bG-YeY"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem isSeparatorItem="YES" id="4s2-GY-VfK"/>
|
||||
<menuItem title="Writing Direction" id="H1b-Si-o9J">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<menu key="submenu" title="Writing Direction" id="8mr-sm-Yjd">
|
||||
<items>
|
||||
<menuItem title="Paragraph" enabled="NO" id="ZvO-Gk-QUH">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
</menuItem>
|
||||
<menuItem id="YGs-j5-SAR">
|
||||
<string key="title"> Default</string>
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="makeBaseWritingDirectionNatural:" target="-1" id="qtV-5e-UBP"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem id="Lbh-J2-qVU">
|
||||
<string key="title"> Left to Right</string>
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="makeBaseWritingDirectionLeftToRight:" target="-1" id="S0X-9S-QSf"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem id="jFq-tB-4Kx">
|
||||
<string key="title"> Right to Left</string>
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="makeBaseWritingDirectionRightToLeft:" target="-1" id="5fk-qB-AqJ"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem isSeparatorItem="YES" id="swp-gr-a21"/>
|
||||
<menuItem title="Selection" enabled="NO" id="cqv-fj-IhA">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
</menuItem>
|
||||
<menuItem id="Nop-cj-93Q">
|
||||
<string key="title"> Default</string>
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="makeTextWritingDirectionNatural:" target="-1" id="lPI-Se-ZHp"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem id="BgM-ve-c93">
|
||||
<string key="title"> Left to Right</string>
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="makeTextWritingDirectionLeftToRight:" target="-1" id="caW-Bv-w94"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem id="RB4-Sm-HuC">
|
||||
<string key="title"> Right to Left</string>
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="makeTextWritingDirectionRightToLeft:" target="-1" id="EXD-6r-ZUu"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
</items>
|
||||
</menu>
|
||||
</menuItem>
|
||||
<menuItem isSeparatorItem="YES" id="fKy-g9-1gm"/>
|
||||
<menuItem title="Show Ruler" id="vLm-3I-IUL">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="toggleRuler:" target="-1" id="FOx-HJ-KwY"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Copy Ruler" keyEquivalent="c" id="MkV-Pr-PK5">
|
||||
<modifierMask key="keyEquivalentModifierMask" control="YES" command="YES"/>
|
||||
<connections>
|
||||
<action selector="copyRuler:" target="-1" id="71i-fW-3W2"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Paste Ruler" keyEquivalent="v" id="LVM-kO-fVI">
|
||||
<modifierMask key="keyEquivalentModifierMask" control="YES" command="YES"/>
|
||||
<connections>
|
||||
<action selector="pasteRuler:" target="-1" id="cSh-wd-qM2"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
</items>
|
||||
</menu>
|
||||
</menuItem>
|
||||
</items>
|
||||
</menu>
|
||||
</menuItem>
|
||||
<menuItem title="View" id="H8h-7b-M4v">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<menu key="submenu" title="View" id="HyV-fh-RgO">
|
||||
<items>
|
||||
<menuItem title="Show Toolbar" keyEquivalent="t" id="snW-S8-Cw5">
|
||||
<modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
|
||||
<connections>
|
||||
<action selector="toggleToolbarShown:" target="-1" id="BXY-wc-z0C"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Customize Toolbar…" id="1UK-8n-QPP">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="runToolbarCustomizationPalette:" target="-1" id="pQI-g3-MTW"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
</items>
|
||||
</menu>
|
||||
</menuItem>
|
||||
<menuItem title="Window" id="aUF-d1-5bR">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<menu key="submenu" title="Window" systemMenu="window" id="Td7-aD-5lo">
|
||||
<items>
|
||||
<menuItem title="Minimize" keyEquivalent="m" id="OY7-WF-poV">
|
||||
<connections>
|
||||
<action selector="performMiniaturize:" target="-1" id="VwT-WD-YPe"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Zoom" id="R4o-n2-Eq4">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="performZoom:" target="-1" id="DIl-cC-cCs"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem isSeparatorItem="YES" id="eu3-7i-yIM"/>
|
||||
<menuItem title="Bring All to Front" id="LE2-aR-0XJ">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="arrangeInFront:" target="-1" id="DRN-fu-gQh"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
</items>
|
||||
</menu>
|
||||
</menuItem>
|
||||
<menuItem title="Help" id="wpr-3q-Mcd">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<menu key="submenu" title="Help" systemMenu="help" id="F2S-fz-NVQ">
|
||||
<items>
|
||||
<menuItem title="Microbit Uploader Help" keyEquivalent="?" id="FKE-Sm-Kum">
|
||||
<connections>
|
||||
<action selector="showHelp:" target="-1" id="y7X-2Q-9no"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
</items>
|
||||
</menu>
|
||||
</menuItem>
|
||||
</items>
|
||||
</menu>
|
||||
<window title="Microbit Uploader" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" releasedWhenClosed="NO" visibleAtLaunch="NO" animationBehavior="default" id="QvC-M9-y7g">
|
||||
<windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES" resizable="YES"/>
|
||||
<windowPositionMask key="initialPositionMask" leftStrut="YES" rightStrut="YES" topStrut="YES" bottomStrut="YES"/>
|
||||
<rect key="contentRect" x="335" y="390" width="480" height="360"/>
|
||||
<rect key="screenRect" x="0.0" y="0.0" width="1280" height="777"/>
|
||||
<view key="contentView" id="EiT-Mj-1SZ">
|
||||
<rect key="frame" x="0.0" y="0.0" width="480" height="360"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
</view>
|
||||
</window>
|
||||
</objects>
|
||||
</document>
|
||||
|
@ -55,14 +55,16 @@ void callback(ConstFSEventStreamRef streamRef, void * info, size_t numEvents, vo
|
||||
|
||||
- (void)rescanPathWithEvents:(BOOL)sendEvents {
|
||||
NSArray<NSString*>* downloadFiles = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:self.path error:nil];
|
||||
NSMutableSet<NSString*>* fullSet = [NSMutableSet new];
|
||||
for (NSString * file in downloadFiles) {
|
||||
[fullSet addObject:file];
|
||||
if (![self.knownFiles containsObject:file]) {
|
||||
if (sendEvents) {
|
||||
[self.delegate watcher:self observedNewFileAtPath:file];
|
||||
}
|
||||
[self.knownFiles addObject:file];
|
||||
}
|
||||
}
|
||||
self.knownFiles = fullSet;
|
||||
}
|
||||
|
||||
@end
|
||||
|
@ -2,8 +2,6 @@
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>LSUIElement</key>
|
||||
<true/>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>en</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
@ -19,13 +17,15 @@
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>APPL</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>1.0</string>
|
||||
<string>1.01</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>1</string>
|
||||
<string>2</string>
|
||||
<key>LSMinimumSystemVersion</key>
|
||||
<string>$(MACOSX_DEPLOYMENT_TARGET)</string>
|
||||
<key>LSUIElement</key>
|
||||
<true/>
|
||||
<key>NSHumanReadableCopyright</key>
|
||||
<string>Copyright © 2016 Thomas Denney. All rights reserved.</string>
|
||||
<key>NSMainNibFile</key>
|
||||
|
BIN
clients/macuploader/Release/Microbit Uploader v1.01.zip
Normal file
@ -99,3 +99,6 @@ latest version of OS X then you'll be using the latest version of Safari.
|
||||
* Click 'About Safari'
|
||||
|
||||

|
||||
|
||||
IT administrators should check which browser versions are supported
|
||||
[here](/browsers/technical).
|
||||
|
@ -1,6 +1,16 @@
|
||||
# Unsupported configuration
|
||||
# Recommended browser for Linux
|
||||
|
||||
As you are using Linux, it is recommended that you use Mozilla Firefox or Google
|
||||
Chrome.
|
||||
As you are using Linux, it is recommended that you use [Mozilla
|
||||
Firefox][firefox] or [Google Chrome][chrome].
|
||||
|
||||
Please see [here](/browsers) for more information.
|
||||
Please see [here][technical] for technical information on which browsers are
|
||||
supported, or [here][versions] to check which version you are using.
|
||||
|
||||
[edge]: https://www.microsoft.com/en-us/windows/microsoft-edge
|
||||
[ie]: https://www.microsoft.com/en-us/download/internet-explorer.aspx
|
||||
[firefox]: https://www.mozilla.org/en-US/firefox/new/
|
||||
[chrome]: https://www.google.com/chrome/
|
||||
[opera]: https://www.opera.com
|
||||
[safari]: http://www.apple.com/safari/
|
||||
[technical]: /browsers/technical
|
||||
[versions]: /browsers
|
||||
|
@ -1,6 +1,16 @@
|
||||
# Unsupported configuration
|
||||
# Recommended browser for Mac
|
||||
|
||||
As you are using OS X, it is recommended that you use Safari. Alternatively,
|
||||
Google Chrome and Mozilla Firefox are also supported.
|
||||
As you are using a Mac, it is recommended that you use [Safari][]. Alternatively,
|
||||
[Google Chrome][chrome] and [Mozilla Firefox][firefox] are also supported.
|
||||
|
||||
Please see [here](/browsers) for more information.
|
||||
Please see [here][technical] for technical information on which browsers are
|
||||
supported, or [here][versions] to check which version you are using.
|
||||
|
||||
[edge]: https://www.microsoft.com/en-us/windows/microsoft-edge
|
||||
[ie]: https://www.microsoft.com/en-us/download/internet-explorer.aspx
|
||||
[firefox]: https://www.mozilla.org/en-US/firefox/new/
|
||||
[chrome]: https://www.google.com/chrome/
|
||||
[opera]: https://www.opera.com
|
||||
[safari]: http://www.apple.com/safari/
|
||||
[technical]: /browsers/technical
|
||||
[versions]: /browsers
|
||||
|
36
docs/browsers/technical.md
Normal file
@ -0,0 +1,36 @@
|
||||
# Technical information about browser support
|
||||
|
||||
[codethemicrobit.com][] requires that you use a recent version of a modern
|
||||
browser, such as Microsoft Edge, Google Chrome, Mozilla Firefox, Safari, Opera,
|
||||
or IE11. This is because the editor uses modern web technologies such as [web
|
||||
workers][] to enable compiling [TypeScript][] in the browser, or the using the
|
||||
same [Monaco][] editor that powers [Visual Studio Code][].
|
||||
|
||||
[codethemicrobit.com]: https://codethemicrobit.com
|
||||
[web workers]: http://www.w3.org/TR/workers/
|
||||
[typescript]: http://www.typescriptlang.org
|
||||
[monaco]: https://microsoft.github.io/monaco-editor/
|
||||
[visual studio code]: http://code.visualstudio.com
|
||||
|
||||
Most modern browsers automatically update themselves, but in some environments
|
||||
such as schools these automatic updates are disabled for security. **We
|
||||
strongly recommend that you use the most recent version of any of these
|
||||
browsers**, but if you can't then you must use at least:
|
||||
|
||||
| Browser | Minimum version | Release date | Windows | Mac |
|
||||
| ----------------- | --------------- | -------------- | ----------- | ---------- |
|
||||
| Edge | 12 | March 2015 | Windows 10+ | N/A |
|
||||
| Internet Explorer | 11 | October 2013 | Windows 7+ | N/A |
|
||||
| Mozilla Firefox | 31 ESR | July 2014 | Windows XP+ | OS X 10.6+ |
|
||||
| Google Chrome | 38 | October 2014 | Windows XP+ | OS X 10.6+ |
|
||||
| Safari | 9 | September 2015 | N/A | OS X 10.9+ |
|
||||
| Opera | 21 | May 2014 | Windows 7+ | OS X 10.9+ |
|
||||
|
||||
|
||||
Please see our information for which browsers are recommended for [Windows][],
|
||||
[Mac][], [Linux][], or [Raspberry Pi][].
|
||||
|
||||
[Windows]: /browsers/windows
|
||||
[Mac]: /browsers/mac
|
||||
[Linux]: /browsers/linux
|
||||
[Raspberry Pi]: /raspberry-pi
|
@ -1,8 +1,18 @@
|
||||
# Unsupported configuration
|
||||
# Recommended browser for Windows
|
||||
|
||||
As you are using Windows, it is recommended that you use Microsoft Edge. If you
|
||||
are running a version of Windows prior to Windows 10, you can use Internet
|
||||
Explorer 11. Alternatively, Google Chrome and Mozilla Firefox are also
|
||||
supported.
|
||||
We recommend [Microsoft Edge][edge] if you are running Windows 10, but users on
|
||||
Windows 7 or higher can use [Internet Explorer 11][ie] or recent versions of
|
||||
[Mozilla Firefox][firefox], [Google Chrome][chrome], or [Opera][opera].
|
||||
|
||||
Please see [here](/browsers) for more information.
|
||||
|
||||
Please see [here][technical] for technical information on which browsers are
|
||||
supported, or [here][versions] to check which version you are using.
|
||||
|
||||
[edge]: https://www.microsoft.com/en-us/windows/microsoft-edge
|
||||
[ie]: https://www.microsoft.com/en-us/download/internet-explorer.aspx
|
||||
[firefox]: https://www.mozilla.org/en-US/firefox/new/
|
||||
[chrome]: https://www.google.com/chrome/
|
||||
[opera]: https://www.opera.com
|
||||
[safari]: http://www.apple.com/safari/
|
||||
[technical]: /browsers/technical
|
||||
[versions]: /browsers
|
||||
|
@ -1,6 +1,4 @@
|
||||
# Running programs on your micro:bit
|
||||
|
||||
How to compile, transfer, and run a program on your micro:bit.
|
||||
# Uploading programs on your micro:bit
|
||||
|
||||
While you're writing and testing your programs, you'll mostly be [running them
|
||||
in the simulator](/device/simulator), but once you've finished your program you
|
||||
@ -12,173 +10,22 @@ The basic steps are:
|
||||
2. Click **Download** and download the `.hex` file
|
||||
3. Copy the `.hex` file from your computer onto the micro:bit drive
|
||||
|
||||
## Requirements
|
||||

|
||||
|
||||
You need the following things to transfer and run a script on your micro:bit:
|
||||
## Instructions
|
||||
|
||||
* A-Male to Micro USB cable to connect your computer to your micro:bit. This is
|
||||
the same cable that is commonly used to connect a smart phone to a computer.
|
||||
* A PC running Windows 7 or later, or a Mac running OS X 10.6 or later
|
||||
Pick the instructions for your operating system and browser:
|
||||
|
||||
## Step 1: Connect your micro:bit to your computer
|
||||
* [Windows - Microsoft Edge](/device/usb/windows-edge)
|
||||
* [Windows - Internet Explorer](/device/usb/windows-ie)
|
||||
* [Windows - Chrome](/device/usb/windows-chrome)
|
||||
* [Windows - Firefox](/device/usb/windows-firefox)
|
||||
* [Mac - Safari](/device/usb/mac-safari)
|
||||
* [Mac - Chrome](/device/usb/mac-chrome)
|
||||
* [Mac - Firefox](/device/usb/mac-firefox)
|
||||
|
||||
First, connect the micro:bit:
|
||||
### ~hint
|
||||
|
||||
1. Connect the small end of the USB cable to the micro USB port on your micro:bit.
|
||||
|
||||
2. Connect the other end of the USB cable to a USB port on your computer.
|
||||
|
||||
Your computer should recognise your micro:bit as a new drive. On computers
|
||||
running Windows, `MICROBIT` appears as a drive under Devices and drives. On a Mac
|
||||
it appears as a new drive under Devices.
|
||||
|
||||
**Windows**
|
||||
|
||||

|
||||
|
||||
**Mac**
|
||||
|
||||

|
||||
|
||||
## Step 2: Download your program
|
||||
|
||||
1. Open your project on [codethemicrobit.com](https://codethemicrobit.com)
|
||||
2. Click **Download**
|
||||
3. When prompted, choose to **save** the compiled file onto your computer. The
|
||||
prompt will be different depending on which browser you are using, or
|
||||
whether you are using a Windows computer or a Mac
|
||||
|
||||
### Windows
|
||||
|
||||
#### Chrome
|
||||
|
||||
Your `.hex` file appears as a download at the bottom of the browser. Click on
|
||||
the arrow next to the name of the file and then click **Show in folder**.
|
||||
|
||||

|
||||
|
||||
Drag and drop the `.hex` file from the download folder onto the `MICROBIT` drive.
|
||||
|
||||
#### Firefox
|
||||
|
||||
A window will appear asking whether you want to save or open the `.hex` file.
|
||||
Select **Save File** and then select **OK**.
|
||||
|
||||

|
||||
|
||||
The file will then appear in your downloads in the top right of your browser.
|
||||
Click the **folder icon** next to the filename to open it in Windows Explorer.
|
||||
|
||||

|
||||
|
||||
Drag and drop the `.hex` file from the download folder onto the `MICROBIT` drive.
|
||||
|
||||
#### Microsoft Edge
|
||||
|
||||
A message will appear at the bottom of the browser asking what you want to do
|
||||
with the file. Click **Save**:
|
||||
|
||||

|
||||
|
||||
Then click **Open folder** and drag and drop the file from your Downloads to
|
||||
your `MICROBIT` drive.
|
||||
|
||||

|
||||
|
||||
#### Internet Explorer
|
||||
|
||||
A message will appear at the bottom of the browser asking what you want to do
|
||||
with the file. Click **Save**:
|
||||
|
||||

|
||||
|
||||
Then click **Open folder** and drag and drop the file from your Downloads to
|
||||
your `MICROBIT` drive.
|
||||
|
||||

|
||||
|
||||
### Mac
|
||||
|
||||
#### Safari
|
||||
|
||||
When you select **Download** in Safari a file called `Unknown` will be
|
||||
downloaded into your Downloads folder. Open your Downloads folder and drag and
|
||||
drop the file onto your `MICROBIT` drive, under Devices:
|
||||
|
||||

|
||||
|
||||
#### Firefox
|
||||
|
||||
A dialogue box will appear, asking whether you would like to open or save your
|
||||
hex file. Select **Save file** and click **OK** and the file will then appear in
|
||||
your downloads in the top right of your browser. Right click on the file and
|
||||
click on **Show in Finder** and the file will appear in your downloads folder.
|
||||
Select the file and drag and drop it onto your `MICROBIT` drive.
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
#### Chrome
|
||||
|
||||
When you select **Download** in Chrome, the file will appear at the bottom of
|
||||
the browser. Click on the small arrow and select **Show in Finder**. This will
|
||||
show the file in your download folder. Drag and drop the file onto your
|
||||
`MICROBIT` drive.
|
||||
|
||||

|
||||
|
||||
## Step 3: Transfer the file to your micro:bit
|
||||
|
||||
* Once you've found the folder containing your `.hex` file, drag and drop it
|
||||
onto your `MICROBIT` drive
|
||||
* If you're using Windows, you can use **Send to** as described below
|
||||
* The LED on the back of your micro:bit flashes during the transfer (which
|
||||
should only take a few seconds).
|
||||
* Once transferred, the code will run automatically on your micro:bit. To rerun
|
||||
your program, press the reset button on the back of your micro:bit. The reset
|
||||
button automatically runs the newest file on the micro:bit.
|
||||
|
||||
**Send to**: If you're using Windows you use *Send to* in File Explorer:
|
||||
|
||||
- In File Explorer, right-click on the hex file (created in Step 2 above), choose **Send to**, and then **MICROBIT**.
|
||||
|
||||

|
||||
|
||||
By copying the script onto the `MICROBIT` drive, you have programmed it into the
|
||||
flash memory on the micro:bit, which means even after you unplug the micro:bit,
|
||||
your program will still run if the micro:bit is powered by battery.
|
||||
|
||||
If you want to save time, you can use the [micro:bit uploader](/uploader) to
|
||||
automatically deploy hex files to your micro:bit. It works on Windows and is
|
||||
compatible with any browser.
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
You can’t drag and drop more than one hex file at once onto your micro:bit. If
|
||||
you try to drag and drop a second hex file onto your micro:bit before the first
|
||||
file has finished downloading, then the second file may fail in different ways.
|
||||
|
||||
When the first program has been written to the micro:bit, the drive will
|
||||
disengage. If you drag and drop a second file at this point it may not find the
|
||||
drive and the second write will fail.
|
||||
|
||||
The errors may look like this:
|
||||
|
||||
**Windows**
|
||||
|
||||

|
||||
|
||||
**Mac**
|
||||
|
||||

|
||||
|
||||
Or it may appear that there are two hex files on your micro:bit so the micro:bit
|
||||
won’t be able to run multiple files. To rectify this, unplug your micro:bit and
|
||||
plug it in again. Make sure that your micro:bit appears as `MICROBIT` and not
|
||||
`MAINTENANCE`.
|
||||
|
||||
### See also
|
||||
|
||||
[Run code in a browser](/device/simulator)
|
||||
Transfer not working? See some [troubleshooting tips](/device/usb/troubleshooting).
|
||||
|
||||
### ~
|
||||
|
69
docs/device/usb/mac-chrome.md
Normal file
@ -0,0 +1,69 @@
|
||||
# Uploading from Chrome for Mac
|
||||
|
||||
While you're writing and testing your programs, you'll mostly be [running them
|
||||
in the simulator](/device/simulator), but once you've finished your program you
|
||||
can **compile** it and run it on your micro:bit.
|
||||
|
||||
The basic steps are:
|
||||
|
||||
1. Connect your micro:bit to your computer via USB
|
||||
2. Click **Download** and download the `.hex` file
|
||||
3. Copy the `.hex` file from your computer onto the micro:bit drive
|
||||
|
||||
## Requirements
|
||||
|
||||
You need the following things to transfer and run a script on your micro:bit:
|
||||
|
||||
* A-Male to Micro USB cable to connect your computer to your micro:bit. This is
|
||||
the same cable that is commonly used to connect a smart phone to a computer.
|
||||
* A PC running Windows 7 or later, or a Mac running OS X 10.6 or later
|
||||
|
||||
## Step 1: Connect your micro:bit to your computer
|
||||
|
||||
First, connect the micro:bit:
|
||||
|
||||
1. Connect the small end of the USB cable to the micro USB port on your micro:bit.
|
||||
|
||||
2. Connect the other end of the USB cable to a USB port on your computer.
|
||||
|
||||
Your computer should recognise your micro:bit as a new drive. On computers
|
||||
running Windows, `MICROBIT` appears as a drive under Devices and drives. On a Mac
|
||||
it appears as a new drive under Devices.
|
||||
|
||||

|
||||
|
||||
## Step 2: Download your program
|
||||
|
||||
1. Open your project on [codethemicrobit.com](https://codethemicrobit.com)
|
||||
2. Click **Download**
|
||||
3. When prompted, choose to **save** the compiled file onto your computer. The
|
||||
prompt will be different depending on which browser you are using, or
|
||||
whether you are using a Windows computer or a Mac
|
||||
|
||||
When you select **Download** in Chrome, the file will appear at the bottom of
|
||||
the browser. Click on the small arrow and select **Show in Finder**. This will
|
||||
show the file in your download folder. Drag and drop the file onto your
|
||||
`MICROBIT` drive.
|
||||
|
||||

|
||||
|
||||
## Step 3: Transfer the file to your micro:bit
|
||||
|
||||
* Once you've found the folder containing your `.hex` file, drag and drop it
|
||||
onto your `MICROBIT` drive
|
||||
* The LED on the back of your micro:bit flashes during the transfer (which
|
||||
should only take a few seconds).
|
||||
* Once transferred, the code will run automatically on your micro:bit. To rerun
|
||||
your program, press the reset button on the back of your micro:bit. The reset
|
||||
button automatically runs the newest file on the micro:bit.
|
||||
|
||||
By copying the script onto the `MICROBIT` drive, you have programmed it into the
|
||||
flash memory on the micro:bit, which means even after you unplug the micro:bit,
|
||||
your program will still run if the micro:bit is powered by battery.
|
||||
|
||||
|
||||
### ~hint
|
||||
|
||||
Transfer not working? See some [troubleshooting tips](/device/usb/troubleshooting).
|
||||
|
||||
### ~
|
71
docs/device/usb/mac-firefox.md
Normal file
@ -0,0 +1,71 @@
|
||||
# Uploading from Firefox for Mac
|
||||
|
||||
While you're writing and testing your programs, you'll mostly be [running them
|
||||
in the simulator](/device/simulator), but once you've finished your program you
|
||||
can **compile** it and run it on your micro:bit.
|
||||
|
||||
The basic steps are:
|
||||
|
||||
1. Connect your micro:bit to your computer via USB
|
||||
2. Click **Download** and download the `.hex` file
|
||||
3. Copy the `.hex` file from your computer onto the micro:bit drive
|
||||
|
||||
## Requirements
|
||||
|
||||
You need the following things to transfer and run a script on your micro:bit:
|
||||
|
||||
* A-Male to Micro USB cable to connect your computer to your micro:bit. This is
|
||||
the same cable that is commonly used to connect a smart phone to a computer.
|
||||
* A PC running Windows 7 or later, or a Mac running OS X 10.6 or later
|
||||
|
||||
## Step 1: Connect your micro:bit to your computer
|
||||
|
||||
First, connect the micro:bit:
|
||||
|
||||
1. Connect the small end of the USB cable to the micro USB port on your micro:bit.
|
||||
|
||||
2. Connect the other end of the USB cable to a USB port on your computer.
|
||||
|
||||
Your computer should recognise your micro:bit as a new drive. On computers
|
||||
running Windows, `MICROBIT` appears as a drive under Devices and drives. On a Mac
|
||||
it appears as a new drive under Devices.
|
||||
|
||||

|
||||
|
||||
## Step 2: Download your program
|
||||
|
||||
1. Open your project on [codethemicrobit.com](https://codethemicrobit.com)
|
||||
2. Click **Download**
|
||||
3. When prompted, choose to **save** the compiled file onto your computer. The
|
||||
prompt will be different depending on which browser you are using, or
|
||||
whether you are using a Windows computer or a Mac
|
||||
|
||||
A dialogue box will appear, asking whether you would like to open or save your
|
||||
hex file. Select **Save file** and click **OK** and the file will then appear in
|
||||
your downloads in the top right of your browser. Right click on the file and
|
||||
click on **Show in Finder** and the file will appear in your downloads folder.
|
||||
Select the file and drag and drop it onto your `MICROBIT` drive.
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
## Step 3: Transfer the file to your micro:bit
|
||||
|
||||
* Once you've found the folder containing your `.hex` file, drag and drop it
|
||||
onto your `MICROBIT` drive
|
||||
* The LED on the back of your micro:bit flashes during the transfer (which
|
||||
should only take a few seconds).
|
||||
* Once transferred, the code will run automatically on your micro:bit. To rerun
|
||||
your program, press the reset button on the back of your micro:bit. The reset
|
||||
button automatically runs the newest file on the micro:bit.
|
||||
|
||||
By copying the script onto the `MICROBIT` drive, you have programmed it into the
|
||||
flash memory on the micro:bit, which means even after you unplug the micro:bit,
|
||||
your program will still run if the micro:bit is powered by battery.
|
||||
|
||||
### ~hint
|
||||
|
||||
Transfer not working? See some [troubleshooting tips](/device/usb/troubleshooting).
|
||||
|
||||
### ~
|
68
docs/device/usb/mac-safari.md
Normal file
@ -0,0 +1,68 @@
|
||||
# Uploading from Safari for Mac
|
||||
|
||||
While you're writing and testing your programs, you'll mostly be [running them
|
||||
in the simulator](/device/simulator), but once you've finished your program you
|
||||
can **compile** it and run it on your micro:bit.
|
||||
|
||||
The basic steps are:
|
||||
|
||||
1. Connect your micro:bit to your computer via USB
|
||||
2. Click **Download** and download the `.hex` file
|
||||
3. Copy the `.hex` file from your computer onto the micro:bit drive
|
||||
|
||||
## Requirements
|
||||
|
||||
You need the following things to transfer and run a script on your micro:bit:
|
||||
|
||||
* A-Male to Micro USB cable to connect your computer to your micro:bit. This is
|
||||
the same cable that is commonly used to connect a smart phone to a computer.
|
||||
* A PC running Windows 7 or later, or a Mac running OS X 10.6 or later
|
||||
|
||||
## Step 1: Connect your micro:bit to your computer
|
||||
|
||||
First, connect the micro:bit:
|
||||
|
||||
1. Connect the small end of the USB cable to the micro USB port on your micro:bit.
|
||||
|
||||
2. Connect the other end of the USB cable to a USB port on your computer.
|
||||
|
||||
Your computer should recognise your micro:bit as a new drive. On computers
|
||||
running Windows, `MICROBIT` appears as a drive under Devices and drives. On a Mac
|
||||
it appears as a new drive under Devices.
|
||||
|
||||

|
||||
|
||||
## Step 2: Download your program
|
||||
|
||||
1. Open your project on [codethemicrobit.com](https://codethemicrobit.com)
|
||||
2. Click **Download**
|
||||
3. When prompted, choose to **save** the compiled file onto your computer. The
|
||||
prompt will be different depending on which browser you are using, or
|
||||
whether you are using a Windows computer or a Mac
|
||||
|
||||
When you select **Download** in Safari a file called `Unknown` will be
|
||||
downloaded into your Downloads folder. Open your Downloads folder and drag and
|
||||
drop the file onto your `MICROBIT` drive, under Devices:
|
||||
|
||||

|
||||
|
||||
## Step 3: Transfer the file to your micro:bit
|
||||
|
||||
* Once you've found the folder containing your `.hex` file, drag and drop it
|
||||
onto your `MICROBIT` drive
|
||||
* The LED on the back of your micro:bit flashes during the transfer (which
|
||||
should only take a few seconds).
|
||||
* Once transferred, the code will run automatically on your micro:bit. To rerun
|
||||
your program, press the reset button on the back of your micro:bit. The reset
|
||||
button automatically runs the newest file on the micro:bit.
|
||||
|
||||
By copying the script onto the `MICROBIT` drive, you have programmed it into the
|
||||
flash memory on the micro:bit, which means even after you unplug the micro:bit,
|
||||
your program will still run if the micro:bit is powered by battery.
|
||||
|
||||
|
||||
### ~hint
|
||||
|
||||
Transfer not working? See some [troubleshooting tips](/device/usb/troubleshooting).
|
||||
|
||||
### ~
|
24
docs/device/usb/troubleshooting.md
Normal file
@ -0,0 +1,24 @@
|
||||
# Troubleshooting Transfer
|
||||
|
||||
You can’t drag and drop more than one hex file at once onto your micro:bit. If
|
||||
you try to drag and drop a second hex file onto your micro:bit before the first
|
||||
file has finished downloading, then the second file may fail in different ways.
|
||||
|
||||
When the first program has been written to the micro:bit, the drive will
|
||||
disengage. If you drag and drop a second file at this point it may not find the
|
||||
drive and the second write will fail.
|
||||
|
||||
The errors may look like this:
|
||||
|
||||
**Windows**
|
||||
|
||||

|
||||
|
||||
**Mac**
|
||||
|
||||

|
||||
|
||||
Or it may appear that there are two hex files on your micro:bit so the micro:bit
|
||||
won’t be able to run multiple files. To rectify this, unplug your micro:bit and
|
||||
plug it in again. Make sure that your micro:bit appears as `MICROBIT` and not
|
||||
`MAINTENANCE`.
|
79
docs/device/usb/windows-chrome.md
Normal file
@ -0,0 +1,79 @@
|
||||
# Uploading from Chrome for Windows
|
||||
|
||||
While you're writing and testing your programs, you'll mostly be [running them
|
||||
in the simulator](/device/simulator), but once you've finished your program you
|
||||
can **compile** it and run it on your micro:bit.
|
||||
|
||||
The basic steps are:
|
||||
|
||||
1. Connect your micro:bit to your computer via USB
|
||||
2. Click **Download** and download the `.hex` file
|
||||
3. Copy the `.hex` file from your computer onto the micro:bit drive
|
||||
|
||||
### ~hint
|
||||
|
||||
You can use the [micro:bit uploader](/uploader) to automatically deploy ``.hex`` files to your micro:bit!
|
||||

|
||||
|
||||
### ~
|
||||
|
||||
## Requirements
|
||||
|
||||
You need the following things to transfer and run a script on your micro:bit:
|
||||
|
||||
* A-Male to Micro USB cable to connect your computer to your micro:bit. This is
|
||||
the same cable that is commonly used to connect a smart phone to a computer.
|
||||
* A PC running Windows 7 or later, or a Mac running OS X 10.6 or later
|
||||
|
||||
## Step 1: Connect your micro:bit to your computer
|
||||
|
||||
First, connect the micro:bit:
|
||||
|
||||
1. Connect the small end of the USB cable to the micro USB port on your micro:bit.
|
||||
|
||||
2. Connect the other end of the USB cable to a USB port on your computer.
|
||||
|
||||
Your computer should recognise your micro:bit as a new drive. On computers
|
||||
running Windows, `MICROBIT` appears as a drive under Devices and drives. On a Mac
|
||||
it appears as a new drive under Devices.
|
||||
|
||||

|
||||
|
||||
## Step 2: Download your program
|
||||
|
||||
1. Open your project on [codethemicrobit.com](https://codethemicrobit.com)
|
||||
2. Click **Download**
|
||||
3. When prompted, choose to **save** the compiled file onto your computer. The
|
||||
prompt will be different depending on which browser you are using, or
|
||||
whether you are using a Windows computer or a Mac
|
||||
|
||||
Your `.hex` file appears as a download at the bottom of the browser. Click on
|
||||
the arrow next to the name of the file and then click **Show in folder**.
|
||||
|
||||

|
||||
|
||||
Drag and drop the `.hex` file from the download folder onto the `MICROBIT` drive.
|
||||
|
||||
## Step 3: Transfer the file to your micro:bit
|
||||
|
||||
* Once you've found the folder containing your `.hex` file, drag and drop it
|
||||
onto your `MICROBIT` drive
|
||||
* The LED on the back of your micro:bit flashes during the transfer (which
|
||||
should only take a few seconds).
|
||||
* Once transferred, the code will run automatically on your micro:bit. To rerun
|
||||
your program, press the reset button on the back of your micro:bit. The reset
|
||||
button automatically runs the newest file on the micro:bit.
|
||||
|
||||
In File Explorer, right-click on the hex file (created in Step 2 above), choose **Send to**, and then **MICROBIT**.
|
||||
|
||||

|
||||
|
||||
By copying the script onto the `MICROBIT` drive, you have programmed it into the
|
||||
flash memory on the micro:bit, which means even after you unplug the micro:bit,
|
||||
your program will still run if the micro:bit is powered by battery.
|
||||
|
||||
### ~hint
|
||||
|
||||
Transfer not working? See some [troubleshooting tips](/device/usb/troubleshooting).
|
||||
|
||||
### ~
|
89
docs/device/usb/windows-edge.md
Normal file
@ -0,0 +1,89 @@
|
||||
# Uploading from Edge on Windows
|
||||
|
||||
How to compile, transfer, and run a program on your micro:bit on **Microsoft Edge**.
|
||||
|
||||
While you're writing and testing your programs, you'll mostly be [running them
|
||||
in the simulator](/device/simulator), but once you've finished your program you
|
||||
can **compile** it and run it on your micro:bit.
|
||||
|
||||
The basic steps are:
|
||||
|
||||
1. Connect your micro:bit to your computer via USB
|
||||
2. Click **Download** and download the `.hex` file
|
||||
3. Copy the `.hex` file from your computer onto the micro:bit drive
|
||||
|
||||
### ~hint
|
||||
|
||||
You can use the [micro:bit uploader](/uploader) to automatically deploy ``.hex`` files to your micro:bit!
|
||||

|
||||
|
||||
### ~
|
||||
|
||||
## Requirements
|
||||
|
||||
You need the following things to transfer and run a script on your micro:bit:
|
||||
|
||||
* A-Male to Micro USB cable to connect your computer to your micro:bit. This is
|
||||
the same cable that is commonly used to connect a smart phone to a computer.
|
||||
* A PC running Windows 7 or later, or a Mac running OS X 10.6 or later
|
||||
|
||||
## Step 1: Connect your micro:bit to your computer
|
||||
|
||||
First, connect the micro:bit:
|
||||
|
||||
1. Connect the small end of the USB cable to the micro USB port on your micro:bit.
|
||||
|
||||
2. Connect the other end of the USB cable to a USB port on your computer.
|
||||
|
||||
Your computer should recognise your micro:bit as a new drive. On computers
|
||||
running Windows, `MICROBIT` appears as a drive under Devices and drives. On a Mac
|
||||
it appears as a new drive under Devices.
|
||||
|
||||

|
||||
|
||||
## Step 2: Download your program
|
||||
|
||||
1. Open your project on [codethemicrobit.com](https://codethemicrobit.com)
|
||||
2. Click **Download**
|
||||
3. When prompted, choose to **save** the compiled file onto your computer. The
|
||||
prompt will be different depending on which browser you are using, or
|
||||
whether you are using a Windows computer or a Mac
|
||||
|
||||
A message will appear at the bottom of the browser asking what you want to do
|
||||
with the file. Click **Save**:
|
||||
|
||||

|
||||
|
||||
Then click **Open folder** and drag and drop the file from your Downloads to
|
||||
your `MICROBIT` drive.
|
||||
|
||||

|
||||
|
||||
## Step 3: Transfer the file to your micro:bit
|
||||
|
||||
* Once you've found the folder containing your `.hex` file, drag and drop it
|
||||
onto your `MICROBIT` drive
|
||||
* If you're using Windows, you can use **Send to** as described below
|
||||
* The LED on the back of your micro:bit flashes during the transfer (which
|
||||
should only take a few seconds).
|
||||
* Once transferred, the code will run automatically on your micro:bit. To rerun
|
||||
your program, press the reset button on the back of your micro:bit. The reset
|
||||
button automatically runs the newest file on the micro:bit.
|
||||
|
||||
In File Explorer, right-click on the hex file (created in Step 2 above), choose **Send to**, and then **MICROBIT**.
|
||||
|
||||

|
||||
|
||||
By copying the script onto the `MICROBIT` drive, you have programmed it into the
|
||||
flash memory on the micro:bit, which means even after you unplug the micro:bit,
|
||||
your program will still run if the micro:bit is powered by battery.
|
||||
|
||||
If you want to save time, you can use the [micro:bit uploader](/uploader) to
|
||||
automatically deploy hex files to your micro:bit. It works on Windows and is
|
||||
compatible with any browser.
|
||||
|
||||
### ~hint
|
||||
|
||||
Transfer not working? See some [troubleshooting tips](/device/usb/troubleshooting).
|
||||
|
||||
### ~
|
86
docs/device/usb/windows-firefox.md
Normal file
@ -0,0 +1,86 @@
|
||||
# Uploading from Firefox on Windows
|
||||
|
||||
How to compile, transfer, and run a program on your micro:bit on **Firefox for Windows**.
|
||||
|
||||
While you're writing and testing your programs, you'll mostly be [running them
|
||||
in the simulator](/device/simulator), but once you've finished your program you
|
||||
can **compile** it and run it on your micro:bit.
|
||||
|
||||
The basic steps are:
|
||||
|
||||
1. Connect your micro:bit to your computer via USB
|
||||
2. Click **Download** and download the `.hex` file
|
||||
3. Copy the `.hex` file from your computer onto the micro:bit drive
|
||||
|
||||
### ~hint
|
||||
|
||||
You can use the [micro:bit uploader](/uploader) to automatically deploy ``.hex`` files to your micro:bit!
|
||||

|
||||
|
||||
### ~
|
||||
|
||||
## Requirements
|
||||
|
||||
You need the following things to transfer and run a script on your micro:bit:
|
||||
|
||||
* A-Male to Micro USB cable to connect your computer to your micro:bit. This is
|
||||
the same cable that is commonly used to connect a smart phone to a computer.
|
||||
* A PC running Windows 7 or later, or a Mac running OS X 10.6 or later
|
||||
|
||||
## Step 1: Connect your micro:bit to your computer
|
||||
|
||||
First, connect the micro:bit:
|
||||
|
||||
1. Connect the small end of the USB cable to the micro USB port on your micro:bit.
|
||||
|
||||
2. Connect the other end of the USB cable to a USB port on your computer.
|
||||
|
||||
Your computer should recognise your micro:bit as a new drive. On computers
|
||||
running Windows, `MICROBIT` appears as a drive under Devices and drives. On a Mac
|
||||
it appears as a new drive under Devices.
|
||||
|
||||

|
||||
|
||||
## Step 2: Download your program
|
||||
|
||||
1. Open your project on [codethemicrobit.com](https://codethemicrobit.com)
|
||||
2. Click **Download**
|
||||
3. When prompted, choose to **save** the compiled file onto your computer. The
|
||||
prompt will be different depending on which browser you are using, or
|
||||
whether you are using a Windows computer or a Mac
|
||||
|
||||
A window will appear asking whether you want to save or open the `.hex` file.
|
||||
Select **Save File** and then select **OK**.
|
||||
|
||||

|
||||
|
||||
The file will then appear in your downloads in the top right of your browser.
|
||||
Click the **folder icon** next to the filename to open it in Windows Explorer.
|
||||
|
||||

|
||||
|
||||
Drag and drop the `.hex` file from the download folder onto the `MICROBIT` drive.
|
||||
## Step 3: Transfer the file to your micro:bit
|
||||
|
||||
* Once you've found the folder containing your `.hex` file, drag and drop it
|
||||
onto your `MICROBIT` drive
|
||||
* If you're using Windows, you can use **Send to** as described below
|
||||
* The LED on the back of your micro:bit flashes during the transfer (which
|
||||
should only take a few seconds).
|
||||
* Once transferred, the code will run automatically on your micro:bit. To rerun
|
||||
your program, press the reset button on the back of your micro:bit. The reset
|
||||
button automatically runs the newest file on the micro:bit.
|
||||
|
||||
In File Explorer, right-click on the hex file (created in Step 2 above), choose **Send to**, and then **MICROBIT**.
|
||||
|
||||

|
||||
|
||||
By copying the script onto the `MICROBIT` drive, you have programmed it into the
|
||||
flash memory on the micro:bit, which means even after you unplug the micro:bit,
|
||||
your program will still run if the micro:bit is powered by battery.
|
||||
|
||||
### ~hint
|
||||
|
||||
Transfer not working? See some [troubleshooting tips](/device/usb/troubleshooting).
|
||||
|
||||
### ~
|
86
docs/device/usb/windows-ie.md
Normal file
@ -0,0 +1,86 @@
|
||||
# Uploading from Internet Explorer on Windows
|
||||
|
||||
While you're writing and testing your programs, you'll mostly be [running them
|
||||
in the simulator](/device/simulator), but once you've finished your program you
|
||||
can **compile** it and run it on your micro:bit.
|
||||
|
||||
The basic steps are:
|
||||
|
||||
1. Connect your micro:bit to your computer via USB
|
||||
2. Click **Download** and download the `.hex` file
|
||||
3. Copy the `.hex` file from your computer onto the micro:bit drive
|
||||
|
||||
### ~hint
|
||||
|
||||
You can use the [micro:bit uploader](/uploader) to automatically deploy ``.hex`` files to your micro:bit!
|
||||

|
||||
|
||||
### ~
|
||||
|
||||
## Requirements
|
||||
|
||||
You need the following things to transfer and run a script on your micro:bit:
|
||||
|
||||
* A-Male to Micro USB cable to connect your computer to your micro:bit. This is
|
||||
the same cable that is commonly used to connect a smart phone to a computer.
|
||||
* A PC running Windows 7 or later, or a Mac running OS X 10.6 or later
|
||||
|
||||
## Step 1: Connect your micro:bit to your computer
|
||||
|
||||
First, connect the micro:bit:
|
||||
|
||||
1. Connect the small end of the USB cable to the micro USB port on your micro:bit.
|
||||
|
||||
2. Connect the other end of the USB cable to a USB port on your computer.
|
||||
|
||||
Your computer should recognise your micro:bit as a new drive. On computers
|
||||
running Windows, `MICROBIT` appears as a drive under Devices and drives. On a Mac
|
||||
it appears as a new drive under Devices.
|
||||
|
||||

|
||||
|
||||
## Step 2: Download your program
|
||||
|
||||
1. Open your project on [codethemicrobit.com](https://codethemicrobit.com)
|
||||
2. Click **Download**
|
||||
3. When prompted, choose to **save** the compiled file onto your computer. The
|
||||
prompt will be different depending on which browser you are using, or
|
||||
whether you are using a Windows computer or a Mac
|
||||
|
||||
A message will appear at the bottom of the browser asking what you want to do
|
||||
with the file. Click **Save**:
|
||||
|
||||

|
||||
|
||||
Then click **Open folder** and drag and drop the file from your Downloads to
|
||||
your `MICROBIT` drive.
|
||||
|
||||

|
||||
|
||||
## Step 3: Transfer the file to your micro:bit
|
||||
|
||||
* Once you've found the folder containing your `.hex` file, drag and drop it
|
||||
onto your `MICROBIT` drive
|
||||
* If you're using Windows, you can use **Send to** as described below
|
||||
* The LED on the back of your micro:bit flashes during the transfer (which
|
||||
should only take a few seconds).
|
||||
* Once transferred, the code will run automatically on your micro:bit. To rerun
|
||||
your program, press the reset button on the back of your micro:bit. The reset
|
||||
button automatically runs the newest file on the micro:bit.
|
||||
|
||||
**Send to**: If you're using Windows you use *Send to* in File Explorer:
|
||||
|
||||
In File Explorer, right-click on the hex file (created in Step 2 above), choose **Send to**, and then **MICROBIT**.
|
||||
|
||||

|
||||
|
||||
By copying the script onto the `MICROBIT` drive, you have programmed it into the
|
||||
flash memory on the micro:bit, which means even after you unplug the micro:bit,
|
||||
your program will still run if the micro:bit is powered by battery.
|
||||
|
||||
|
||||
### ~hint
|
||||
|
||||
Transfer not working? See some [troubleshooting tips](/device/usb/troubleshooting).
|
||||
|
||||
### ~
|
@ -21,6 +21,7 @@
|
||||
### More questions?
|
||||
|
||||
* [Frequently Asked Question](/faq)
|
||||
* [Embedding project](/share)
|
||||
* [Help Translate](/translate)
|
||||
* [Release notes](/release-notes)
|
||||
|
||||
|
@ -18,7 +18,8 @@ to reopen your latest project. You can also open previous project stored locally
|
||||
|
||||
The project source is also stored in each compiled ``.hex`` file. Drag and drop the ``.hex`` file into the web editor to load the project.
|
||||
|
||||
To share your project with others, you can use the **Embed** feature. It stores your project in the cloud and creates a URL that you can share with others.
|
||||
To share your project with others, you can use the [Embed Project...](/share).
|
||||
It stores your project in the cloud and creates a URL that you can share with others.
|
||||
|
||||
If you are using [Visual Studio Code](/code), all your programs are stored as files on your computer and you can use your favorite source control system as needed.
|
||||
|
||||
|
@ -1,13 +1,13 @@
|
||||
# happy birthday blocks activity
|
||||
|
||||
Play sounds with music blocks.
|
||||
Play sounds with music blocks.
|
||||
|
||||
Have you ever tried to play a song on an instrument? Let's try coding the song "Happy Birthday" on the micro:bit !
|
||||
|
||||
Let's start by adding the code in the music drawer that includes a single musical chord (or pitched sound) with the `play` block. Then insert the chord "C". Once you are done coding, don't forget to run your code in the simulator or the micro:bit.
|
||||
|
||||
```blocks
|
||||
music.playTone(music.noteFrequency(Note.C), music.beat(BeatFraction.Quater));
|
||||
music.playTone(music.noteFrequency(Note.C), music.beat(BeatFraction.Quarter));
|
||||
```
|
||||
|
||||
* click run to see if the code works as expected.
|
||||
@ -15,12 +15,12 @@ music.playTone(music.noteFrequency(Note.C), music.beat(BeatFraction.Quater));
|
||||
We want to continue to adding musical chords with the `play` block. So insert the appropriate chord blocks: `D`, `F`, `G` to complete the first part of the song. Modify your code so that your code looks like this.
|
||||
|
||||
```blocks
|
||||
music.playTone(music.noteFrequency(Note.C), music.beat(BeatFraction.Quater));
|
||||
music.playTone(music.noteFrequency(Note.C), music.beat(BeatFraction.Quater));
|
||||
music.playTone(music.noteFrequency(Note.D), music.beat(BeatFraction.Quater));
|
||||
music.playTone(music.noteFrequency(Note.C), music.beat(BeatFraction.Quater));
|
||||
music.playTone(music.noteFrequency(Note.F), music.beat(BeatFraction.Quater));
|
||||
music.playTone(music.noteFrequency(Note.E), music.beat(BeatFraction.Quater));
|
||||
music.playTone(music.noteFrequency(Note.C), music.beat(BeatFraction.Quarter));
|
||||
music.playTone(music.noteFrequency(Note.C), music.beat(BeatFraction.Quarter));
|
||||
music.playTone(music.noteFrequency(Note.D), music.beat(BeatFraction.Quarter));
|
||||
music.playTone(music.noteFrequency(Note.C), music.beat(BeatFraction.Quarter));
|
||||
music.playTone(music.noteFrequency(Note.F), music.beat(BeatFraction.Quarter));
|
||||
music.playTone(music.noteFrequency(Note.E), music.beat(BeatFraction.Quarter));
|
||||
basic.pause(100);
|
||||
```
|
||||
|
||||
@ -29,19 +29,19 @@ basic.pause(100);
|
||||
We want to continue to adding musical chords with the `play` block. Then insert the appropriate chords: `B`, `C`, `D`, `E` , `F` to complete the second part of the song. Modify your code so that your code looks like this.
|
||||
|
||||
```blocks
|
||||
music.playTone(music.noteFrequency(Note.C), music.beat(BeatFraction.Quater));
|
||||
music.playTone(music.noteFrequency(Note.C), music.beat(BeatFraction.Quater));
|
||||
music.playTone(music.noteFrequency(Note.D), music.beat(BeatFraction.Quater));
|
||||
music.playTone(music.noteFrequency(Note.C), music.beat(BeatFraction.Quater));
|
||||
music.playTone(music.noteFrequency(Note.F), music.beat(BeatFraction.Quater));
|
||||
music.playTone(music.noteFrequency(Note.E), music.beat(BeatFraction.Quater));
|
||||
music.playTone(music.noteFrequency(Note.C), music.beat(BeatFraction.Quarter));
|
||||
music.playTone(music.noteFrequency(Note.C), music.beat(BeatFraction.Quarter));
|
||||
music.playTone(music.noteFrequency(Note.D), music.beat(BeatFraction.Quarter));
|
||||
music.playTone(music.noteFrequency(Note.C), music.beat(BeatFraction.Quarter));
|
||||
music.playTone(music.noteFrequency(Note.F), music.beat(BeatFraction.Quarter));
|
||||
music.playTone(music.noteFrequency(Note.E), music.beat(BeatFraction.Quarter));
|
||||
basic.pause(100);
|
||||
music.playTone(music.noteFrequency(Note.C), music.beat(BeatFraction.Quater));
|
||||
music.playTone(music.noteFrequency(Note.C), music.beat(BeatFraction.Quater));
|
||||
music.playTone(music.noteFrequency(Note.D), music.beat(BeatFraction.Quater));
|
||||
music.playTone(music.noteFrequency(Note.C), music.beat(BeatFraction.Quater));
|
||||
music.playTone(music.noteFrequency(Note.G), music.beat(BeatFraction.Quater));
|
||||
music.playTone(music.noteFrequency(Note.F), music.beat(BeatFraction.Quater));
|
||||
music.playTone(music.noteFrequency(Note.C), music.beat(BeatFraction.Quarter));
|
||||
music.playTone(music.noteFrequency(Note.C), music.beat(BeatFraction.Quarter));
|
||||
music.playTone(music.noteFrequency(Note.D), music.beat(BeatFraction.Quarter));
|
||||
music.playTone(music.noteFrequency(Note.C), music.beat(BeatFraction.Quarter));
|
||||
music.playTone(music.noteFrequency(Note.G), music.beat(BeatFraction.Quarter));
|
||||
music.playTone(music.noteFrequency(Note.F), music.beat(BeatFraction.Quarter));
|
||||
basic.pause(100);
|
||||
```
|
||||
|
||||
|
@ -8,19 +8,19 @@ Complete the [happy birthday](/lessons/happy-birthday/activity) activity and you
|
||||
|
||||
|
||||
```blocks
|
||||
music.playTone(music.noteFrequency(Note.C), music.beat(BeatFraction.Quater));
|
||||
music.playTone(music.noteFrequency(Note.C), music.beat(BeatFraction.Quater));
|
||||
music.playTone(music.noteFrequency(Note.D), music.beat(BeatFraction.Quater));
|
||||
music.playTone(music.noteFrequency(Note.C), music.beat(BeatFraction.Quater));
|
||||
music.playTone(music.noteFrequency(Note.F), music.beat(BeatFraction.Quater));
|
||||
music.playTone(music.noteFrequency(Note.E), music.beat(BeatFraction.Quater));
|
||||
music.playTone(music.noteFrequency(Note.C), music.beat(BeatFraction.Quarter));
|
||||
music.playTone(music.noteFrequency(Note.C), music.beat(BeatFraction.Quarter));
|
||||
music.playTone(music.noteFrequency(Note.D), music.beat(BeatFraction.Quarter));
|
||||
music.playTone(music.noteFrequency(Note.C), music.beat(BeatFraction.Quarter));
|
||||
music.playTone(music.noteFrequency(Note.F), music.beat(BeatFraction.Quarter));
|
||||
music.playTone(music.noteFrequency(Note.E), music.beat(BeatFraction.Quarter));
|
||||
basic.pause(100);
|
||||
music.playTone(music.noteFrequency(Note.C), music.beat(BeatFraction.Quater));
|
||||
music.playTone(music.noteFrequency(Note.C), music.beat(BeatFraction.Quater));
|
||||
music.playTone(music.noteFrequency(Note.D), music.beat(BeatFraction.Quater));
|
||||
music.playTone(music.noteFrequency(Note.C), music.beat(BeatFraction.Quater));
|
||||
music.playTone(music.noteFrequency(Note.G), music.beat(BeatFraction.Quater));
|
||||
music.playTone(music.noteFrequency(Note.F), music.beat(BeatFraction.Quater));
|
||||
music.playTone(music.noteFrequency(Note.C), music.beat(BeatFraction.Quarter));
|
||||
music.playTone(music.noteFrequency(Note.C), music.beat(BeatFraction.Quarter));
|
||||
music.playTone(music.noteFrequency(Note.D), music.beat(BeatFraction.Quarter));
|
||||
music.playTone(music.noteFrequency(Note.C), music.beat(BeatFraction.Quarter));
|
||||
music.playTone(music.noteFrequency(Note.G), music.beat(BeatFraction.Quarter));
|
||||
music.playTone(music.noteFrequency(Note.F), music.beat(BeatFraction.Quarter));
|
||||
basic.pause(100);
|
||||
|
||||
|
||||
@ -35,26 +35,26 @@ Let's code the third part of Happy Birthday!
|
||||
To do this, you need to add blocks after the last line of the `play` blocks. We want to continue to adding musical chords with the `play` block. Then insert the appropriate chord blocks `G`, `E`, `C`, `B`, `A` to complete the third part of the song. Modify your code so that your code looks like this.
|
||||
|
||||
```blocks
|
||||
music.playTone(music.noteFrequency(Note.C), music.beat(BeatFraction.Quater));
|
||||
music.playTone(music.noteFrequency(Note.C), music.beat(BeatFraction.Quater));
|
||||
music.playTone(music.noteFrequency(Note.D), music.beat(BeatFraction.Quater));
|
||||
music.playTone(music.noteFrequency(Note.C), music.beat(BeatFraction.Quater));
|
||||
music.playTone(music.noteFrequency(Note.F), music.beat(BeatFraction.Quater));
|
||||
music.playTone(music.noteFrequency(Note.E), music.beat(BeatFraction.Quater));
|
||||
music.playTone(music.noteFrequency(Note.C), music.beat(BeatFraction.Quarter));
|
||||
music.playTone(music.noteFrequency(Note.C), music.beat(BeatFraction.Quarter));
|
||||
music.playTone(music.noteFrequency(Note.D), music.beat(BeatFraction.Quarter));
|
||||
music.playTone(music.noteFrequency(Note.C), music.beat(BeatFraction.Quarter));
|
||||
music.playTone(music.noteFrequency(Note.F), music.beat(BeatFraction.Quarter));
|
||||
music.playTone(music.noteFrequency(Note.E), music.beat(BeatFraction.Quarter));
|
||||
basic.pause(100);
|
||||
music.playTone(music.noteFrequency(Note.C), music.beat(BeatFraction.Quater));
|
||||
music.playTone(music.noteFrequency(Note.C), music.beat(BeatFraction.Quater));
|
||||
music.playTone(music.noteFrequency(Note.D), music.beat(BeatFraction.Quater));
|
||||
music.playTone(music.noteFrequency(Note.C), music.beat(BeatFraction.Quater));
|
||||
music.playTone(music.noteFrequency(Note.G), music.beat(BeatFraction.Quater));
|
||||
music.playTone(music.noteFrequency(Note.F), music.beat(BeatFraction.Quater));
|
||||
music.playTone(music.noteFrequency(Note.C), music.beat(BeatFraction.Quarter));
|
||||
music.playTone(music.noteFrequency(Note.C), music.beat(BeatFraction.Quarter));
|
||||
music.playTone(music.noteFrequency(Note.D), music.beat(BeatFraction.Quarter));
|
||||
music.playTone(music.noteFrequency(Note.C), music.beat(BeatFraction.Quarter));
|
||||
music.playTone(music.noteFrequency(Note.G), music.beat(BeatFraction.Quarter));
|
||||
music.playTone(music.noteFrequency(Note.F), music.beat(BeatFraction.Quarter));
|
||||
basic.pause(100);
|
||||
music.playTone(music.noteFrequency(Note.C), music.beat(BeatFraction.Quater));
|
||||
music.playTone(music.noteFrequency(Note.C), music.beat(BeatFraction.Quater));
|
||||
music.playTone(music.noteFrequency(Note.A), music.beat(BeatFraction.Quater));
|
||||
music.playTone(music.noteFrequency(Note.F), music.beat(BeatFraction.Quater));
|
||||
music.playTone(music.noteFrequency(Note.E), music.beat(BeatFraction.Quater));
|
||||
music.playTone(music.noteFrequency(Note.D), music.beat(BeatFraction.Quater));
|
||||
music.playTone(music.noteFrequency(Note.C), music.beat(BeatFraction.Quarter));
|
||||
music.playTone(music.noteFrequency(Note.C), music.beat(BeatFraction.Quarter));
|
||||
music.playTone(music.noteFrequency(Note.A), music.beat(BeatFraction.Quarter));
|
||||
music.playTone(music.noteFrequency(Note.F), music.beat(BeatFraction.Quarter));
|
||||
music.playTone(music.noteFrequency(Note.E), music.beat(BeatFraction.Quarter));
|
||||
music.playTone(music.noteFrequency(Note.D), music.beat(BeatFraction.Quarter));
|
||||
basic.pause(100);
|
||||
```
|
||||
|
||||
@ -66,33 +66,33 @@ Finally, we continue to adding the appropriate `play` block and fit the followin
|
||||
|
||||
|
||||
```blocks
|
||||
music.playTone(music.noteFrequency(Note.C), music.beat(BeatFraction.Quater));
|
||||
music.playTone(music.noteFrequency(Note.C), music.beat(BeatFraction.Quater));
|
||||
music.playTone(music.noteFrequency(Note.D), music.beat(BeatFraction.Quater));
|
||||
music.playTone(music.noteFrequency(Note.C), music.beat(BeatFraction.Quater));
|
||||
music.playTone(music.noteFrequency(Note.F), music.beat(BeatFraction.Quater));
|
||||
music.playTone(music.noteFrequency(Note.E), music.beat(BeatFraction.Quater));
|
||||
music.playTone(music.noteFrequency(Note.C), music.beat(BeatFraction.Quarter));
|
||||
music.playTone(music.noteFrequency(Note.C), music.beat(BeatFraction.Quarter));
|
||||
music.playTone(music.noteFrequency(Note.D), music.beat(BeatFraction.Quarter));
|
||||
music.playTone(music.noteFrequency(Note.C), music.beat(BeatFraction.Quarter));
|
||||
music.playTone(music.noteFrequency(Note.F), music.beat(BeatFraction.Quarter));
|
||||
music.playTone(music.noteFrequency(Note.E), music.beat(BeatFraction.Quarter));
|
||||
basic.pause(100);
|
||||
music.playTone(music.noteFrequency(Note.C), music.beat(BeatFraction.Quater));
|
||||
music.playTone(music.noteFrequency(Note.C), music.beat(BeatFraction.Quater));
|
||||
music.playTone(music.noteFrequency(Note.D), music.beat(BeatFraction.Quater));
|
||||
music.playTone(music.noteFrequency(Note.C), music.beat(BeatFraction.Quater));
|
||||
music.playTone(music.noteFrequency(Note.G), music.beat(BeatFraction.Quater));
|
||||
music.playTone(music.noteFrequency(Note.F), music.beat(BeatFraction.Quater));
|
||||
music.playTone(music.noteFrequency(Note.C), music.beat(BeatFraction.Quarter));
|
||||
music.playTone(music.noteFrequency(Note.C), music.beat(BeatFraction.Quarter));
|
||||
music.playTone(music.noteFrequency(Note.D), music.beat(BeatFraction.Quarter));
|
||||
music.playTone(music.noteFrequency(Note.C), music.beat(BeatFraction.Quarter));
|
||||
music.playTone(music.noteFrequency(Note.G), music.beat(BeatFraction.Quarter));
|
||||
music.playTone(music.noteFrequency(Note.F), music.beat(BeatFraction.Quarter));
|
||||
basic.pause(100);
|
||||
music.playTone(music.noteFrequency(Note.C), music.beat(BeatFraction.Quater));
|
||||
music.playTone(music.noteFrequency(Note.C), music.beat(BeatFraction.Quater));
|
||||
music.playTone(music.noteFrequency(Note.A), music.beat(BeatFraction.Quater));
|
||||
music.playTone(music.noteFrequency(Note.F), music.beat(BeatFraction.Quater));
|
||||
music.playTone(music.noteFrequency(Note.E), music.beat(BeatFraction.Quater));
|
||||
music.playTone(music.noteFrequency(Note.D), music.beat(BeatFraction.Quater));
|
||||
music.playTone(music.noteFrequency(Note.C), music.beat(BeatFraction.Quarter));
|
||||
music.playTone(music.noteFrequency(Note.C), music.beat(BeatFraction.Quarter));
|
||||
music.playTone(music.noteFrequency(Note.A), music.beat(BeatFraction.Quarter));
|
||||
music.playTone(music.noteFrequency(Note.F), music.beat(BeatFraction.Quarter));
|
||||
music.playTone(music.noteFrequency(Note.E), music.beat(BeatFraction.Quarter));
|
||||
music.playTone(music.noteFrequency(Note.D), music.beat(BeatFraction.Quarter));
|
||||
basic.pause(100);
|
||||
music.playTone(music.noteFrequency(Note.A), music.beat(BeatFraction.Quater));
|
||||
music.playTone(music.noteFrequency(Note.A), music.beat(BeatFraction.Quater));
|
||||
music.playTone(music.noteFrequency(Note.B), music.beat(BeatFraction.Quater));
|
||||
music.playTone(music.noteFrequency(Note.F), music.beat(BeatFraction.Quater));
|
||||
music.playTone(music.noteFrequency(Note.G), music.beat(BeatFraction.Quater));
|
||||
music.playTone(music.noteFrequency(Note.F), music.beat(BeatFraction.Quater));
|
||||
music.playTone(music.noteFrequency(Note.A), music.beat(BeatFraction.Quarter));
|
||||
music.playTone(music.noteFrequency(Note.A), music.beat(BeatFraction.Quarter));
|
||||
music.playTone(music.noteFrequency(Note.B), music.beat(BeatFraction.Quarter));
|
||||
music.playTone(music.noteFrequency(Note.F), music.beat(BeatFraction.Quarter));
|
||||
music.playTone(music.noteFrequency(Note.G), music.beat(BeatFraction.Quarter));
|
||||
music.playTone(music.noteFrequency(Note.F), music.beat(BeatFraction.Quarter));
|
||||
```
|
||||
|
||||
|
||||
|
@ -44,7 +44,7 @@ let hero = game.createSprite(2, 2);
|
||||
let food = game.createSprite(4, 4);
|
||||
let ghost = game.createSprite(0, 0);
|
||||
ghost.change(LedSpriteProperty.Blink, 100);
|
||||
food = led.brightness() == 8;
|
||||
food.set(LedSpriteProperty.Brightness, 8);
|
||||
|
||||
```
|
||||
|
||||
@ -56,7 +56,7 @@ let hero = game.createSprite(2, 2);
|
||||
let food = game.createSprite(4, 4);
|
||||
let ghost = game.createSprite(0, 0);
|
||||
ghost.change(LedSpriteProperty.Blink, 100);
|
||||
food = led.brightness() == 8;
|
||||
food.set(LedSpriteProperty.Brightness, 8);
|
||||
while (true) {
|
||||
basic.pause(400);
|
||||
}
|
||||
@ -73,7 +73,7 @@ let hero = game.createSprite(2, 2);
|
||||
let food = game.createSprite(4, 4);
|
||||
let ghost = game.createSprite(0, 0);
|
||||
ghost.change(LedSpriteProperty.Blink, 100);
|
||||
food = led.brightness() == 8;
|
||||
food.set(LedSpriteProperty.Brightness, 8);
|
||||
while (true) {
|
||||
basic.pause(400);
|
||||
if (ghost.get(LedSpriteProperty.X) < hero.get(LedSpriteProperty.X)) {
|
||||
@ -99,7 +99,7 @@ let hero = game.createSprite(2, 2);
|
||||
let food = game.createSprite(4, 4);
|
||||
let ghost = game.createSprite(0, 0);
|
||||
ghost.change(LedSpriteProperty.Blink, 100);
|
||||
food = led.brightness() == 8;
|
||||
food.set(LedSpriteProperty.Brightness, 8);
|
||||
while (true) {
|
||||
basic.pause(400);
|
||||
if (ghost.get(LedSpriteProperty.X) < hero.get(LedSpriteProperty.X)) {
|
||||
@ -127,7 +127,7 @@ let hero = game.createSprite(2, 2);
|
||||
let food = game.createSprite(4, 4);
|
||||
let ghost = game.createSprite(0, 0);
|
||||
ghost.change(LedSpriteProperty.Blink, 100);
|
||||
food = led.brightness() == 8;
|
||||
food.set(LedSpriteProperty.Brightness, 8);
|
||||
while (true) {
|
||||
basic.pause(400);
|
||||
if (ghost.get(LedSpriteProperty.X) < hero.get(LedSpriteProperty.X)) {
|
||||
@ -164,7 +164,7 @@ let hero = game.createSprite(2, 2);
|
||||
let food = game.createSprite(4, 4);
|
||||
let ghost = game.createSprite(0, 0);
|
||||
ghost.change(LedSpriteProperty.Blink, 100);
|
||||
food = led.brightness() == 8;
|
||||
food.set(LedSpriteProperty.Brightness, 8);
|
||||
while (true) {
|
||||
basic.pause(400);
|
||||
if (ghost.get(LedSpriteProperty.X) < hero.get(LedSpriteProperty.X)) {
|
||||
@ -212,7 +212,7 @@ let hero = game.createSprite(2, 2);
|
||||
let food = game.createSprite(4, 4);
|
||||
let ghost = game.createSprite(0, 0);
|
||||
ghost.change(LedSpriteProperty.Blink, 100);
|
||||
food = led.brightness() == 8;
|
||||
food.set(LedSpriteProperty.Brightness, 8);
|
||||
while (true) {
|
||||
basic.pause(400);
|
||||
if (ghost.get(LedSpriteProperty.X) < hero.get(LedSpriteProperty.X)) {
|
||||
|
36
docs/projects/guitar.md
Normal file
@ -0,0 +1,36 @@
|
||||
# Guitar
|
||||

|
||||
### @description A beginner-intermediate maker activity, building a guitar with the micro:bit
|
||||
|
||||
### ~avatar avatar
|
||||
|
||||
Make a micro:bit guitar with this guided tutorial!
|
||||
|
||||
### ~
|
||||
*playing micro:bit guitar*
|
||||
https://youtu.be/GYmdTFvxz80
|
||||
|
||||
## Duration
|
||||
|
||||
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)
|
||||
* Markers and/or paint
|
||||
* Aluminum Foil
|
||||
* 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)
|
||||
* [Accelerometer Beat control](/projects/guitar/accelerometer)
|
||||
* [Pin Press Switch](/projects/guitar/pinpress)
|
||||
|
||||
### ~button /projects/guitar/making
|
||||
Let's get started!
|
||||
### ~
|
114
docs/projects/guitar/accelerometer.md
Normal file
@ -0,0 +1,114 @@
|
||||
# Accelerometer Beat control
|
||||
|
||||
### @description micro:bit guitar: using accelerometer to control tempo
|
||||
|
||||
### ~avatar avatar
|
||||
|
||||
Use the Accelerometer to control guitar tempo
|
||||
* Duration: 30 - 45 minutes
|
||||
* Concepts:
|
||||
* Gravity
|
||||
* Acceleration
|
||||
* X, Y, Z coordinates
|
||||
* Tempo
|
||||
* Beat
|
||||
* Mapping
|
||||
* Graphing
|
||||
* Absolute value
|
||||
|
||||
### ~
|
||||
|
||||
*accelerometer controlled tempo*
|
||||
https://youtu.be/h_gPkBaVkoo
|
||||
TODO: add sound to video
|
||||
## Blocks
|
||||
|
||||
```cards
|
||||
input.acceleration(Dimension.Y)
|
||||
music.setTempo(120)
|
||||
pins.map(0, 0, 1023,60, 320)
|
||||
Math.abs(1)
|
||||
```
|
||||
|
||||
## Accelerometer, gravity and tilting!
|
||||
|
||||
The micro:bit contains an **accelerometer** sensor that is able to measure forces applied to the board.
|
||||
On earth, we are subject to the **gravity force** which pulls us to the ground!
|
||||
|
||||
https://youtu.be/0SULoTKmkhI
|
||||
|
||||
When the micro:bit is flat on a table, with the screen pointing up, the gravity force is aligned
|
||||
with the **Z** axis of the micro:bit.
|
||||
|
||||

|
||||
|
||||
If you tilt it up and down, the force will align with the **Y** axis -- this is how we can detect tilting!!!
|
||||
If the force along **Y** grows, the micro:bit is tilting more and more vertically!
|
||||
|
||||
## Measuring Acceleration along different coordinates (X, Y, Z axis)
|
||||
|
||||
The acceleration block approximately measures **milli-g**, which is 1/1000 of a **g** or the
|
||||
acceleration of gravity.
|
||||
|
||||
### Step 1: Graphing acceleration
|
||||
```blocks
|
||||
basic.forever(() => {
|
||||
led.plotBarGraph(input.acceleration(Dimension.Y), 1023)
|
||||
})
|
||||
```
|
||||
**Create the code** that measures the change in the Y axis acceleration as a graph on the LEDs
|
||||
|
||||
**Dowload the code** to the micro:bit
|
||||
|
||||
**Test the movements that move the graph from 1 to 5 bars on the LEDs**
|
||||
|
||||
### Extra
|
||||
|
||||
Try graphing the acceleration along the **X** and **Z** axis. Can you explain the differences?
|
||||
|
||||
### ~hint
|
||||
## Mapping
|
||||
**It is common to map one standard to another - such as with temperature**
|
||||

|
||||
### ~
|
||||
|
||||
### Step 2: Mapping acceleration to Beat
|
||||
**micro:bit sensors produce signal values between 0 to 1023. The *[map block](/reference/pins/map)* converts the signal to a desired range.**
|
||||
```blocks
|
||||
basic.forever(() => {
|
||||
music.setTempo(pins.map(Math.abs(input.acceleration(Dimension.Y)),
|
||||
0, 1023,
|
||||
60, 320))
|
||||
music.playTone(Note.C, music.beat(BeatFraction.Quarter));
|
||||
})
|
||||
```
|
||||
|
||||
**Create the code** that *Maps* Y axis acceleration as *tempo*
|
||||
|
||||
**Download the code** to the micro:bit on the guitar
|
||||
|
||||
**Test the movements that speed and slow the tempo**
|
||||
|
||||
### Step 3: Combine with light sensor tone control
|
||||
**Put it all together!**
|
||||
|
||||
```blocks
|
||||
basic.forever(() => {
|
||||
music.setTempo(pins.map(Math.abs(input.acceleration(Dimension.Y)),
|
||||
0, 1023,
|
||||
60, 320))
|
||||
music.playTone(
|
||||
input.lightLevel() * 25,
|
||||
music.beat(BeatFraction.Quarter)
|
||||
);
|
||||
})
|
||||
```
|
||||
**Combine the code above with the light sensor tone control code from the previous activity**
|
||||
|
||||
**Download the code** to the micro:bit on the guitar
|
||||
|
||||
### Now play the guitar adjusting tone and tempo using the light sensor and accelerometer!
|
||||
|
||||
### ~button /projects/guitar/pinpress
|
||||
NEXT: Pin Press on/off
|
||||
### ~
|
179
docs/projects/guitar/displaybuttons.md
Normal file
@ -0,0 +1,179 @@
|
||||
# Buttons, Display & Sound
|
||||
### @description micro:bit guitar: using buttons with display and sound
|
||||
|
||||
### ~avatar avatar
|
||||
Use Button Events to control LED Display and play Sound
|
||||
* **Concepts:**
|
||||
* Events
|
||||
* Tone/Note
|
||||
* Sequence
|
||||
|
||||
### ~
|
||||
|
||||
## Duration: 30 - 45 minutes
|
||||
|
||||
## Materials
|
||||
|
||||
A micro:bit, battery pack and 2 x AAA batteries
|
||||
|
||||

|
||||
|
||||
2 to 4 crocodile clips
|
||||
|
||||

|
||||
|
||||
Headphones
|
||||
|
||||

|
||||
|
||||
## Blocks
|
||||
|
||||
```cards
|
||||
basic.showLeds(`
|
||||
. # . # .
|
||||
. . . . .
|
||||
. # # # .
|
||||
. # . # .
|
||||
. # # # .
|
||||
`);
|
||||
input.onButtonPressed(Button.A, () => {});
|
||||
music.playTone(Note.C, music.beat(BeatFraction.Quarter))
|
||||
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
|
||||
```blocks
|
||||
basic.showLeds(`
|
||||
. # . # .
|
||||
. . . . .
|
||||
. # # # .
|
||||
. # . # .
|
||||
. # # # .
|
||||
`);
|
||||
```
|
||||
From **Basics**, drag a **show LEDs** block into the coding area
|
||||
* Create a face with LEDs
|
||||
|
||||

|
||||
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
|
||||
```blocks
|
||||
input.onButtonPressed(Button.A, () => {
|
||||
basic.showLeds(`
|
||||
. # . # .
|
||||
. . . . .
|
||||
. # # # .
|
||||
. # . # .
|
||||
. # # # .
|
||||
`)
|
||||
})
|
||||
input.onButtonPressed(Button.B, () => {
|
||||
basic.showLeds(`
|
||||
. # . # .
|
||||
. . . . .
|
||||
. . . . .
|
||||
# . . . #
|
||||
. # # # .
|
||||
`)
|
||||
})
|
||||
```
|
||||
|
||||
From **Input**, drag an **on button 'A' pressed** block into the coding area
|
||||
|
||||
* Snap the LED face into the block
|
||||
|
||||
* Create a 'B' button block with a different LED face
|
||||
|
||||
* Download the code to your micro:bit and try the A & B buttons
|
||||
|
||||
|
||||
## Step 3: Add Headphone Speakers using Crocodile clips
|
||||
|
||||

|
||||
|
||||

|
||||
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
|
||||
|
||||
*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**.
|
||||
Songs are played using sequences notes. Like the beginning of a birthday song (C, C, D, C, F, E).
|
||||
```blocks
|
||||
input.onButtonPressed(Button.A, () => {
|
||||
music.playTone(Note.C, music.beat(BeatFraction.Quarter))
|
||||
music.rest(music.beat(BeatFraction.Whole))
|
||||
music.playTone(Note.C, music.beat(BeatFraction.Quarter))
|
||||
music.rest(music.beat(BeatFraction.Whole))
|
||||
music.playTone(Note.D, music.beat(BeatFraction.Quarter))
|
||||
music.rest(music.beat(BeatFraction.Whole))
|
||||
music.playTone(Note.C, music.beat(BeatFraction.Quarter))
|
||||
music.rest(music.beat(BeatFraction.Whole))
|
||||
music.rest(music.beat(BeatFraction.Whole))
|
||||
music.playTone(Note.F, music.beat(BeatFraction.Half))
|
||||
music.rest(music.beat(BeatFraction.Whole))
|
||||
music.playTone(Note.E, music.beat(BeatFraction.Whole))
|
||||
})
|
||||
```
|
||||
### ~
|
||||
## Step 4: Add Tone Playing Events for Buttons A & B
|
||||
```blocks
|
||||
input.onButtonPressed(Button.A, () => {
|
||||
basic.showLeds(`
|
||||
. # . # .
|
||||
. . . . .
|
||||
. # # # .
|
||||
. # . # .
|
||||
. # # # .
|
||||
`)
|
||||
music.playTone(Note.A, music.beat(BeatFraction.Whole))
|
||||
})
|
||||
input.onButtonPressed(Button.B, () => {
|
||||
basic.showLeds(`
|
||||
. # . # .
|
||||
. . . . .
|
||||
. . . . .
|
||||
# . . . #
|
||||
. # # # .
|
||||
`)
|
||||
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**
|
||||
|
||||
* 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
|
||||
* *Tip*: Search for "ABC music notation" or "Easy Music Notes" + the name of a song
|
||||
|
||||
## Extra
|
||||
|
||||
* [Smiley Buttons tutorial](/projects/smiley-buttons)
|
||||
* [Hack your headphones](/projects/hack-your-headphones)
|
||||
|
||||
|
||||
### ~button /projects/guitar/lightsensor
|
||||
NEXT: Light Sensor Tone Control
|
||||
### ~
|
116
docs/projects/guitar/lightsensor.md
Normal file
@ -0,0 +1,116 @@
|
||||
# Light Sensor Tone control
|
||||
|
||||
### @description micro:bit guitar: using light sensor to control tone
|
||||
|
||||
### ~avatar avatar
|
||||
|
||||
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
|
||||
* **Resources:**
|
||||
* This guitar is inspired by the [Theremin](https://en.wikipedia.org/wiki/Theremin)
|
||||
|
||||
### ~
|
||||
|
||||
*playing tones with light sensor*
|
||||
https://youtu.be/2cKg9pokVC4
|
||||
|
||||
## The micro:bit LEDs Light Sensors
|
||||
|
||||
- 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 use measure the current light level to control the tone
|
||||
|
||||
## Forever Loop
|
||||
|
||||
The forever loop really does run forever. The forever loop is useful when there is a need to continually check for an event or use a changing value in code.
|
||||
|
||||
## Blocks
|
||||
|
||||
```cards
|
||||
basic.forever(() => {})
|
||||
input.lightLevel()
|
||||
led.plotBarGraph(0, 255)
|
||||
music.playTone(Note.C, music.beat(BeatFraction.Quarter))
|
||||
```
|
||||
|
||||
## Step 1: Create a light level detector
|
||||
```blocks
|
||||
basic.forever(() => {
|
||||
led.plotBarGraph(input.lightLevel(), 255)
|
||||
})
|
||||
```
|
||||
**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***
|
||||
|
||||
**Set the *plot bar graph* value *up to* = *255* **
|
||||
|
||||
## 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
|
||||
|
||||
**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.
|
||||
|
||||
**261Hz** represents a C note
|
||||
```blocks
|
||||
music.playTone(261, music.beat(BeatFraction.Half))
|
||||
```
|
||||
**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*
|
||||
|
||||
### 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
|
||||
|
||||
## Good work, this guitar is sounding good!
|
||||
**Challenge:** Create a variable for the light level multiplier that you can change using buttons (optional)
|
||||
|
||||
### ~button /projects/guitar/accelerometer
|
||||
NEXT: Accelerometer Beat control
|
||||
### ~
|
59
docs/projects/guitar/making.md
Normal file
@ -0,0 +1,59 @@
|
||||
# Making the Guitar Body
|
||||
### @description Maker Project for Guitar Body for micro:bit
|
||||
|
||||
### ~avatar avatar
|
||||
|
||||
Make the Guitar Body for your micro:bit Guitar
|
||||
|
||||
### ~
|
||||
|
||||
## Duration: ~45 minutes
|
||||
|
||||
## Materials
|
||||
* Cardboard large pieces (recycle!)
|
||||
* Tape (masking, duct Tape, and/or packing tape)
|
||||
* Scissors that can cut cardboard
|
||||
* Markers and/or paint
|
||||
|
||||

|
||||
|
||||
## Step 1: Design the body
|
||||
*tracing the guitar design*
|
||||
https://youtu.be/xMSrWaOZkFg
|
||||
|
||||
* Search for [Guitar Silhouette](https://www.bing.com/images/search?q=Guitar+Silhouettes) design ideas and customize
|
||||
the shape of your guitar
|
||||
* Trace the design on a flat piece of cardboard (40-80 cm is best)
|
||||
|
||||
### ~hint
|
||||
|
||||
* Avoid small details that are difficult to cut into cardboard
|
||||
* Unfolding a box gives longer pieces of cardboard, and creases can be reinforced
|
||||
|
||||
### ~
|
||||
|
||||
## Step 2: Cut out the body
|
||||
*cutting the cardboard*
|
||||
https://youtu.be/aUQkrFoEank
|
||||
|
||||
|
||||
## Step 3: Personalize the Guitar
|
||||
|
||||
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!
|
||||
|
||||

|
||||
|
||||
## Extra!
|
||||
*strengthening the guitar*
|
||||
https://youtu.be/q0GkQdJmxjE
|
||||
|
||||
Strengthen the guitar next with an angled cardboard strip (*optional*).
|
||||
|
||||
### ~button /projects/guitar/displaybuttons
|
||||
NEXT: Buttons, Display and Sound
|
||||
### ~
|
128
docs/projects/guitar/pinpress.md
Normal file
@ -0,0 +1,128 @@
|
||||
# Pin Press Switch
|
||||
|
||||
### @description micro:bit guitar: use pin press to toggle guitar play on/off
|
||||
|
||||
### ~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`**
|
||||
* Boolean: **`True`/`False`**
|
||||
### ~
|
||||
|
||||
## Blocks
|
||||
|
||||
```cards
|
||||
var on = false
|
||||
on;
|
||||
if (on) { } else {}
|
||||
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
|
||||
|
||||
**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!**
|
||||
### ~
|
||||
|
||||
## Step 1: Pin Press Test
|
||||
|
||||
```blocks
|
||||
input.onPinPressed(TouchPin.P0, () => {
|
||||
basic.showNumber(0)
|
||||
})
|
||||
input.onPinPressed(TouchPin.P1, () => {
|
||||
basic.showNumber(1)
|
||||
})
|
||||
input.onPinPressed(TouchPin.P2, () => {
|
||||
basic.showNumber(2)
|
||||
})
|
||||
```
|
||||
**Create the pin-press code**
|
||||
|
||||
**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**
|
||||
|
||||
### ~hint
|
||||
**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**
|
||||
|
||||
**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**
|
||||
|
||||
## 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(() => {
|
||||
if (on == true) {
|
||||
basic.showString("ON")
|
||||
} else {
|
||||
basic.showString("OFF")
|
||||
}
|
||||
})
|
||||
input.onPinPressed(TouchPin.P1, () => {
|
||||
if (on == true) {
|
||||
on = false
|
||||
} else {
|
||||
on = true
|
||||
}
|
||||
})
|
||||
```
|
||||
**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*
|
||||
TODO: do we want to use `on = !on;` or be more direct in flipping the switch? `on = true; on = false;`
|
||||
```blocks
|
||||
var on = false
|
||||
basic.forever(() => {
|
||||
if (on) {
|
||||
music.setTempo(pins.map(Math.abs(input.acceleration(Dimension.Y)),
|
||||
0, 1023,
|
||||
60, 320))
|
||||
music.playTone(
|
||||
input.lightLevel() * 25,
|
||||
music.beat(BeatFraction.Quarter)
|
||||
);
|
||||
} else {
|
||||
music.rest(music.beat())
|
||||
}
|
||||
})
|
||||
input.onPinPressed(TouchPin.P1, () => {
|
||||
on = !on;
|
||||
})
|
||||
```
|
||||
## 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
|
85
docs/share.md
Normal file
@ -0,0 +1,85 @@
|
||||
# Sharing your project
|
||||
|
||||
Once you've made your project, you can save it the cloud, share it, or embed it on another website.
|
||||
|
||||
* Click **More...**, then **Embed Project**:
|
||||
|
||||

|
||||
|
||||
* Click **Publish project**. This will make the project publicly available
|
||||
* You will then see this information:
|
||||
|
||||

|
||||
|
||||
## Sharing the URL
|
||||
|
||||
You can share the URL for the project ([https://codethemicrobit.com/httuftrbtg](https://codethemicrobit.com/httuftrbtg) above) with other people, and they will be able to visit that page to see your project, download it, or edit it:
|
||||
|
||||

|
||||
|
||||
## Embedding into a blog or web site
|
||||
|
||||
Rather than just sharing the link, you can also embed the project so that your visitors can use the simulator, edit blocks or code, or download the project without having to leave your site.
|
||||
|
||||
### General instructions
|
||||
|
||||
* Copy the HTML for embedding the page from the publish dialog. It will look like the following:
|
||||
|
||||
```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>
|
||||
```
|
||||
|
||||
* Open the HTML editor for your blog or website and paste it with your content
|
||||
|
||||
### Wordpress
|
||||
|
||||
[wordpress.com][] blogs do not support embedding content from most websites, so you will need to link to your project instead. Alternatively, if you have a Wordpress VIP account you can follow [these instructions][wordpress-vip] to embed an `iframe` into your blog. The URL that you need to add is like `https://codethemicrobit.com/?sandbox=1#pub:httuftrbtg`, but replace `httuftrbtg` with your project's unique identifier.
|
||||
|
||||
If you self host a Wordpress blog you can install the [iframe-plugin][] and then write the following in your blog-post (again, replacing the `httuftrbtg` with your project's identifier):
|
||||
|
||||
```
|
||||
[iframe src="https://codethemicrobit.com/?sandbox=1#pub:httuftrbtg"]
|
||||
```
|
||||
|
||||
### Blogger
|
||||
|
||||
* Create a new post
|
||||
* Click the 'HTML' button next to 'Compose' and paste in the HTML
|
||||
|
||||

|
||||
|
||||
### Squarespace
|
||||
|
||||
[Squarespace][] allows you to embed HTML code inside a blog post or page. In the editor, click to add a new block:
|
||||
|
||||

|
||||
|
||||
Scroll to **More** and select **Code**. Paste the embed HTML and click **Apply**:
|
||||
|
||||

|
||||
|
||||
### Google Sites
|
||||
|
||||
Google Sites doesn't currently [support iframes in custom HTML][google-sites-iframes], so you'll have to insert a link to your project's URL instead.
|
||||
|
||||
### Office Sway
|
||||
|
||||
[Microsoft Office Sway][sway] only allows iframes from [certain websites][sway-restricted], so you'll need to insert a link to your project instead.
|
||||
### Embedding in Markdown documents
|
||||
|
||||
[Markdown][] is a popular text format supported by many blog editors. As Markdown supports embedded HTML, you should be able to paste the HTML into the document, although some sites may prevent you from doing this.
|
||||
|
||||
### ~hint
|
||||
|
||||
**Developers:** This page supports OEmbed as well
|
||||
|
||||
### ~
|
||||
|
||||
[wordpress.com]: https://wordpress.com
|
||||
[wordpress-vip]: https://vip.wordpress.com/documentation/embedding-rich-media-from-around-the-web-with-protected-embeds/#scripts-iframes-and-objects
|
||||
[iframe-plugin]: https://wordpress.org/plugins/iframe/
|
||||
[squarespace]: https://squarespace.com
|
||||
[google-sites-iframes]: https://support.google.com/sites/answer/2500646?hl=en
|
||||
[sway]: https://sway.com/my
|
||||
[sway-restricted]: https://support.office.com/en-us/article/Embed-content-in-your-Sway-1e1ab12a-f961-4a26-8afc-77a15f892b1d
|
||||
[Markdown]: https://daringfireball.net/projects/markdown/
|
145
docs/static/Logo_Calliope_Woman.svg
vendored
Normal 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
@ -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
@ -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
@ -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
After Width: | Height: | Size: 36 KiB |
BIN
docs/static/embed/blogger.png
vendored
Normal file
After Width: | Height: | Size: 101 KiB |
BIN
docs/static/embed/embed-info.png
vendored
Normal file
After Width: | Height: | Size: 113 KiB |
BIN
docs/static/embed/project-page.png
vendored
Normal file
After Width: | Height: | Size: 207 KiB |
BIN
docs/static/embed/publish.png
vendored
Normal file
After Width: | Height: | Size: 54 KiB |
BIN
docs/static/embed/squarespace-code.png
vendored
Normal file
After Width: | Height: | Size: 81 KiB |
BIN
docs/static/embed/squarespace-insert.png
vendored
Normal file
After Width: | Height: | Size: 59 KiB |
BIN
docs/static/mb/device/usb-generic.jpg
vendored
Before Width: | Height: | Size: 343 KiB After Width: | Height: | Size: 66 KiB |
BIN
docs/static/mb/device/usb-mac.jpg
vendored
Before Width: | Height: | Size: 593 KiB After Width: | Height: | Size: 65 KiB |
BIN
docs/static/mb/device/usb-osx-chrome.png
vendored
Before Width: | Height: | Size: 74 KiB After Width: | Height: | Size: 30 KiB |
BIN
docs/static/mb/device/usb-osx-firefox-1.jpg
vendored
Normal file
After Width: | Height: | Size: 40 KiB |
BIN
docs/static/mb/device/usb-osx-firefox-1.png
vendored
Before Width: | Height: | Size: 201 KiB |
BIN
docs/static/mb/device/usb-thin.jpg
vendored
Normal file
After Width: | Height: | Size: 41 KiB |
BIN
docs/static/mb/device/usb-windows-firefox-2.jpg
vendored
Normal file
After Width: | Height: | Size: 26 KiB |
BIN
docs/static/mb/device/usb-windows-firefox-2.png
vendored
Before Width: | Height: | Size: 120 KiB |
BIN
docs/static/mb/projects/guitar.png
vendored
Normal file
After Width: | Height: | Size: 7.1 KiB |
BIN
docs/static/mb/projects/guitar/accelleration_axis.png
vendored
Normal file
After Width: | Height: | Size: 46 KiB |
BIN
docs/static/mb/projects/guitar/connectmicrobit.jpg
vendored
Normal file
After Width: | Height: | Size: 67 KiB |
BIN
docs/static/mb/projects/guitar/crocclipintoboard.jpg
vendored
Normal file
After Width: | Height: | Size: 66 KiB |
BIN
docs/static/mb/projects/guitar/crocclips.jpg
vendored
Normal file
After Width: | Height: | Size: 59 KiB |
BIN
docs/static/mb/projects/guitar/headphones.jpg
vendored
Normal file
After Width: | Height: | Size: 71 KiB |
BIN
docs/static/mb/projects/guitar/jacktocrocs.jpg
vendored
Normal file
After Width: | Height: | Size: 86 KiB |
BIN
docs/static/mb/projects/guitar/map_analogy.png
vendored
Normal file
After Width: | Height: | Size: 28 KiB |
BIN
docs/static/mb/projects/guitar/mapanalogy.JPG
vendored
Normal file
After Width: | Height: | Size: 21 KiB |
BIN
docs/static/mb/projects/guitar/materials.jpg
vendored
Normal file
After Width: | Height: | Size: 94 KiB |
BIN
docs/static/mb/projects/guitar/microbit.jpg
vendored
Normal file
After Width: | Height: | Size: 102 KiB |
BIN
docs/static/mb/projects/guitar/otherdesigns.jpg
vendored
Normal file
After Width: | Height: | Size: 92 KiB |
BIN
docs/static/mb/projects/guitar/usbcable.jpg
vendored
Normal file
After Width: | Height: | Size: 51 KiB |
1
docs/static/microbit.docs.svg
vendored
Before Width: | Height: | Size: 18 KiB |
BIN
docs/static/microbit.red.png
vendored
Before Width: | Height: | Size: 21 KiB |
BIN
docs/static/microbit.red.square.png
vendored
Before Width: | Height: | Size: 21 KiB |
1
docs/static/microbit.red.svg
vendored
Before Width: | Height: | Size: 18 KiB |
1
docs/static/microbit.simplified.svg
vendored
Before Width: | Height: | Size: 20 KiB |
@ -141,7 +141,6 @@ namespace radio {
|
||||
*/
|
||||
//% help=radio/received-number-at
|
||||
//% weight=45 debug=true
|
||||
//% blockId=radio_datagram_received_number_at block="radio receive number|at %VALUE" blockGap=8
|
||||
int receivedNumberAt(int index) {
|
||||
if (radioEnable() != MICROBIT_OK) return 0;
|
||||
if (0 <= index && index < packet.length() / 4) {
|
||||
|
3
libs/microbit-radio/shims.d.ts
vendored
@ -46,8 +46,7 @@ declare namespace radio {
|
||||
* @param index index of the number to read from 0 to 3. 1 eg
|
||||
*/
|
||||
//% help=radio/received-number-at
|
||||
//% weight=45 debug=true
|
||||
//% blockId=radio_datagram_received_number_at block="radio receive number|at %VALUE" blockGap=8 shim=radio::receivedNumberAt
|
||||
//% weight=45 debug=true shim=radio::receivedNumberAt
|
||||
function receivedNumberAt(index: number): number;
|
||||
|
||||
/**
|
||||
|
@ -41,14 +41,14 @@
|
||||
"input.acceleration|param|dimension": "TODO",
|
||||
"input.buttonIsPressed": "Get the button state (pressed or not) for ``A`` and ``B``.",
|
||||
"input.calibrate": "Obsolete, compass calibration is automatic.",
|
||||
"input.compassHeading": "Get the current compass compass heading in degrees.",
|
||||
"input.compassHeading": "Get the current compass heading in degrees.",
|
||||
"input.lightLevel": "Reads the light level applied to the LED screen in a range from ``0`` (dark) to ``255`` bright.",
|
||||
"input.magneticForce": "Get the magnetic force value in ``micro-Teslas`` (``µT``). This function is not supported in the simulator.",
|
||||
"input.magneticForce|param|dimension": "TODO",
|
||||
"input.onButtonPressed": "Do something when a button (``A``, ``B`` or both ``A+B``) is pressed",
|
||||
"input.onButtonPressed|param|body": "TODO",
|
||||
"input.onButtonPressed|param|button": "TODO",
|
||||
"input.onGesture": "Attaches code to run when the screen is facing up.",
|
||||
"input.onGesture": "Do something when when a gesture is done (like shaking the micro:bit).",
|
||||
"input.onGesture|param|body": "TODO",
|
||||
"input.onLogoDown": "Attaches code to run when the logo is oriented downwards and the board is vertical.",
|
||||
"input.onLogoDown|param|body": "TODO",
|
||||
@ -68,7 +68,7 @@
|
||||
"input.onShake|param|body": "TODO",
|
||||
"input.pinIsPressed": "Get the pin state (pressed or not). Requires to hold the ground to close the circuit.",
|
||||
"input.pinIsPressed|param|name": "pin used to detect the touch",
|
||||
"input.rotation": "The pitch of the device, rotation along the ``x-axis``, in degrees.",
|
||||
"input.rotation": "The pitch or roll of the device, rotation along the ``x-axis`` or ``y-axis``, in degrees.",
|
||||
"input.rotation|param|kind": "TODO",
|
||||
"input.runningTime": "Gets the number of milliseconds elapsed since power on.",
|
||||
"input.setAccelerometerRange": "Sets the accelerometer sample range in gravities.",
|
||||
|
56
libs/microbit/basic.ts
Normal 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;
|
||||
}
|
||||
}
|
@ -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,
|
||||
|
@ -8,6 +8,7 @@ namespace control {
|
||||
* Returns the value of a C++ runtime constant
|
||||
*/
|
||||
//% weight=2 weight=19 blockId="control_event_source_id" block="%id" blockGap=8
|
||||
//% shim=TD_ID
|
||||
export function eventSourceId(id: EventBusSource): number {
|
||||
return id;
|
||||
}
|
||||
@ -15,6 +16,7 @@ namespace control {
|
||||
* Returns the value of a C++ runtime constant
|
||||
*/
|
||||
//% weight=1 weight=19 blockId="control_event_value_id" block="%id"
|
||||
//% shim=TD_ID
|
||||
export function eventValueId(id: EventBusValue): number {
|
||||
return id;
|
||||
}
|
||||
|
227
libs/microbit/dal.d.ts
vendored
@ -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,
|
||||
|
36
libs/microbit/enums.d.ts
vendored
@ -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
|
||||
}
|
||||
|
||||
|
||||
|
@ -122,7 +122,7 @@ namespace input {
|
||||
}
|
||||
|
||||
/**
|
||||
* Attaches code to run when the screen is facing up.
|
||||
* Do something when when a gesture is done (like shaking the micro:bit).
|
||||
* @param body TODO
|
||||
*/
|
||||
//% help=input/on-gesture weight=84 blockGap=8
|
||||
@ -199,7 +199,7 @@ namespace input {
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the current compass compass heading in degrees.
|
||||
* Get the current compass heading in degrees.
|
||||
*/
|
||||
//% help=input/compass-heading
|
||||
//% weight=56 icon="\uf14e"
|
||||
@ -257,7 +257,7 @@ namespace input {
|
||||
}
|
||||
|
||||
/**
|
||||
* The pitch of the device, rotation along the ``x-axis``, in degrees.
|
||||
* The pitch or roll of the device, rotation along the ``x-axis`` or ``y-axis``, in degrees.
|
||||
* @param kind TODO
|
||||
*/
|
||||
//% help=input/rotation weight=52
|
||||
|
@ -1,4 +1,5 @@
|
||||
enum Note {
|
||||
//% blockIdentity=music.noteFrequency
|
||||
C = 262,
|
||||
//% block=C#
|
||||
//% blockIdentity=music.noteFrequency
|
||||
@ -114,7 +115,7 @@ enum BeatFraction {
|
||||
//% block="1/2"
|
||||
Half = 2,
|
||||
//% block="1/4"
|
||||
Quater = 4,
|
||||
Quarter = 4,
|
||||
//% block="1/8"
|
||||
Eighth = 8,
|
||||
//% block="1/16"
|
||||
@ -135,7 +136,7 @@ namespace music {
|
||||
*/
|
||||
//% help=music/play-tone weight=90
|
||||
//% blockId=device_play_note block="play|tone %note=device_note|for %duration=device_beat" icon="\uf025" blockGap=8
|
||||
//% parts="speaker"
|
||||
//% parts="headphone"
|
||||
export function playTone(frequency: number, ms: number): void {
|
||||
pins.analogSetPitchPin(AnalogPin.P0);
|
||||
pins.analogPitch(frequency, ms);
|
||||
@ -147,7 +148,7 @@ namespace music {
|
||||
*/
|
||||
//% help=music/ring-tone weight=80
|
||||
//% blockId=device_ring block="ring tone (Hz)|%note=device_note" icon="\uf025" blockGap=8
|
||||
//% parts="speaker"
|
||||
//% parts="headphone"
|
||||
export function ringTone(frequency: number): void {
|
||||
pins.analogSetPitchPin(AnalogPin.P0);
|
||||
pins.analogPitch(frequency, 0);
|
||||
@ -159,7 +160,7 @@ namespace music {
|
||||
*/
|
||||
//% help=music/rest weight=79
|
||||
//% blockId=device_rest block="rest(ms)|%duration=device_beat"
|
||||
//% parts="speaker"
|
||||
//% parts="headphone"
|
||||
export function rest(ms: number): void {
|
||||
playTone(0, ms);
|
||||
}
|
||||
@ -171,7 +172,6 @@ namespace music {
|
||||
*/
|
||||
//% weight=50 help=music/note-frequency
|
||||
//% blockId=device_note block="%note"
|
||||
//% parts="speaker"
|
||||
//% shim=TD_ID
|
||||
export function noteFrequency(name: Note): number {
|
||||
return name;
|
||||
@ -186,14 +186,13 @@ namespace music {
|
||||
*/
|
||||
//% help=music/beat weight=49
|
||||
//% blockId=device_beat block="%fraction|beat"
|
||||
//% parts="speaker"
|
||||
export function beat(fraction?: BeatFraction): number {
|
||||
init();
|
||||
if (fraction == null) fraction = BeatFraction.Whole;
|
||||
let beat = 60000 / beatsPerMinute;
|
||||
if (fraction == BeatFraction.Whole) return beat;
|
||||
else if (fraction == BeatFraction.Half) return beat / 2;
|
||||
else if (fraction == BeatFraction.Quater) return beat / 4
|
||||
else if (fraction == BeatFraction.Quarter) return beat / 4
|
||||
else if (fraction == BeatFraction.Eighth) return beat / 8;
|
||||
else return beat / 16;
|
||||
}
|
||||
@ -203,7 +202,6 @@ namespace music {
|
||||
*/
|
||||
//% help=music/tempo weight=40
|
||||
//% blockId=device_tempo block="tempo (bpm)" blockGap=8
|
||||
//% parts="speaker"
|
||||
export function tempo(): number {
|
||||
init();
|
||||
return beatsPerMinute;
|
||||
@ -215,7 +213,6 @@ namespace music {
|
||||
*/
|
||||
//% help=music/change-tempo weight=39
|
||||
//% blockId=device_change_tempo block="change tempo by (bpm)|%value" blockGap=8
|
||||
//% parts="speaker"
|
||||
export function changeTempoBy(bpm: number): void {
|
||||
init();
|
||||
setTempo(beatsPerMinute + bpm);
|
||||
@ -227,7 +224,6 @@ namespace music {
|
||||
*/
|
||||
//% help=music/set-tempo weight=38
|
||||
//% blockId=device_set_tempo block="set tempo to (bpm)|%value"
|
||||
//% parts="speaker"
|
||||
export function setTempo(bpm: number): void {
|
||||
init();
|
||||
if (bpm > 0) {
|
||||
|
1
libs/microbit/parts/headphone.svg
Normal file
@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="142" height="180" viewBox="0 0 142 180"><rect ry=".3" rx="1" y="58.615" x="-8.878" height="23.571" width="17.143" transform="rotate(-45)" fill="#b3b3b3"/><rect ry=".3" rx="1" y="32.043" x="-8.878" height="23.571" width="17.143" transform="rotate(-45)" fill="#b3b3b3"/><path d="M.346 7.296c-.394.39-.31 4.797-.18 4.898l13.404 10.18c.117.12.337 4.76.73 4.368l5.506-5.56.01.01 6.51-6.444c.39-.392-4.25-.614-4.366-.73L11.777.612c-.1-.132-4.51-.215-4.898.18L4.087 3.636l-.01-.01-3.73 3.67z" fill="#b3b3b3"/><rect ry="6.85" rx="4.571" y="84.758" x="-20.128" height="75.571" width="39.643" transform="rotate(-45)"/><rect ry=".374" rx="1.038" y="29.442" x="-8.925" height="2.228" width="17.238" transform="rotate(-45)" fill="#fff"/><rect ry=".374" rx="1.038" y="55.939" x="-8.925" height="2.228" width="17.238" transform="rotate(-45)" fill="#fff"/><rect ry=".374" rx="1.038" y="82.392" x="-8.925" height="2.228" width="17.238" transform="rotate(-45)" fill="#fff"/><rect ry="2.317" rx="2.183" y="158.876" x="-9.774" height="25.568" width="18.935" transform="rotate(-45)"/><path d="M128.588 128.82s14.97 11.165 7.547 26.35c-8.426 17.24-25.57 20.653-25.57 20.653" fill="none" stroke="#000" stroke-width="6.6" stroke-linecap="round" stroke-linejoin="round"/></svg>
|
After Width: | Height: | Size: 1.3 KiB |
@ -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;
|
||||
|
@ -14,6 +14,7 @@
|
||||
"helpers.ts",
|
||||
"images.cpp",
|
||||
"basic.cpp",
|
||||
"basic.ts",
|
||||
"input.cpp",
|
||||
"input.ts",
|
||||
"control.ts",
|
||||
@ -29,6 +30,7 @@
|
||||
"buffer.cpp",
|
||||
"pxtparts.json",
|
||||
"parts/speaker.svg",
|
||||
"parts/headphone.svg",
|
||||
"_locales/fr/microbit-jsdoc-strings.json"
|
||||
],
|
||||
"public": true,
|
||||
|
@ -101,10 +101,32 @@
|
||||
{"pinIndices": [5, 6, 7, 8, 9]}
|
||||
]
|
||||
},
|
||||
"headphone": {
|
||||
"numberOfPins": 2,
|
||||
"visual": {
|
||||
"image": "parts/headphone.svg",
|
||||
"width": 142,
|
||||
"height": 180,
|
||||
"pinDistance": 20,
|
||||
"pinLocations": [
|
||||
{"x": 17, "y": 11},
|
||||
{"x": 55, "y": 50}
|
||||
]
|
||||
},
|
||||
"pinDefinitions": [
|
||||
{"target": "P0", "style": "croc", "orientation": "Y"},
|
||||
{"target": "ground", "style": "croc", "orientation": "Y"}
|
||||
],
|
||||
"instantiation": {"kind": "singleton"},
|
||||
"assembly": [
|
||||
{"part": true, "pinIndices": [0]},
|
||||
{"pinIndices": [1]}
|
||||
]
|
||||
},
|
||||
"speaker": {
|
||||
"numberOfPins": 2,
|
||||
"visual": {
|
||||
"image": "/parts/speaker.svg",
|
||||
"image": "parts/speaker.svg",
|
||||
"width": 500,
|
||||
"height": 500,
|
||||
"pinDistance": 70,
|
||||
|
@ -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 {
|
||||
|
6
libs/microbit/shims.d.ts
vendored
@ -224,7 +224,7 @@ declare namespace input {
|
||||
function onButtonPressed(button: Button, body: () => void): void;
|
||||
|
||||
/**
|
||||
* Attaches code to run when the screen is facing up.
|
||||
* Do something when when a gesture is done (like shaking the micro:bit).
|
||||
* @param body TODO
|
||||
*/
|
||||
//% help=input/on-gesture weight=84 blockGap=8
|
||||
@ -270,7 +270,7 @@ declare namespace input {
|
||||
function pinIsPressed(name: TouchPin): boolean;
|
||||
|
||||
/**
|
||||
* Get the current compass compass heading in degrees.
|
||||
* Get the current compass heading in degrees.
|
||||
*/
|
||||
//% help=input/compass-heading
|
||||
//% weight=56 icon="\uf14e"
|
||||
@ -305,7 +305,7 @@ declare namespace input {
|
||||
function lightLevel(): number;
|
||||
|
||||
/**
|
||||
* The pitch of the device, rotation along the ``x-axis``, in degrees.
|
||||
* The pitch or roll of the device, rotation along the ``x-axis`` or ``y-axis``, in degrees.
|
||||
* @param kind TODO
|
||||
*/
|
||||
//% help=input/rotation weight=52
|
||||
|