pxt-calliope/libs/core/basic.ts

93 lines
2.6 KiB
TypeScript
Raw Normal View History

2016-09-27 22:35:48 +02:00
/**
Well known colors
*/
enum Colors {
//% blockIdentity=basic.color
//% block=red
2016-10-11 20:41:51 +02:00
Red = 0x00FF0000,
2016-09-27 22:35:48 +02:00
//% blockIdentity=basic.color
//% block=orange
2016-10-11 20:41:51 +02:00
Orange = 0x00FFA500,
2016-09-27 22:35:48 +02:00
//% blockIdentity=basic.color
//% block=yellow
2016-10-11 20:41:51 +02:00
Yellow = 0x00FFFF00,
2016-09-27 22:35:48 +02:00
//% blockIdentity=basic.color
//% block=green
2016-10-11 20:41:51 +02:00
Green = 0x0000FF00,
2016-09-27 22:35:48 +02:00
//% blockIdentity=basic.color
//% block=blue
2016-10-11 20:41:51 +02:00
Blue = 0x000000FF,
2016-09-27 22:35:48 +02:00
//% blockIdentity=basic.color
//% block=indigo
2016-10-11 20:41:51 +02:00
Indigo = 0x004b0082,
2016-09-27 22:35:48 +02:00
//% blockIdentity=basic.color
//% block=violet
2016-10-11 20:41:51 +02:00
Violet = 0x008a2be2,
2016-09-27 22:35:48 +02:00
//% blockIdentity=basic.color
//% block=purple
2016-10-11 20:41:51 +02:00
Purple = 0x00FF00FF,
2016-09-27 22:35:48 +02:00
//% blockIdentity=basic.color
//% block=white
White = 0xFFFFFFFF,
//% blockIdentity=basic.color
//% block=off
Off = 0x00000000,
2016-09-27 22:35:48 +02:00
}
/**
* Provides access to basic micro:bit functionality.
*/
//% color=#54C9C9 weight=100
2016-09-27 22:35:48 +02:00
namespace basic {
2016-09-27 22:35:48 +02:00
/**
* Converts the color name to a number
*/
//% blockId=color_id block="%c" shim=TD_ID
export function color(c: Colors): number {
return c;
}
2016-10-11 20:41:51 +02:00
/**
* 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);
}
/**
* 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
*/
//% help=basic/show-number
//% weight=96
//% blockId=device_show_number block="show|number %number" blockGap=8
//% async
//% parts="ledmatrix" interval.defl=150
export function showNumber(value: number, interval?: number) {
showString(Math.roundWithPrecision(value, 2).toString(), interval);
}
}
/**
* Pause for the specified time in milliseconds
* @param ms how long to pause for, eg: 100, 200, 500, 1000, 2000
*/
function pause(ms: number): void {
basic.pause(ms);
}
/**
* Repeats the code forever in the background. On each iteration, allows other codes to run.
* @param body code to execute
*/
function forever(a: () => void): void {
basic.forever(a);
}