support for rgb led in simulator
This commit is contained in:
		@@ -6,6 +6,26 @@
 | 
				
			|||||||
 */
 | 
					 */
 | 
				
			||||||
//% color=#0078D7 weight=100
 | 
					//% color=#0078D7 weight=100
 | 
				
			||||||
namespace basic {
 | 
					namespace basic {
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					    * Sets the color on the build-in LED. Set to 0 to turn off.
 | 
				
			||||||
 | 
					    */
 | 
				
			||||||
 | 
					    //% blockId=device_set_led_color block="set led to %color=color_id" icon="\uf00a"
 | 
				
			||||||
 | 
					    //% weight=50
 | 
				
			||||||
 | 
					    void setLedColor(int color) {
 | 
				
			||||||
 | 
					      if (!color) {
 | 
				
			||||||
 | 
					        uBit.rgb.Off();
 | 
				
			||||||
 | 
					        return;
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      int w = (color >> 24) & 0xFF;
 | 
				
			||||||
 | 
					      int r = (color >> 16) & 0xFF;
 | 
				
			||||||
 | 
					      int g = (color >> 8) & 0xFF;
 | 
				
			||||||
 | 
					      int b = (color) & 0xFF;
 | 
				
			||||||
 | 
					      
 | 
				
			||||||
 | 
					      uBit.rgb.Set_Color(r,g,b,w);
 | 
				
			||||||
 | 
					      uBit.rgb.On();
 | 
				
			||||||
 | 
					      uBit.rgb.Send_to_LED();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * Scroll a number on the screen. If the number fits on the screen (i.e. is a single digit), do not scroll.
 | 
					     * Scroll a number on the screen. If the number fits on the screen (i.e. is a single digit), do not scroll.
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -4,31 +4,31 @@
 | 
				
			|||||||
enum Colors {
 | 
					enum Colors {
 | 
				
			||||||
    //% blockIdentity=basic.color
 | 
					    //% blockIdentity=basic.color
 | 
				
			||||||
    //% block=red
 | 
					    //% block=red
 | 
				
			||||||
    Red = 0xFF0000,
 | 
					    Red = 0x00FF0000,
 | 
				
			||||||
    //% blockIdentity=basic.color
 | 
					    //% blockIdentity=basic.color
 | 
				
			||||||
    //% block=orange
 | 
					    //% block=orange
 | 
				
			||||||
    Orange = 0xFFA500,
 | 
					    Orange = 0x00FFA500,
 | 
				
			||||||
    //% blockIdentity=basic.color
 | 
					    //% blockIdentity=basic.color
 | 
				
			||||||
    //% block=yellow
 | 
					    //% block=yellow
 | 
				
			||||||
    Yellow = 0xFFFF00,
 | 
					    Yellow = 0x00FFFF00,
 | 
				
			||||||
    //% blockIdentity=basic.color
 | 
					    //% blockIdentity=basic.color
 | 
				
			||||||
    //% block=green
 | 
					    //% block=green
 | 
				
			||||||
    Green = 0x00FF00,
 | 
					    Green = 0x0000FF00,
 | 
				
			||||||
    //% blockIdentity=basic.color
 | 
					    //% blockIdentity=basic.color
 | 
				
			||||||
    //% block=blue
 | 
					    //% block=blue
 | 
				
			||||||
    Blue = 0x0000FF,
 | 
					    Blue = 0x000000FF,
 | 
				
			||||||
    //% blockIdentity=basic.color
 | 
					    //% blockIdentity=basic.color
 | 
				
			||||||
    //% block=indigo
 | 
					    //% block=indigo
 | 
				
			||||||
    Indigo = 0x4b0082,
 | 
					    Indigo = 0x004b0082,
 | 
				
			||||||
    //% blockIdentity=basic.color
 | 
					    //% blockIdentity=basic.color
 | 
				
			||||||
    //% block=violet
 | 
					    //% block=violet
 | 
				
			||||||
    Violet = 0x8a2be2,
 | 
					    Violet = 0x008a2be2,
 | 
				
			||||||
    //% blockIdentity=basic.color
 | 
					    //% blockIdentity=basic.color
 | 
				
			||||||
    //% block=purple
 | 
					    //% block=purple
 | 
				
			||||||
    Purple = 0xFF00FF,
 | 
					    Purple = 0x00FF00FF,
 | 
				
			||||||
    //% blockIdentity=basic.color
 | 
					    //% blockIdentity=basic.color
 | 
				
			||||||
    //% block=white
 | 
					    //% block=white
 | 
				
			||||||
    White = 0xFFFFFF
 | 
					    White = 0xFF00000
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -36,16 +36,6 @@ enum Colors {
 | 
				
			|||||||
 */
 | 
					 */
 | 
				
			||||||
//% color=#0078D7 weight=100
 | 
					//% color=#0078D7 weight=100
 | 
				
			||||||
namespace basic {
 | 
					namespace basic {
 | 
				
			||||||
 | 
					 | 
				
			||||||
    /**
 | 
					 | 
				
			||||||
    * Sets the color on the build-in LED
 | 
					 | 
				
			||||||
    */
 | 
					 | 
				
			||||||
    //% blockId=device_set_led_color block="set led to %color=color_id" icon="\uf00a"
 | 
					 | 
				
			||||||
    //% weight=50
 | 
					 | 
				
			||||||
    export function setLedColor(color: number) {
 | 
					 | 
				
			||||||
        // TODO
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * Converts the color name to a number
 | 
					     * Converts the color name to a number
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
@@ -53,4 +43,17 @@ namespace basic {
 | 
				
			|||||||
    export function color(c: Colors): number {
 | 
					    export function color(c: Colors): number {
 | 
				
			||||||
        return c;
 | 
					        return c;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Converts red, green, blue channels into a RGB color
 | 
				
			||||||
 | 
					     * @param red value of the red channel between 0 and 255. eg: 255
 | 
				
			||||||
 | 
					     * @param green value of the green channel between 0 and 255. eg: 255
 | 
				
			||||||
 | 
					     * @param blue value of the blue channel between 0 and 255. eg: 255
 | 
				
			||||||
 | 
					     * @param white value of the white channel between 0 and 255. eg: 0
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    //% weight=1
 | 
				
			||||||
 | 
					    //% blockId="core_rgb" block="red %red|green %green|blue %blue|white %white"
 | 
				
			||||||
 | 
					    export function rgbw(red: number, green: number, blue: number, white:number): number {
 | 
				
			||||||
 | 
					        return ((white & 0xFF) << 24) | ((red & 0xFF) << 16) | ((green & 0xFF) << 8) | (blue & 0xFF);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
							
								
								
									
										7
									
								
								libs/core/shims.d.ts
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										7
									
								
								libs/core/shims.d.ts
									
									
									
									
										vendored
									
									
								
							@@ -128,6 +128,13 @@ declare interface Image {
 | 
				
			|||||||
    //% color=#0078D7 weight=100
 | 
					    //% color=#0078D7 weight=100
 | 
				
			||||||
declare namespace basic {
 | 
					declare namespace basic {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Sets the color on the build-in LED. Set to 0 to turn off.
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    //% blockId=device_set_led_color block="set led to %color=color_id" icon="\uf00a"
 | 
				
			||||||
 | 
					    //% weight=50 shim=basic::setLedColor
 | 
				
			||||||
 | 
					    function setLedColor(color: number): void;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * Scroll a number on the screen. If the number fits on the screen (i.e. is a single digit), do not scroll.
 | 
					     * Scroll a number on the screen. If the number fits on the screen (i.e. is a single digit), do not scroll.
 | 
				
			||||||
     * @param interval speed of scroll; eg: 150, 100, 200, -100
 | 
					     * @param interval speed of scroll; eg: 150, 100, 200, -100
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,5 +1,6 @@
 | 
				
			|||||||
namespace pxsim.basic {
 | 
					namespace pxsim.basic {
 | 
				
			||||||
    export function setLedColor(c: number) {
 | 
					    export function setLedColor(c: number) {
 | 
				
			||||||
        board().rgbLedState = c;
 | 
					        board().rgbLedState = c;
 | 
				
			||||||
 | 
					        runtime.queueDisplayUpdate()
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -352,8 +352,16 @@ namespace pxsim.visuals {
 | 
				
			|||||||
            let state = this.board;
 | 
					            let state = this.board;
 | 
				
			||||||
            if (state.rgbLedState) {
 | 
					            if (state.rgbLedState) {
 | 
				
			||||||
                if (!this.rgbLed)
 | 
					                if (!this.rgbLed)
 | 
				
			||||||
                    this.rgbLed = svg.child(this.g, "circle", { cx: 170, cy: 200 });
 | 
					                    this.rgbLed = svg.child(this.g, "circle", { cx: 170, cy: 190, r:5 });
 | 
				
			||||||
                svg.fill(this.rgbLed, svg.toHtmlColor(state.rgbLedState));
 | 
					                const c = state.rgbLedState;
 | 
				
			||||||
 | 
					                const b = c & 0xFF;
 | 
				
			||||||
 | 
					                const g = (c >> 8) & 0xFF;
 | 
				
			||||||
 | 
					                const r = (c >> 16) & 0xFF;
 | 
				
			||||||
 | 
					                const w = (c >> 24) & 0xFF;
 | 
				
			||||||
 | 
					                const ch =  `rgba(${r}, ${g}, ${b}, 1)`;
 | 
				
			||||||
 | 
					                svg.fill(this.rgbLed, ch);
 | 
				
			||||||
 | 
					            } else if (this.rgbLed) {
 | 
				
			||||||
 | 
					                svg.fill(this.rgbLed, 'white');
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user