limited support for RGB led
This commit is contained in:
@ -13,6 +13,7 @@ namespace pxsim {
|
||||
buttonPairState: ButtonPairState;
|
||||
radioState: RadioState;
|
||||
neopixelState: NeoPixelState;
|
||||
rgbLedState: number;
|
||||
|
||||
constructor() {
|
||||
super()
|
||||
@ -48,7 +49,7 @@ namespace pxsim {
|
||||
0,
|
||||
0,
|
||||
DAL.MICROBIT_ID_IO_P19,
|
||||
DAL.MICROBIT_ID_IO_P20
|
||||
DAL.MICROBIT_ID_IO_P20
|
||||
]
|
||||
});
|
||||
this.builtinParts["radio"] = this.radioState = new RadioState(runtime);
|
||||
@ -61,11 +62,11 @@ namespace pxsim {
|
||||
|
||||
this.builtinVisuals["buttonpair"] = () => new visuals.ButtonPairView();
|
||||
this.builtinVisuals["ledmatrix"] = () => new visuals.LedMatrixView();
|
||||
this.builtinVisuals["neopixel"] = () => new visuals.NeoPixelView();
|
||||
this.builtinVisuals["neopixel"] = () => new visuals.NeoPixelView();
|
||||
|
||||
this.builtinPartVisuals["buttonpair"] = (xy: visuals.Coord) => visuals.mkBtnSvg(xy);
|
||||
this.builtinPartVisuals["ledmatrix"] = (xy: visuals.Coord) => visuals.mkLedMatrixSvg(xy, 8, 8);
|
||||
this.builtinPartVisuals["neopixel"] = (xy: visuals.Coord) => visuals.mkNeoPixelPart(xy);
|
||||
this.builtinPartVisuals["neopixel"] = (xy: visuals.Coord) => visuals.mkNeoPixelPart(xy);
|
||||
}
|
||||
|
||||
receiveMessage(msg: SimulatorMessage) {
|
||||
@ -97,7 +98,7 @@ namespace pxsim {
|
||||
const cmpDefs = msg.partDefinitions || {};
|
||||
const fnArgs = msg.fnArgs;
|
||||
|
||||
const opts : visuals.BoardHostOpts = {
|
||||
const opts: visuals.BoardHostOpts = {
|
||||
state: this,
|
||||
boardDef: boardDef,
|
||||
partsList: cmpsList,
|
||||
|
5
sim/state/rgbled.ts
Normal file
5
sim/state/rgbled.ts
Normal file
@ -0,0 +1,5 @@
|
||||
namespace pxsim.basic {
|
||||
export function setLedColor(c: number) {
|
||||
board().rgbLedState = c;
|
||||
}
|
||||
}
|
@ -253,6 +253,7 @@ namespace pxsim.visuals {
|
||||
private shakeButton: SVGElement;
|
||||
public board: pxsim.DalBoard;
|
||||
private pinNmToCoord: Map<Coord> = {};
|
||||
private rgbLed: SVGElement;
|
||||
|
||||
constructor(public props: IBoardProps) {
|
||||
this.recordPinCoords();
|
||||
@ -341,11 +342,21 @@ namespace pxsim.visuals {
|
||||
this.updateTemperature();
|
||||
this.updateButtonAB();
|
||||
this.updateGestures();
|
||||
this.updateRgbLed();
|
||||
|
||||
if (!runtime || runtime.dead) svg.addClass(this.element, "grayscale");
|
||||
else svg.removeClass(this.element, "grayscale");
|
||||
}
|
||||
|
||||
private updateRgbLed() {
|
||||
let state = this.board;
|
||||
if (state.rgbLedState) {
|
||||
if (!this.rgbLed)
|
||||
this.rgbLed = svg.child(this.g, "circle", { cx: 170, cy: 200 });
|
||||
svg.fill(this.rgbLed, svg.toHtmlColor(state.rgbLedState));
|
||||
}
|
||||
}
|
||||
|
||||
private updateGestures() {
|
||||
let state = this.board;
|
||||
if (state.accelerometerState.useShake && !this.shakeButton) {
|
||||
@ -353,7 +364,7 @@ namespace pxsim.visuals {
|
||||
this.shakeButton = shake.inner;
|
||||
svg.fill(this.shakeButton, this.props.theme.virtualButtonUp)
|
||||
svg.buttonEvents(shake.outer,
|
||||
ev => {},
|
||||
ev => { },
|
||||
(ev) => {
|
||||
svg.fill(this.shakeButton, this.props.theme.virtualButtonDown)
|
||||
},
|
||||
|
Reference in New Issue
Block a user