diff --git a/libs/color-sensor/color.ts b/libs/color-sensor/color.ts index e6d977df..0c3d8d5b 100644 --- a/libs/color-sensor/color.ts +++ b/libs/color-sensor/color.ts @@ -93,6 +93,8 @@ namespace sensors { || this.mode == ColorSensorMode.AmbientLightIntensity || this.mode == ColorSensorMode.ReflectedLightIntensity) return this.getNumber(NumberFormat.UInt8LE, 0) + if (this.mode == ColorSensorMode.RefRaw || this.mode == ColorSensorMode.RgbRaw) + return this.getNumber(NumberFormat.UInt16LE, 0) return 0 } @@ -114,7 +116,7 @@ namespace sensors { _update(prev: number, curr: number) { if (this.calibrating) return; // simply ignore data updates while calibrating - if (this.mode == ColorSensorMode.Color) + if (this.mode == ColorSensorMode.Color || this.mode == ColorSensorMode.RgbRaw || this.mode == ColorSensorMode.RefRaw) control.raiseEvent(this._id, this._colorEventValue(curr)); else this.thresholdDetector.setLevel(curr); @@ -179,6 +181,24 @@ namespace sensors { return this.getNumber(NumberFormat.UInt8LE, 0) } + /** + * Get the current raw rgb values from the color sensor. + * @param sensor the color sensor to query the request + */ + //% help=sensors/color-sensor/rgbraw + //% block="**color sensor** %this| rgbraw" + //% blockId=colorGetRgbRawColor + //% parts="colorsensor" + //% blockNamespace=sensors + //% this.fieldEditor="ports" + //% weight=98 + //% group="Color Sensor" + //% blockGap=8 + getRgbRaw() { + this.setMode(ColorSensorMode.RgbRaw); + return [this.getNumber(NumberFormat.UInt16LE, 0), this.getNumber(NumberFormat.UInt16LE, 2), this.getNumber(NumberFormat.UInt16LE, 4)]; + } + /** * Registers code to run when the ambient light changes. * @param condition the light condition @@ -248,6 +268,14 @@ namespace sensors { return this.light(LightIntensityMode.Reflected); } + /** + * Gets the raw reflection light value + */ + getRefRaw() { + this.setMode(ColorSensorMode.RefRaw); + return this.getNumber(NumberFormat.UInt16LE, 0); + } + /** * Set a threshold value * @param condition the dark or bright light condition