Compare commits

..

486 Commits

Author SHA1 Message Date
Matthias L. Jugel
910987fcea 0.8.25 2017-02-19 11:44:36 +01:00
Matthias L. Jugel
7c8c35a326 fix comments and parameter typo 2017-02-19 11:44:16 +01:00
thinkberg
7ad9a1cab8 0.8.24 2017-02-19 11:22:53 +01:00
thinkberg
97ba83f660 Merge branch 'calliope-mini-2016' of github.com:microsoft/pxt-calliope into calliope-mini-2016 2017-02-19 11:22:49 +01:00
thinkberg
d69bd0e0e4 fix play ringtone (#MINI-32) 2017-02-19 11:19:26 +01:00
Matthias L. Jugel
3e46d4c615 0.8.23 2017-02-18 15:42:01 +01:00
Matthias L. Jugel
2a3f2d4b11 fix 115200 string 2017-02-18 15:41:52 +01:00
Matthias L. Jugel
d9b3f2fbef add 57600 as baud selection 2017-02-18 15:32:21 +01:00
Matthias L. Jugel
978e0fd765 updated for Calliope mini board rev 0.3 (2016) 2017-02-18 15:25:12 +01:00
Sam El-Husseini
00b4e8dc01 Updating small organization logo 2017-02-16 20:45:03 -08:00
Peli de Halleux
7a8f540b27 0.8.22 2017-02-13 15:44:32 -08:00
Peli de Halleux
f04222fecb Bump pxt-core to 0.11.32 2017-02-13 15:44:29 -08:00
thinkberg
ede7c8b29b update to latest version 2017-02-13 19:35:28 +01:00
thinkberg
3dffd14abb revert index ref version 2017-02-13 18:57:35 +01:00
Peli de Halleux
fbf653834e 0.8.21 2017-02-13 09:20:05 -08:00
Peli de Halleux
166014bd92 Bump pxt-core to 0.11.31 2017-02-13 09:20:03 -08:00
Matthias L. Jugel
3811461274 bump index version 2017-02-13 11:45:14 +01:00
Matthias L. Jugel
dbd3837dba 0.8.20 2017-02-13 11:44:15 +01:00
Matthias L. Jugel
db79634446 add comments from pxt-microbit 2017-02-13 11:44:00 +01:00
thinkberg
7f710c7d78 bump and fix serial redirect 2017-02-12 10:31:26 +01:00
thinkberg
ce8bd38cb7 0.8.19 2017-02-12 10:30:41 +01:00
thinkberg
56dc85e6ff picked serial redirection fix from pxt-microbit (issue #961) 2017-02-12 10:26:32 +01:00
thinkberg
60f921c173 Merge remote-tracking branch 'origin/master' 2017-02-11 09:19:58 +01:00
Peli de Halleux
28fc309a64 0.8.18 2017-02-08 21:10:09 -08:00
Peli de Halleux
e28cd3c3c6 Bump pxt-core to 0.11.26 2017-02-08 21:10:07 -08:00
Peli de Halleux
4d2981489d 0.8.17 2017-02-06 22:29:02 -08:00
Peli de Halleux
f7f9a29e55 Bump pxt-core to 0.11.16 2017-02-06 22:29:00 -08:00
Peli de Halleux
be88603d57 enabling text blocks 2017-02-06 22:28:44 -08:00
Peli de Halleux
0dc9f53e30 bumped to 0.8.16 2017-02-06 15:19:32 -08:00
Peli de Halleux
9cb426e060 0.8.16 2017-02-06 14:50:14 -08:00
Peli de Halleux
38c60710d1 disable sharing 2017-02-06 14:49:49 -08:00
Peli de Halleux
5c62e5d697 0.8.15 2017-02-06 14:41:47 -08:00
Peli de Halleux
63268c61a8 Merge branch 'master' of https://github.com/Microsoft/pxt-calliope 2017-02-06 14:41:34 -08:00
Peli de Halleux
0c0c1cdd73 fix simulator y value 2017-02-06 14:41:24 -08:00
guillaumejenkins
3d70526d05 Fix Jenkins build permissions 2017-02-06 14:06:41 -08:00
Matthias L. Jugel
cf1b85f85b 0.8.14 2017-02-06 22:48:37 +01:00
Matthias L. Jugel
1f7ad1f114 add correct serial pins 2017-02-06 22:48:27 +01:00
Matthias L. Jugel
b1d8ab0206 0.8.13 2017-02-06 22:07:56 +01:00
Matthias L. Jugel
8bfa79fd15 update dependency on dal 2017-02-06 22:07:40 +01:00
Peli de Halleux
991aa40f19 0.8.12 2017-02-06 12:10:43 -08:00
Peli de Halleux
279f72c800 Bump pxt-core to 0.11.14 2017-02-06 12:10:41 -08:00
Peli de Halleux
2420a7c781 0.8.11 2017-02-06 11:53:35 -08:00
Peli de Halleux
7f134f330d updated translations 2017-02-06 11:52:50 -08:00
Peli de Halleux
a91c28bd56 0.8.10 2017-02-06 10:17:39 -08:00
Richard Knoll
a5aca0dfcf merged master 2017-02-06 10:17:02 -08:00
Peli de Halleux
b1fd48882c merged from microbit 2017-02-06 10:12:34 -08:00
Peli de Halleux
a34004c14a using calliope compile service 2017-02-06 10:10:42 -08:00
Matthias L. Jugel
9db0335844 0.8.9 2017-02-05 20:49:54 +01:00
Matthias L. Jugel
ae8cb2dc53 update dependency for new calliope target 2017-02-05 20:49:09 +01:00
Matthias L. Jugel
3fb21e590c 0.8.8 2017-02-04 14:26:41 +01:00
Matthias L. Jugel
4376d3cefe fix typos, fix accelerometer 2017-02-04 14:26:21 +01:00
Peli de Halleux
b31d6188f9 added jenkins 2017-02-03 16:19:22 -08:00
Peli de Halleux
7a741622a9 0.8.7 2017-02-03 16:04:35 -08:00
Peli de Halleux
a1104010e4 Bump pxt-core to 0.11.13 2017-02-03 16:04:32 -08:00
Peli de Halleux
a39067a0f4 enable sharing 2017-02-03 16:03:17 -08:00
Matthias L. Jugel
f2ccad6c26 0.8.6 2017-02-03 17:26:29 +01:00
Matthias L. Jugel
8fe328b2e8 add some safety test codes to the production test 2017-02-03 17:26:04 +01:00
Peli de Halleux
b984af2130 0.8.5 2017-02-02 23:23:55 -08:00
Peli de Halleux
fcfcf901aa Bump pxt-core to 0.11.11 2017-02-02 23:23:52 -08:00
Peli de Halleux
969ecee5b5 0.8.4 2017-02-02 23:16:33 -08:00
Peli de Halleux
cd5e5d55bc Bump pxt-core to 0.11.10 2017-02-02 23:16:28 -08:00
thinkberg
7730b7c18f Merge remote-tracking branch 'origin/master' 2017-02-02 19:31:36 +01:00
Matthias L. Jugel
254a979086 0.8.3 2017-02-02 17:33:12 +01:00
Matthias L. Jugel
a846685d26 update sim to match updates in dal
(cherry picked from commit 62848ed)
2017-02-02 17:29:58 +01:00
Matthias L. Jugel
1a7667724d update fixed dal reference 2017-02-02 15:57:02 +01:00
Peli de Halleux
1d49ba4cf0 refreshed dal definitions 2017-02-02 03:18:18 -08:00
Matthias L. Jugel
70dd486320 fixed typo in json 2017-02-01 09:58:49 +01:00
Matthias L. Jugel
9e60666b66 fix naming in image 2017-01-31 22:40:52 +01:00
Matthias L. Jugel
0de9102f96 pin updates 2017-01-31 22:36:32 +01:00
Sam El-Husseini
53dd4206a0 Cleaning up styles 2017-01-26 14:45:39 -08:00
thinkberg
9b2fdabdcc fix sharing URL 2017-01-23 09:21:54 +01:00
Peli de Halleux
3af4d8cf18 updated to 0.8.2 2017-01-22 18:01:14 -08:00
Peli de Halleux
9f2368b59e 0.8.2 2017-01-22 17:49:06 -08:00
Peli de Halleux
08f79ee743 updated web manifest 2017-01-22 17:48:50 -08:00
Peli de Halleux
5ec4a3118a 0.8.1 2017-01-22 17:16:05 -08:00
Peli de Halleux
352e59bfad updated version number 2017-01-22 17:15:54 -08:00
Peli de Halleux
143c703bf2 0.7.18 2017-01-22 17:14:45 -08:00
Peli de Halleux
37eb855df6 0.7.17 2017-01-22 17:13:27 -08:00
Peli de Halleux
47dac2a175 Bump pxt-core to 0.10.15 2017-01-22 17:13:22 -08:00
Peli de Halleux
211ec7a65d added audio flag 2017-01-22 17:13:12 -08:00
Peli de Halleux
d4220593b0 Serial events (#337)
* added "serial->on data received"

* updated info

* updated docs

* added readline to read entire buffer

* lazy initialize of serial buffers

* init async on event

* updated docs
2017-01-22 17:08:59 -08:00
Peli de Halleux
5d861e1e6d negative scroll fix
fix for Microsoft/pxt#813
2017-01-22 17:07:45 -08:00
chmora
64aa0fd6f5 One letter showString shouldn't disappear (#338)
* Fix for "One letter showString shouldn't disappear", fixes #798

* miss semicolon
2017-01-22 17:06:35 -08:00
Peli de Halleux
5be188d6e7 0.7.16 2017-01-19 21:08:24 -08:00
Peli de Halleux
502cca6cc0 Bump pxt-core to 0.10.11 2017-01-19 21:08:21 -08:00
Peli de Halleux
703a876a84 updates style 2017-01-19 21:08:14 -08:00
Peli de Halleux
ca1e3e7231 applying icons to namespaces 2017-01-19 20:55:31 -08:00
Abhijith
a0e971d49f 0.7.15 2017-01-19 11:31:22 -08:00
Abhijith
750faf42e4 Bump pxt-core to 0.10.10 2017-01-19 11:31:14 -08:00
Brahma Giri Abhijith Chatra
b359411058 Merging array changes from pxt-microbit 2017-01-19 11:30:06 -08:00
Peli de Halleux
9c140a5e6f 0.7.14 2017-01-17 14:12:28 -08:00
Peli de Halleux
fad68499e5 0.7.13 2017-01-17 11:45:59 -08:00
Peli de Halleux
c861fd6c65 Bump pxt-core to 0.10.8 2017-01-17 11:45:56 -08:00
Peli de Halleux
db961f78a5 added avatar /loader 2017-01-12 23:06:19 -08:00
Peli de Halleux
975b995f09 fixing dal board 2017-01-12 23:05:29 -08:00
Peli de Halleux
167ba57d2b Bump pxt-core to 0.10.1 2017-01-12 22:58:52 -08:00
Sam El-Husseini
d40c0763f1 fixing indentation 2017-01-12 16:15:15 -08:00
Sam El-Husseini
8c2ecdd42e fix"string compare works differently in simulator/on target" 2017-01-12 16:14:15 -08:00
Peli de Halleux
9d58ea8b1c 0.7.12 2017-01-12 15:31:31 -08:00
Peli de Halleux
22864af73d Bump pxt-core to 0.9.4 2017-01-12 15:31:28 -08:00
Matthias L. Jugel
53bb4ec7e9 USB serial receive fix 2017-01-06 08:15:53 +01:00
Matthias L. Jugel
8e3694661a 0.7.11 2017-01-06 08:12:05 +01:00
Matthias L. Jugel
2ba1b0c262 Merge branch 'master' of github.com:microsoft/pxt-calliope 2017-01-06 08:10:06 +01:00
Matthias L. Jugel
a61e6f539e updated DAL (rev 0.3 resistor fix) 2017-01-06 08:10:01 +01:00
Peli de Halleux
cc3c966427 fixing typings 2017-01-02 19:02:05 -08:00
Peli de Halleux
ef5bee5a21 Bump pxt-core to 0.8.1 2017-01-02 18:59:39 -08:00
Peli de Halleux
800682e8cc 0.7.10 2016-12-31 06:50:07 -08:00
Peli de Halleux
291ea7169f Bump pxt-core to 0.7.13 2016-12-31 06:50:05 -08:00
Sam El-Husseini
ef6c3a6617 ui changes accompanying changes in pxt, converging where possible 2016-12-31 02:15:21 -08:00
Peli de Halleux
734e81f4be 0.7.9 2016-12-30 15:07:06 -08:00
Peli de Halleux
8e1acfc7df Bump pxt-core to 0.7.12 2016-12-30 15:07:04 -08:00
Peli de Halleux
01c56e1111 0.7.8 2016-12-30 13:50:40 -08:00
Peli de Halleux
dfbf06fc0e Bump pxt-core to 0.7.10 2016-12-30 13:50:38 -08:00
Peli de Halleux
d1902a83ca bumped to v0.7.7 2016-12-23 00:22:32 -08:00
Peli de Halleux
aeff3d9f45 0.7.7 2016-12-22 23:25:06 -08:00
Peli de Halleux
6530bc26ae fixing menu active css 2016-12-22 23:24:53 -08:00
Peli de Halleux
8ea9f1fb26 0.7.6 2016-12-22 23:18:00 -08:00
Peli de Halleux
1e94e04104 setting up "on start" 2016-12-22 23:17:39 -08:00
Peli de Halleux
e95d29286a 0.7.5 2016-12-22 23:12:46 -08:00
Peli de Halleux
14d50810cb Bump pxt-core to 0.7.9 2016-12-22 23:12:43 -08:00
Peli de Halleux
250e21b5c9 fixed toolbox color 2016-12-22 22:41:13 -08:00
Peli de Halleux
98eab3672f updated css breakpoints 2016-12-22 22:36:06 -08:00
Peli de Halleux
360e2b7ba6 0.7.4 2016-12-22 21:14:29 -08:00
Peli de Halleux
f255e1a903 Bump pxt-core to 0.7.8 2016-12-22 21:14:27 -08:00
Matthias L. Jugel
d4762cc5b5 deploy 0.7.3 to web 2016-12-22 10:05:52 +01:00
Peli de Halleux
749b5266cb 0.7.3 2016-12-20 16:30:40 -08:00
Peli de Halleux
bbd23f6d26 Bump pxt-core to 0.7.5 2016-12-20 16:30:38 -08:00
Peli de Halleux
4bef7d50bd 0.7.2 2016-12-16 15:01:13 -08:00
Peli de Halleux
bf423ca037 Bump pxt-core to 0.6.4 2016-12-16 15:01:05 -08:00
Richard Knoll
7556796eb6 merging more memory fixes 2016-12-16 14:57:16 -08:00
Peli de Halleux
0a380a70d1 0.7.1 2016-12-16 07:26:11 -08:00
Peli de Halleux
5c57e0faa4 fixing ver issues 2016-12-16 07:26:01 -08:00
Peli de Halleux
41abeb62c3 0.6.2 2016-12-16 07:25:07 -08:00
Peli de Halleux
b6eeeef4d5 0.6.1 2016-12-16 07:24:44 -08:00
Peli de Halleux
b5b7edb978 moved to 0.6 2016-12-16 07:24:36 -08:00
Peli de Halleux
a65fe1343c 0.5.98 2016-12-16 07:23:54 -08:00
Peli de Halleux
3165fb3749 Bump pxt-core to 0.6.2 2016-12-16 07:23:48 -08:00
Peli de Halleux
2789887f3b 0.5.97 2016-12-09 15:02:44 -08:00
Peli de Halleux
d230fdd2fb Bump pxt-core to 0.5.99 2016-12-09 15:02:40 -08:00
Peli de Halleux
88c9ef5b22 deploy feature now implemented in PXT 2016-12-08 21:11:50 -08:00
Peli de Halleux
154115cc66 0.5.96 2016-12-08 16:38:10 -08:00
Peli de Halleux
145dbaeb8f Merge pull request #8 from Microsoft/coreupdate
merging runtime memory leaks
2016-12-08 16:37:48 -08:00
Abhijith
1c8ceaef17 merging runtime memory leaks 2016-12-08 16:29:53 -08:00
Peli de Halleux
e30c6f7149 0.5.95 2016-12-08 14:24:14 -08:00
Peli de Halleux
e69174ed0f Bump pxt-core to 0.5.96 2016-12-08 14:24:09 -08:00
Sam El-Husseini
303d37ac9b toolbox buttons for tablet mode 2016-12-06 16:16:50 -08:00
Sam El-Husseini
69e2b41c40 Supporting new blockly toolbox buttons 2016-12-06 15:29:53 -08:00
Peli de Halleux
8f04c8c20a 0.5.94 2016-12-02 12:59:04 -08:00
Peli de Halleux
7661df09c8 Bump pxt-core to 0.5.87 2016-12-02 12:59:02 -08:00
Sam El-Husseini
62cbacc8ba theming the add package button 2016-12-01 23:53:38 -08:00
Sam El-Husseini
a9fd336093 Using white organisation logo for wide logo 2016-12-01 23:46:53 -08:00
Peli de Halleux
d800f5fcb9 0.5.93 2016-11-30 15:21:10 -08:00
Peli de Halleux
29e6f51798 Bump pxt-core to 0.5.85 2016-11-30 15:21:08 -08:00
Peli de Halleux
ffb671d6b1 0.5.92 2016-11-30 03:33:14 -08:00
Peli de Halleux
8eb4200b46 Bump pxt-core to 0.5.84 2016-11-30 03:33:08 -08:00
Peli de Halleux
dfc7a1ddb9 nicer simulator animation 2016-11-30 03:32:53 -08:00
Peli de Halleux
5e2ea5056b Merge pull request #7 from Microsoft/coregone
pxt-calliope-core gone
2016-11-30 03:16:44 -08:00
Peli de Halleux
c417f0ed93 using microbit service 2016-11-29 22:17:51 -08:00
Peli de Halleux
ce85907019 removing ksbit.h file 2016-11-29 21:55:37 -08:00
Peli de Halleux
8cf0984a3f removing dependency on pxt-calliope-core 2016-11-29 21:51:14 -08:00
Peli de Halleux
8eb1b98cd4 0.5.91 2016-11-29 00:19:49 -08:00
Peli de Halleux
53f55c031c restoring microsoft 2016-11-29 00:12:00 -08:00
Peli de Halleux
61b1150b8f 0.5.90 2016-11-29 00:06:17 -08:00
Peli de Halleux
f574b91098 Bump pxt-core to 0.5.81 2016-11-29 00:06:16 -08:00
Peli de Halleux
4a52f93367 updated cmds build options 2016-11-29 00:06:09 -08:00
Brahma Giri Abhijith Chatra
fd0193e983 Updating with the MIT license text and contributing guideline 2016-11-28 17:14:09 -08:00
Abhijith
566326ea17 Fixing scrollimage for calliope 2016-11-17 10:14:12 -08:00
Sam El-Husseini
d7e1ec41b8 Setting blockly toolbox top / bottom radius in css after recent change. Setting loading to pulsar. 2016-11-16 21:17:00 -08:00
Matthias L. Jugel
620297b95e update master, fixes sound bug 2016-11-16 07:53:56 +01:00
Peli de Halleux
e9862751ba 0.5.89 2016-11-15 22:35:12 -08:00
Peli de Halleux
5df83bb079 quick style fix 2016-11-15 22:35:02 -08:00
Peli de Halleux
903c0ec6bd fixing music simulator 2016-11-15 22:28:05 -08:00
Peli de Halleux
4be57eee9a 0.5.88 2016-11-15 20:10:37 -08:00
Peli de Halleux
89a2178ff5 Bump pxt-core to 0.5.75 2016-11-15 20:10:35 -08:00
Peli de Halleux
b3ffabba41 updated translations 2016-11-14 11:25:27 -08:00
Peli de Halleux
c98e65a68c bumped to 0.5.87 2016-11-14 10:36:18 -08:00
Peli de Halleux
2c70784251 0.5.87 2016-11-14 10:26:42 -08:00
Peli de Halleux
00333b0257 Bump pxt-core to 0.5.74 2016-11-14 10:26:40 -08:00
Peli de Halleux
d01c801f63 updated mutable block 2016-11-14 10:25:26 -08:00
Peli de Halleux
05828ddcd9 0.5.86 2016-11-14 10:21:59 -08:00
Peli de Halleux
f473835604 updated serial tranlsations 2016-11-14 10:06:39 -08:00
Peli de Halleux
d82da1f877 updated localizations 2016-11-14 09:44:46 -08:00
Peli de Halleux
94706adc40 0.5.85 2016-11-14 06:10:19 -08:00
Peli de Halleux
79fb4e4ff7 fix missing radio strings 2016-11-14 06:07:19 -08:00
Matthias L. Jugel
dae84afded add SPI pins 2016-11-14 10:12:35 +01:00
Matthias L. Jugel
82d93a2b91 0.5.84 2016-11-13 22:10:34 +01:00
Matthias L. Jugel
45cbbd342b fix naming 2016-11-13 22:09:57 +01:00
Peli de Halleux
5c7779927c bumped to v0.5.83 2016-11-12 05:42:44 -08:00
Peli de Halleux
df3d3b41ab 0.5.83 2016-11-12 05:21:03 -08:00
Peli de Halleux
d691ebfd52 updated strings 2016-11-12 05:20:39 -08:00
Peli de Halleux
a7bd9f6708 0.5.82 2016-11-11 15:25:33 -08:00
Peli de Halleux
c3d3747cd8 Bump pxt-core to 0.5.72 2016-11-11 15:25:31 -08:00
Peli de Halleux
7bc5488f25 updated translations 2016-11-11 15:25:18 -08:00
Peli de Halleux
f27aa28f8e updated translations 2016-11-11 13:27:53 -08:00
Peli de Halleux
12ccf21e28 adding missing strings 2016-11-11 10:56:45 -08:00
Matthias L. Jugel
c557929fb2 0.5.81 2016-11-11 17:08:39 +01:00
Matthias L. Jugel
2e58a31b07 update dependencies for motor fix in DAL 2016-11-11 17:01:53 +01:00
Peli de Halleux
081a56550d 0.5.80 2016-11-11 06:49:28 -08:00
Peli de Halleux
3d665d5505 Bump pxt-core to 0.5.68 2016-11-11 06:49:26 -08:00
Peli de Halleux
f991733e04 0.5.79 2016-11-10 15:07:53 -08:00
Peli de Halleux
020b7e9bbe Bump pxt-core to 0.5.67 2016-11-10 15:07:51 -08:00
Peli de Halleux
f3bf46f691 0.5.78 2016-11-10 14:25:36 -08:00
Peli de Halleux
c3bb56da0c 0.5.77 2016-11-10 14:22:00 -08:00
Peli de Halleux
1f98257984 added missing files for pxtrequire 2016-11-10 14:15:55 -08:00
Peli de Halleux
1cec654342 0.5.76 2016-11-10 14:01:30 -08:00
Peli de Halleux
bb027ec75a Bump pxt-core to 0.5.66 2016-11-10 14:01:27 -08:00
Peli de Halleux
ceeb366be5 removing outdated tests 2016-11-10 13:14:19 -08:00
Peli de Halleux
d6cc95112c AnalogPin.P0 not supported 2016-11-10 13:08:45 -08:00
Matthias L. Jugel
ce24e9d923 0.5.75 2016-11-10 21:22:25 +01:00
Matthias L. Jugel
7ee5b4112b remove undefined pins 2016-11-10 21:20:48 +01:00
Matthias L. Jugel
d903901de2 Merge branch 'pin-update' 2016-11-10 21:05:31 +01:00
Matthias L. Jugel
c1025b8658 fix naming and pin selection 2016-11-10 21:00:03 +01:00
Matthias L. Jugel
cdb9682a8b intermediate fix for accelerometer used in pxt 2016-11-10 20:45:40 +01:00
Peli de Halleux
9d589971f5 0.5.74 2016-11-10 11:33:48 -08:00
Peli de Halleux
c6807d67d8 0.5.73 2016-11-10 11:31:21 -08:00
Peli de Halleux
05ff9282ac Bump pxt-core to 0.5.65 2016-11-10 11:31:19 -08:00
Peli de Halleux
2825d09eae 0.5.72 2016-11-10 10:11:16 -08:00
Peli de Halleux
15d4a594ae adding hover style on categories 2016-11-10 10:10:03 -08:00
Peli de Halleux
a0b426bdf0 disable simulator crash, disable parts 2016-11-10 10:06:38 -08:00
Peli de Halleux
580f1bf24e 0.5.71 2016-11-10 09:35:40 -08:00
Peli de Halleux
29cc6eaded Bump pxt-core to 0.5.64 2016-11-10 09:35:36 -08:00
Peli de Halleux
6671d1864c updated dal.d.ts 2016-11-10 09:13:25 -08:00
Matthias L. Jugel
42d21dea28 fix pin name for SDA 2016-11-10 15:30:49 +01:00
Matthias L. Jugel
c4e427c090 fix pins to be in sync with the naming in the simulator and on the board 2016-11-10 15:11:12 +01:00
Matthias L. Jugel
d01ca8d565 0.5.70 2016-11-10 13:50:14 +01:00
Matthias L. Jugel
9c3236de80 update motor support and add demo 2016-11-10 13:48:20 +01:00
Matthias L. Jugel
51e64bd82d Merge remote-tracking branch 'origin/master' 2016-11-10 12:22:32 +01:00
Peli de Halleux
572b4a74e4 Merge pull request #6 from Microsoft/mergemicrobit
Merge microbit
2016-11-09 15:16:23 -08:00
Peli de Halleux
9774c9306a workaround missing PAGE_SIZE 2016-11-09 13:30:37 -08:00
Peli de Halleux
1e2066726a merging microbit 2016-11-09 13:29:34 -08:00
Peli de Halleux
0b144539f3 merging master 2016-11-09 13:20:18 -08:00
Peli de Halleux
b6b18b7ceb 0.5.69 2016-11-09 05:14:51 -08:00
Peli de Halleux
6de8e604f7 Bump pxt-core to 0.5.61 2016-11-09 05:14:49 -08:00
Matthias L. Jugel
e701d83dc5 Merge branch 'rev03-changes'
# Conflicts:
#	libs/core/motors.cpp
#	libs/core/music.cpp
#	package.json
2016-11-09 11:56:14 +01:00
Matthias L. Jugel
f666d3375e remove parts that we don't need anymore 2016-11-09 11:53:34 +01:00
Peli de Halleux
981910fb0a 0.5.68 2016-11-07 10:59:05 -08:00
Peli de Halleux
baa9a262fb removing uploaddoc step 2016-11-07 10:58:52 -08:00
Peli de Halleux
fe1de4a423 0.5.67 2016-11-07 10:43:55 -08:00
Peli de Halleux
8537061e79 Bump pxt-core to 0.5.54 2016-11-07 10:43:52 -08:00
Sam El-Husseini
f6b7467324 Fix for accelerometer simulator not working in firefox 2016-11-07 10:43:43 -08:00
Sam El-Husseini
36755400fd Fix for incorrect nav menu height, fixes #701 2016-11-07 10:40:45 -08:00
Peli de Halleux
4cf7ec2da1 0.5.66 2016-11-05 06:44:03 -07:00
Peli de Halleux
4b8e9f5715 Bump pxt-core to 0.5.51 2016-11-05 06:44:01 -07:00
Peli de Halleux
0e99bf0d9e 0.5.65 2016-11-03 16:51:35 -07:00
Peli de Halleux
69bf34f773 Bump pxt-core to 0.5.48 2016-11-03 16:51:32 -07:00
Peli de Halleux
6ba50b6c17 0.5.64 2016-11-03 09:50:51 -07:00
Peli de Halleux
ab5b6baf46 Bump pxt-core to 0.5.47 2016-11-03 09:50:49 -07:00
Peli de Halleux
dc3f6cf885 updated locs 2016-11-03 09:41:58 -07:00
Peli de Halleux
3533e57cc3 updated locs files 2016-11-03 09:10:50 -07:00
Peli de Halleux
c03fac2162 fixing typos 2016-11-03 08:50:02 -07:00
Peli de Halleux
2138725a44 updated docs logo 2016-11-03 08:43:25 -07:00
Peli de Halleux
e10bb1ce1d bumped live to v0.5.63 2016-11-03 06:56:20 -07:00
Peli de Halleux
3bb03dcc1d 0.5.63 2016-11-03 06:45:59 -07:00
Peli de Halleux
a45bf54cff Bump pxt-core to 0.5.45 2016-11-03 06:45:54 -07:00
Peli de Halleux
75e53ddd61 updated translations 2016-11-03 06:45:45 -07:00
Peli de Halleux
0590e74cc0 0.5.62 2016-11-02 22:49:26 -07:00
Peli de Halleux
76edc1290c fixing card app logo 2016-11-02 22:48:34 -07:00
Peli de Halleux
3b66827d8a 0.5.61 2016-11-02 22:35:21 -07:00
Peli de Halleux
83bd1ed3e1 support for motor commands 2016-11-02 22:35:00 -07:00
Peli de Halleux
07b07a5a3f 0.5.60 2016-11-02 15:13:35 -07:00
Peli de Halleux
f46c23fb92 Bump pxt-core to 0.5.44 2016-11-02 15:13:30 -07:00
Peli de Halleux
2e9ad0ad92 0.5.59 2016-11-02 11:35:21 -07:00
Peli de Halleux
68cbb963fc Bump pxt-core to 0.5.41 2016-11-02 11:35:16 -07:00
Peli de Halleux
1c1e960252 0.5.58 2016-11-02 08:20:02 -07:00
Peli de Halleux
077ecaab87 Bump pxt-core to 0.5.38 2016-11-02 08:19:58 -07:00
Peli de Halleux
3111960ecf don't override meta 2016-11-02 08:19:51 -07:00
Peli de Halleux
2f203d68d1 0.5.57 2016-11-01 21:51:37 -07:00
Peli de Halleux
aeb3b6f864 Bump pxt-core to 0.5.37 2016-11-01 21:51:34 -07:00
Sam El-Husseini
ed8aaf8bda Updating to use pxt.less 2016-11-01 17:49:39 -07:00
Peli de Halleux
c191cdf7ec updated locs 2016-11-01 09:26:03 -07:00
Peli de Halleux
94e72784b9 merging microbit changes 2016-11-01 08:35:45 -07:00
Peli de Halleux
67eb1d3b19 0.5.56 2016-10-31 22:34:52 -07:00
Peli de Halleux
6a13b9737e Bump pxt-core to 0.5.33 2016-10-31 22:34:50 -07:00
Peli de Halleux
1ec7e67fb0 0.5.55 2016-10-31 11:36:57 -07:00
Peli de Halleux
c3253e24fc Bump pxt-core to 0.5.31 2016-10-31 11:36:55 -07:00
Peli de Halleux
326cd7d0c3 bumped to v0.5.54 2016-10-30 23:48:01 -07:00
Peli de Halleux
804cc8c091 0.5.54 2016-10-30 23:41:55 -07:00
Peli de Halleux
64ff568597 enable translated blocks 2016-10-30 23:41:18 -07:00
Peli de Halleux
4196ba6632 bumped to v0.5.53 2016-10-30 22:58:48 -07:00
Peli de Halleux
26626d2a2a 0.5.53 2016-10-30 22:52:35 -07:00
Peli de Halleux
b70a2fc096 Bump pxt-core to 0.5.30 2016-10-30 22:52:32 -07:00
Peli de Halleux
9791a02c7e hide docs 2016-10-30 22:52:16 -07:00
Peli de Halleux
89ceeefc32 0.5.52 2016-10-30 22:23:02 -07:00
Peli de Halleux
91235d2377 Bump pxt-core to 0.5.29 2016-10-30 22:23:00 -07:00
Sam El-Husseini
a805d7b8a8 updated ref version 2016-10-28 16:44:22 -07:00
Sam El-Husseini
89fdbcdc4f 0.5.51 2016-10-28 16:14:51 -07:00
Peli de Halleux
92d1d2ffc3 Merge branch 'master' of https://github.com/Microsoft/pxt-calliope 2016-10-28 14:08:22 -07:00
Peli de Halleux
82c9af836f bumped to 0.5.50 2016-10-28 14:08:14 -07:00
Sam El-Husseini
da90401fe6 0.5.50 2016-10-28 14:05:33 -07:00
Sam El-Husseini
315a12dd8b Bump pxt-core to 0.5.28 2016-10-28 14:05:32 -07:00
Peli de Halleux
72ec2d617e 0.5.49 2016-10-28 13:53:46 -07:00
Peli de Halleux
4d9ae63831 Bump pxt-core to 0.5.27 2016-10-28 13:53:41 -07:00
Peli de Halleux
3eab21cff1 udpated icons 2016-10-28 13:52:17 -07:00
Peli de Halleux
5a37385d14 0.5.48 2016-10-28 13:31:48 -07:00
Peli de Halleux
9fa412ff6f Bump pxt-core to 0.5.26 2016-10-28 13:31:43 -07:00
Sam El-Husseini
3f7fbb70ba Removing blockly trash icon 2016-10-28 11:27:26 -07:00
Sam El-Husseini
20189a709b Using Google font: Roboto 2016-10-28 11:15:19 -07:00
Peli de Halleux
111b321722 0.5.47 2016-10-28 10:41:47 -07:00
Peli de Halleux
b8fe8f9294 Bump pxt-core to 0.5.24 2016-10-28 10:41:45 -07:00
Matthias L. Jugel
7b478c4c38 update ref version 2016-10-28 17:47:48 +02:00
Matthias L. Jugel
a68e1a611d 0.5.46 2016-10-28 17:47:33 +02:00
Matthias L. Jugel
b3b2944b46 add dnd picture 2016-10-28 17:39:57 +02:00
Peli de Halleux
c809ee4fdf 0.5.45 2016-10-28 00:36:26 -07:00
Peli de Halleux
8e67e69602 Bump pxt-core to 0.5.23 2016-10-28 00:36:23 -07:00
Sam El-Husseini
0b508e37b1 0.5.44 2016-10-27 23:21:21 -07:00
Sam El-Husseini
e1a3aca9f8 Removing blockly custom media folder 2016-10-27 23:21:05 -07:00
Sam El-Husseini
bbe93ae9a2 UI changes: fixing mobile view. 2016-10-27 18:43:09 -07:00
Peli de Halleux
6fd18b4f4c 0.5.43 2016-10-27 16:20:39 -07:00
Peli de Halleux
b511537348 Bump pxt-core to 0.5.21 2016-10-27 16:20:37 -07:00
Sam El-Husseini
749ba6b984 UI changes to match the calliope design. 2016-10-27 16:15:44 -07:00
Peli de Halleux
e571bec213 0.5.42 2016-10-27 14:30:07 -07:00
Peli de Halleux
1ad90eda81 Bump pxt-core to 0.5.18 2016-10-27 14:30:05 -07:00
Peli de Halleux
0c604498d3 0.5.41 2016-10-27 13:48:27 -07:00
Peli de Halleux
a8ec408f96 Merge branch 'master' of https://github.com/Microsoft/pxt-calliope 2016-10-27 13:47:58 -07:00
Peli de Halleux
40fe1b4616 fix simulator support for music 2016-10-27 13:47:39 -07:00
Matthias L. Jugel
30fd978064 fixed interface function names, add sound functionality 2016-10-27 21:19:03 +02:00
Matthias L. Jugel
0c26d74c05 try to use uBit.soundmotor sound functions 2016-10-27 21:19:03 +02:00
Matthias L. Jugel
0e4d555eb2 0.5.40 2016-10-27 21:18:57 +02:00
Matthias L. Jugel
34c608ba75 add first pictures of calliope 2016-10-27 21:18:57 +02:00
Peli de Halleux
007cf55d7f 0.5.39 2016-10-27 21:18:57 +02:00
Peli de Halleux
d3b10aa89e Bump pxt-core to 0.5.17 2016-10-27 21:18:57 +02:00
Matthias L. Jugel
5dc99388b3 0.5.38 2016-10-27 21:18:57 +02:00
Matthias L. Jugel
cbe25da154 rev. 0.2 sound patches 2016-10-27 21:18:56 +02:00
Matthias L. Jugel
e52da19925 0.5.40 2016-10-27 20:50:10 +02:00
Matthias L. Jugel
d558f70118 add first pictures of calliope 2016-10-27 20:47:09 +02:00
Peli de Halleux
8fca50e907 0.5.39 2016-10-27 11:31:10 -07:00
Peli de Halleux
8c4abe979b Bump pxt-core to 0.5.17 2016-10-27 11:31:08 -07:00
Matthias L. Jugel
d4fa9dab1b 0.5.38 2016-10-27 19:49:35 +02:00
Matthias L. Jugel
955b67b6b8 rev. 0.2 sound patches 2016-10-27 19:48:42 +02:00
Matthias L. Jugel
abf7d48bfd added music function 2016-10-27 17:58:36 +02:00
Matthias L. Jugel
96d5dc2064 fixed interface function names, add sound functionality 2016-10-27 17:44:38 +02:00
Matthias L. Jugel
e0735188fa try to use uBit.soundmotor sound functions 2016-10-27 15:51:42 +02:00
Matthias L. Jugel
a4ba24d6ef add sound support using the on-board speaker 2016-10-26 20:52:40 +02:00
Matthias L. Jugel
d6d64f3edb fix touch pin for rev 0.3 board 2016-10-26 12:54:21 +02:00
Michal Moskal
739be09ac9 Bumping main version to 0.5.37 with fixed icons 2016-10-25 19:53:38 +01:00
Michal Moskal
5877adc595 0.5.37 2016-10-25 18:55:41 +01:00
Michal Moskal
0380f4f0d0 Bump pxt-core to 0.5.11 2016-10-25 18:55:40 +01:00
Peli de Halleux
13a4b03e9a 0.5.36 2016-10-24 23:18:56 -07:00
Peli de Halleux
4b21d51769 Bump pxt-core to 0.5.9 2016-10-24 23:18:52 -07:00
Peli de Halleux
e7aed1d162 fixed sounds in simulator 2016-10-24 23:17:16 -07:00
Peli de Halleux
60e71e3e35 0.5.35 2016-10-24 16:39:57 -07:00
Peli de Halleux
b003d89061 Bump pxt-core to 0.5.7 2016-10-24 16:39:55 -07:00
Sam El-Husseini
a5eb93d3e1 Updating theme.config to use the pxt theme. 2016-10-24 14:07:20 -07:00
Peli de Halleux
224cb446e4 0.5.34 2016-10-24 13:51:08 -07:00
Peli de Halleux
62b3d7504f Bump pxt-core to 0.5.4 2016-10-24 13:51:06 -07:00
Peli de Halleux
c937cba17e merging pxt-microbit updates 2016-10-24 13:00:39 -07:00
Michal Moskal
0765159633 0.5.33 2016-10-24 20:53:32 +01:00
Michal Moskal
b14a025b14 Bump pxt-core to 0.5.3 2016-10-24 20:53:32 +01:00
Peli de Halleux
74f8cc7b2e 0.5.32 2016-10-24 10:28:24 -07:00
Peli de Halleux
cf778686c3 Merging microbit/master 2016-10-24 10:27:48 -07:00
Peli de Halleux
99bee9e796 Merge branch 'master' of https://github.com/Microsoft/pxt-calliope 2016-10-24 10:14:43 -07:00
Michal Moskal
cb61c1a712 Bump main version to 0.5.31 with fixed icons 2016-10-24 18:01:45 +01:00
Michal Moskal
fdf3d1b66c 0.5.31 2016-10-24 17:39:33 +01:00
Michal Moskal
25ddbf9ffd Bump pxt-core to 0.5.2 2016-10-24 17:39:32 +01:00
Michal Moskal
578f971d26 Add tagged release names 2016-10-24 16:59:46 +01:00
Michal Moskal
b36ffaf29c 0.5.30 2016-10-24 16:32:56 +01:00
Michal Moskal
bff088fced Bump pxt-core to 0.5.1 2016-10-24 16:32:56 +01:00
Peli de Halleux
f2c87db3ed using default analytics settings 2016-10-21 10:23:23 -07:00
Peli de Halleux
8c15af11db 0.5.29 2016-10-20 20:16:52 -07:00
Peli de Halleux
35e414764f missing tools 2016-10-20 20:14:25 -07:00
Peli de Halleux
333659c320 0.5.28 2016-10-20 20:12:03 -07:00
Peli de Halleux
8c161583eb Bump pxt-core to 0.4.71 2016-10-20 20:12:02 -07:00
Peli de Halleux
b20e185bf2 parameterize download button color 2016-10-20 19:36:00 -07:00
Peli de Halleux
299b595581 added custom theme style 2016-10-20 19:29:10 -07:00
Peli de Halleux
65433216e6 adding semantic ui files 2016-10-20 16:40:39 -07:00
Peli de Halleux
9ea2081e89 0.5.27 2016-10-20 11:48:48 -07:00
Peli de Halleux
808e5fa17b Bump pxt-core to 0.4.68 2016-10-20 11:48:46 -07:00
Peli de Halleux
20d967a230 removing .ico file 2016-10-20 11:30:04 -07:00
Peli de Halleux
c1e5419e45 updated icons 2016-10-20 11:26:44 -07:00
Peli de Halleux
27f5411404 0.5.26 2016-10-20 08:29:16 -07:00
Peli de Halleux
f53eab0539 Bump pxt-core to 0.4.67 2016-10-20 08:29:11 -07:00
Matthias L. Jugel
445fe12629 0.5.25 2016-10-19 19:11:13 +02:00
Matthias L. Jugel
ddd6e90c6d Merge remote-tracking branch 'origin/master' 2016-10-19 19:08:52 +02:00
Matthias L. Jugel
fd14ba6ff1 fix touch pins, add test for buttons and pins, update dependency 2016-10-19 19:08:41 +02:00
Peli de Halleux
28a8f21d40 merging ble changes 2016-10-18 21:55:02 -07:00
Peli de Halleux
3f626105cd 0.5.24 2016-10-18 21:07:02 -07:00
Peli de Halleux
d9ff9c4800 Bump pxt-core to 0.4.65 2016-10-18 21:07:00 -07:00
Peli de Halleux
31998fec05 0.5.23 2016-10-18 13:18:45 -07:00
Peli de Halleux
342aa3ca32 Bump pxt-core to 0.4.63 2016-10-18 13:18:43 -07:00
Matthias L. Jugel
9b599b6242 0.5.22 2016-10-18 16:56:58 +02:00
Matthias L. Jugel
e5e63c548f update dal defines 2016-10-18 16:56:42 +02:00
Matthias L. Jugel
f3eb9a988f update dependencies 2016-10-18 16:56:15 +02:00
Matthias L. Jugel
e7e2ff7752 gesture updates 2016-10-18 16:40:53 +02:00
Matthias L. Jugel
f10ac93268 add handling of gestures (we only have 2g, 6g ... no 3g), add mac/idea ignored files 2016-10-18 15:44:49 +02:00
Matthias L. Jugel
47f46553e0 fix name of board 2016-10-18 15:43:52 +02:00
Peli de Halleux
3158e95cde 0.5.21 2016-10-17 21:39:08 -07:00
Peli de Halleux
854029fe33 updated board name 2016-10-17 21:38:58 -07:00
Peli de Halleux
1b379bddd0 0.5.20 2016-10-17 21:35:07 -07:00
Peli de Halleux
9495da9a53 0.5.19 2016-10-17 21:25:11 -07:00
Peli de Halleux
128b3f2f51 Bump pxt-core to 0.4.62 2016-10-17 21:25:08 -07:00
Peli de Halleux
a331a017b8 merged microbit changes 2016-10-17 13:36:54 -07:00
Peli de Halleux
5cce86ec7e 0.5.18 2016-10-17 10:54:19 -07:00
Peli de Halleux
65e01dc0df Bump pxt-core to 0.4.59 2016-10-17 10:54:17 -07:00
Peli de Halleux
7aeb216462 0.5.17 2016-10-16 20:26:19 -07:00
Peli de Halleux
543659b0e8 specifying pin positions 2016-10-16 20:25:55 -07:00
Peli de Halleux
a2b5ff68af 0.5.16 2016-10-16 20:09:30 -07:00
Peli de Halleux
b968d3b1de fixing simulator in IE11 2016-10-16 20:09:13 -07:00
Peli de Halleux
4dbebe3e15 fixing logo in IE11 2016-10-16 09:28:30 -07:00
Peli de Halleux
3b95fede48 optimizing logo 2016-10-16 09:19:40 -07:00
Peli de Halleux
971faed80a 0.5.15 2016-10-14 21:56:38 -07:00
Peli de Halleux
02a58caf7a Bump pxt-core to 0.4.58 2016-10-14 21:56:37 -07:00
Peli de Halleux
912e2e6159 enabling inverted menu 2016-10-14 11:32:00 -07:00
Peli de Halleux
e834ae0656 0.5.14 2016-10-14 08:04:04 -07:00
Peli de Halleux
175923fcb9 updated logos 2016-10-14 08:00:34 -07:00
Peli de Halleux
42ebdde3df 0.5.13 2016-10-14 07:48:36 -07:00
Peli de Halleux
20c63359af hiding microsoft logo 2016-10-14 07:48:23 -07:00
Peli de Halleux
841f3dc7d6 0.5.12 2016-10-14 07:35:12 -07:00
Peli de Halleux
f7377f6a21 Bump pxt-core to 0.4.57 2016-10-14 07:35:09 -07:00
Peli de Halleux
1104ab5b33 updated logos 2016-10-14 07:21:50 -07:00
Peli de Halleux
e2fe660012 towards pin placement 2016-10-14 06:46:56 -07:00
Peli de Halleux
7d4b800637 identifying and naming pins 2016-10-13 23:53:24 -07:00
Peli de Halleux
746728759d setting default locale to German 2016-10-13 10:21:56 -07:00
Peli de Halleux
3d3b9e2718 Bump pxt-core to 0.4.56 2016-10-13 10:06:10 -07:00
Matthias L. Jugel
0459cd693d 0.5.11 2016-10-13 16:58:33 +02:00
Matthias L. Jugel
9c43714126 fix dependency 2016-10-13 16:58:14 +02:00
Matthias L. Jugel
9bf7459628 0.5.10 2016-10-13 16:30:38 +02:00
Matthias L. Jugel
b52432e103 update dependency 2016-10-13 16:26:30 +02:00
Matthias L. Jugel
3ac0a060dd added pin mapping 2016-10-13 11:16:10 +02:00
Peli de Halleux
85ebbb28e3 0.5.9 2016-10-12 23:52:47 -07:00
Peli de Halleux
f69db3faf7 Bump pxt-core to 0.4.55 2016-10-12 23:52:45 -07:00
Peli de Halleux
4fc514e643 updated screen rendering 2016-10-12 23:40:33 -07:00
Peli de Halleux
7c2512e56b fixing thermometer 2016-10-12 23:30:19 -07:00
Peli de Halleux
d9eebf4a9f support for light level / thermometer simulation 2016-10-12 23:14:38 -07:00
Peli de Halleux
8af383ec56 updated svg layout 2016-10-12 22:44:05 -07:00
Matthias L. Jugel
573d7aff40 add svg with pins and connectors id-ed 2016-10-12 23:07:55 +02:00
Matthias L. Jugel
f73274803c 0.5.8 2016-10-12 18:57:05 +02:00
Matthias L. Jugel
63556ef14a update dependency 2016-10-12 18:56:51 +02:00
Matthias L. Jugel
9607183587 0.5.7 2016-10-12 18:02:23 +02:00
Matthias L. Jugel
4cca961e52 latest version with RGB led support 2016-10-12 18:02:16 +02:00
Matthias L. Jugel
c2a1668d55 Merge remote-tracking branch 'origin/master' 2016-10-12 17:54:39 +02:00
Matthias L. Jugel
7102eddc0b add color handling for LED 2016-10-12 17:54:25 +02:00
Peli de Halleux
b34884fe00 updated readme 2016-10-12 08:13:15 -07:00
Peli de Halleux
e768a4dc97 updated links 2016-10-12 08:11:05 -07:00
Peli de Halleux
8b1b1bb869 0.5.6 2016-10-12 04:50:08 -07:00
Peli de Halleux
57deb1749f Bump pxt-core to 0.4.54 2016-10-12 04:50:06 -07:00
Peli de Halleux
fb82b94f69 0.5.5 2016-10-12 04:03:19 -07:00
Peli de Halleux
d321170da9 Bump pxt-core to 0.4.53 2016-10-12 04:03:17 -07:00
Peli de Halleux
dff4f3adb3 basic motor block support 2016-10-11 22:58:53 -07:00
Peli de Halleux
5d8a1b69f6 0.5.4 2016-10-11 19:42:10 -07:00
Peli de Halleux
0b0c2c9466 merged latest pxt 2016-10-11 19:41:59 -07:00
Peli de Halleux
9319f10430 0.5.3 2016-10-11 11:43:38 -07:00
Peli de Halleux
c4787e1028 support for rgb led in simulator 2016-10-11 11:41:51 -07:00
Peli de Halleux
cb280af783 fix json in libs/hello 2016-10-11 10:13:30 -07:00
Peli de Halleux
4201cb3070 0.5.2 2016-10-11 09:34:26 -07:00
Peli de Halleux
ec7bade8f4 missed file in previous move 2016-10-11 09:21:24 -07:00
Peli de Halleux
d738d8bbf5 0.5.1 2016-10-11 09:14:47 -07:00
Peli de Halleux
a8b1e0bc04 bumping version number 2016-10-11 09:14:32 -07:00
Peli de Halleux
114b7958bc 0.4.32 2016-10-11 09:13:05 -07:00
Peli de Halleux
f45ae5950c 0.4.31 2016-10-11 09:09:25 -07:00
Peli de Halleux
4cdfaf06c0 0.4.30 2016-10-11 09:08:41 -07:00
Peli de Halleux
d48404eb37 integrated pxt-microbit 2016-10-11 09:08:31 -07:00
Peli de Halleux
f4ac599ec2 Bump pxt-core to 0.4.51 2016-10-11 09:05:10 -07:00
thinkberg
a783cdda92 0.4.29 2016-10-11 13:33:35 +02:00
thinkberg
5900c8c9f5 update dependency 2016-10-11 13:32:42 +02:00
Peli de Halleux
3911c6522d integrate pxt-microbit changes 2016-10-10 14:43:33 -07:00
Peli de Halleux
00cdb6f9f5 0.4.28 2016-10-10 13:35:54 -07:00
Peli de Halleux
df14445320 updated travis file 2016-10-10 13:34:24 -07:00
Peli de Halleux
553b692a9a 0.4.27 2016-10-10 13:19:17 -07:00
Peli de Halleux
7f2fd0dd09 positioning systemled 2016-10-10 13:16:39 -07:00
Peli de Halleux
ae6917c7b3 0.4.26 2016-10-10 13:03:20 -07:00
Peli de Halleux
5c1d9a342b updated to core v0.5.4 2016-10-10 13:03:08 -07:00
Peli de Halleux
d41724d239 0.4.25 2016-10-10 12:58:42 -07:00
Peli de Halleux
d6a006d18f Bump pxt-core to 0.4.48 2016-10-10 11:25:24 -07:00
Peli de Halleux
cace68acf4 updated hello sample 2016-10-10 11:20:25 -07:00
Matthias L. Jugel
68ef7c2fc2 fix initialization of Accelerometer (delayed in uBit.init()), enable DAL debugging 2016-10-08 15:15:01 +02:00
Matthias L. Jugel
4c502f0825 bump pxt-calliope-core dependency 2016-10-08 12:23:29 +02:00
Michal Moskal
a2f1cef9ae Merge branch 'master' of github.com:Microsoft/pxt-calliope 2016-10-07 11:39:31 -07:00
Matthias L. Jugel
e857a94e04 0.4.24 2016-10-07 18:48:34 +02:00
Peli de Halleux
42a93a1682 updated accent color 2016-10-03 18:54:07 -07:00
Michal Moskal
e983c76e2f Remove unneeded tests 2016-10-03 11:15:49 -07:00
Peli de Halleux
ced4565d5c 0.4.23 2016-10-01 15:52:41 -07:00
Peli de Halleux
2475058b94 0.4.22 2016-10-01 15:45:43 -07:00
Peli de Halleux
c6ee0db81c Bump pxt-core to 0.4.39 2016-10-01 15:45:41 -07:00
Matthias L. Jugel
1b96e6332a 0.4.21 2016-10-01 21:02:36 +02:00
Matthias L. Jugel
1ceec1d3b4 0.4.20 2016-10-01 20:59:44 +02:00
Matthias L. Jugel
2e9ddb48df 0.4.19 2016-10-01 20:58:45 +02:00
Peli de Halleux
2296220ad7 updated logos 2016-09-29 16:23:37 -07:00
Peli de Halleux
22864bd26a pointing to cloud compile service 2016-09-29 16:13:33 -07:00
Peli de Halleux
574a9e01d5 updating pinmap 2016-09-29 15:25:57 -07:00
Peli de Halleux
00278036a4 fixing pin mapping 2016-09-29 15:20:45 -07:00
Peli de Halleux
4b583e221b limited support for RGB led 2016-09-27 13:35:48 -07:00
Peli de Halleux
c88645d0cd support for AB / Shake buttons 2016-09-27 11:00:21 -07:00
Peli de Halleux
14e8eabd25 updated simulator ratio, domain names 2016-09-27 09:35:52 -07:00
Peli de Halleux
5fab789763 merging microbit 2016-09-26 22:00:04 -07:00
Peli de Halleux
33eca3c507 tweaked colors 2016-09-26 15:10:37 -07:00
Peli de Halleux
9ccfcf19d9 initial round of visual updates 2016-09-26 15:05:06 -07:00
432 changed files with 6455 additions and 8948 deletions

6
.gitignore vendored
View File

@@ -15,7 +15,7 @@ clients/win10/app/bld
clients/win10/*.opendb
clients/**/bin/**
clients/**/obj/**
electron-out
clients/electron/projects
hexcache
*.user
@@ -25,5 +25,9 @@ hexcache
*.db
*.suo
*.log
.DS_Store
.idea
*.iml
.vscode/.BROWSE.VC.DB-shm
.vscode/.BROWSE.VC.DB-wal

View File

@@ -3,16 +3,11 @@ node_js:
- "5.7.0"
script:
- "node node_modules/pxt-core/built/pxt.js travis"
- "(cd libs/lang-test0; node ../../node_modules/pxt-core/built/pxt.js run)"
- "(cd libs/lang-test1; node ../../node_modules/pxt-core/built/pxt.js run)"
- "(cd libs/lang-test0; node ../../node_modules/pxt-core/built/pxt.js test)"
- "(cd libs/lang-test1; node ../../node_modules/pxt-core/built/pxt.js test)"
- "node node_modules/pxt-core/built/pxt.js testdir tests"
- "(cd libs/hello; node ../../node_modules/pxt-core/built/pxt.js testconv https://az851932.vo.msecnd.net/files/td-converter-tests-v1.json)"
sudo: false
notifications:
email:
- touchdevelop-build@microsoft.com
- kindscript@microsoft.com
cache:
directories:
- node_modules

View File

@@ -1,6 +1,6 @@
// Place your settings in this file to overwrite default and user settings.
{
"files.autoSave": "afterDelay",
"file.autoSave": "afterDelay",
"files.watcherExclude": {
"**/.git/objects/**": true,
"**/built/**": true,

View File

@@ -1,15 +1,11 @@
# micro:bit target for PXT
# Calliope target for PXT
This target allow to program a [BBC micro:bit](https://www.microbit.co.uk/) using
This target allow to program a [Calliope](http://calliope.cc/) using
PXT ([Microsoft Programming Experience Toolkit](https://github.com/Microsoft/pxt)).
* [Try it live](https://pxt.microbit.org)
[![Build Status](https://travis-ci.org/Microsoft/pxt-calliope.svg?branch=master)](https://travis-ci.org/Microsoft/pxt-calliope)
[![Build Status](https://travis-ci.org/Microsoft/pxt-microbit.svg?branch=master)](https://travis-ci.org/Microsoft/pxt-microbit)
## Issue tracking
All issue tracking for this repo happens at https://github.com/Microsoft/pxt, see you there!
![](http://calliope.cc/content/1-ueber-mini/mini_board.png)
## Local server
@@ -22,8 +18,8 @@ The following commands are a 1-time setup after synching the repo on your machin
* See requirements for [pxt](https://github.com/Microsoft/pxt)
* [clone this repo](https://help.github.com/articles/cloning-a-repository/) to your computer and go in the project folder
```
git clone https://github.com/microsoft/pxt-microbit
cd pxt-microbit
git clone https://github.com/microsoft/pxt-calliope
cd pxt-calliope
```
* install the PXT command line (add ``sudo`` for Mac/Linux shells).
```
@@ -36,14 +32,15 @@ npm install
### Running
Run this command to open a local web server (add ``sudo`` for Mac/Linux shells)
Run this command to open a local web server (add ``sudo`` for Mac/Linux shells).
```
pxt serve
```
If the local server opens in the wrong browser, make sure to copy the URL containing the local token.
Otherwise, the editor will not be able to load the projects.
If you need modify the `.cpp` files, turn on yotta compilation with the ``-yt`` flag (add ``sudo`` for Mac/Linux shells):
If you need modify the `.cpp` files, turn on yotta compilation with the ``-yt`` flag (add ``sudo`` for Mac/Linux shells). On Windows, you must be running
from the ``Run Yotta`` command prompt.
```
pxt serve -yt
```
@@ -65,7 +62,6 @@ The build automatically runs the following:
* `pxt run` in `libs/lang-test*` - this will run the test in command line runner;
there is a number of asserts in both of these
* `pxt testdir` in `tests` - this makes sure all the files compile and generates .hex files
* run the TD->TS converter on a number of test scripts from `microbit.co.uk` and make sure the results compile
To test something on the device:

View File

@@ -1,43 +0,0 @@
/*!----------------- PXT ThirdPartyNotices -------------------------------------------------------
PXT uses third party material from the projects listed below.
The original copyright notice and the license under which Microsoft
received such third party material are set forth below. Microsoft
reserves all other rights not expressly granted, whether by
implication, estoppel or otherwise.
In the event that we accidentally failed to list a required notice, please
bring it to our attention. Post an issue or email us:
abchatra@microsoft.com
---------------------------------------------
Third Party Code Components
---------------------------------------------
Some code derived (as noted) from
https://github.com/bbcmicrobit/micropython
The MIT License (MIT)
Copyright (c) 2013-2016 The MicroPython-on-micro:bit Developers, as listed
in the accompanying AUTHORS file
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.

View File

@@ -1,5 +1,5 @@
# microbit-chrome
Prototype chrome addon that exposes the @boardname@'s serial output to webpages.
Prototype chrome addon that exposes the micro:bit's serial output to webpages.
* watch the [demo video](https://vimeo.com/146207766)
# Installation

2
clients/electron/.gitignore vendored Normal file
View File

@@ -0,0 +1,2 @@
node_modules
projects

View 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`.

View 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>

39
clients/electron/main.js Normal file
View File

@@ -0,0 +1,39 @@
const {app, BrowserWindow, Menu} = require('electron')
const pxt = require('pxt-core')
const path = require('path')
let win
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"
})
Menu.setApplicationMenu(null)
win.loadURL(`file://${__dirname}/index.html#local_token=${pxt.globalConfig.localToken}`)
win.on('closed', () => {
win = null
})
}
app.on('ready', startServerAndCreateWindow)
app.on('window-all-closed', () => {
if (process.platform !== 'darwin') {
app.quit()
}
})
app.on('activate', () => {
if (win === null) {
createWindow()
}
})

View File

@@ -0,0 +1,14 @@
{
"name" : "code-the-microbit",
"version" : "1.0.0",
"description": "Blocks / Javascript editor",
"author": "Microsoft",
"main" : "main.js",
"scripts": {
"start": "node_modules/.bin/electron ."
},
"devDependencies": {
"electron": "*",
"pxt-microbit": "*"
}
}

View File

@@ -1,10 +1,6 @@
# Blocks language
### @description Language constructs for the Block editor.
Blocks snap into each other to define the program that your @boardname@ will run.
Blocks can be event (buttons, shake, ...) or need to be snapped into an event to run.
The [on-start](/blocks/on-start) event runs first.
### @description Langugage constructs for the Block editor.
```namespaces
for (let i = 0;i<5;++i) {}
@@ -15,4 +11,4 @@ Math.random(5);
## See Also
[logic](/blocks/logic), [loops](/blocks/loops), [math](/blocks/math), [variables](/blocks/variables), [on-start](/blocks/on-start)
[logic](/blocks/logic), [loops](/blocks/loops), [math](/blocks/math), [variables](/blocks/variables)

View File

@@ -86,14 +86,12 @@ if (led.point(1,1) && led.point(2,2)) {
When you compare two Numbers, you get a Boolean value, such as the comparison `x < 5` in the code below:
```blocks
input.onButtonPressed(Button.A, () => {
let x = Math.random(5)
if(x < 5) {
basic.showString("low");
} else {
basic.showString("high");
}
})
let x = Math.random(5)
if(x < 5) {
basic.showString("low");
} else {
basic.showString("high");
}
```
See the documentation on [Numbers](/reference/types/number) for more information on comparing two Numbers. You can also [compare strings](/reference/types/string-functions) using the `equals` function.

View File

@@ -14,16 +14,14 @@ Click on the dark blue gear icon (see above) to add an *else* or *if* to the cur
### Example: adjusting screen brightness
If the [light level](/reference/input/light-level) is `< 100`, this code sets the brightness to `255` when the button A is pressed:
```blocks
input.onButtonPressed(Button.A, () => {
if(input.lightLevel()<100){
led.setBrightness(255);
}
})
if(input.lightLevel()<100){
led.setBrightness(255);
}
```
If the [light level](/reference/input/light-level) is `< 100`, this code sets the brightness to `255`:
### See also
[while loop](/blocks/loops/while), [for](/blocks/loops/for), [boolean](/blocks/logic/boolean)

View File

@@ -4,21 +4,14 @@
Run part of the program the number of times you say.
```block
for(let i = 0; i <= 4; ++i) {
}
```
### Example: Count to 4
This program will show the numbers 0, 1, 2, 3, and 4 one after another on the LED screen.
```blocks
input.onButtonPressed(Button.A, () => {
for(let i = 0; i < 5; ++i) {
basic.showNumber(i)
}
})
for(let i = 0; i < 5; ++i) {
basic.showNumber(i)
}
```
### See also

View File

@@ -2,7 +2,7 @@
Repeat code while a [Boolean](/blocks/logic/boolean) `condition` is true.
```block
```blocks
while(true) {
}
```
@@ -16,13 +16,11 @@ The condition is tested before any code runs. Which means that if the condition
The following example uses a while loop to make a diagonal line on the LED screen (points `0, 0`, `1, 1`, `2, 2`, `3, 3`, `4, 4`).
```blocks
input.onButtonPressed(Button.A, () => {
let index = 4;
while(index >= 0) {
led.plot(index, index);
index--;
}
})
let index = 4;
while(index >= 0) {
led.plot(index, index);
index--;
}
```
### See also

View File

@@ -1,28 +0,0 @@
# On Start
An event that runs when the program starts.
The ``on start`` is a special event that runs when the program starts, before any other event.
Use this event to initialize your program.
## Example
In this example, ``on start`` sets a dimmer brightness on the screen and the button handler shows a string.
```blocks
input.onButtonPressed(Button.A, () => {
basic.showString("Hello!")
})
led.setBrightness(50)
```
## What about JavaScript?
``on-start`` only exists in the block editor. In JavaScript, all code executes sequentially from the first line.
## Hey, my events moved!
When we transform the blocks into JavaScript, we always place all the event registrations (buttons, shake, ...)
before launching the ``on start`` code.
If a block from ``on start`` pauses, other registered events will have the opportunity to run as well.

View File

@@ -1,116 +0,0 @@
# Equipping a microservo with Crocodile clips
## Materials
* Cutting pliers or wire cutter
* Tape (masking, duct tape, and/or packing tape)
* 3 crocodile clips, yellow, red and black.
* 1 micro servo 9g (SG90)
## Using a microservo with the @boardname@
The @boardname@ provides just enough current to operate the SG90 microservo.
The servo requires 3 connections: GND, 3V and a logic pin.
In this tutorial, we will equip the servo with crocodile clips to make it easier to use.
However, you could also use a shield or female to crocodile clips to acheive the same effect.
If you are running a class or activity, you should consider preparing all servos before hand.
### ~ hint
Kitronik wrote an excellent in-depth guide about using servos with the @boardname@.
Check it out at https://www.kitronik.co.uk/blog/using-bbc-microbit-control-servo/ .
### ~
## Step 1: cutout the connector
Using the cutting pliers, cut out the dark plastic connector.
![](/static/mb/projects/inchworm/servo1.jpg)
## Step 2: strip out cables
Using the plier or a wire stripper, strip the plastic from the cables.
![](/static/mb/projects/inchworm/servotrim.jpg)
## Step 3: threading the servo cablers
Thread the servo cables.
![](/static/mb/projects/inchworm/servo3.jpg)
## Step 4: crocobile clip claps
Cut a crocodile cable in two and strip out the casing.
If possible try to use the same cable colors as the servo!
![](/static/mb/projects/inchworm/servo4.jpg)
## Step 5: thread cables together
Place the cables next to each other
![](/static/mb/projects/inchworm/servo5.jpg)
... and thread them together.
![](/static/mb/projects/inchworm/servo6.jpg)
### ~ hint
It is very **important** to ensure that there is a good connection between the 2 cables.
If the connection is weak, the microservo will not receive enough current and it will not work.
**If you have access to a soldering iron, we strongly recommend to solder this connection.**
### ~
## Step 4: protect the connection
Protect the connection with electrical or duct tape.
![](/static/mb/projects/inchworm/servo7.jpg)
## Step 5: repeat for all cables
Repeat the same process until all cables are connected.
![](/static/mb/projects/inchworm/servo8.jpg)
## Step 6: testing!
It's time to test that your connection are all proper and that the servo will function **when the @boardname@ is powered by battery**.
* Connect the microservo to the @boardname@. Black cable on ``GND``, red cable on ``3V`` and remaining cable on ``P0``.
![](/static/mb/projects/inchworm/circuit1.jpg)
### ~ hint
When attaching the crocodile clips to the pins, don't hesitate to grab the side of the board with the jaws.
![](/static/mb/projects/inchworm/circuit2.jpg)
### ~
* Download the following code to your @boardname@
```blocks
basic.forever(() => {
pins.servoWritePin(AnalogPin.P0, pins.map(
input.acceleration(Dimension.X),
-512,
512,
0,
180
))
})
```
* When powered by USB, make sure that the servo moves when you tilt the board.
* When powered by batteries **only**, make sure that the servo moves when you tilt the board.
## Troubleshooting
If your servo seems to sutter and stay stuck at a particular position, it means that it is not receiving enough power.
This is probably due to a weak connection or low battery level. Check each connection and check your batteries.

View File

@@ -6,7 +6,6 @@
* **[Getting Started](/getting-started)**
* [Projects](/projects)
* [Examples](/examples)
* [Lessons](/lessons)
### @boardname@ reference

View File

@@ -1,41 +0,0 @@
# Examples
Here are some fun programs for your @boardname@!
## Fun stuff
```codecard
[{
"name": "Blinky",
"description": "A blinking LED",
"url":"/examples/blinky"
},
{
"name": "Name Tag",
"description": "Scroll your name on the screen",
"url":"/examples/name-tag"
},
{
"name": "Rando",
"description": "Randomly blinking LEDs",
"url":"/examples/rando"
}]
```
## Sensors
```codecard
[{
"name": "Plot Acceleration",
"description": "chart acceleration on the LED screen",
"url":"/examples/plot-acceleration"
}, {
"name": "Plot Light Level",
"description": "chart light level on the LED screen",
"url":"/examples/plot-light-level"
}, {
"name": "Plot Analog Pin",
"description": "chart analog input on the LED screen",
"url":"/examples/plot-analog-pin"
}]
```

View File

@@ -1,20 +0,0 @@
# Blinky
```blocks
basic.forever(() => {
basic.showLeds(`
. # . # .
# # # # #
# # # # #
. # # # .
. . # . .`
);
basic.showLeds(`
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .`
);
})
```

View File

@@ -1,7 +0,0 @@
# Name Tag
```blocks
basic.forever(() => {
basic.showString("JAMES")
})
```

View File

@@ -1,10 +0,0 @@
# Plot Acceleration
```blocks
basic.forever(() => {
led.plotBarGraph(
input.acceleration(Dimension.X),
1023
)
})
```

View File

@@ -1,10 +0,0 @@
# Plot Analog Pin
```blocks
basic.forever(() => {
led.plotBarGraph(
pins.analogReadPin(AnalogPin.P0),
1023
)
})
```

View File

@@ -1,10 +0,0 @@
# Plot Light level
```blocks
basic.forever(() => {
led.plotBarGraph(
input.lightLevel(),
255
)
})
```

View File

@@ -1,7 +0,0 @@
# Rando
```blocks
basic.forever(() => {
led.toggle(Math.random(5), Math.random(5))
})
```

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 15 KiB

View File

@@ -33,7 +33,7 @@ basic.forever(() => {
When this program runs, you will see a smiley face, then a blank
screen, then a smiley again -- it never stops! (That's because of the
`[basic.forever(() => {})]` block.)
``forever`` block.)
Click **Download** to move your program to the @boardname@!
Make sure to follow the instructions.

View File

@@ -17,7 +17,7 @@ input.onButtonPressed(Button.A, () => {
#### ~hint
The `[basic.showString("HI")]` block can show letters, numbers, and punctuation
The ``showString`` block can show letters, numbers, and punctuation
on the @boardname@ screen.
#### ~
@@ -33,7 +33,7 @@ input.onButtonPressed(Button.B, () => {
#### ~hint
You can find the letter `B` by clicking the letter `A` on the
`[input.onButtonPressed(Button.A, () => {})]` block.
``onButtonPressed`` block.
#### ~

View File

@@ -23,8 +23,8 @@ input.onButtonPressed(Button.B, () => {
```
### ~hint
The `[Math.randomBoolean()]` block randomly tells the ``if``
block `true` or `false`. If value picked is `true`, the
The ``pick random true or false`` block randomly tells the ``if``
block `true` or `false`. If the ``pick`` block picked `true`, the
``if`` block shows the letter `H`. Otherwise, it shows the letter `T`.
That's it!

View File

@@ -9,7 +9,7 @@ There are 25 bright LEDs on the @boardname@ screen. Let's use them to create som
### Happy unhappy face
Draw an unhappy face instead of the blank screen. Click on the dots
in the second `[basic.showLeds("")]` block until it matches the blocks below.
in the second ``show leds`` block until it matches the blocks below.
Now you have an **animation** (cartoon) that shows a happy face,
then an unhappy one, then a happy one again, forever (or until
you turn off your @boardname@)!
@@ -36,7 +36,7 @@ Click **Download** to move your program to the @boardname@!
### Your turn!
Pile up more `[basic.showLeds("")]` blocks to create an animation! Create an
Pile up more ``show leds`` blocks to create an animation! Create an
animation with at least 5 pictures. What does this animation show?
```blocks
@@ -87,6 +87,12 @@ basic.forever(() => {
```
Click **Download** to move your program to the @boardname@!
#### ~hint
You can find the ``show leds`` block in the **Basic** part of the editor.
#### ~
### ~button /getting-started/buttons
NEXT: BUTTONS
### ~

View File

@@ -1,3 +1,3 @@
{
"appref": "v0.9.23"
"appref": "v0.8.21"
}

View File

@@ -5,11 +5,12 @@ but this may feel a bit awkward to programmers more comfortable with an object-o
and objects are built from these classes.
Starting with ECMAScript 2015, also known as ECMAScript 6, JavaScript programmers will be able to build their applications using
this object-oriented class-based approach. TypeScript, allows you to use these techniques.
this object-oriented class-based approach. TypeScript, allows you to use these techniques now, compiling them
down to JavaScript that works across all major browsers and platforms, without having to wait for the next version of JavaScript.
Let's take a look at a simple class-based example:
```typescript
```ts
class Greeter {
greeting: string;
constructor(message: string) {
@@ -33,12 +34,16 @@ This calls into the constructor we defined earlier, creating a new object with t
# Inheritance
### ~hint
### Inheritance is not supported yet for the @boardname@. Coming soon...
### ~
In TypeScript, we can use common object-oriented patterns.
Of course, one of the most fundamental patterns in class-based programming is being able to extend existing classes to create new ones using inheritance.
Let's take a look at an example:
```typescript-ignore
```ts-ignore
class Animal {
name: string;
constructor(theName: string) { this.name = theName; }
@@ -100,7 +105,7 @@ In TypeScript, each member is `public` by default.
You may still mark a member `public` explicitly.
We could have written the `Animal` class from the previous section in the following way:
```typescript-ignore
```ts-ignore
class Animal {
public name: string;
public constructor(theName: string) { this.name = theName; }
@@ -114,7 +119,7 @@ class Animal {
When a member is marked `private`, it cannot be accessed from outside of its containing class. For example:
```typescript-ignore
```ts-ignore
class Animal {
private name: string;
constructor(theName: string) { this.name = theName; }
@@ -133,7 +138,7 @@ The same applies to `protected` members.
Let's look at an example to better see how this plays out in practice:
```typescript-ignore
```ts-ignore
class Animal {
private name: string;
constructor(theName: string) { this.name = theName; }
@@ -169,7 +174,7 @@ Even though `Employee` also has a `private` member called `name`, it's not the o
The `protected` modifier acts much like the `private` modifier with the exception that members
declared `protected` can also be accessed by instances of deriving classes. For example,
```typescript-ignore
```ts-ignore
class Person {
protected name: string;
constructor(name: string) { this.name = name; }
@@ -199,7 +204,7 @@ we can still use it from within an instance method of `Employee` because `Employ
A constructor may also be marked `protected`.
This means that the class cannot be instantiated outside of its containing class, but can be extended. For example,
```typescript-ignore
```ts-ignore
class Person {
protected name: string;
protected constructor(theName: string) { this.name = theName; }
@@ -228,7 +233,7 @@ let john = new Person("John"); // Error: The 'Person' constructor is protected
You can make properties readonly by using the `readonly` keyword.
Readonly properties must be initialized at their declaration or in the constructor.
```typescript-ignore
```ts-ignore
class Octopus {
readonly name: string;
readonly numberOfLegs: number = 8;
@@ -247,7 +252,7 @@ This turns out to be a very common practice.
*Parameter properties* let you create and initialize a member in one place.
Here's a further revision of the previous `Octopus` class using a parameter property:
```typescript-ignore
```ts-ignore
class Octopus {
readonly numberOfLegs: number = 8;
constructor(readonly name: string) {

View File

@@ -6,14 +6,15 @@ For the @boardname@, we support a "static" subset of TypeScript (itself a supers
## Supported language features
* variables with `let` and `const`
* variables with `let`, `const`, and `var`
* functions with lexical scoping and recursion
* top-level code in the file; hello world really is `console.log("Hello world")`
* `if ... else if ... else` statements
* `while` and `do ... while` loops
* `for(;;)` loops and for ... of
* `for(;;)` loops (see below about `for ... in/of`)
* `break/continue`; also with labeled loops
* `switch` statement (on numbers only)
* `debugger` statement for breakpoints
* conditional operator `? :`; lazy boolean operators
* namespaces (a form of modules)
* all arithmetic operators (including bitwise operators); note that in microcontroller targets
@@ -24,7 +25,6 @@ For the @boardname@, we support a "static" subset of TypeScript (itself a supers
* classes with fields, methods and constructors; `new` keyword
* array literals `[1, 2, 3]`
* enums
* class inheritance
## Unsupported language features
@@ -32,10 +32,10 @@ We generally stay away from the more dynamic parts of JavaScript.
Things you may miss and we may implement:
* exceptions (`throw`, `try ... catch`, `try ... finally`)
* `for ... in` statements
* `for ... of` statements
* object literals `{ foo: 1, bar: "two" }`
* method-like properties (get/set accessors)
* `debugger` statement for breakpoints
* class inheritance
For JS-only targets we may implement the following:
@@ -55,4 +55,4 @@ Things that we are not very likely to implement:
* `eval`
* `delete` statement
* `for ... in` statements
* JSX (HTML as part of JavaScript)
* JSX (HTML as part of JavaScript)

View File

@@ -3,7 +3,7 @@
Functions are the fundamental building block of programs. Here is the simplest
way to make a function that adds two numbers:
```typescript
```ts
// Named function
function add(x : number, y : number) {
return x + y;
@@ -19,7 +19,7 @@ For the @boardname@, you must specify a [type](/js/types) for each function para
Functions can refer to variables outside of the function body.
When they do so, they're said to `capture` these variables.
```typescript
```ts
let z = 100;
function addToZ(x: number, y: number) {
@@ -29,9 +29,11 @@ function addToZ(x: number, y: number) {
basic.showNumber(addToZ(1, 2))
```
## Typing the function
Let's add a return type to our add function:
```typescript
```ts
function add(x: number, y: number): number {
return x + y;
}
@@ -39,24 +41,11 @@ function add(x: number, y: number): number {
TypeScript can figure the return type out by looking at the return statements, so you can optionally leave this off in many cases.
# Arrow Functions
Arrow functions (also known as "lamba" functions) are used extensively to provide event handlers for
many APIs. For example:
```typescript
input.onButtonPressed(Button.A, () => {
})
```
[Read more about arrow functions...](http://devdocs.io/javascript/functions/arrow_functions)
# Optional and Default Parameters
In TypeScript, the number of arguments given to a function has to match the number of parameters the function expects.
```typescript-ignore
```ts-ignore
function buildName(firstName: string, lastName: string) {
return firstName + " " + lastName;
}
@@ -71,7 +60,7 @@ When they do, their value is `undefined`.
We can get this functionality in TypeScript by adding a `?` to the end of parameters we want to be optional.
For example, let's say we want the last name parameter from above to be optional:
```typescript-ignore
```ts-ignore
function buildName(firstName: string, lastName?: string) {
if (lastName)
return firstName + " " + lastName;
@@ -91,7 +80,7 @@ In TypeScript, we can also set a value that a parameter will be assigned if the
These are called default-initialized parameters.
Let's take the previous example and default the last name to `"Smith"`.
```typescript-ignore
```ts-ignore
function buildName(firstName: string, lastName = "Smith") {
return firstName + " " + lastName;
}
@@ -105,7 +94,7 @@ let result4 = buildName("Bob", "Adams"); // ah, just right
Default-initialized parameters that come after all required parameters are treated as optional, and just like optional parameters, can be omitted when calling their respective function.
This means optional parameters and trailing default parameters will share commonality in their types, so both
```typescript
```ts
function buildName(firstName: string, lastName?: string) {
// ...
}
@@ -113,7 +102,7 @@ function buildName(firstName: string, lastName?: string) {
and
```typescript
```ts
function buildName(firstName: string, lastName = "Smith") {
// ...
}
@@ -126,7 +115,7 @@ Unlike plain optional parameters, default-initialized parameters don't *need* to
If a default-initialized parameter comes before a required parameter, users need to explicitly pass `undefined` to get the default initialized value.
For example, we could write our last example with only a default initializer on `firstName`:
```typescript-ignore
```ts-ignore
function buildName(firstName = "Will", lastName: string) {
return firstName + " " + lastName;
}
@@ -145,7 +134,7 @@ In JavaScript, you can work with the arguments directly using the `arguments` va
In TypeScript, you can gather these arguments together into a variable:
```typescript-ignore
```ts-ignore
function buildName(firstName: string, ...restOfName: string[]) {
return firstName + " " + restOfName.join(" ");
}
@@ -159,7 +148,7 @@ The compiler will build an array of the arguments passed in with the name given
The ellipsis is also used in the type of the function with rest parameters:
```typescript-ignore
```ts-ignore
function buildName(firstName: string, ...restOfName: string[]) {
return firstName + " " + restOfName.join(" ");
}

View File

@@ -18,6 +18,13 @@ This also is true when simulating in the browser.
* comparison operators - [read more](http://devdocs.io/javascript/operators/comparison_operators)
* conditional operator - [read more](http://devdocs.io/javascript/operators/conditional_operator)
## More
* lambda functions `() => { ... }`
* array literals `[1, 2, 3]`
* strings, with a few common methods
* [string templates](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals) (`` `x is ${x}` ``)
### ~button /js/statements
NEXT: Statements
### ~

View File

@@ -5,6 +5,7 @@ The following JavaScript statements are supported for the @boardname@:
## Variable declarations
* `const` statement - [read more](http://devdocs.io/javascript/statements/const)
* `let` statement - [read more](http://devdocs.io/javascript/statements/let)
* `var` statement - [read more](http://devdocs.io/javascript/statements/var)
## Block-structured statements

View File

@@ -3,27 +3,11 @@
For programs to be useful, we need to be able to work with some of the simplest units of data:
numbers, strings, structures, boolean values, and the like.
# Type Inference
In TypeScript, there are several places where type inference is used to provide type information when there is
no explicit type annotation. For example, in this code
```typescript
let x = 3;
let y = x + 3
```
The type of the `x` variable is inferred to be `number`. Similarly, the type of `y` variable also is inferred to be `number`.
This kind of inference takes place when initializing variables and members,
setting parameter default values, and determining function return types.
All the examples below give an example type annotation, but will work just the same without the annotation.
# Boolean
The most basic datatype is the simple true/false value, which is called a `boolean` value.
```typescript
```ts
let isDone: boolean = false;
```
@@ -36,7 +20,7 @@ However, for the @boardname@, `numbers` are integer values.
Integer values can be specified via decimal, hexadecimal and octal notation:
```typescript
```ts
let decimal: number = 42;
let hex: number = 0xf00d;
let binary: number = 0b1010;
@@ -48,7 +32,7 @@ let octal: number = 0o744;
As in other languages, we use the type `string` to refer to textual data.
Use double quotes (`"`) or single quotes (`'`) to surround string data.
```typescript
```ts
let color: string = "blue";
color = 'red';
```
@@ -56,7 +40,7 @@ color = 'red';
You can also use *template strings*, which can span multiple lines and have embedded expressions.
These strings are surrounded by the backtick/backquote (`` ` ``) character, and embedded expressions are of the form `${ expr }`.
```typescript
```ts
let fullName: string = `Bob Bobbington`;
let age: number = 37;
let sentence: string = `Hello, my name is ${ fullName }.
@@ -66,7 +50,7 @@ I'll be ${ age + 1 } years old next month.`
This is equivalent to declaring `sentence` like so:
```typescript
```ts
let fullName: string = `Bob Bobbington`;
let age: number = 37;
let sentence: string = "Hello, my name is " + fullName + ".\n\n" +
@@ -79,13 +63,13 @@ Arrays allow you to work with an expandable sequence of values, addressed by an
Array types can be written in one of two ways.
In the first, you use the type of the elements followed by `[]` to denote an array of that element type:
```typescript
```ts
let list: number[] = [1, 2, 3];
```
The second way uses a generic array type, `Array<elemType>`:
```typescript
```ts
let list: Array<number> = [1, 2, 3];
```
@@ -93,12 +77,13 @@ let list: Array<number> = [1, 2, 3];
For the @boardname@, all elements of an array must have the same type.
### ~
# Enum
A helpful addition to the standard set of datatypes from JavaScript is the `enum`.
As in languages like C#, an enum is a way of giving more friendly names to sets of numeric values.
```typescript
```ts
enum Color {Red, Green, Blue}
let c: Color = Color.Green;
```
@@ -107,14 +92,14 @@ By default, enums begin numbering their members starting at `0`.
You can change this by manually setting the value of one of its members.
For example, we can start the previous example at `1` instead of `0`:
```typescript
```ts
enum Color {Red = 1, Green, Blue}
let c: Color = Color.Green;
```
Or, even manually set all the values in the enum:
```typescript
```ts
enum Color {Red = 1, Green = 2, Blue = 4}
let c: Color = Color.Green;
```
@@ -123,12 +108,13 @@ let c: Color = Color.Green;
The TypeScript type `any` is not supported in the @boardname@.
# Void
`void` is the absence of having any type at all.
You may commonly see this as the return type of functions that do not return a value:
```typescript
```ts
function warnUser(): void {
basic.showString("This is my warning message");
}
@@ -136,6 +122,21 @@ function warnUser(): void {
Declaring variables of type `void` is not useful.
# Type Inference
In TypeScript, there are several places where type inference is used to provide type information when there is
no explicit type annotation. For example, in this code
```ts
let x = 3;
let y = x + 3
```
The type of the `x` variable is inferred to be `number`. Similarly, the type of `y` variable also is inferred to be `number`.
This kind of inference takes place when initializing variables and members,
setting parameter default values, and determining function return types.
### ~button /js/classes
NEXT: Classes
### ~

View File

@@ -1,16 +1,8 @@
# Variable Declarations
Declaring a variable should be done using the ``let`` keyword:
```typescript
let a = 10;
```
## ``var`` vs ``let``
Declaring a variable in JavaScript has always traditionally been done with the `var` keyword.
```typescript-ignore
```typescript
var a = 10;
```
@@ -24,10 +16,6 @@ let a = 10;
The key difference is not in the syntax, but in the semantics, which we'll now dive into.
### ~hint
### Use `let` instead of `var` to introduce a new variable.
### ~
## Block-scoping
When a variable is declared using `let`, it uses what some call *lexical-scoping* or *block-scoping*.

View File

@@ -39,8 +39,8 @@ coll.push("cat")
## 4. Write the five (5) lines of code that will add the following five words to `data->coll`: puppy, clock, night, cat, cow.
```typescript
let coll : string[] = [];
```ts
let coll = (<string[]>[])
```
<br/>

View File

@@ -3,48 +3,27 @@
You can publish libraries (also known as packages or extensions)
that users can then add to their scripts. These typically
provide a driver for a particular hardware device you can connect
to a microbit.
to a microbit.
### ~ hint
All packages need to be approved by the Micro:bit Foundation before being available in the web editor.
See **Approval** section below.
### ~
* [pxt-neopixel](https://github.com/Microsoft/pxt-neopixel) -- TypeScript + ARM Thumb assembly package
* [pxt-max6675](https://github.com/Microsoft/pxt-max6675) -- TypeScript
* [pxt-neopixel](https://github.com/Microsoft/pxt-neopixel) -- TypeScript + ARM Thumb assembly package
* [pxt-sonar](https://github.com/microsoft/pxt-sonar) -- TypeScript
* [pxt-i2c-fram](https://github.com/microsoft/pxt-i2c-fram) -- TypeScript
* [Sample C++ extension](https://github.com/Microsoft/pxt-microbit-cppsample)
* [Sample TypeScript extension](https://github.com/Microsoft/pxt-microbit/tree/master/libs/i2c-fram)
## Finding packages
From the block editor, the user clicks on **Add Package** and searches for the package.
Otherwise, the **Add Package** is also available from the gearwheel menu.
From the editor, the user clicks on **More** then **Add Package** and searches for the package.
To see the list of packages, switch to JavaScript and use the **Explorer** view to find them.
To see the list of packages, click on **More** then **Show Files** to see the project file list.
To remove a package, click on the garbage button in the **Explorer** view next to the package.
To remove a package, click on the garbage button in the file list next to the package.
## Publishing and Approving packages
## Publishing packages
Once your package is ready, follow these steps to get it approved and listed in the pxt.microbit.org web site:
1. setup a public GitHub repository with your package sources
2. ensure that the license is **Apache2** or **MIT**
3. fill ``test.ts`` with a test scenario
4. ensure that the package builds by running ``pxt`` from the package folder. [Read more...](https://www.pxt.io/packages).
5. fill up the ``README.md`` file with documentation. See [markdown docs](https://pxt.io/writing-docs) for syntax.
6. publish a release by running ``pxt bump`` from the package folder.
7. open a support ticket at https://support.microbit.org, add **package approval** in the subject line.
```
Package approval request
github repo: .....
```
Packages can be published from the pxt command line. Check out [the docs](https://www.pxt.io/packages).
## Localizing packages

View File

@@ -57,18 +57,18 @@ Fun games to build with your @boardname@.
"imageUrl":"/static/mb/projects/wallet.png"
}, {
"name": "Watch",
"url":"/projects/watch",
"url":"/projects/the-watch",
"imageUrl":"/static/mb/projects/a10-watch.png"
}]
```
## Toys
## Science and Engineering
```codecard
[{
"name": "Inchworm",
"url":"/projects/inchworm",
"imageUrl":"/static/mb/projects/inchworm.jpg"
"name": "Timing gates",
"url":"/projects/timing-gates",
"imageUrl":"/static/mb/projects/timing-gates.jpg"
}]
```
@@ -76,10 +76,6 @@ Fun games to build with your @boardname@.
```codecard
[{
"name": "Timing gates",
"url":"/projects/timing-gates",
"imageUrl":"/static/mb/projects/timing-gates.jpg"
}, {
"name": "Compass",
"url":"/projects/compass",
"imageUrl":"/static/mb/projects/a5-compass.png"
@@ -96,4 +92,4 @@ Fun games to build with your @boardname@.
### See Also
[Flashing Heart](/projects/flashing-heart), [Smiley Buttons](/projects/smiley-buttons), [Love Meter](/projects/love-meter), [Rock Paper Scissors](/projects/rock-paper-scissors), [Compass](/projects/compass), [Hack your headphones](/projects/hack-your-headphones), [Banana keyboard](/projects/banana-keyboard), [Telegraph](/projects/telegraph), [Radio](/projects/radio), [Guitar](/projects/guitar), [Wallet](/projects/wallet), [Watch](/projects/watch)
[Flashing Heart](/projects/flashing-heart), [Smiley Buttons](/projects/smiley-buttons), [Love Meter](/projects/love-meter), [Rock Paper Scissors](/projects/rock-paper-scissors), [Compass](/projects/compass), [Hack your headphones](/projects/hack-your-headphones), [Banana keyboard](/projects/banana-keyboard), [Telegraph](/projects/telegraph), [Radio](/projects/radio), [Guitar](/projects/guitar), [Watch](/projects/the-watch)

View File

@@ -21,8 +21,8 @@ Build your own @boardname@ piano using bananas!
## Activities
* [Make](/projects/banana-keyboard/make)
* [Code](/projects/banana-keyboard/code)
* [Making the keyboard](/projects/banana-keyboard/make)
* [Beat box](/projects/banana-keyboard/beat-box)
### ~button /projects/banana-keyboard/make
Let's get started!

View File

@@ -1,4 +1,4 @@
# Code
# banana keyboard - beat box
Have you ever tried to making beat box sounds? Let's try making a beatbox with code!

View File

@@ -1,4 +1,4 @@
# Make
# banana keyboard - making
## Materials
@@ -80,6 +80,6 @@ input.onPinPressed(TouchPin.P1, () => {
Tap your banana instrument to play sound against... the fruit!
### ~button /projects/banana-keyboard/code
### ~button /projects/banana-keyboard/beat-box
NEXT: beat box
### ~

View File

@@ -1,43 +0,0 @@
# Coffee Cup Monster
### @description A monster made of cardboard that responds to light
### ~avatar avatar
Make a coffee cup monster that responds to light!
### ~
https://youtu.be/BiZLjugXMbM
## Duration
3 Activities, approx 30-45 min each based on familiarity with the coding concepts
## Materials
* 3 Coffee cup holders
* 2 Coffee cup strirer wood sticks
* Glue gun
* Scissors that can cut cardboard
* 1 @boardname@, battery holder and 2 AAA batteries
* 3 Crocodile clips
* 1 micro servo 9g SG90
* 1 paper clip
## Preparation
* [Equip the microservo with crocodile clips](/device/servo)
## Activities
* [Make](/projects/coffee-cup-monster/make)
* [Code](/projects/coffee-cup-monster/code)
* [Connect](/projects/coffee-cup-monster/connect)
### ~button /projects/coffee-cup-monster/make
Let's get started!
### ~

View File

@@ -1,29 +0,0 @@
# Code
### @description code to make the coffee cup monster alive
### ~avatar avatar
Add code to open the mouth when light is detected.
### ~
## Duration: ~30 minutes
We are going to add code to open the mouth proportionally to the amount of light on the @boardname@.
In a loop, we will read the light and map it to an angle using the ``pins.map`` function.
```blocks
basic.forever(() => {
pins.servoWritePin(AnalogPin.P0, pins.map(
input.lightLevel(),
0,
255,
30,
150
))
})
```
### ~button /projects/coffee-cup-monster/connect
NEXT: Connect
### ~

View File

@@ -1,29 +0,0 @@
# Connect
### ~avatar avatar
Remote control your monster with another @boardname@
### ~
## Duration: ~30 minutes
You will need 2 @boardname@ for this part. By using the radio, we can make the inchworm controlled by another @boardname@.
Download the code below to the @boardname@ on the inchworm and another "controller" @boardname@.
Whenere A is pressed, the monster will open and close it's mouth will move once.
```blocks
radio.onDataPacketReceived(({receivedNumber}) => {
pins.servoWritePin(AnalogPin.P0, 30)
basic.pause(500)
pins.servoWritePin(AnalogPin.P0, 150)
basic.pause(500)
})
input.onButtonPressed(Button.A, () => {
radio.sendNumber(0)
})
```
```package
radio
```

View File

@@ -1,25 +0,0 @@
# Make
### @description Building the coffee cup monster
### ~avatar avatar
Turn a piece of coffee holders into a monster!
### ~
## Duration: ~60 minutes
## Materials
* 3 Coffee cup holders
* 2 Coffee cup strirer wood sticks
* Scissors
* glue gun or tape
* 1 paper clip
## Step 1: cardboard
TODO
### ~button /projects/coffee-cup-monster/code
NEXT: Code
### ~

View File

@@ -10,10 +10,12 @@ Welcome! This guided tutorial will show you how to program a script that display
### ~
## Step 1
Create a loop that will continuously update the reading of the compass.
```blocks
basic.forever(() => {

View File

@@ -1,8 +1,26 @@
# flashing heart
![](/static/mb/projects/a1-display.png)
### ~avatar avatar
Use the LEDs to display a flashing heart!
```sim
basic.forever(() => {
basic.showLeds(`
. # . # .
# # # # #
# # # # #
. # # # .
. . # . .`
);
basic.pause(500);
basic.clearScreen();
basic.pause(500);
})
```
Use the LEDs to display a flashing heart, and then create
an animation of a broken heart. :(
### ~
@@ -37,19 +55,19 @@ basic.clearScreen();
## Step 3
Put a [forever loop](/reference/basic/forever) around it to repeat the animation.
Put a [forever loop](/reference/basic/forever) around it.
```blocks
basic.forever(() => {
basic.showLeds(`
. # . # .
# # # # #
# # # # #
. # # # .
. . # . .`
);
basic.pause(500);
basic.clearScreen();
basic.showLeds(`
. # . # .
# # # # #
# # # # #
. # # # .
. . # . .`
);
basic.pause(500);
basic.clearScreen();
})
```
@@ -59,50 +77,45 @@ Add a [pause](/reference/basic/pause) to wait after clearing the screen.
```blocks
basic.forever(() => {
basic.showLeds(`
. # . # .
# # # # #
# # # # #
. # # # .
. . # . .`
);
basic.pause(500);
basic.clearScreen();
basic.pause(500);
basic.showLeds(`
. # . # .
# # # # #
# # # # #
. # # # .
. . # . .`
);
basic.pause(500);
basic.clearScreen();
basic.pause(500);
})
```
## Send your heartbeats over radio!
## Step 5
Do you have a second @boardname@ at hand? You could use radio and send your heartbeats to other
@boardname@ and show a heart when you receive one.
Add a second image of a broken heart.
* move the code in the **forever** inside
a [on data packet received](/reference/radio/on-data-packet-received) handler.
The handler will run whenever a message is received from another @boardname@.
* use [send number](/reference/radio/send-number) and [pause](/reference/basic/pause)
to broadcast a packet of data every second.
```blocks
basic.forever(() => {
radio.sendNumber(0)
basic.pause(1000)
})
radio.onDataPacketReceived(({receivedNumber}) => {
basic.showLeds(`
. # . # .
# # # # #
# # # # #
. # # # .
. . # . .`);
basic.pause(500)
basic.clearScreen()
basic.pause(500)
basic.showLeds(`
. # . # .
# # # # #
# # # # #
. # # # .
. . # . .`
);
basic.pause(500);
basic.clearScreen();
basic.pause(500);
basic.showLeds(`
. # . # .
# . # # #
# . . . #
. # # # .
. . # . .`
);
basic.pause(500);
basic.clearScreen();
basic.pause(500);
})
```
Download the .hex file onto both @boardname@ and try it out!
```package
radio
```

View File

@@ -1,5 +1,7 @@
# Guitar
![guitar icon](/static/mb/projects/guitar.png)
### @description A beginner-intermediate maker activity, building a guitar with the @boardname@
### ~avatar avatar
@@ -7,7 +9,7 @@
Make a @boardname@ guitar with this guided tutorial!
### ~
*playing @boardname@ guitar*
https://youtu.be/GYmdTFvxz80
## Duration

View File

@@ -21,7 +21,7 @@ Use pin press to switch guitar play on/off
## Blocks
```cards
let on = false
var on = false
on;
if (on) { } else {}
input.onPinPressed(TouchPin.P1, () => {})
@@ -106,7 +106,7 @@ input.onPinPressed(TouchPin.P1, () => {
*Final code*
TODO: do we want to use `on = !on;` or be more direct in flipping the switch? `on = true; on = false;`
```blocks
let on = false
var on = false
basic.forever(() => {
if (on) {
music.setTempo(pins.map(Math.abs(input.acceleration(Dimension.Y)),

View File

@@ -19,17 +19,17 @@ Build your own music player @boardname@ from headphones.
* Headphones
* Crocodile clips
## Activities
* [Connect your headphone](/projects/hack-your-headphones/make)
* [Play sounds!]()
# ~hint
**No crocodile clips!?!?!** Use wires or Aluminium foil! [Read more...](/device/foil-circuits)
# ~
## Activities
* [Make](/projects/hack-your-headphones/make)
* [Code](/projects/hack-your-headphones/code)
### ~button /projects/hack-your-headphones/make
Let's get started!

View File

@@ -1,4 +1,4 @@
# Make
# hack your headphones - making
### ~avatar avatar
@@ -46,7 +46,7 @@ Using the 2nd crocodile clip, connect the second end of the crocodile clip onto
You hacked your headphones!
### ~button /projects/hack-your-headphones/code
### ~button /projects/hack-your-headphones/music-of-light
NEXT: music of light

View File

@@ -1,4 +1,4 @@
# Code
# hack your headphones - music of light
### ~avatar avatar
@@ -10,9 +10,7 @@ Let's start by adding a variable where you can store data. Then rename the varia
```blocks
input.onButtonPressed(Button.A, () => {
let light = input.lightLevel();
});
let light = input.lightLevel();
```
We want to play music on button pressed in order to register an event handler that will execute whenever when you run a script and click on button pressed on the simulator. We must start by opening the Input drawer and adding `on button pressed` A. Then add a block `rest` to plays nothing for a `1/16` beat. Modify your code so that your code looks like this.

View File

@@ -1,44 +0,0 @@
# Inchworm
### @description A inchworm like robot built with the @boardname@
### ~avatar avatar
Make a funny inchworm robot!
### ~
https://youtu.be/BiZLjugXMbM
## Duration
3 Activities, approx 30-45 min each based on familiarity with the coding concepts
## Materials
* Cardboard pieces (recycle!)
* Glue gun or Tape (masking, duct tape, and/or packing tape)
* Scissors that can cut cardboard
* 1 @boardname@, battery holder and 2 AAA batteries
* 3 Crocodile clips
* 1 micro servo 9g SG90
* 1 paper clip
![Materials](/static/mb/projects/inchworm/materials.jpg)
## Preparation
* [Equip the microservo with crocodile clips](/device/servo)
## Activities
* [Make](/projects/inchworm/make)
* [Code](/projects/inchworm/code)
* [Connect](/projects/inchworm/connect)
### ~button /projects/inchworm/make
Let's get started!
### ~

View File

@@ -1,35 +0,0 @@
# Code
### @description code to make the inchworm alive
### ~avatar avatar
Add code to make the inchworm move.
### ~
## Duration: ~30 minutes
## Step 1: walk forever
In order for the inchworm to move, the @boardname@ needs to command the servo to go between ``0`` and ``180`` degrees
at a certain pace. In the code below, the user pressed button ``A`` to launch the inchworm.
```blocks
input.onButtonPressed(Button.A, () => {
pins.servoWritePin(AnalogPin.P0, 0);
basic.pause(500);
pins.servoWritePin(AnalogPin.P0, 180);
basic.pause(500);
});
```
### ~ hint
You may have noticed that the inchworm can be rather slow or simply won't move. Try to improve the design of your legs, teeth
so that the inchworm goes as fast as possible. Trying it on carpet also great helps avoiding skidding.
### ~
### ~button /projects/inchworm/connect
NEXT: Connect
### ~

View File

@@ -1,28 +0,0 @@
# Connect
### ~avatar avatar
Remote control your inchworm with another @boardname@
### ~
## Duration: ~30 minutes
You will need 2 @boardname@ for this part. By using the radio, we can make the inchworm controlled by another @boardname@.
Download the code below to the @boardname@ on the inchworm and another "controller" @boardname@. Whenere A is pressed, the inchworm will move once.
```blocks
radio.onDataPacketReceived(({receivedNumber}) => {
pins.servoWritePin(AnalogPin.P0, 0)
basic.pause(500)
pins.servoWritePin(AnalogPin.P0, 180)
basic.pause(500)
})
input.onButtonPressed(Button.A, () => {
radio.sendNumber(0)
})
```
```package
radio
```

View File

@@ -1,88 +0,0 @@
# Make
### @description Building the cardboard inchworm
### ~avatar avatar
Turn a piece of cardboard into an inchworm!
### ~
## Duration: ~45 minutes
## Materials
* Cardboard
* Scissors or cutters
* glue gun or tape
* 1 paper clip
## Step 1: cardboard
Cutout a cardboard rectangle. You can use the @boardname@ as a ruler to figure out the size.
![](/static/mb/projects/inchworm/chassis1.jpg)
## Step 2: center fold
Fold the cardboard in half over the short edge.
![](/static/mb/projects/inchworm/chassis2.jpg)
## Step 3: legs
Fold each end so they rest flat on the ground.
![](/static/mb/projects/inchworm/chassis3.jpg)
## Step 4: front teeth
Fold each corners on one end of the cardbard. This will be the front of the inchworm which is supposed to grip the ground.
![](/static/mb/projects/inchworm/chassis4.jpg)
## Step 5: back teeth
Using a scissor or a cutter (watch the fingers!), cut out various strips in the other edge. Fold one after the other.
![](/static/mb/projects/inchworm/chassis5.jpg)
## Step 6: mounting the board
Using tape or a glue gun, mount the @boardname@ on one side and the microservo on the cardobard.
![](/static/mb/projects/inchworm/chassis6.jpg)
## Step 7: mounting the servo
Attach the servo on the **edge** of the other cardboard side.
![](/static/mb/projects/inchworm/chassis7.jpg)
## Step 8: Cable clean up (optional)
Use tape to route the cables nicely on the inchworm.
![](/static/mb/projects/inchworm/chassis8.jpg)
## Step 9: attaching paper clip to servo
Unfold a paper clip and attach it to the servo arm.
![](/static/mb/projects/inchworm/clip2.jpg)
## Step 10: attaching paper clip to cardboard
Slide the folder paper clip into the cardboard, and use tape to secure it.
You might need to toy around with the size of the clip so that the servo rotation opens the inchworm sufficiently.
![](/static/mb/projects/inchworm/clip3.jpg)
## Step 11: it's ready!
Your inchworm is ready!
![](/static/mb/projects/inchworm/ready.jpg)
### ~button /projects/inchworm/code
NEXT: Code
### ~

View File

@@ -1,10 +1,8 @@
# love meter
### ~avatar avatar
![](/static/mb/projects/a3-pins.png)
Use pins and your body to change the display!
### ~
Use pins P0, P1 and P2 to change the display by creating a circuit with your body.
## Step 1

View File

@@ -1,8 +1,10 @@
# magic button trick
Perform a magic trick where you appear to make the **A** and **B** button of your @boardname@ swap over just by moving a sticky label.
### ~avatar avatar
Build a magic trick that uses the @boardname@'s compass to detect a nearby magnet!
Welcome! This activity will teach you how to use the @boardname@'s compass to detect a nearby magnet
### ~
This is a simple magic trick you can perform to amaze your friends, where by moving the sticky labels on your @boardname@'s **A** and **B** button you appear to make the buttons really switch over. To see the trick performed watch the video below.
@@ -37,7 +39,7 @@ input.onButtonPressed(Button.B, () => {
We will use the @boardname@'s compass to detect the magnet. Compass's tell us what direction we are pointing by detecting the Earth's magnetic field but they can also detect any other magnet nearby. We will use that to check if our magnet is next to the @boardname@ by using the [magnetic force](/reference/input/magnetic-force) block found in the input menu's 'more' section. As we only want to measure the strength we change the drop down to select 'strength':
```block
```blocks
input.magneticForce(Dimension.Strength)
```
@@ -50,19 +52,16 @@ If you have ever played with magnets you know they have two ends, often called a
So in the code below we will check if the absolute value of our magnetic field strength reading is more than 100 and save the result of that check in a new variable called 'isSwitched':
```blocks
let force = Math.abs(input.magneticForce(Dimension.Strength));
let isSwitched = force > 100
let isSwitched = Math.abs(input.magneticForce(Dimension.Strength)) > 100
```
## Step 4: running our 'magnet nearby' check all the time
At the moment our code to detect the magnet being nearby will only run once so we need to put it into a [forever](/reference/basic/forever) block so that it keeps getting run again and again checking for the magnet to come near to the @boardname@. We should also make sure 'isSwitched' is false when our program starts.
```blocks
let force = 0;
let isSwitched = false;
basic.forever(() => {
force = Math.abs(input.magneticForce(Dimension.Strength));
isSwitched = force > 100
let isSwitched = Math.abs(input.magneticForce(Dimension.Strength)) > 100
})
```
@@ -71,11 +70,10 @@ basic.forever(() => {
Now we can check the value of our variable 'isSwitched' whenever we want and we will know that the magnet is nearby if it's value is 'true'. Let's use that to change how the buttons work and complete the code for our trick. We will add an 'if, else' block to each button's code and check if we should swap over what each button displays because 'isSwitched' is equal to true:
```blocks
let force = 0;
let isSwitched = false;
basic.forever(() => {
force = Math.abs(input.magneticForce(Dimension.Strength));
isSwitched = force > 100
isSwitched = Math.abs(input.magneticForce(Dimension.Strength)) > 100
})
input.onButtonPressed(Button.A, () => {

View File

@@ -1,11 +1,51 @@
# rock paper scissors
![](/static/mb/projects/a4-motion.png)
### ~avatar avatar
Build a rock paper scissors game!
```sim
input.onGesture(Gesture.Shake, () => {
let img = Math.random(3)
if (img == 0) {
basic.showLeds(`
# # # # #
# . . . #
# . . . #
# . . . #
# # # # #
`)
} else if (img == 1) {
basic.showLeds(`
. . . . .
. # # # .
. # # # .
. # # # .
. . . . .
`)
} else {
basic.showLeds(`
# # . . #
# # . # .
. . # . .
# # . # .
# # . . #
`)
}
})
```
In this project, you will build a Rock Paper Scissors game with the @boardname@.
You can play the game with a friend who has it on a @boardname@.
You can also play it with friends who are just using their hands.
### ~
## Materials needed
* Your @boardname@ -- that's it!
## Step 1: Getting started
We want the @boardname@ to choose rock, paper, or scissors when you shake it.

View File

@@ -1,10 +1,8 @@
# smiley buttons
### ~avatar
![](/static/mb/projects/a2-buttons.png)
Use buttons to show a smiley face!
### ~
Use buttons to show a smiley or frowny face.
## Step 1
@@ -12,8 +10,8 @@ Use [show leds](/reference/basic/show-leds) to make a smiley face:
```blocks
basic.showLeds(`
# # . # #
# # . # #
. # . # .
. # . # .
. . . . .
# . . . #
. # # # .`
@@ -22,42 +20,21 @@ basic.showLeds(`
## Step 2
Add an input block for when [button A is pressed](/reference/input/button-is-pressed),
and **move** the smiley face inside it:
Add an input block for when [button A is pressed](/reference/input/button-is-pressed), and put a
frowny face inside it:
```blocks
basic.showLeds(`
. # . # .
. # . # .
. . . . .
# . . . #
. # # # .`
);
input.onButtonPressed(Button.A, () => {
basic.showLeds(`
# # . # #
# # . # #
. . . . .
# . . . #
. # # # .`
);
});
```
Try pressing button A!
## Step 3
Now add blocks so that when [button B is pressed](/reference/input/on-button-pressed),
a frowney appears:
```blocks
input.onButtonPressed(Button.A, () => {
basic.showLeds(`
# # . # #
# # . # #
. . . . .
# . . . #
. # # # .`
);
});
input.onButtonPressed(Button.B, () => {
basic.showLeds(`
# # . # #
# # . # #
. # . # .
. # . # .
. . . . .
. # # # .
# . . . #`
@@ -65,50 +42,34 @@ input.onButtonPressed(Button.B, () => {
});
```
Try pressing ``A`` or ``B``!
## Step 3
## Send your smileys over radio
Do you have a second @boardname@ at hand? You could use radio and send your smileys or frownies to other
@boardname@.
Since radio can send numbers, we decide that ``0`` is the code for displaying a smiley
and ``1`` is the code for a frowney.
Change your code as follows:
* [radio send number](/reference/radio/send-number) sends a number
to any other @boardname@ in range
* [radio on data packet received](/reference/radio/on-data-packet-received) runs code
when data is received over radio
Now add blocks so that when [button B is pressed](/reference/input/button-is-pressed), a smiley appears:
```blocks
input.onButtonPressed(Button.A, () => {
radio.sendNumber(0)
})
input.onButtonPressed(Button.B, () => {
radio.sendNumber(1)
})
radio.onDataPacketReceived(({receivedNumber}) => {
if (receivedNumber == 0) {
basic.showLeds(`
# # . # #
# # . # #
. . . . .
# . . . #
. # # # .
`)
} else {
basic.showLeds(`
# # . # #
# # . # #
. . . . .
. # # # .
# . . . #
`)
}
})
```
```package
radio
basic.showLeds(`
. # . # .
. # . # .
. . . . .
# . . . #
. # # # .`
);
input.onButtonPressed(Button.A, () => {
basic.showLeds(`
. # . # .
. # . # .
. . . . .
. # # # .
# . . . #`
);
});
input.onButtonPressed(Button.B, () => {
basic.showLeds(`
. # . # .
. # . # .
. . . . .
# . . . #
. # # # .`
);
});
```

View File

@@ -17,8 +17,8 @@ Build a telegraph between two @boardname@s to communicate with your friends!
## Activities
* [Make](/projects/telegraph/make)
* [Code](/projects/telegraph/code)
* [Making the circuit](/projects/telegraph/make)
* [Manual telegraph](/projects/telegraph/manual-telegraph)
### ~button /projects/telegraph/make
Let's get started!

View File

@@ -1,4 +1,4 @@
# Make
# telegraph - making
### ~avatar
@@ -68,8 +68,8 @@ Using the 4th crocodile clip, connect the unattached end of the crocodile clip o
![](/static/mb/lessons/telegraph-0.png)
### ~button /projects/telegraph/code
### ~button /projects/telegraph/manual-telegraph
NEXT: Code
NEXT: manual telegraph
### ~

View File

@@ -1,4 +1,4 @@
# Code
# telegraph - manual telegraph
Let's build the code that will send a impulse while the user presses ``A``.

View File

@@ -1,14 +1,12 @@
# the watch - Make
![](/static/mb/projects/a10-watch.png)
### @description Maker Project for Watch
# the watch
### ~avatar avatar
![](/static/mb/lessons/the-watch-0.png)
Make a watch for your @boardname@
In this project, you will build your own wearable @boardname@ watch from an old pair of jeans and T-shirt. Project duration: 15 minutes.
### ~
## Duration: ~30 minutes
![](/static/mb/lessons/the-watch-1.png)
## Materials
@@ -149,3 +147,8 @@ Trim any leftover fabric, threads or tape.
![](/static/mb/lessons/the-watch-23.png)
Your watch is ready!
### Acknowledgements
Artistic design by Melinda Hoeneisen.

View File

@@ -1,5 +1,7 @@
# Wallet
![wallet icon](/static/mb/projects/wallet.png)
### @description A beginner maker activity, building a duct tape wallet with the @boardname@
### ~avatar avatar
@@ -10,6 +12,23 @@ Make a @boardname@ wallet with this guided tutorial!
![wallet image](/static/mb/projects/wallet/wallet.jpg)
## Duration
2 Activities, approx 30-45 min each based on familiarity with the coding concepts
## Materials
* Paper sheet
* Tape (masking, duct tape, and/or packing tape)
* Scissors
* 1 @boardname@, battery holder and 2 AAA batteries
* Marker or pen
## Activities
* [Make](/projects/wallet/make)
* [Code](/projects/wallet/code)
### ~button /projects/wallet/make
Let's get started!

View File

@@ -1,4 +1,4 @@
# Code
# Wallet - Code
## Simple animation

View File

@@ -1,4 +1,4 @@
# Make
# Wallet - Make
### @description Maker Project for Wallet

View File

@@ -1,20 +0,0 @@
# the watch
### ~avatar
Build your own @boardname@ watch from an old pair of jeans and T-shirt!
### ~
![](/static/mb/lessons/the-watch-1.png)
### ~button /projects/watch/make
Let's get started!
### ~
### Acknowledgements
Artistic design by Melinda Hoeneisen.

View File

@@ -30,7 +30,7 @@ control.inBackground(() => {
```
## Bluetooth
```namespaces
devices.tellCameraTo(MesCameraEvent.TakePhoto);
bluetooth.onBluetoothConnected(() => {});

View File

@@ -4,7 +4,6 @@ Provides access to basic @boardname@ functionality.
```cards
basic.showNumber(0);
basic.showIcon(IconNames.Heart);
basic.showLeds(`
. . . . .
. . . . .
@@ -25,7 +24,6 @@ basic.plotLeds(`
. . . . .
. . . . .
`);
basic.showArrow(ArrowNames.North);
basic.showAnimation(`
. . . . .
. . . . .
@@ -37,8 +35,6 @@ basic.showAnimation(`
### See Also
[showNumber](/reference/basic/show-number),
[showIcon](/reference/basic/show-icon),
[showLeds](/reference/basic/show-leds), [showString](/reference/basic/show-string),
[showNumber](/reference/basic/show-number), [showLeds](/reference/basic/show-leds), [showString](/reference/basic/show-string),
[clearScreen](/reference/basic/clear-screen), [forever](/reference/basic/forever), [pause](/reference/basic/pause),
[showAnimation](/reference/basic/show-animation)

View File

@@ -18,15 +18,15 @@ and updates the screen with the direction.
basic.forever(() => {
let heading = input.compassHeading()
if (heading < 45) {
basic.showString("N")
basic.showString("N", 100)
} else if (heading < 135) {
basic.showString("E")
basic.showString("E", 100)
}
else if (heading < 225) {
basic.showString("S")
basic.showString("S", 100)
}
else {
basic.showString("W")
basic.showString("W", 100)
}
})
```
@@ -40,7 +40,7 @@ You can use a program like this to count things with your @boardname@.
```blocks
let num = 0
basic.forever(() => {
basic.showNumber(num)
basic.showNumber(num, 150)
})
input.onButtonPressed(Button.A, () => {
num = num + 1
@@ -56,10 +56,10 @@ Try this on your @boardname@:
```blocks
basic.forever(() => {
basic.showNumber(6789)
basic.showNumber(6789, 150)
})
input.onButtonPressed(Button.A, () => {
basic.showNumber(2)
basic.showNumber(2, 150)
})
```

View File

@@ -1,23 +0,0 @@
# Show Arrow
Shows the selected arrow on the LED screen
```sig
basic.showArrow(ArrowNames.North)
```
### Example
This program shows all eight arrows.
```blocks
for (let index = 0; index <= 7; index++) {
basic.showArrow(index)
basic.pause(300)
}
```
### See also
[showIcon](/reference/basic/show-icon),
[showLeds](/reference/basic/show-leds)

View File

@@ -1,21 +0,0 @@
# Show Icon
Shows the selected icon on the LED screen
```sig
basic.showIcon(IconNames.Heart)
```
### Example
This program shows a happy face and then a sad face with the ``show icon`` function, with a one second pause in between.
```blocks
basic.showIcon(IconNames.Happy)
basic.pause(1000)
basic.showIcon(IconNames.Sad)
```
### See also
[showLeds](/reference/basic/show-leds)

View File

@@ -19,7 +19,6 @@ bluetooth.startMagnetometerService();
bluetooth.startTemperatureService();
bluetooth.onBluetoothConnected(() => {});
bluetooth.onBluetoothDisconnected(() => {});
bluetooth.setTransmitPower(7);
```
## UART
@@ -32,14 +31,6 @@ bluetooth.uartWriteNumber(0);
bluetooth.uartWriteValue("", 0);
```
## Eddystone
```cards
bluetooth.advertiseUid(42, 1, 7, true);
bluetooth.advertiseUrl("https://pxt.microbit.org/", 7, true);
bluetooth.stopAdvertising();
```
```package
bluetooth
```
@@ -56,7 +47,4 @@ For more advanced information on the @boardname@ Bluetooth UART service includin
[uartWriteString](/reference/bluetooth/uart-write-string),
[uartWriteNumber](/reference/bluetooth/uart-write-number),
[uartWriteValue](/reference/bluetooth/uart-write-value),
[onBluetoothConnected](/reference/bluetooth/on-bluetooth-connected),
[onBluetoothDisconnected](/reference/bluetooth/on-bluetooth-disconnected),
[advertiseUrl](/reference/bluetooth/advertise-url),
[stopAdvertising](/reference/bluetooth/stop-advertising)
[onBluetoothConnected](/reference/bluetooth/on-bluetooth-connected), [onBluetoothDisconnected](/reference/bluetooth/on-bluetooth-disconnected)

View File

@@ -1,37 +0,0 @@
# Avertise UID Buffer
Advertises a UID via the Eddystone protocol over Bluetooth.
## ~hint
### Eddystone
Bluetooth beacons are used to indicate proximity to a place or object of interest.
Beacons use Bluetooth advertising to broadcast a small amount of data,
which can be received and acted upon by anyone in range with a suitable device and software, typically a smartphone and application.
There are various beacon message formats, which define the way Bluetooth advertising packets are used as containers for beacon data.
iBeacon is Apple's beacon message format. Eddystone comes from Google.
Read more at https://lancaster-university.github.io/microbit-docs/ble/eddystone/ .
## ~
```sig
bluetooth.advertiseUidBuffer(pins.createBuffer(16), 7, true);
```
### Parameters
* ``buffer`` - a 16 bytes buffer containing the namespace (first 10 bytes) and instance (last 6 bytes).
* ``power`` - a [number](/reference/types/number) representing the power level between 0 (short) and 7 (maximum range).
* ``connectable`` - a [boolean](/blocks/logic/boolean) indicating whether or not the @boardname@ should accept connections.
## See Also
[stop-advertising](/reference/bluetooth/stop-advertising), [advertise-uid](/reference/bluetooth/advertise-uid)
```package
bluetooth
```

View File

@@ -1,46 +0,0 @@
# Avertise UID
Advertises a UID via the Eddystone protocol over Bluetooth.
## ~hint
### Eddystone
Bluetooth beacons are used to indicate proximity to a place or object of interest.
Beacons use Bluetooth advertising to broadcast a small amount of data,
which can be received and acted upon by anyone in range with a suitable device and software, typically a smartphone and application.
There are various beacon message formats, which define the way Bluetooth advertising packets are used as containers for beacon data.
iBeacon is Apple's beacon message format. Eddystone comes from Google.
Read more at https://lancaster-university.github.io/microbit-docs/ble/eddystone/ .
## ~
```sig
bluetooth.advertiseUid(42, 1, 7, true);
```
### Parameters
* ``namespace`` last 4 bytes of the namespace uid (6 to 9)
* ``instance`` last 4 bytes of the instance (2 to 5)
* ``power`` - a [number](/reference/types/number) representing the power level between 0 (short) and 7 (maximum range).
* ``connectable`` - a [boolean](/blocks/logic/boolean) indicating whether or not the @boardname@ should accept connections.
## Encoding
The bytes of ``namespace`` and ``instance`` are encoded to generate the 10 bytes UID namespace and 6 bytes UID instance.
```
UID namespace: [0, ..., namespace]
UID instance: [0, ..., instance]
```
## See Also
[stop-advertising](/reference/bluetooth/stop-advertising), [advertise-uid-buffer](/reference/bluetooth/advertise-uid-buffer)
```package
bluetooth
```

View File

@@ -1,42 +0,0 @@
# Avertise Url
Advertises a URL via the Eddystone protocol over Bluetooth.
## ~hint
### Eddystone
Bluetooth beacons are used to indicate proximity to a place or object of interest.
Beacons use Bluetooth advertising to broadcast a small amount of data,
which can be received and acted upon by anyone in range with a suitable device and software, typically a smartphone and application.
There are various beacon message formats, which define the way Bluetooth advertising packets are used as containers for beacon data.
iBeacon is Apple's beacon message format. Eddystone comes from Google.
Read more at https://lancaster-university.github.io/microbit-docs/ble/eddystone/ .
## ~
```sig
bluetooth.advertiseUrl("https://pxt.microbit.org/", 7, true);
```
### Parameters
* ``url`` - a [string](/reference/types/string) containing the URL to broadcast, at most 17 characters long, excluding the protocol (eg: ``https://``) which gets encoded as 1 byte.
* ``power`` - a [number](/reference/types/number) representing the power level between 0 (short) and 7 (maximum range).
* ``connectable`` - a [boolean](/blocks/logic/boolean) indicating whether or not the @boardname@ should accept connections.
### Example: Broadcast a secret code
```blocks
bluetooth.advertiseUrl("https://pxt.io?secret=42", 7, true);
```
## See Also
[stop-advertising](/reference/bluetooth/stop-advertising), [advertise-uid](/reference/bluetooth/advertise-uid)
```package
bluetooth
```

View File

@@ -1,26 +0,0 @@
# Bluetooth Set Transmit Power
### ~hint
![](/static/bluetooth/Bluetooth_SIG.png)
For another device like a smartphone to use any of the Bluetooth "services" which the @boardname@ has, it must first be [paired with the @boardname@](/reference/bluetooth/bluetooth-pairing). Once paired, the other device may connect to the @boardname@ and exchange data relating to many of the @boardname@'s features.
### ~
Change the output power level of the transmitter to the given value.
```sig
bluetooth.setTransmitPower(7);
```
### Parameters
* `power`: a [number](/reference/types/number) in the range ``0..7``, where ``0`` is the lowest power and ``7`` is the highest.
### See also
[About Bluetooth](/reference/bluetooth/about-bluetooth), [@boardname@ Bluetooth profile overview ](http://lancaster-university.github.io/microbit-docs/ble/profile/), [@boardname@ Bluetooth profile reference](http://lancaster-university.github.io/microbit-docs/resources/bluetooth/microbit-profile-V1.9-Level-2.pdf), [Bluetooth on @boardname@ resources](http://bluetooth-mdw.blogspot.co.uk/p/bbc-microbit.html), [Bluetooth SIG](https://www.bluetooth.com)
```package
bluetooth
```

View File

@@ -1,38 +0,0 @@
# Stop Advertising
Stops advertising URL via the Eddystone protocol over Bluetooth.
## ~hint
### Eddystone
Bluetooth beacons are used to indicate proximity to a place or object of interest.
Beacons use Bluetooth advertising to broadcast a small amount of data,
which can be received and acted upon by anyone in range with a suitable device and software, typically a smartphone and application.
There are various beacon message formats, which define the way Bluetooth advertising packets are used as containers for beacon data.
iBeacon is Apple's beacon message format. Eddystone comes from Google.
Read more at https://lancaster-university.github.io/microbit-docs/ble/eddystone/ .
## ~
```sig
bluetooth.stopAdvertising();
```
### Example: stop advertising on button pressed
```blocks
input.onButtonPressed(Button.A, () => {
bluetooth.stopAdvertising();
})
```
## See Also
[advertise-url](/reference/bluetooth/advertise-url)
```package
bluetooth
```

View File

@@ -1,29 +0,0 @@
# Play Built-in Melody
Play a built in musical melody through pin ``P0`` of the @boardname@.
## Simulator
This function only works on the @boardname@ and in some browsers.
```sig
music.playBuiltinMelody(Melodies.Entertainer)
```
### Parameters
* ``melody`` is the kind of built-in melody you want to play
## Example
This example plays the ``Entertainer`` melody.
```blocks
music.playBuiltinMelody(Melodies.Entertainer)
```
### See also
[play tone](/reference/music/play-tone), [rest](/reference/music/rest), [ring tone](/reference/music/ring-tone) , [tempo](/reference/music/tempo), [set tempo](/reference/music/set-tempo),
[change tempo by](/reference/music/change-tempo-by)

View File

@@ -25,15 +25,6 @@ let freq = music.noteFrequency(Note.C)
music.playTone(freq, 1000)
```
### Using other pins
Use [analogSetPitchPin](/reference/pins/analog-set-pitch-pin) to change that pin used to generate music.
```blocks
pins.analogSetPitchPin(AnalogPin.P1);
```
### See also
[rest](/reference/music/rest), [ring tone](/reference/music/ring-tone) , [tempo](/reference/music/tempo), [set tempo](/reference/music/set-tempo),

View File

@@ -32,14 +32,6 @@ basic.forever(() => {
})
```
### Using other pins
Use [analogSetPitchPin](/reference/pins/analog-set-pitch-pin) to change that pin used to generate music.
```blocks
pins.analogSetPitchPin(AnalogPin.P1);
```
### See also
[rest](/reference/music/rest), [play tone](/reference/music/play-tone),

View File

@@ -5,23 +5,23 @@ Control currents in Pins for analog/digital signals, servos, i2c, ...
```cards
pins.digitalReadPin(DigitalPin.P0);
pins.digitalWritePin(DigitalPin.P0, 0);
pins.analogReadPin(AnalogPin.P0);
pins.analogWritePin(AnalogPin.P0, 1023);
pins.analogSetPeriod(AnalogPin.P0, 20000);
pins.analogReadPin(AnalogPin.P1);
pins.analogWritePin(AnalogPin.P1, 1023);
pins.analogSetPeriod(AnalogPin.P1, 20000);
pins.map(0, 0, 1023, 0, 4);
pins.onPulsed(DigitalPin.P0, PulseValue.High, () => {
});
pins.pulseDuration();
pins.pulseIn(DigitalPin.P0, PulseValue.High);
pins.servoWritePin(AnalogPin.P0, 180);
pins.servoSetPulse(AnalogPin.P0, 1500);
pins.servoWritePin(AnalogPin.P1, 180);
pins.servoSetPulse(AnalogPin.P1, 1500);
pins.i2cReadNumber(0, NumberFormat.Int8LE);
pins.i2cWriteNumber(0, 0, NumberFormat.Int8LE);
pins.spiWrite(0);
pins.setPull(DigitalPin.P0, PinPullMode.PullDown);
pins.analogPitch(0, 0);
pins.analogSetPitchPin(AnalogPin.P0);
pins.analogSetPitchPin(AnalogPin.P1);
```
### See Also

View File

@@ -1,7 +1,6 @@
# Analog Pitch
Emits a Pulse With Modulation (PWM) signal to the pin ``P0``.
Use [analog set pitch pin](/reference/pins/analog-set-pitch-pin) to set the current pitch pin.
Emits a Pulse With Modulation (PWM) signal to the current pitch [pin](/device/pins). Use [analog set pitch pin](/reference/pins/analog-set-pitch-pin) to set the current pitch pin.
```sig
pins.analogPitch(440, 300)
@@ -18,7 +17,6 @@ pins.analogPitch(440, 300)
pins.analogSetPitchPin("P0")
let frequency1 = 440
let duration = 1000
pins.analogSetPitchPin(AnalogPin.P1);
pins.analogPitch(frequency1, duration)
```

View File

@@ -4,7 +4,7 @@ Read an **analog** signal (`0` through `1023`) from the
[pin](/device/pins) you say.
```sig
pins.analogReadPin(AnalogPin.P0)
pins.analogReadPin(AnalogPin.P1)
```
### Parameters

View File

@@ -5,7 +5,7 @@ analog [pin](/device/pins).
Before you call this function, you should set the specified pin as analog.
```sig
pins.analogSetPeriod(AnalogPin.P0, 20000)
pins.analogSetPeriod(AnalogPin.P1, 20000)
```
### Parameters
@@ -17,8 +17,8 @@ The following code first sets `P0` to analog with **analog write
pin**, and then sets the PWM period of `P0` to 20,000 microseconds.
```blocks
pins.analogWritePin(AnalogPin.P0, 512)
pins.analogSetPeriod(AnalogPin.P0, 20000)
pins.analogWritePin(AnalogPin.P1, 512)
pins.analogSetPeriod(AnalogPin.P1, 20000)
```
### See also

View File

@@ -3,7 +3,7 @@
Specify which [pin](/device/pins) (P0, P1, P2) is used to generate tones.
```sig
pins.analogSetPitchPin(AnalogPin.P0)
pins.analogSetPitchPin(AnalogPin.P1)
```
### Parameters
@@ -13,7 +13,7 @@ pins.analogSetPitchPin(AnalogPin.P0)
### Example
```blocks
pins.analogSetPitchPin(AnalogPin.P0)
pins.analogSetPitchPin(AnalogPin.P1)
let frequency = 440
let duration = 1000
pins.analogPitch(frequency, duration)

View File

@@ -4,7 +4,7 @@ Write an **analog** signal (`0` through `1023`) to the
[pin](/device/pins) you say.
```sig
pins.analogWritePin(AnalogPin.P0, 400)
pins.analogWritePin(AnalogPin.P1, 400)
```
### Parameters
@@ -17,7 +17,7 @@ pins.analogWritePin(AnalogPin.P0, 400)
This program writes `1023` to pin `P0`.
```blocks
pins.analogWritePin(AnalogPin.P0, 1023)
pins.analogWritePin(AnalogPin.P1, 1023)
```
#### ~hint

View File

@@ -28,7 +28,7 @@ This example maps the value read from the analog pin `P0` to an LED
coordinate between `0` and `4`.
```blocks
let value1 = pins.analogReadPin(AnalogPin.P0)
let value1 = pins.analogReadPin(AnalogPin.P1)
let index = pins.map(value1, 0, 1023, 0, 4)
led.plot(0, index)
```

View File

@@ -17,7 +17,7 @@ pins.servoSetPulse(AnalogPin.P1, 1500)
The following code sets the servo pulse to `1000` microseconds.
```blocks
pins.servoSetPulse(AnalogPin.P0, 1000)
pins.servoSetPulse(AnalogPin.P1, 1000)
```
### See also

View File

@@ -9,7 +9,7 @@ full speed in one direction, `180` specifies full speed in the other,
and approximately `90` specifies no movement.)
```sig
pins.servoWritePin(AnalogPin.P0, 180)
pins.servoWritePin(AnalogPin.P1, 180)
```
### Parameters
@@ -22,7 +22,7 @@ pins.servoWritePin(AnalogPin.P0, 180)
#### Setting the shaft angle to midpoint on a servo
```blocks
pins.servoWritePin(AnalogPin.P0, 90)
pins.servoWritePin(AnalogPin.P1, 90)
```
#### Controlling the shaft by using the tilt information of the accelerometer
@@ -32,14 +32,14 @@ basic.forever(() => {
let millig = input.acceleration(Dimension.X)
// map accelerometer readings to angle
let angle = pins.map(millig, -1023, 1023, 0, 180)
pins.servoWritePin(AnalogPin.P0, angle)
pins.servoWritePin(AnalogPin.P1, angle)
})
```
#### Setting the full speed on a continuous servo
```blocks
pins.servoWritePin(AnalogPin.P0, 0)
pins.servoWritePin(AnalogPin.P1, 0)
```
### See also

View File

@@ -21,7 +21,7 @@ To add or remove the parts of the packet from the block, try clicking the blue g
* `receivedString` - The [string](/reference/types/string) that was sent in this packet or the empty string if this packet did not contain a string. See [send string](/reference/radio/send-string) and [send value](/reference/radio/send-value)
* `time` - The system time of the @boardname@ that sent this packet at the time the packet was sent.
* `serial` - The serial number of the @boardname@ that sent this packet or `0` if the @boardname@ did not include its serial number.
* `signal` - How strong the radio signal is from `-128` (weak) to `-42` (strong).
* `signal` - How strong the radio signal is from `255` (weak) to `0` (strong).
### Example
@@ -39,23 +39,6 @@ radio.onDataPacketReceived(({ receivedNumber }) => {
})
```
### Example
This program uses the signal strength from received packets to graph the
approximate distance between two @boardname@s.
```blocks
basic.forever(() => {
radio.sendNumber(0)
})
radio.onDataPacketReceived(({ signal, receivedNumber }) => {
led.plotBarGraph(
Math.abs(signal + 42),
128 - 42
)
})
```
### See also
[send number](/reference/radio/send-number),

View File

@@ -2,8 +2,8 @@
> Note: This API has been deprecated! Use [on data packet received](/reference/radio/on-data-packet-received) instead.
Find how strong the ``radio`` signal is, from `-128` to `-42`.
(`-128` means a weak signal and `-42` means a strong one.)
Find how strong the ``radio`` signal is, from `255` to `0`.
(`255` means a weak signal and `0` means a strong one.)
The @boardname@ finds the signal strength by checking how strong it was
the last time it ran the
@@ -16,7 +16,7 @@ radio.receivedSignalStrength();
### Returns
* a [number](/reference/types/number) between `-128` and `-42` that means
* a [number](/reference/types/number) between `255` and `0` that means
how strong the signal is.
### Simulator

View File

@@ -1,28 +0,0 @@
# Serial Read Until
Read a text from the serial port until a delimiter is found.
```sig
serial.readUntil(",");
```
### Returns
* a [string](/reference/types/string) containing input from the serial port, such as a response typed by a user
### Example
The following example reads strings separated by commands (``,``).
```blocks
basic.forever(() => {
let answer = serial.readUntil(",");
serial.writeLine(answer);
});
```
### See also
[serial](/device/serial),
[serial write line](/reference/serial/write-line),
[serial write value](/reference/serial/write-value)

17
docs/static/Calliopeminieditor.svg vendored Normal file
View File

@@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg xmlns="http://www.w3.org/2000/svg" width="179.9" height="32.4" viewBox="0 0 179.9 32.4">
<path fill="#495260" d="M33.1 11.2h-8.5V5.8c0-2.3 1.9-4.2 4.2-4.2 2.3 0 4.2 1.9 4.2 4.2v5.4z"/>
<path fill="#7F96A1" d="M25.8 3.6H32v7.6h-6.2z"/>
<path fill="#845B32" d="M12.2 7.2V18h12.5V7.2c0-3.4-2.8-6.2-6.2-6.2s-6.3 2.8-6.3 6.2z"/>
<path fill="#26A7AA" d="M28.9 31.4H8.7c-6.3 0-9-8-4-11.8L16 11.2h17.1v16c0 2.3-1.9 4.2-4.2 4.2z"/>
<path fill="#43C9C9" d="M15.2 17.7l-8.8.7 10.7-8"/>
<path fill="#F6F4E7" d="M14.8 15.1l2.3-4.7 1.5 4.7m0 0l1.4-4.7 2.3 4.7"/>
<path fill="#BDD1CF" d="M21.9 17.7h-6.7l-.4-2.6h7.5"/>
<path fill="#F6F4E7" d="M26.8 31.4c-.6-4.6-1.9-10.2-4.8-13.7h-6.8c-3 3.5-4.2 9.1-4.8 13.7h16.4z"/>
<path fill="#FFCD9A" d="M18.6 10.5c-1.4 0-2.6-1.2-2.6-2.6V5h5.1v2.9c0 1.5-1.1 2.6-2.5 2.6z"/>
<path fill="#BDD1CF" d="M15.4 31.4V17.7c2.2 5.1 4.9 11.3 8.2 13.7h-8.2z"/>
<path fill="#FFCD9A" d="M17.1 10.4l1.5 4.7 1.4-4.7"/>
<path fill="#43C9C9" d="M25.8 11.2h7.3v9.4"/>
<path fill="#BCD1CF" d="M52.3 15.1h-1.6l-.2-1.4c-.2-.2-.5-.4-.8-.5s-.7-.2-1.2-.2c-.9 0-1.7.3-2.2 1s-.8 1.6-.8 2.7v.4c0 1.1.3 2 .8 2.7.5.7 1.2 1 2.1 1 .4 0 .8-.1 1.2-.2.4-.1.6-.3.8-.5l.2-1.4h1.6v2.1c-.4.5-1 .9-1.7 1.2-.7.3-1.4.5-2.3.5-1.5 0-2.6-.5-3.6-1.5s-1.4-2.3-1.4-3.9v-.4c0-1.6.5-2.9 1.4-3.9s2.1-1.5 3.6-1.5c.8 0 1.6.2 2.3.5.7.3 1.2.7 1.7 1.2v2.1zm1.5 5.9l.8-.1 3.3-9.4h2.2l3.3 9.4.8.1v1.3h-3.7V21l.8-.1-.5-1.5h-3.5l-.5 1.5.8.1v1.3h-3.7V21zm3.9-3.2h2.5L59 14l-1.3 3.8zm7.8 4.5V21l1.2-.2V13l-1.2-.2v-1.3H70v1.3l-1.2.2v7.6h3.1l.1-1.4h1.7v3h-8.2zm9.5 0V21l1.2-.2V13l-1.2-.2v-1.3h4.6v1.3l-1.3.2v7.6h3.1l.1-1.4h1.7v3H75zm9.5-9.5v-1.3H89v1.3l-1.1.2v7.8l1.1.2v1.3h-4.5V21l1.2-.2V13l-1.2-.2zm15.9 4.2c0 1.6-.5 2.9-1.4 3.9-.9 1-2.1 1.6-3.6 1.6s-2.6-.5-3.5-1.6-1.4-2.3-1.4-3.9v-.2c0-1.6.4-2.9 1.3-3.9s2.1-1.6 3.5-1.6c1.5 0 2.7.5 3.6 1.6s1.4 2.4 1.4 3.9v.2zm-2.2-.2c0-1.1-.2-2-.7-2.7s-1.2-1-2.1-1-1.6.3-2 1-.7 1.6-.7 2.7v.2c0 1.1.2 2.1.7 2.8.5.7 1.1 1 2 1 .9 0 1.6-.3 2.1-1s.7-1.6.7-2.8v-.2zm8.8-5.3c1.2 0 2.2.3 2.9 1S111 14 111 15s-.4 1.9-1.1 2.5c-.7.6-1.7.9-2.9.9h-1.8v2.4l1.2.2v1.3h-4.5V21l1.2-.2V13l-1.2-.2v-1.3h5.1zm-1.8 5.2h1.8c.6 0 1.1-.2 1.4-.5s.5-.8.5-1.3-.2-1-.5-1.3c-.3-.3-.8-.5-1.4-.5h-1.8v3.6zm14.1.9h-3.7v3.1h3.5l.1-1.3h1.7v3h-8.6V21l1.2-.2V13l-1.2-.2v-1.3h8.6v3h-1.7l-.1-1.3h-3.5v2.7h3.7v1.7z"/>
<path fill="#FFF" d="M134.3 11.6l.1 1.1c.2-.4.5-.7.9-1 .4-.2.8-.4 1.3-.4s.8.1 1.1.3c.3.2.5.5.7.8.2-.3.5-.6.8-.8.3-.2.7-.3 1.2-.3.4 0 .7.1 1 .2.3.1.5.3.8.6.2.3.4.6.5 1 .1.4.2.9.2 1.4v7.8h-2.2v-7.9c0-.4-.1-.7-.3-.9-.2-.2-.4-.2-.7-.2-.3 0-.5.1-.6.2s-.3.3-.3.5v8.3h-2.2v-7.9c0-.4-.1-.7-.3-.9-.2-.2-.4-.3-.7-.3-.3 0-.5.1-.7.2-.2.1-.3.3-.4.5v8.3h-2.2V11.6h2zm11.3 0h5.7v8.8h3.2v2h-8.9v-2h3.3v-6.8h-3.3v-2zm3.1-2.8c0-.4.1-.7.4-.9.2-.2.6-.4 1-.4s.8.1 1 .4c.2.2.4.5.4.9s-.1.7-.4.9c-.2.2-.6.4-1 .4s-.8-.1-1-.4c-.2-.2-.4-.5-.4-.9zm10.7 2.8l.1 1.5c.4-.5.9-1 1.4-1.2.6-.3 1.2-.4 1.8-.4.5 0 1 .1 1.5.2.5.2.8.4 1.2.7.3.3.6.8.8 1.3.2.5.3 1.2.3 1.9v6.7h-2.4v-6.7c0-.4-.1-.8-.2-1.1-.1-.3-.2-.5-.4-.7-.2-.2-.4-.3-.7-.4-.3-.1-.6-.1-.9-.1-.5 0-1 .1-1.4.3-.4.2-.7.5-.9.9v7.7h-2.4V11.6h2.2zm10.6 0h5.7v8.8h3.2v2H170v-2h3.3v-6.8H170v-2zm3.1-2.8c0-.4.1-.7.4-.9.2-.2.6-.4 1-.4s.8.1 1 .4c.2.2.4.5.4.9s-.1.7-.4.9c-.2.2-.6.4-1 .4s-.8-.1-1-.4c-.3-.2-.4-.5-.4-.9z"/>
</svg>

After

Width:  |  Height:  |  Size: 3.2 KiB

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

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

After

Width:  |  Height:  |  Size: 5.2 KiB

Some files were not shown because too many files have changed in this diff Show More