Compare commits
21 Commits
Author | SHA1 | Date | |
---|---|---|---|
853625107c | |||
9c1b29cc80 | |||
9badaffee9 | |||
c3f539f396 | |||
991813fff7 | |||
85a8f1c2c5 | |||
ea33b81b2a | |||
c8381d7626 | |||
62b5941143 | |||
1d5d18dc88 | |||
bc4b71e0d6 | |||
5c47ce2f91 | |||
6a577287c1 | |||
8bd884e155 | |||
20be398c2c | |||
ccf6164d87 | |||
58294883d7 | |||
00194d4aa6 | |||
ec900f805e | |||
5f5bdd7294 | |||
38b2fc7b95 |
@ -73,6 +73,12 @@ Verify that the program you just created shows eyes on the Brick Display, and th
|
|||||||
|
|
||||||
**Well done!**
|
**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
|
## Connect a Large Motor @unplugged
|
||||||
|
|
||||||
Now you will learn to control the Large Motor.
|
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() {
|
function downloadWin64() {
|
||||||
// TODO: Keep this link up-to-date with the desired release version
|
// 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" });
|
tickEvent("offlineapp.download", { "target": "ev3", "platform": "win64" });
|
||||||
}
|
}
|
||||||
function downloadMac64() {
|
function downloadMac64() {
|
||||||
// TODO: Keep this link up-to-date with the desired release version
|
// 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" });
|
tickEvent("offlineapp.download", { "target": "ev3", "platform": "mac64" });
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
3
docs/stable-ref.json
Normal file
3
docs/stable-ref.json
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
{
|
||||||
|
"appref": "v1.2"
|
||||||
|
}
|
@ -1,5 +1,4 @@
|
|||||||
const enum ColorSensorMode {
|
const enum ColorSensorMode {
|
||||||
None = 0,
|
|
||||||
//% block="reflected light intensity"
|
//% block="reflected light intensity"
|
||||||
ReflectedLightIntensity = 0,
|
ReflectedLightIntensity = 0,
|
||||||
//% block="ambient light intensity"
|
//% block="ambient light intensity"
|
||||||
@ -59,7 +58,6 @@ namespace sensors {
|
|||||||
|
|
||||||
constructor(port: number) {
|
constructor(port: number) {
|
||||||
super(port)
|
super(port)
|
||||||
this._setMode(ColorSensorMode.None);
|
|
||||||
this.thresholdDetector = new sensors.ThresholdDetector(this.id());
|
this.thresholdDetector = new sensors.ThresholdDetector(this.id());
|
||||||
this.calibrating = false;
|
this.calibrating = false;
|
||||||
}
|
}
|
||||||
@ -181,6 +179,22 @@ namespace sensors {
|
|||||||
return this.getNumber(NumberFormat.UInt8LE, 0)
|
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.
|
* Get the current raw rgb values as an array from the color sensor.
|
||||||
* @param sensor the color sensor to query the request
|
* @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)
|
const conns = analogMM.slice(AnalogOff.InConn, DAL.NUM_INPUTS)
|
||||||
let r = 0;
|
let r = 0;
|
||||||
for (let i = 0; i < conns.length; ++i) {
|
for (let i = 0; i < conns.length; ++i) {
|
||||||
r = (r << 8 | conns[i]);
|
r = conns[i] + (r << 6) + (r << 16) - r;
|
||||||
}
|
}
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
let nonActivated = 0;
|
let nonActivated = 0;
|
||||||
function detectDevices() {
|
function detectDevices() {
|
||||||
//control.dmesg(`detect devices (${nonActivated} na)`)
|
control.dmesg(`detect devices (hash ${hashDevices()})`)
|
||||||
const conns = analogMM.slice(AnalogOff.InConn, DAL.NUM_INPUTS)
|
const conns = analogMM.slice(AnalogOff.InConn, DAL.NUM_INPUTS)
|
||||||
let numChanged = 0;
|
let numChanged = 0;
|
||||||
const uartSensors: SensorInfo[] = [];
|
const uartSensors: SensorInfo[] = [];
|
||||||
|
|
||||||
for (const sensorInfo of sensorInfos) {
|
for (const sensorInfo of sensorInfos) {
|
||||||
const newConn = conns[sensorInfo.port]
|
const newConn = conns[sensorInfo.port]
|
||||||
if (newConn == sensorInfo.connType) {
|
if (newConn == sensorInfo.connType
|
||||||
// control.dmesg(`connection unchanged ${newConn} at ${sensorInfo.port}`)
|
&& sensorInfo.sensor
|
||||||
|
&& sensorInfo.sensor.isActive()) {
|
||||||
|
if (newConn == DAL.CONN_INPUT_UART)
|
||||||
|
uartSensors.push(sensorInfo);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
numChanged++
|
numChanged++
|
||||||
@ -323,7 +326,8 @@ void cUiUpdatePower(void)
|
|||||||
for (const sensorInfo of uartSensors) {
|
for (const sensorInfo of uartSensors) {
|
||||||
let uinfo = readUartInfo(sensorInfo.port, 0)
|
let uinfo = readUartInfo(sensorInfo.port, 0)
|
||||||
sensorInfo.devType = uinfo[TypesOff.Type]
|
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() {
|
reset() {
|
||||||
if (this.isActive()) uartReset(this._port);
|
if (this.isActive()) uartReset(this._port);
|
||||||
this.realmode = 0;
|
this.realmode = -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -536,8 +540,6 @@ void cUiUpdatePower(void)
|
|||||||
|
|
||||||
function uartClearChange(port: number) {
|
function uartClearChange(port: number) {
|
||||||
control.dmesg(`UART clear change`);
|
control.dmesg(`UART clear change`);
|
||||||
const UART_DATA_READY = 8
|
|
||||||
const UART_PORT_CHANGED = 1
|
|
||||||
while (true) {
|
while (true) {
|
||||||
let status = getUartStatus(port)
|
let status = getUartStatus(port)
|
||||||
if (port < 0) break
|
if (port < 0) break
|
||||||
@ -558,7 +560,7 @@ void cUiUpdatePower(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
function setUartModes() {
|
function setUartModes() {
|
||||||
control.dmesg(`UART set modes`)
|
control.dmesg(`UART set modes 0x${devcon.toHex()}`)
|
||||||
uartMM.ioctl(IO.UART_SET_CONN, devcon)
|
uartMM.ioctl(IO.UART_SET_CONN, devcon)
|
||||||
const ports: number[] = [];
|
const ports: number[] = [];
|
||||||
for (let port = 0; port < DAL.NUM_INPUTS; ++port) {
|
for (let port = 0; port < DAL.NUM_INPUTS; ++port) {
|
||||||
@ -570,22 +572,26 @@ void cUiUpdatePower(void)
|
|||||||
while (ports.length) {
|
while (ports.length) {
|
||||||
const port = ports.pop();
|
const port = ports.pop();
|
||||||
const status = waitNonZeroUartStatus(port)
|
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) {
|
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.Connection + port, DAL.CONN_INPUT_UART)
|
||||||
devcon.setNumber(NumberFormat.Int8LE, DevConOff.Type + port, 33)
|
devcon.setNumber(NumberFormat.Int8LE, DevConOff.Type + port, 33)
|
||||||
devcon.setNumber(NumberFormat.Int8LE, DevConOff.Mode + port, mode)
|
devcon.setNumber(NumberFormat.Int8LE, DevConOff.Mode + port, mode)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const UART_PORT_CHANGED = 1
|
||||||
|
const UART_DATA_READY = 8
|
||||||
function setUartMode(port: number, mode: number) {
|
function setUartMode(port: number, mode: number) {
|
||||||
const UART_PORT_CHANGED = 1
|
|
||||||
while (true) {
|
while (true) {
|
||||||
if (port < 0) return
|
if (port < 0) return
|
||||||
updateUartMode(port, mode);
|
updateUartMode(port, mode);
|
||||||
|
control.dmesg(`UART set mode 0x${devcon.toHex()}`)
|
||||||
uartMM.ioctl(IO.UART_SET_CONN, devcon)
|
uartMM.ioctl(IO.UART_SET_CONN, devcon)
|
||||||
let status = waitNonZeroUartStatus(port)
|
let status = waitNonZeroUartStatus(port)
|
||||||
if (status & UART_PORT_CHANGED) {
|
if (status & UART_PORT_CHANGED) {
|
||||||
@ -593,7 +599,8 @@ void cUiUpdatePower(void)
|
|||||||
uartClearChange(port)
|
uartClearChange(port)
|
||||||
} else {
|
} else {
|
||||||
control.dmesg(`UART status ${status}`);
|
control.dmesg(`UART status ${status}`);
|
||||||
break;
|
if (status & UART_DATA_READY)
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
pause(10)
|
pause(10)
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "pxt-ev3",
|
"name": "pxt-ev3",
|
||||||
"version": "1.4.7",
|
"version": "1.4.10",
|
||||||
"description": "LEGO MINDSTORMS EV3 for Microsoft MakeCode",
|
"description": "LEGO MINDSTORMS EV3 for Microsoft MakeCode",
|
||||||
"private": false,
|
"private": false,
|
||||||
"keywords": [
|
"keywords": [
|
||||||
@ -45,8 +45,8 @@
|
|||||||
"@types/web-bluetooth": "0.0.4"
|
"@types/web-bluetooth": "0.0.4"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"pxt-common-packages": "6.16.10",
|
"pxt-common-packages": "6.16.18",
|
||||||
"pxt-core": "5.25.13"
|
"pxt-core": "5.28.9"
|
||||||
},
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"test": "node node_modules/pxt-core/built/pxt.js travis"
|
"test": "node node_modules/pxt-core/built/pxt.js travis"
|
||||||
|
@ -27,6 +27,6 @@
|
|||||||
"Tutorial Videos": "videos"
|
"Tutorial Videos": "videos"
|
||||||
},
|
},
|
||||||
"electronManifest": {
|
"electronManifest": {
|
||||||
"latest": "v1.2.22"
|
"latest": "v1.2.26"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user