pxt-calliope/libs/core/led.cpp

126 lines
3.6 KiB
C++
Raw Normal View History

2016-04-02 06:52:25 +02:00
#include "ksbit.h"
enum class DisplayMode_ {
//% block="black and white"
BackAndWhite = DISPLAY_MODE_BLACK_AND_WHITE,
//% block="greyscale"
Greyscale = DISPLAY_MODE_GREYSCALE,
// TODO DISPLAY_MODE_BLACK_AND_WHITE_LIGHT_SENSE
};
//% color=#8169E6 weight=35
2016-04-02 06:52:25 +02:00
namespace led {
/**
* Turn on the specified LED using x, y coordinates (x is horizontal, y is vertical). (0,0) is upper left.
* @param x TODO
* @param y TODO
*/
2016-04-02 06:53:50 +02:00
//% help=led/plot weight=78
2016-04-02 06:52:25 +02:00
//% blockId=device_plot block="plot|x %x|y %y" icon="\uf205" blockGap=8
//% parts="ledmatrix"
void plot(int x, int y) {
2016-04-02 06:52:25 +02:00
uBit.display.image.setPixelValue(x, y, 1);
}
/**
* Turn off the specified LED using x, y coordinates (x is horizontal, y is vertical). (0,0) is upper left.
* @param x TODO
* @param y TODO
*/
2016-04-02 06:53:50 +02:00
//% help=led/unplot weight=77
2016-04-02 06:52:25 +02:00
//% blockId=device_unplot block="unplot|x %x|y %y" icon="\uf204" blockGap=8
//% parts="ledmatrix"
void unplot(int x, int y) {
2016-04-02 06:52:25 +02:00
uBit.display.image.setPixelValue(x, y, 0);
}
/**
* Get the on/off state of the specified LED using x, y coordinates. (0,0) is upper left.
* @param x TODO
* @param y TODO
*/
2016-04-02 06:53:50 +02:00
//% help=led/point weight=76
2016-04-02 06:52:25 +02:00
//% blockId=device_point block="point|x %x|y %y" icon="\uf10c"
//% parts="ledmatrix"
2016-04-02 06:52:25 +02:00
bool point(int x, int y) {
int pix = uBit.display.image.getPixelValue(x, y);
return pix > 0;
}
/**
* Get the screen brightness from 0 (off) to 255 (full bright).
*/
2016-04-02 06:53:50 +02:00
//% help=led/brightness weight=60
2016-04-02 06:52:25 +02:00
//% blockId=device_get_brightness block="brightness" icon="\uf042" blockGap=8
//% parts="ledmatrix"
//% advanced=true
2016-04-02 06:52:25 +02:00
int brightness() {
return uBit.display.getBrightness();
}
/**
* Set the screen brightness from 0 (off) to 255 (full bright).
* @param value the brightness value, eg:255, 127, 0
*/
2016-04-02 06:53:50 +02:00
//% help=led/set-brightness weight=59
2016-04-02 06:52:25 +02:00
//% blockId=device_set_brightness block="set brightness %value" icon="\uf042"
//% parts="ledmatrix"
//% advanced=true
void setBrightness(int value) {
2016-04-02 06:52:25 +02:00
uBit.display.setBrightness(value);
}
/**
* Cancels the current animation and clears other pending animations.
*/
2016-04-02 06:53:50 +02:00
//% weight=50 help=led/stop-animation
2016-04-02 06:52:25 +02:00
//% blockId=device_stop_animation block="stop animation" icon="\uf04d"
//% parts="ledmatrix"
//% advanced=true
void stopAnimation() {
2016-04-02 06:52:25 +02:00
uBit.display.stopAnimation();
}
/**
* Sets the display mode between black and white and greyscale for rendering LEDs.
* @param mode mode the display mode in which the screen operates
2016-04-02 06:52:25 +02:00
*/
2016-08-10 22:10:40 +02:00
//% weight=1 help=led/set-display-mode
//% parts="ledmatrix" advanced=true
void setDisplayMode(DisplayMode_ mode) {
2016-04-02 06:52:25 +02:00
uBit.display.setDisplayMode((DisplayMode)mode);
}
/**
* Turns on or off the display
*/
//% help=led/enable blockId=device_led_enable icon="\uf04d"
//% advanced=true parts="ledmatrix"
void enable(bool on) {
if (on) uBit.display.enable();
else uBit.display.disable();
}
2016-04-02 06:52:25 +02:00
/**
* Takes a screenshot of the LED screen and returns an image.
*/
2016-04-02 06:53:50 +02:00
//% help=led/screenshot
//% parts="ledmatrix"
2016-04-02 06:52:25 +02:00
Image screenshot() {
return uBit.display.screenShot().leakData();
/*
let Image img;
img = image.createImage("");
for (let i = 0; i < 5; i++) {
for (let j = 0; j < 5; j++) {
if (led.point(i, j)) {
img.setPixel(i, j, true);
}
}
}
return img;
*/
}
}