Compare commits
30 Commits
Author | SHA1 | Date | |
---|---|---|---|
b88191ee54 | |||
9c4acba7eb | |||
87d22db6f3 | |||
d2cf715423 | |||
60a74ac525 | |||
864ed608bb | |||
a8b9d3e0fd | |||
01d08c6d4f | |||
426ad005d5 | |||
853625107c | |||
9c1b29cc80 | |||
9badaffee9 | |||
c3f539f396 | |||
991813fff7 | |||
85a8f1c2c5 | |||
ea33b81b2a | |||
c8381d7626 | |||
62b5941143 | |||
1d5d18dc88 | |||
bc4b71e0d6 | |||
5c47ce2f91 | |||
6a577287c1 | |||
8bd884e155 | |||
20be398c2c | |||
ccf6164d87 | |||
58294883d7 | |||
00194d4aa6 | |||
ec900f805e | |||
5f5bdd7294 | |||
38b2fc7b95 |
12
.github/workflows/compress-images-on-pull-request.yml
vendored
Normal file
12
.github/workflows/compress-images-on-pull-request.yml
vendored
Normal file
@ -0,0 +1,12 @@
|
||||
name: Compress images
|
||||
on: pull_request
|
||||
jobs:
|
||||
build:
|
||||
name: calibreapp/image-actions
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@master
|
||||
- name: calibreapp/image-actions
|
||||
uses: calibreapp/image-actions@master
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
@ -73,6 +73,12 @@ Verify that the program you just created shows eyes on the Brick Display, and th
|
||||
|
||||
**Well done!**
|
||||
|
||||
## Run it Again
|
||||
|
||||

|
||||
|
||||
Use the Brick Buttons and navigate to the File Manager tab. Open the **BrkProg_SAVE** folder, select **Try** and click the center button to run it again.
|
||||
|
||||
## Connect a Large Motor @unplugged
|
||||
|
||||
Now you will learn to control the Large Motor.
|
||||
|
@ -1,3 +1,3 @@
|
||||
{
|
||||
"appref": "v1.2.22"
|
||||
"appref": "v1.2.26"
|
||||
}
|
||||
|
@ -388,12 +388,12 @@
|
||||
}
|
||||
function downloadWin64() {
|
||||
// TODO: Keep this link up-to-date with the desired release version
|
||||
window.open("https://makecode.com/api/release/ev3/v1.2.22/win64");
|
||||
window.open("https://makecode.com/api/release/ev3/v1.2.26/win64");
|
||||
tickEvent("offlineapp.download", { "target": "ev3", "platform": "win64" });
|
||||
}
|
||||
function downloadMac64() {
|
||||
// TODO: Keep this link up-to-date with the desired release version
|
||||
window.open("https://makecode.com/api/release/ev3/v1.2.22/mac64");
|
||||
window.open("https://makecode.com/api/release/ev3/v1.2.26/mac64");
|
||||
tickEvent("offlineapp.download", { "target": "ev3", "platform": "mac64" });
|
||||
}
|
||||
</script>
|
||||
|
3
docs/stable-ref.json
Normal file
3
docs/stable-ref.json
Normal file
@ -0,0 +1,3 @@
|
||||
{
|
||||
"appref": "v1.2"
|
||||
}
|
6
docs/static/testfilelogo.svg
vendored
Normal file
6
docs/static/testfilelogo.svg
vendored
Normal file
@ -0,0 +1,6 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" id="svg4487" fill-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="1.4" clip-rule="evenodd" version="1.1" width="32" height="32" viewBox="0 0 32 32">
|
||||
<path id="path4485" fill="#696969" d="M16.1 2.7a13.8 13.8 0 00-4.4 27c.7 0 1-.4 1-.7v-2.4c-3.9.9-4.7-1.8-4.7-1.8-.6-1.6-1.5-2-1.5-2-1.3-1 0-.9 0-.9 1.4.1 2.2 1.4 2.2 1.4 1.2 2.1 3.2 1.5 4 1.2a3 3 0 01.9-1.9c-3.1-.3-6.3-1.5-6.3-6.8 0-1.5.5-2.7 1.4-3.7a5 5 0 01.1-3.7s1.2-.3 3.8 1.4a13.2 13.2 0 013.5-.4c1.2 0 2.4.1 3.5.4 2.6-1.7 3.8-1.4 3.8-1.4a5 5 0 01.1 3.7c.9 1 1.4 2.2 1.4 3.7 0 5.3-3.2 6.5-6.3 6.8.5.5 1 1.3 1 2.6V29c0 .4.2.8.9.6a13.8 13.8 0 00-4.4-27"/>
|
||||
<g id="text4497" fill="#000" fill-opacity="1" stroke="none" stroke-width=".7" aria-label="v" font-family="consolas" font-size="26.6" font-stretch="normal" font-style="normal" font-variant="normal" font-weight="400" letter-spacing="0" style="line-height:1.25;-inkscape-font-specification:consolas" transform="rotate(14.1)" word-spacing="0">
|
||||
<path id="path4499" stroke-width=".7" d="M21.4-1.7l2.9 8 3-8.3.8-1.5q.4-.4 1-.4.8 0 1.2.5.5.4.5 1v.6l-.3.5-.2.7-3.4 8.4-.4 1-.5 1-.7.5q-.4.2-1 .2-.8 0-1.2-.3-.5-.3-.7-.8l-.7-1.6-3.4-8.3q0-.4-.2-.7l-.2-.6-.1-.6.2-.7.6-.6q.4-.2.9-.2.9 0 1.2.5l.7 1.7z" font-family="Arial Rounded MT Bold" font-stretch="normal" font-style="normal" font-variant="normal" font-weight="400" style="-inkscape-font-specification:'Arial Rounded MT Bold, '"/>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 1.4 KiB |
@ -1,5 +1,4 @@
|
||||
const enum ColorSensorMode {
|
||||
None = 0,
|
||||
//% block="reflected light intensity"
|
||||
ReflectedLightIntensity = 0,
|
||||
//% block="ambient light intensity"
|
||||
@ -59,7 +58,6 @@ namespace sensors {
|
||||
|
||||
constructor(port: number) {
|
||||
super(port)
|
||||
this._setMode(ColorSensorMode.None);
|
||||
this.thresholdDetector = new sensors.ThresholdDetector(this.id());
|
||||
this.calibrating = false;
|
||||
}
|
||||
@ -181,6 +179,22 @@ namespace sensors {
|
||||
return this.getNumber(NumberFormat.UInt8LE, 0)
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks the color is being detected
|
||||
* @param color the color to detect
|
||||
*/
|
||||
//% help=sensors/color-sensor/is-color-detected
|
||||
//% block="is **color sensor** %this|detected|%color=colorEnumPicker"
|
||||
//% blockId=colorisColorDetectedDetected
|
||||
//% parts="colorsensor"
|
||||
//% blockNamespace=sensors
|
||||
//% this.fieldEditor="ports"
|
||||
//% weight=99 blockGap=8
|
||||
//% group="Color Sensor"
|
||||
isColorDetected(color: number) {
|
||||
return this.color() == color;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the current raw rgb values as an array from the color sensor.
|
||||
* @param sensor the color sensor to query the request
|
||||
|
@ -0,0 +1,30 @@
|
||||
# Is Color Detected
|
||||
|
||||
Checks the color is detected
|
||||
|
||||
```sig
|
||||
let b = sensors.color1.isColorDetected(ColorSensorColor.Blue)
|
||||
```
|
||||
|
||||
The [color](/reference/sensors/color) you choose to look for is one of the colors that the sensor can detect. If you want to use colors for tracking, it's best to use a color that is the same or very close to the ones the sensor detects.
|
||||
|
||||
## Parameters
|
||||
|
||||
* **color**: the [color](/reference/sensors/color) to watch for.
|
||||
|
||||
## Example
|
||||
|
||||
Wait for the sensor to see ``blue``. Then, show an expression on the screen.
|
||||
|
||||
```blocks
|
||||
brick.showString("Waiting for blue", 1)
|
||||
while(!sensors.color1.isColorDetected(ColorSensorColor.Blue)) {
|
||||
pause(20)
|
||||
}
|
||||
brick.clearScreen()
|
||||
brick.showImage(images.expressionsSick)
|
||||
```
|
||||
|
||||
## See also
|
||||
|
||||
[on color detected](/reference/sensors/color-sensor/on-color-detected), [color](/reference/sensors/color)
|
@ -277,22 +277,25 @@ void cUiUpdatePower(void)
|
||||
const conns = analogMM.slice(AnalogOff.InConn, DAL.NUM_INPUTS)
|
||||
let r = 0;
|
||||
for (let i = 0; i < conns.length; ++i) {
|
||||
r = (r << 8 | conns[i]);
|
||||
r = conns[i] + (r << 6) + (r << 16) - r;
|
||||
}
|
||||
return r;
|
||||
}
|
||||
|
||||
let nonActivated = 0;
|
||||
function detectDevices() {
|
||||
//control.dmesg(`detect devices (${nonActivated} na)`)
|
||||
control.dmesg(`detect devices (hash ${hashDevices()})`)
|
||||
const conns = analogMM.slice(AnalogOff.InConn, DAL.NUM_INPUTS)
|
||||
let numChanged = 0;
|
||||
const uartSensors: SensorInfo[] = [];
|
||||
|
||||
for (const sensorInfo of sensorInfos) {
|
||||
const newConn = conns[sensorInfo.port]
|
||||
if (newConn == sensorInfo.connType) {
|
||||
// control.dmesg(`connection unchanged ${newConn} at ${sensorInfo.port}`)
|
||||
if (newConn == sensorInfo.connType
|
||||
&& sensorInfo.sensor
|
||||
&& sensorInfo.sensor.isActive()) {
|
||||
if (newConn == DAL.CONN_INPUT_UART)
|
||||
uartSensors.push(sensorInfo);
|
||||
continue;
|
||||
}
|
||||
numChanged++
|
||||
@ -323,7 +326,8 @@ void cUiUpdatePower(void)
|
||||
for (const sensorInfo of uartSensors) {
|
||||
let uinfo = readUartInfo(sensorInfo.port, 0)
|
||||
sensorInfo.devType = uinfo[TypesOff.Type]
|
||||
control.dmesg(`UART type ${sensorInfo.devType}`)
|
||||
const mode = uinfo[TypesOff.Mode];
|
||||
control.dmesg(`UART type ${sensorInfo.devType} mode ${mode}`)
|
||||
}
|
||||
}
|
||||
|
||||
@ -458,7 +462,7 @@ void cUiUpdatePower(void)
|
||||
|
||||
reset() {
|
||||
if (this.isActive()) uartReset(this._port);
|
||||
this.realmode = 0;
|
||||
this.realmode = -1;
|
||||
}
|
||||
}
|
||||
|
||||
@ -536,8 +540,6 @@ void cUiUpdatePower(void)
|
||||
|
||||
function uartClearChange(port: number) {
|
||||
control.dmesg(`UART clear change`);
|
||||
const UART_DATA_READY = 8
|
||||
const UART_PORT_CHANGED = 1
|
||||
while (true) {
|
||||
let status = getUartStatus(port)
|
||||
if (port < 0) break
|
||||
@ -558,7 +560,7 @@ void cUiUpdatePower(void)
|
||||
}
|
||||
|
||||
function setUartModes() {
|
||||
control.dmesg(`UART set modes`)
|
||||
control.dmesg(`UART set modes 0x${devcon.toHex()}`)
|
||||
uartMM.ioctl(IO.UART_SET_CONN, devcon)
|
||||
const ports: number[] = [];
|
||||
for (let port = 0; port < DAL.NUM_INPUTS; ++port) {
|
||||
@ -570,22 +572,26 @@ void cUiUpdatePower(void)
|
||||
while (ports.length) {
|
||||
const port = ports.pop();
|
||||
const status = waitNonZeroUartStatus(port)
|
||||
control.dmesg(`UART set mode ${status} at ${port}`);
|
||||
control.dmesg(`UART status ${status} at ${port}`);
|
||||
if (!(status & UART_DATA_READY))
|
||||
setUartMode(port, devcon[DevConOff.Mode + port]);
|
||||
}
|
||||
}
|
||||
|
||||
function updateUartMode(port: number, mode: number) {
|
||||
control.dmesg(`UART set mode to ${mode} at ${port}`)
|
||||
control.dmesg(`UART update mode to ${mode} at ${port}`)
|
||||
devcon.setNumber(NumberFormat.Int8LE, DevConOff.Connection + port, DAL.CONN_INPUT_UART)
|
||||
devcon.setNumber(NumberFormat.Int8LE, DevConOff.Type + port, 33)
|
||||
devcon.setNumber(NumberFormat.Int8LE, DevConOff.Mode + port, mode)
|
||||
}
|
||||
|
||||
const UART_PORT_CHANGED = 1
|
||||
const UART_DATA_READY = 8
|
||||
function setUartMode(port: number, mode: number) {
|
||||
const UART_PORT_CHANGED = 1
|
||||
while (true) {
|
||||
if (port < 0) return
|
||||
updateUartMode(port, mode);
|
||||
control.dmesg(`UART set mode 0x${devcon.toHex()}`)
|
||||
uartMM.ioctl(IO.UART_SET_CONN, devcon)
|
||||
let status = waitNonZeroUartStatus(port)
|
||||
if (status & UART_PORT_CHANGED) {
|
||||
@ -593,7 +599,8 @@ void cUiUpdatePower(void)
|
||||
uartClearChange(port)
|
||||
} else {
|
||||
control.dmesg(`UART status ${status}`);
|
||||
break;
|
||||
if (status & UART_DATA_READY)
|
||||
break;
|
||||
}
|
||||
pause(10)
|
||||
}
|
||||
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "pxt-ev3",
|
||||
"version": "1.4.7",
|
||||
"version": "1.4.14",
|
||||
"description": "LEGO MINDSTORMS EV3 for Microsoft MakeCode",
|
||||
"private": false,
|
||||
"keywords": [
|
||||
@ -45,8 +45,8 @@
|
||||
"@types/web-bluetooth": "0.0.4"
|
||||
},
|
||||
"dependencies": {
|
||||
"pxt-common-packages": "6.16.10",
|
||||
"pxt-core": "5.25.13"
|
||||
"pxt-common-packages": "6.16.26",
|
||||
"pxt-core": "5.28.32"
|
||||
},
|
||||
"scripts": {
|
||||
"test": "node node_modules/pxt-core/built/pxt.js travis"
|
||||
|
@ -37,7 +37,10 @@
|
||||
"publishing": true,
|
||||
"importing": true,
|
||||
"preferredPackages": [],
|
||||
"githubPackages": true
|
||||
"githubPackages": true,
|
||||
"cloudProviders": {
|
||||
"github": {}
|
||||
}
|
||||
},
|
||||
"compile": {
|
||||
"isNative": true,
|
||||
@ -201,5 +204,6 @@
|
||||
"alwaysGithubItem": true,
|
||||
"enableTrace": true
|
||||
},
|
||||
"ignoreDocsErrors": true
|
||||
"ignoreDocsErrors": true,
|
||||
"uploadDocs": true
|
||||
}
|
@ -27,6 +27,6 @@
|
||||
"Tutorial Videos": "videos"
|
||||
},
|
||||
"electronManifest": {
|
||||
"latest": "v1.2.22"
|
||||
"latest": "v1.2.26"
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user