Add readme to neopixel

This commit is contained in:
Michal Moskal 2016-04-05 18:21:24 -07:00
parent 715771b991
commit 948b0ef304
4 changed files with 90 additions and 88 deletions

47
libs/neopixel/README.md Normal file
View File

@ -0,0 +1,47 @@
# NeoPixel driver
This library provides a driver for various Neo Pixel LED strips,
see https://www.adafruit.com/category/168
NeoPixels consist of a number of RGB LEDs, every one of them controlled
separately.
## Basic usage
```
// Create a NeoPixel driver - specify the number of LEDs:
let strip = neopixel.create(24)
// set pixel colors
strip.setPix(0, 255, 255, 255) // white
strip.setPix(1, 255, 0, 0) // red
strip.setPix(2, 0, 255, 0) // green
strip.setPix(3, 0, 0, 255) // blue
// send the data to the strip
strip.display()
```
Use `strip.setPin()` if your strip is not at `P0`.
Use `strip.setBrigthness()` to lower the brightness (it's maxed out by default).
Use `strip.shift()` or `strip.rotate()` to shift the lights around.
## Example: Using accelerometer to control colors
This little program will let the position of the microbit control the color of the first LED.
This first LED will then get shifted further away every 100ms.
```
let strip = neopixel.create(24)
while (true) {
let x = input.acceleration(Dimension.X) / 2
let y = input.acceleration(Dimension.Y) / 2
let z = input.acceleration(Dimension.Z) / 2
strip.setPix(0, x, y, -z);
strip.shift(1);
strip.display();
basic.pause(100);
}
```

View File

@ -1,5 +1,5 @@
{ {
"name": "neppixel", "name": "neopixel",
"description": "AdaFruit NeoPixel driver for micro:bit", "description": "AdaFruit NeoPixel driver for micro:bit",
"files": [ "files": [
"neopixel.ts", "neopixel.ts",

View File

@ -39,7 +39,7 @@ namespace neopixel {
/** /**
* Shift LEDs forward. * Shift LEDs forward.
*/ */
shift(off: number): void { shift(off: number = 1): void {
this.buf.shift(-off * 3) this.buf.shift(-off * 3)
} }

View File

@ -1,92 +1,47 @@
basic.showLeds(` let strip = neopixel.create(24);
# . . . . let br = 100;
. . . . . strip.setBrigthness(100);
input.onButtonPressed(Button.B, () => {
br = br + 20;
if (br > 255) {
br = 5;
}
strip.setBrigthness(br);
});
let rotationMode = false;
input.onButtonPressed(Button.A, () => {
rotationMode = !rotationMode;
if (rotationMode) {
basic.showLeds(`
. # # # .
# . . . #
# . . . #
# . . . #
. # # # .
`);
} else {
basic.showLeds(`
. . # . . . . # . .
. . . . . . . . # .
. . . . # # # # # #
`) . . . # .
console.log("Start") . . # . .
`);
// Create a NeoPixel driver - specify the number of LEDs: }
let strip = neopixel.create(7); });
// If your strip is not at P0, specify the pin. while (true) {
strip.setPin(DigitalPin.P0) let x = input.acceleration(Dimension.X) / 2
let y = input.acceleration(Dimension.Y) / 2
// Brightness defaults to 255 (very bright); 0 is completely off. let z = input.acceleration(Dimension.Z) / 2
strip.setBrigthness(20) if (rotationMode) {
strip.rotate();
// Set pixels - pixel number, followed by red, green and blue values, between 0 and 255. } else {
strip.setPix(0, 255, 255, 255); strip.setPix(0, x, y, -z);
strip.setPix(1, 0, 255, 255); strip.shift(1);
strip.setPix(2, 255, 0, 255); }
strip.setPix(3, 255, 255, 0);
console.log("Send!")
// Send the image to the strip.
strip.display();
basic.pause(500);
console.log("Sent!")
// Green light travelling the strip:
for (let l = 0; l < strip.length(); l++) {
strip.clear();
strip.setPix(l, 0, 255, 0);
strip.display(); strip.display();
basic.pause(100); basic.pause(100);
} }
let special = false;
let numcol = 0;
input.onButtonPressed(Button.A, () => {
special = true;
let r = 0;
let g = 0;
let b = 0;
if (numcol == 0) {
r = 255;
g = 255;
b = 255;
} else if (numcol == 1) {
r = 255;
} else if (numcol == 2) {
b = 255;
} else if (numcol == 3) {
r = 255;
g = 255;
} else if (numcol == 4) {
r = 10;
g = 10;
b = 10;
}
numcol = (numcol + 1) % 5;
for (let k = 0; k < 7; k++) {
strip.setPix(k, r, g, b);
}
strip.display();
});
control.inBackground(() => {
for (let j = 0; j < 2000000; j++) {
if (special) {
basic.pause(100);
continue;
}
let r1 = (0 + j * 2) & 63;
let g1 = (20 + j * 1) & 63;
let b1 = (30 + j * 3) & 63;
for (let i = 0; i < strip.length(); i++) {
strip.setPix(i, (r1 - i) * 20, (g1 - i) * 20, (b1 - i) * 20);
}
strip.display()
basic.pause(60);
}
});
control.inBackground(() => {
while (true) {
basic.showString("XMAS!", 150);
}
});