Compare commits
47 Commits
Author | SHA1 | Date | |
---|---|---|---|
f04a76a95f | |||
88969da972 | |||
b19e5c4e4b | |||
15caad8b02 | |||
22ce6a8716 | |||
c288242b9c | |||
a8249e94c5 | |||
92fbc1552b | |||
92f29ef5d6 | |||
c7fabfd994 | |||
df49475a26 | |||
17d8e61ebc | |||
dbdc1810cd | |||
d3b7530b17 | |||
e31f4c934f | |||
b22ec74f7e | |||
cd38f670d2 | |||
8fca537251 | |||
cf39956e2d | |||
9e3a8ab4ed | |||
022a6765bf | |||
1e4edc5109 | |||
caf273be84 | |||
ccba83cfab | |||
8417c6ce57 | |||
39236fe8b2 | |||
f50aabeec5 | |||
c2167b6405 | |||
59dcd1ee72 | |||
bf8f73f885 | |||
a81e3b9f11 | |||
e90b6a7946 | |||
7ce6c8b773 | |||
022651b338 | |||
8d0bc280a0 | |||
7b61a8fbc3 | |||
1d45652ab2 | |||
4db9c8bc0a | |||
df99fa1699 | |||
ef218bcc24 | |||
99ccbfc348 | |||
101306b8f8 | |||
e167f109b0 | |||
e5d78d65cb | |||
b79881ade0 | |||
a05d12abdf | |||
6c2cd1a658 |
35
.github/ISSUE_TEMPLATE/bug_report.md
vendored
Normal file
@ -0,0 +1,35 @@
|
||||
---
|
||||
name: Bug report
|
||||
about: Create a report to help us improve
|
||||
|
||||
---
|
||||
|
||||
**Describe the bug**
|
||||
A clear and concise description of what the bug is.
|
||||
|
||||
**To Reproduce**
|
||||
Steps to reproduce the behavior:
|
||||
1. Go to '...'
|
||||
2. Click on '....'
|
||||
3. Scroll down to '....'
|
||||
4. See error
|
||||
|
||||
**Expected behavior**
|
||||
A clear and concise description of what you expected to happen.
|
||||
|
||||
**Screenshots**
|
||||
Add screenshots to help explain your problem. You can copy paste the screenshot in the github report. The .gif screen recording is very useful as well.
|
||||
|
||||
**Desktop (please complete the following information):**
|
||||
- OS: [e.g. iOS]
|
||||
- Browser [e.g. chrome, safari]
|
||||
- Version [e.g. 22]
|
||||
|
||||
**Smartphone (please complete the following information):**
|
||||
- Device: [e.g. iPhone6]
|
||||
- OS: [e.g. iOS8.1]
|
||||
- Browser [e.g. stock browser, safari]
|
||||
- Version [e.g. 22]
|
||||
|
||||
**Additional context**
|
||||
Add any other context about the problem here.
|
17
.github/ISSUE_TEMPLATE/feature_request.md
vendored
Normal file
@ -0,0 +1,17 @@
|
||||
---
|
||||
name: Feature request
|
||||
about: Suggest an idea for this project
|
||||
|
||||
---
|
||||
|
||||
**Is your feature request related to a problem? Please describe.**
|
||||
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
|
||||
|
||||
**Describe the solution you'd like**
|
||||
A clear and concise description of what you want to happen.
|
||||
|
||||
**Describe alternatives you've considered**
|
||||
A clear and concise description of any alternative solutions or features you've considered.
|
||||
|
||||
**Additional context**
|
||||
Add any other context or screenshots about the feature request here.
|
@ -24,7 +24,6 @@ In a common folder,
|
||||
|
||||
```
|
||||
npm install
|
||||
typings install
|
||||
```
|
||||
|
||||
* go to ``pxt-common-packages`` and run
|
||||
|
@ -3,8 +3,8 @@
|
||||
## Support #support
|
||||
|
||||
* [Troubleshoot](/troubleshoot)
|
||||
* [LEGO Support](http://service.lego.com/)
|
||||
* [EV3 Manager](https://ev3manager.education.lego.com/)
|
||||
* [LEGO Support](https://www.lego.com/service/)
|
||||
|
||||
## Projects #projects
|
||||
|
||||
|
@ -22,7 +22,7 @@ In nature, creatures use many methods to get around. None of them, however, use
|
||||
|
||||
### Build
|
||||
|
||||
Think about a creature’s movement for inspiration. Will you make the robot walk, crawl, hop, or wiggle? Your mechanism can be attached or unattached to the EV3 brick. You can start by tinkering with the LEGO elements in the picture above and then build on.
|
||||
Think about a creature’s movement for inspiration. Will you make the robot walk, crawl, hop, or wiggle? Your mechanism can be attached or unattached to the EV3 Brick. You can start by tinkering with the LEGO elements in the picture above and then build on.
|
||||
|
||||
### Building Hint
|
||||
|
||||
|
@ -32,7 +32,7 @@ Think about:
|
||||
|
||||
### Build
|
||||
|
||||
Think about a creature’s movement for inspiration. Your mechanism can be attached or unattached to the EV3 brick. You can start by tinkering with the LEGO elements in the picture add then build on.
|
||||
Think about a creature’s movement for inspiration. Your mechanism can be attached or unattached to the EV3 Brick. You can start by tinkering with the LEGO elements in the picture add then build on.
|
||||
|
||||
More building ideas:
|
||||
|
||||
@ -92,7 +92,7 @@ This program checks if the Ultrasonic Sensor senses something near.
|
||||
|
||||
The blocks inside the ``||loops:forever||`` loop have these actions:
|
||||
|
||||
1. Turn on the ``green`` EV3 brick Status Light.
|
||||
1. Turn on the ``green`` EV3 Brick Status Light.
|
||||
2. Wait for Ultrasonic Sensor to detect an object.
|
||||
3. Turn on Motors ``A`` and ``D`` in opposite directions.
|
||||
4. Wait for one quarter of a second (``1500`` milli seconds).
|
||||
|
@ -4,6 +4,14 @@
|
||||
|
||||
```codecard
|
||||
[
|
||||
{
|
||||
"name": "Prepare",
|
||||
"imageUrl": "/static/lessons/firmware.png",
|
||||
"description": "To use Microsoft MakeCode with your EV3 Brick, you will need to install the latest LEGO MINDSTORMS Education EV3 firmware - version 1.10 or higher. Follow these steps to install the latest firmware from LEGO.",
|
||||
"label": "New? Start Here!",
|
||||
"labelClass": "red ribbon large",
|
||||
"url": "https://makecode.mindstorms.com/troubleshoot"
|
||||
},
|
||||
{
|
||||
"name": "Try",
|
||||
"imageUrl": "/static/lessons/try.png",
|
||||
|
@ -1,10 +1,10 @@
|
||||
# Try
|
||||
# Try
|
||||
|
||||
Get a quick introduction to programming with EV3.
|
||||
|
||||

|
||||
|
||||
We are excited to help you get started with @boardname@. In this project we will guide you through connecting your EV3 brick, creating your first program, controlling a Large Motor, a Touch Sensor and a Color Sensor. These steps can take up to 45 minutes.
|
||||
We are excited to help you get started with @boardname@. In this project we will guide you through connecting your EV3 Brick, creating your first program, controlling a Large Motor, a Touch Sensor and a Color Sensor. These steps can take up to 45 minutes.
|
||||
|
||||
## Turn on your EV3 Brick
|
||||
|
||||
|
@ -1,3 +1,3 @@
|
||||
{
|
||||
"appref": "v0.1.48"
|
||||
"appref": "v0.1.57"
|
||||
}
|
||||
|
@ -37,7 +37,7 @@ Place a ``||motors:tank large B+C||`` block from ``||motors:Motors||`` under ``|
|
||||
Change the speed to `-60%` (for motor B) and `+60%` (for motor C).
|
||||
Change the rotations to `9`.
|
||||
|
||||
The ``||motors:tank large B+C||`` block will run for `9` rotations when the **center** button is pressed on the EV3 brick. The motors are set for the reverse direction because they are mounted upside down in this model.
|
||||
The ``||motors:tank large B+C||`` block will run for `9` rotations when the **center** button is pressed on the EV3 Brick. The motors are set for the reverse direction because they are mounted upside down in this model.
|
||||
|
||||
```blocks
|
||||
motors.largeBC.tank(-60, 60, 9, MoveUnit.Rotations)
|
||||
@ -47,7 +47,7 @@ motors.largeBC.tank(-60, 60, 9, MoveUnit.Rotations)
|
||||
|
||||
Place a ``||motors:stop all motors||`` block under ``||motors:tank large B+C||``.
|
||||
|
||||
The ``||motors:tank large B+C||`` block will run for `9` rotations when the **center** button is pressed on the EV3 brick then stop.
|
||||
The ``||motors:tank large B+C||`` block will run for `9` rotations when the **center** button is pressed on the EV3 Brick then stop.
|
||||
|
||||
```blocks
|
||||
motors.largeBC.tank(-60, 60, 9, MoveUnit.Rotations)
|
||||
@ -59,7 +59,7 @@ motors.stopAll()
|
||||
Place a ``||brick:show string||`` block under ``||motors:stop all motors||``.
|
||||
Change the `"Hello World"` text to `"30 cm"`.
|
||||
|
||||
The ``||motors:tank large B+C||`` will run for `9` rotations when the **center** button is pressed on the EV3 brick then stop and display "30 cm" on the EV3 Brick’s screen.
|
||||
The ``||motors:tank large B+C||`` will run for `9` rotations when the **center** button is pressed on the EV3 Brick then stop and display "30 cm" on the EV3 Brick’s screen.
|
||||
|
||||
```blocks
|
||||
motors.largeBC.tank(-60, 60, 9, MoveUnit.Rotations)
|
||||
|
@ -38,7 +38,7 @@ Place a ``||motors:tank large B+C||`` block from ``||motors:Motors||`` under ``|
|
||||
Change the speed to `-60%` (for motor B) and `+60%` (for motor C).
|
||||
Change the rotations to `9`.
|
||||
|
||||
The ``||motors:tank large B+C||`` block will run for `9` rotations when the **center** button is pressed on the EV3 brick. The motors are set for the reverse direction because they are mounted upside down in this model.
|
||||
The ``||motors:tank large B+C||`` block will run for `9` rotations when the **center** button is pressed on the EV3 Brick. The motors are set for the reverse direction because they are mounted upside down in this model.
|
||||
|
||||
```blocks
|
||||
motors.largeBC.tank(-60, 60, 9, MoveUnit.Rotations)
|
||||
@ -48,7 +48,7 @@ motors.largeBC.tank(-60, 60, 9, MoveUnit.Rotations)
|
||||
|
||||
Place a ``||motors:stop all motors||`` block under ``||motors:tank large B+C||``.
|
||||
|
||||
The ``||motors:tank large B+C||`` block will run for `9` rotations when the **center** button is pressed on the EV3 brick then stop.
|
||||
The ``||motors:tank large B+C||`` block will run for `9` rotations when the **center** button is pressed on the EV3 Brick then stop.
|
||||
|
||||
```blocks
|
||||
motors.largeBC.tank(-60, 60, 9, MoveUnit.Rotations)
|
||||
@ -60,7 +60,7 @@ motors.largeBC.stop()
|
||||
Place a ``||brick:show string||`` block under ``||motors:stop all motors||``.
|
||||
Change the `"Hello World"` text to `"30 cm"`.
|
||||
|
||||
The ``||motors:tank large B+C||`` will run for `9` rotations when the **center** button is pressed on the EV3 brick then stop and display "30 cm" on the EV3 Brick’s screen.
|
||||
The ``||motors:tank large B+C||`` will run for `9` rotations when the **center** button is pressed on the EV3 Brick then stop and display "30 cm" on the EV3 Brick’s screen.
|
||||
|
||||
```blocks
|
||||
motors.largeBC.tank(-60, 60, 9, MoveUnit.Rotations)
|
||||
|
@ -1,9 +1,5 @@
|
||||
# Maker Activites
|
||||
|
||||
These six activities require the [@boardname@ Core Set (45544)](https://education.lego.com/en-us/products/lego-mindstorms-education-ev3-core-set-/5003400). Supporting materials for teachers and middle school students are provided, offering everything teachers and students need to explore their inner makers as they follow the design process to solve open-ended, themed challenges...
|
||||
|
||||
* [Download Curriculum Materials](https://education.lego.com/en-us/downloads/mindstorms-ev3/curriculum)
|
||||
|
||||
## Activites
|
||||
|
||||
```codecard
|
||||
|
BIN
docs/static/favicon.ico
vendored
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 15 KiB |
BIN
docs/static/icons/android-chrome-192x192.png
vendored
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 7.7 KiB |
BIN
docs/static/icons/android-chrome-256x256.png
vendored
Normal file
After Width: | Height: | Size: 11 KiB |
BIN
docs/static/icons/android-chrome-512x512.png
vendored
Before Width: | Height: | Size: 51 KiB |
BIN
docs/static/icons/apple-touch-icon.png
vendored
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 5.0 KiB |
2
docs/static/icons/browserconfig.xml
vendored
@ -3,7 +3,7 @@
|
||||
<msapplication>
|
||||
<tile>
|
||||
<square150x150logo src="/mstile-150x150.png"/>
|
||||
<TileColor>#da532c</TileColor>
|
||||
<TileColor>#33adcb</TileColor>
|
||||
</tile>
|
||||
</msapplication>
|
||||
</browserconfig>
|
||||
|
BIN
docs/static/icons/favicon-16x16.png
vendored
Before Width: | Height: | Size: 966 B After Width: | Height: | Size: 670 B |
BIN
docs/static/icons/favicon-32x32.png
vendored
Before Width: | Height: | Size: 2.0 KiB After Width: | Height: | Size: 1.1 KiB |
BIN
docs/static/icons/favicon.ico
vendored
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 15 KiB |
BIN
docs/static/icons/mstile-150x150.png
vendored
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 5.6 KiB |
54
docs/static/icons/safari-pinned-tab.svg
vendored
@ -2,14 +2,60 @@
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
|
||||
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
|
||||
<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
|
||||
width="904.000000pt" height="904.000000pt" viewBox="0 0 904.000000 904.000000"
|
||||
width="326.000000pt" height="326.000000pt" viewBox="0 0 326.000000 326.000000"
|
||||
preserveAspectRatio="xMidYMid meet">
|
||||
<metadata>
|
||||
Created by potrace 1.11, written by Peter Selinger 2001-2013
|
||||
</metadata>
|
||||
<g transform="translate(0.000000,904.000000) scale(0.100000,-0.100000)"
|
||||
<g transform="translate(0.000000,326.000000) scale(0.100000,-0.100000)"
|
||||
fill="#000000" stroke="none">
|
||||
<path d="M0 4520 l0 -4510 4520 0 4520 0 0 4510 0 4510 -4520 0 -4520 0 0
|
||||
-4510z"/>
|
||||
<path d="M1535 3046 c-5 -2 -35 -9 -65 -16 -30 -7 -69 -23 -85 -36 -38 -30
|
||||
-29 -49 37 -81 131 -64 395 -46 468 32 l22 23 -39 26 c-53 35 -134 53 -239 54
|
||||
-49 1 -93 -1 -99 -2z"/>
|
||||
<path d="M1122 2799 l-64 -30 56 -41 c74 -54 87 -92 93 -269 5 -129 4 -139
|
||||
-20 -190 -97 -213 -600 -265 -788 -82 -38 37 -49 55 -58 101 -6 30 -11 75 -11
|
||||
98 0 24 -4 45 -9 48 -8 5 -228 -88 -243 -102 -3 -4 78 -58 180 -121 295 -181
|
||||
588 -360 987 -606 204 -125 375 -228 381 -228 6 0 154 87 330 193 175 107 330
|
||||
200 344 208 14 7 165 98 335 202 171 103 365 221 432 262 67 40 119 76 115 79
|
||||
-18 18 -236 109 -242 102 -4 -4 -10 -37 -13 -73 -10 -105 -22 -134 -79 -184
|
||||
-29 -25 -57 -46 -64 -46 -7 0 -33 -9 -58 -20 -39 -16 -128 -31 -201 -34 -62
|
||||
-2 -186 18 -248 41 -106 38 -171 87 -204 152 -24 48 -27 63 -24 145 6 224 14
|
||||
253 93 316 l57 45 -71 33 c-39 17 -74 32 -78 32 -5 0 -8 -19 -7 -43 2 -78 -21
|
||||
-134 -72 -177 -153 -132 -500 -137 -674 -9 -39 28 -50 44 -65 93 -11 33 -19
|
||||
77 -18 98 2 47 -6 47 -92 7z m729 -454 c163 -53 253 -149 252 -270 -1 -268
|
||||
-14 -325 -95 -396 -38 -33 -77 -55 -138 -78 -74 -26 -203 -49 -250 -44 -8 1
|
||||
-46 5 -85 8 -105 10 -220 56 -288 117 -74 66 -87 106 -92 293 -4 128 -2 145
|
||||
18 195 29 69 110 135 212 170 92 31 138 37 271 35 90 -2 127 -8 195 -30z"/>
|
||||
<path d="M1619 2246 c-2 -2 -33 -7 -69 -10 -91 -10 -176 -43 -222 -87 -46 -43
|
||||
-45 -64 3 -115 27 -28 112 -66 179 -79 36 -8 188 -8 230 -1 120 20 220 82 220
|
||||
137 0 65 -118 130 -260 145 -36 3 -68 8 -71 10 -3 2 -8 2 -10 0z"/>
|
||||
<path d="M1297 1873 c-3 -2 -1 -18 5 -35 68 -194 612 -185 653 11 7 31 5 33
|
||||
-11 26 -193 -80 -377 -88 -561 -25 -45 16 -84 26 -86 23z"/>
|
||||
<path d="M1350 2775 c0 -68 96 -119 240 -128 144 -9 288 34 309 94 13 39 -1
|
||||
45 -59 24 -112 -40 -311 -38 -432 4 -47 16 -58 17 -58 6z"/>
|
||||
<path d="M680 2674 c-99 -19 -210 -72 -223 -108 -10 -25 31 -64 91 -87 75 -28
|
||||
256 -35 335 -13 107 32 177 77 177 115 0 22 -42 53 -101 74 -44 16 -229 28
|
||||
-279 19z"/>
|
||||
<path d="M2448 2675 c-2 -2 -30 -5 -63 -8 -99 -8 -184 -54 -185 -99 0 -26 74
|
||||
-75 149 -99 96 -30 262 -31 352 0 66 21 90 39 102 73 16 46 -149 121 -285 131
|
||||
-37 2 -69 3 -70 2z"/>
|
||||
<path d="M1050 2380 c-34 -19 -149 -52 -200 -58 -121 -14 -268 -4 -332 23 -48
|
||||
19 -48 19 -48 -9 0 -35 37 -71 101 -97 45 -18 74 -22 174 -22 101 -1 130 3
|
||||
185 23 78 28 125 61 138 99 12 33 3 53 -18 41z"/>
|
||||
<path d="M2184 2363 c2 -16 7 -36 11 -45 13 -32 112 -84 200 -104 11 -3 65 -5
|
||||
120 -6 154 -1 253 41 271 116 6 26 5 28 -12 22 -87 -34 -252 -48 -364 -32 -51
|
||||
8 -161 42 -202 63 -27 13 -28 13 -24 -14z"/>
|
||||
<path d="M11 2146 c4 -31 10 -88 14 -128 4 -40 9 -80 10 -89 2 -9 6 -40 10
|
||||
-70 6 -55 32 -266 40 -329 5 -36 11 -93 20 -177 3 -27 8 -65 11 -85 5 -35 28
|
||||
-53 716 -553 391 -284 712 -514 715 -512 2 3 6 237 7 521 2 369 0 520 -8 530
|
||||
-9 11 -465 295 -576 358 -19 11 -47 29 -62 39 -14 11 -31 19 -37 19 -6 0 -11
|
||||
4 -11 8 0 5 -12 14 -27 21 -14 7 -49 27 -77 45 -52 34 -467 288 -515 316 -14
|
||||
8 -68 41 -120 73 -126 79 -119 78 -110 13z"/>
|
||||
<path d="M2816 1930 c-236 -143 -431 -260 -433 -260 -3 0 -17 -8 -31 -19 -15
|
||||
-10 -166 -103 -337 -206 -170 -103 -313 -191 -316 -196 -7 -13 -12 -1049 -4
|
||||
-1049 4 0 382 267 500 354 11 8 135 96 275 196 140 100 262 186 270 193 8 7
|
||||
94 68 190 136 96 68 180 128 187 135 10 9 28 108 38 214 2 18 6 45 9 60 3 15
|
||||
8 52 11 82 4 30 11 87 16 125 5 39 12 88 15 110 2 22 7 56 9 76 3 20 8 56 10
|
||||
80 3 24 7 60 10 79 10 67 17 150 14 150 -2 0 -197 -117 -433 -260z"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 603 B After Width: | Height: | Size: 3.7 KiB |
16
docs/static/icons/site.webmanifest
vendored
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "",
|
||||
"short_name": "",
|
||||
"name": "MakeCode for EV3",
|
||||
"short_name": "MakeCode for EV3",
|
||||
"icons": [
|
||||
{
|
||||
"src": "/android-chrome-192x192.png",
|
||||
@ -8,12 +8,14 @@
|
||||
"type": "image/png"
|
||||
},
|
||||
{
|
||||
"src": "/android-chrome-512x512.png",
|
||||
"sizes": "512x512",
|
||||
"src": "/android-chrome-256x256.png",
|
||||
"sizes": "256x256",
|
||||
"type": "image/png"
|
||||
}
|
||||
],
|
||||
"theme_color": "#ffffff",
|
||||
"background_color": "#ffffff",
|
||||
"display": "standalone"
|
||||
"theme_color": "#ff0000",
|
||||
"background_color": "#ff0000",
|
||||
"start_url": "makecode.mindstorms.com",
|
||||
"display": "standalone",
|
||||
"orientation": "portrait"
|
||||
}
|
||||
|
BIN
docs/static/lessons/firmware.png
vendored
Normal file
After Width: | Height: | Size: 6.4 KiB |
@ -4,7 +4,7 @@ If your're having trouble getting your code onto the EV3 Brick, try these steps
|
||||
|
||||
## Check your **@drivename@** firmware
|
||||
|
||||
MakeCode requires the firmware version **1.10E** or up.
|
||||
MakeCode needs a firmware version of **1.10E** or higher installed on your brick.
|
||||
|
||||
### ~hint
|
||||
|
||||
@ -12,22 +12,28 @@ Firmware is the software that runs all the basic operations on your brick. Your
|
||||
|
||||
### ~
|
||||
|
||||
To check the version on your brick,
|
||||
To check the the firmware version on your brick:
|
||||
|
||||
* go to the **Settings** menu (wrench symbol)
|
||||
* select to **Brick Info**
|
||||
1. Go to the **Settings** menu (it's under the wrench tool symbol)
|
||||
2. Select **Brick Info** and press ENTER
|
||||
|
||||

|
||||
|
||||
* check the version under **Brick FW:**
|
||||
3. Check the version number under **Brick FW:**
|
||||
|
||||

|
||||
|
||||
If you cannot find the **brick info** or the version is less than **1.10E**, **you need to upgrade your firmware**.
|
||||
If you can't find the **Brick Info** or you see that the version is less than **1.10E**, **you need to upgrade your firmware**.
|
||||
|
||||
**To update your firmware, use the [EV3 manager](https://ev3manager.education.lego.com/)** or follow these instructions: [Updating and Resetting Firmware](https://www.lego.com/en-us/service/help/products/themes-sets/mindstorms/updating-and-resetting-lego-mindstorms-ev3-firmware-408100000007884).
|
||||
## Upgrade your **@drivename@**
|
||||
|
||||
If your EV3 Brick isn't connected to the internet through a computer, or with some other mobile device, you'll need to do a manual update of the firmware. Read the instructions in the **Manual Firmware Update** section of the [Firmware Update](https://education.lego.com/en-us/support/mindstorms-ev3/firmware-update) support page.
|
||||
If your a firmware version level is less than **1.10E**, you need to install an upgraded version. You can upgrade the firmware with the **EV3 Lab** or **EV3 Programming** software. Also, you can do a manual upgrade by downloading the firmware install file. See the [Firmware Update](https://education.lego.com/en-us/support/mindstorms-ev3/firmware-update) support page to learn about the upgrade process.
|
||||
|
||||
### ~ hint
|
||||
|
||||
**Recommended:** Upgrade with the **[EV3 Manager](https://ev3manager.education.lego.com/)**
|
||||
|
||||
### ~
|
||||
|
||||
## Can I see the **@drivename@** drive on my computer?
|
||||
|
||||
|
@ -90,7 +90,7 @@ forever(function () {
|
||||
})
|
||||
```
|
||||
|
||||
# Step 7
|
||||
## Step 7
|
||||
|
||||
In the second ``||motors:tank large motors||`` block in the ``||logic:else||`` clause, change the speed values of the motors from ``50%``, ``50%`` to ``15%``, ``5%``. This slows down the robot, and steers it to the right (because the **B** motor is driving faster than the **C** motor).
|
||||
|
||||
|
@ -6,7 +6,7 @@ Show different moods on your @boardname@.
|
||||
|
||||

|
||||
|
||||
## Step 1
|
||||
## Step 1 @fullscreen
|
||||
|
||||
Open the ``||brick:Brick||`` Toolbox drawer. Drag out a ``||brick:show mood||`` block onto the Workspace, and place it into the ``||loops:on start||`` block. You should hear and see the block click into place.
|
||||
|
||||
|
@ -49,7 +49,7 @@ pxt.editor.initExtensionsAsync = function (opts: pxt.editor.ExtensionOptions): P
|
||||
<span class="ui yellow circular label">1</span>
|
||||
<strong>${lf("Connect the EV3 to your computer with a USB cable")}</strong>
|
||||
<br />
|
||||
<span style="font-size:small">${lf("Use the miniUSB port on the top of the EV3 brick")}</span>
|
||||
<span style="font-size:small">${lf("Use the miniUSB port on the top of the EV3 Brick")}</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -62,7 +62,7 @@ pxt.editor.initExtensionsAsync = function (opts: pxt.editor.ExtensionOptions): P
|
||||
<div class="content">
|
||||
<div class="description">
|
||||
<span class="ui yellow circular label">2</span>
|
||||
<strong>${lf("Move the .uf2 file to the EV3 brick")}</strong>
|
||||
<strong>${lf("Move the .uf2 file to the EV3 Brick")}</strong>
|
||||
<br />
|
||||
<span style="font-size:small">${lf("Locate the downloaded .uf2 file and drag it to the EV3 USB drive")}</span>
|
||||
</div>
|
||||
|
@ -240,7 +240,7 @@ export class FieldMusic extends pxtblockly.FieldImages implements Blockly.FieldC
|
||||
this.stopSounds();
|
||||
}
|
||||
|
||||
private createTextNode_(content: string) {
|
||||
protected createTextNode_(content: string) {
|
||||
const category = this.parseCategory(content);
|
||||
let text = content.substr(content.indexOf(' ') + 1);
|
||||
text = text.length > 15 ? text.substr(0, 12) + "..." : text;
|
||||
|
@ -24,6 +24,7 @@ def projectName = "pxt-ev3"
|
||||
credentialsBinding {
|
||||
string("PXT_ACCESS_TOKEN", "pxt_access_token")
|
||||
string("PXT_RELEASE_REPO", "pxt_release_repo_ev3")
|
||||
string("CROWDIN_KEY", "pxt_crowdin_key")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,6 +0,0 @@
|
||||
{
|
||||
"additionalFilePath": "../../node_modules/pxt-common-packages/libs/automation",
|
||||
"dependencies": {
|
||||
"ev3": "file:../ev3"
|
||||
}
|
||||
}
|
@ -1,3 +0,0 @@
|
||||
# Chassis
|
||||
|
||||
A library to control a chassis.
|
@ -1,97 +0,0 @@
|
||||
/**
|
||||
* A differential drive robot
|
||||
*/
|
||||
//% weight=50 color=#cf00cf
|
||||
namespace chassis {
|
||||
/**
|
||||
* A differential drive robot
|
||||
*/
|
||||
//% fixedInstances
|
||||
export class Chassis {
|
||||
// the motor pair
|
||||
public motors: motors.SynchedMotorPair;
|
||||
// the radius of the wheel (cm)
|
||||
public wheelRadius: number;
|
||||
// the distance between the wheels (cm)
|
||||
public baseLength: number;
|
||||
|
||||
constructor() {
|
||||
this.motors = motors.largeBC;
|
||||
this.wheelRadius = 3;
|
||||
this.baseLength = 12;
|
||||
}
|
||||
|
||||
/**
|
||||
* Makes a differential drive robot move with a given speed (cm/s) and rotation rate (deg/s)
|
||||
* using a unicycle model.
|
||||
* @param speed speed of the center point between motors, eg: 10
|
||||
* @param rotationSpeed rotation of the robot around the center point, eg: 30
|
||||
* @param distance
|
||||
**/
|
||||
//% blockId=motorDrive block="drive %chassis|at %speed|cm/s|turning %rotationSpeed|deg/s"
|
||||
//% inlineInputMode=inline
|
||||
//% weight=95 blockGap=8
|
||||
drive(speed: number, rotationSpeed: number, distance: number = 0) {
|
||||
if (!speed) {
|
||||
this.motors.stop();
|
||||
return;
|
||||
}
|
||||
|
||||
// speed is expressed in %
|
||||
const R = this.wheelRadius; // cm
|
||||
const L = this.baseLength; // cm
|
||||
const PI = 3.14;
|
||||
const maxw = 170 / 60 * 2 * PI; // rad / s
|
||||
const maxv = maxw * R; // cm / s
|
||||
// speed is cm / s
|
||||
const v = speed; // cm / s
|
||||
const w = rotationSpeed / 360 * 2 * PI; // rad / s
|
||||
|
||||
const vr = (2 * v + w * L) / (2 * R); // rad / s
|
||||
const vl = (2 * v - w * L) / (2 * R); // rad / s
|
||||
|
||||
const sr = vr / maxw * 100; // %
|
||||
const sl = vl / maxw * 100; // %
|
||||
|
||||
// cm / (cm/s) = s
|
||||
const seconds = distance / speed;
|
||||
|
||||
this.motors.tank(sr, sl, seconds, MoveUnit.Seconds)
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the wheel radius in centimeters
|
||||
* @param cm
|
||||
*/
|
||||
//% blockId=chassisSetWheelRadius block="set %chassis|wheel radius to %cm|(cm)"
|
||||
setWheelRadius(cm: number) {
|
||||
this.wheelRadius = cm;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the base length in centimeters
|
||||
* @param cm
|
||||
*/
|
||||
//% blockId=chassisSetBaseLength block="set %chassis|base length to %cm|(cm)"
|
||||
setBaseLength(cm: number) {
|
||||
this.baseLength = cm;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the motors used by the chassis, default is B+C
|
||||
* @param motors
|
||||
*/
|
||||
//% blockId=chassisSetMotors block="set %chassis|motors to %motors"
|
||||
//% weight=10
|
||||
setMotors(motors: motors.SynchedMotorPair) {
|
||||
this.motors = motors;
|
||||
}
|
||||
|
||||
toString(): string {
|
||||
return `chassis base ${this.baseLength}, wheel ${this.wheelRadius}`;
|
||||
}
|
||||
}
|
||||
|
||||
//% fixedInstance whenUsed
|
||||
export const chassis = new Chassis();
|
||||
}
|
@ -1,15 +0,0 @@
|
||||
{
|
||||
"name": "chassis",
|
||||
"description": "Chassis robot support",
|
||||
"files": [
|
||||
"README.md",
|
||||
"chassis.ts"
|
||||
],
|
||||
"testFiles": [
|
||||
"test.ts"
|
||||
],
|
||||
"public": true,
|
||||
"dependencies": {
|
||||
"core": "file:../core"
|
||||
}
|
||||
}
|
@ -1 +0,0 @@
|
||||
|
@ -132,6 +132,7 @@ namespace motors {
|
||||
protected _port: Output;
|
||||
protected _portName: string;
|
||||
protected _brake: boolean;
|
||||
private _pauseOnRun: boolean;
|
||||
private _initialized: boolean;
|
||||
private _init: () => void;
|
||||
private _run: (speed: number) => void;
|
||||
@ -142,6 +143,7 @@ namespace motors {
|
||||
this._port = port;
|
||||
this._portName = outputToName(this._port);
|
||||
this._brake = false;
|
||||
this._pauseOnRun = true;
|
||||
this._initialized = false;
|
||||
this._init = init;
|
||||
this._run = run;
|
||||
@ -172,6 +174,19 @@ namespace motors {
|
||||
this._brake = brake;
|
||||
}
|
||||
|
||||
/**
|
||||
* Indicates to pause while a motor moves for a given distance or duration.
|
||||
* @param value true to pause; false to continue the program execution
|
||||
*/
|
||||
//% blockId=outputMotorSetPauseMode block="set %motor|pause on run %brake=toggleOnOff"
|
||||
//% motor.fieldEditor="motors"
|
||||
//% weight=60 blockGap=8
|
||||
//% group="Properties"
|
||||
setPauseOnRun(value: boolean) {
|
||||
this.init();
|
||||
this._pauseOnRun = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Inverts the motor polarity
|
||||
*/
|
||||
@ -201,13 +216,22 @@ namespace motors {
|
||||
this.settle();
|
||||
}
|
||||
|
||||
private settle() {
|
||||
protected settle() {
|
||||
// if we've recently completed a motor command with brake
|
||||
// allow 500ms for robot to settle
|
||||
if(this._brake)
|
||||
if (this._brake)
|
||||
pause(500);
|
||||
}
|
||||
|
||||
protected pauseOnRun(stepsOrTime: number) {
|
||||
if (stepsOrTime && this._pauseOnRun) {
|
||||
// wait till motor is done with this work
|
||||
this.pauseUntilReady();
|
||||
// allow robot to settle
|
||||
this.settle();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Resets the motor(s).
|
||||
*/
|
||||
@ -269,10 +293,7 @@ namespace motors {
|
||||
}
|
||||
|
||||
this._move(useSteps, stepsOrTime, speed);
|
||||
// wait till motor is done with this work
|
||||
this.pauseUntilReady();
|
||||
// allow robot to settle
|
||||
this.settle();
|
||||
this.pauseOnRun(stepsOrTime);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -306,12 +327,12 @@ namespace motors {
|
||||
(Data8) NO – Port number [0 - 3]
|
||||
(Data8) TYPE – Output device type, (0x07: Large motor, Medium motor = 0x08) Dispatch status Unchanged
|
||||
Description This function enables specifying the output device type
|
||||
*/
|
||||
*/
|
||||
for (let i = 0; i < DAL.NUM_OUTPUTS; ++i) {
|
||||
if (this._port & (1 << i)) {
|
||||
const b = mkCmd(i, DAL.opOutputSetType, 1)
|
||||
b.setNumber(NumberFormat.Int8LE, 2, large ? 0x07 : 0x08)
|
||||
writePWM(b)
|
||||
writePWM(b)
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -333,7 +354,7 @@ namespace motors {
|
||||
motors.__motorUsed(this._port, this._large);
|
||||
}
|
||||
|
||||
private __init() {
|
||||
private __init() {
|
||||
this.setOutputType(this._large);
|
||||
}
|
||||
|
||||
@ -572,6 +593,8 @@ namespace motors {
|
||||
stepsOrTime: stepsOrTime,
|
||||
useBrake: this._brake
|
||||
});
|
||||
|
||||
this.pauseOnRun(stepsOrTime);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -164,7 +164,7 @@ void playTone(int frequency, int ms) {
|
||||
}
|
||||
|
||||
/**
|
||||
* Play a tone through the speaker for some amount of time.
|
||||
* Stop all sounds.
|
||||
*/
|
||||
//% help=music/stop-all-sounds
|
||||
//% blockId=music_stop_all_sounds block="stop all sounds"
|
||||
|
2
libs/music/shims.d.ts
vendored
@ -26,7 +26,7 @@ declare namespace music {
|
||||
function playTone(frequency: int32, ms: int32): void;
|
||||
|
||||
/**
|
||||
* Play a tone through the speaker for some amount of time.
|
||||
* Stop all sounds.
|
||||
*/
|
||||
//% help=music/stop-all-sounds
|
||||
//% blockId=music_stop_all_sounds block="stop all sounds"
|
||||
|
2
package-lock.json
generated
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "pxt-ev3",
|
||||
"version": "0.1.49",
|
||||
"version": "0.1.62",
|
||||
"lockfileVersion": 1,
|
||||
"requires": true,
|
||||
"dependencies": {
|
||||
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "pxt-ev3",
|
||||
"version": "0.1.49",
|
||||
"version": "0.1.62",
|
||||
"description": "LEGO MINDSTORMS EV3 for Microsoft MakeCode",
|
||||
"private": true,
|
||||
"keywords": [
|
||||
@ -39,8 +39,8 @@
|
||||
"webfonts-generator": "^0.4.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"pxt-common-packages": "0.22.7",
|
||||
"pxt-core": "3.12.26"
|
||||
"pxt-common-packages": "0.23.15",
|
||||
"pxt-core": "3.18.17"
|
||||
},
|
||||
"scripts": {
|
||||
"test": "node node_modules/pxt-core/built/pxt.js travis"
|
||||
|
@ -95,8 +95,11 @@
|
||||
"privacyUrl": "https://go.microsoft.com/fwlink/?LinkId=521839",
|
||||
"termsOfUseUrl": "https://go.microsoft.com/fwlink/?LinkID=206977",
|
||||
"githubUrl": "https://github.com/Microsoft/pxt-ev3",
|
||||
"betaUrl": "https://makecode.legoeducation.com/about",
|
||||
"driveDisplayName": "EV3",
|
||||
"boardName": "LEGO® MINDSTORMS® Education EV3",
|
||||
"copyrightText": "LEGO, the LEGO logo, MINDSTORMS and the MINDSTORMS EV3 logo are trademarks and/ or copyrights of the LEGO Group. ©2018 The LEGO Group. All rights reserved.",
|
||||
"crowdinProject": "kindscript",
|
||||
"selectLanguage": true,
|
||||
"availableLocales": [
|
||||
"en"
|
||||
@ -105,11 +108,11 @@
|
||||
"docMenu": [
|
||||
{
|
||||
"name": "Support",
|
||||
"path": "http://service.lego.com"
|
||||
"path": "https://www.lego.com/service/"
|
||||
},
|
||||
{
|
||||
"name": "Troubleshoot",
|
||||
"path": "/troubleshoot"
|
||||
"path": "https://makecode.mindstorms.com/troubleshoot"
|
||||
},
|
||||
{
|
||||
"name": "Blocks",
|
||||
@ -168,7 +171,8 @@
|
||||
},
|
||||
"monacoColors": {
|
||||
"editor.background": "#f9f9f9"
|
||||
}
|
||||
},
|
||||
"fileNameExclusiveFilter": "[^a-zA-Z]"
|
||||
},
|
||||
"ignoreDocsErrors": true
|
||||
}
|
||||
|
@ -15,6 +15,6 @@
|
||||
"Maker": "maker"
|
||||
},
|
||||
"electronManifest": {
|
||||
"latest": "v0.1.43"
|
||||
"latest": "v0.1.60"
|
||||
}
|
||||
}
|
||||
|