This commit is contained in:
Peli de Halleux 2018-01-30 16:14:54 -08:00 committed by GitHub
parent a71dee2923
commit 3d73f193a8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 32 additions and 17 deletions

View File

@ -17,5 +17,6 @@
"sensors.ColorSensor.setThreshold|param|condition": "the dark or bright light condition",
"sensors.ColorSensor.setThreshold|param|value": "the value threshold",
"sensors.ColorSensor.threshold": "Gets the threshold value",
"sensors.ColorSensor.threshold|param|condition": "the light condition"
"sensors.ColorSensor.threshold|param|condition": "the light condition",
"sensors.color": "Returns a color that the sensor can detect"
}

View File

@ -26,6 +26,7 @@
"sensors.color2|block": "color 2",
"sensors.color3|block": "color 3",
"sensors.color4|block": "color 4",
"sensors.color|block": "color %color",
"sensors|block": "sensors",
"{id:category}Sensors": "Sensors",
"{id:group}Color Sensor": "Color Sensor",

View File

@ -19,21 +19,21 @@ enum LightIntensityMode {
}
const enum ColorSensorColor {
//% block="none"
//% block="none" blockIdentity=sensors.color
None,
//% block="black"
//% block="black" blockIdentity=sensors.color
Black,
//% block="blue"
//% block="blue" blockIdentity=sensors.color
Blue,
//% block="green"
//% block="green" blockIdentity=sensors.color
Green,
//% block="yellow"
//% block="yellow" blockIdentity=sensors.color
Yellow,
//% block="red"
//% block="red" blockIdentity=sensors.color
Red,
//% block="white"
//% block="white" blockIdentity=sensors.color
White,
//% block="brown"
//% block="brown" blockIdentity=sensors.color
Brown,
}
@ -157,6 +157,7 @@ namespace sensors {
//% sensor.fieldEditor="ports"
//% weight=98
//% group="Color Sensor"
//% blockGap=8
color(): ColorSensorColor {
this.setMode(ColorSensorMode.Color)
return this.getNumber(NumberFormat.UInt8LE, 0)
@ -270,13 +271,13 @@ namespace sensors {
let min = 200;
let max = -200;
let k = 0;
while(k++ < 1000 && vcount < 50) {
while (k++ < 1000 && vcount < 50) {
let v = this.light(mode);
min = Math.min(min, v);
max = Math.max(max, v);
// detect if nothing has changed and stop calibration
if (Math.abs(v - vold) <= 2)
vcount ++;
vcount++;
else {
vold = v;
vcount = 1;
@ -297,6 +298,18 @@ namespace sensors {
this.calibrating = false;
}
}
/**
* Returns a color that the sensor can detect
*/
//% shim=TD_ID
//% blockId=colorSensorColor block="color %color"
//% group="Color Sensor"
//% weight=97
export function color(color: ColorSensorColor): ColorSensorColor {
return color;
}
//% whenUsed block="color 3" weight=95 fixedInstance jres=icons.port3