Animation works with default animation
This commit is contained in:
125
fs/init.js
125
fs/init.js
@@ -5,16 +5,16 @@ load('api_net.js');
|
||||
load('api_sys.js');
|
||||
load('api_rpc.js');
|
||||
load('api_timer.js');
|
||||
load("api_math.js");
|
||||
load("api_neopixel.js");
|
||||
|
||||
let led = Cfg.get('pins.led');
|
||||
|
||||
// Helper C function get_led_gpio_pin() in src/main.c returns built-in LED GPIO
|
||||
// let onBoardLed = ffi('int get_led_gpio_pin()')();
|
||||
|
||||
let onBoardLed = ffi('int get_led_gpio_pin(void)')();
|
||||
let button = Cfg.get('pins.button');
|
||||
let topic = '/devices/' + Cfg.get('device.id') + '/events';
|
||||
|
||||
print('LED GPIO:', led, 'button GPIO:', button);
|
||||
print('LED GPIO:', onBoardLed, 'button GPIO:', button);
|
||||
|
||||
let getInfo = function() {
|
||||
return JSON.stringify({
|
||||
@@ -24,11 +24,13 @@ let getInfo = function() {
|
||||
};
|
||||
|
||||
// Blink built-in LED every second
|
||||
GPIO.set_mode(led, GPIO.MODE_OUTPUT);
|
||||
Timer.set(5000 /* 1 sec */, true /* repeat */, function() {
|
||||
let value = GPIO.toggle(led);
|
||||
/*
|
||||
GPIO.set_mode(onBoardLed, GPIO.MODE_OUTPUT);
|
||||
Timer.set(5000, true, function() {
|
||||
let value = GPIO.toggle(onBoardLed);
|
||||
print(value ? 'Tick' : 'Tock', 'uptime:', Sys.uptime(), getInfo());
|
||||
}, null);
|
||||
*/
|
||||
|
||||
// Publish to MQTT topic on a button press. Button is wired to GPIO pin 0
|
||||
/*
|
||||
@@ -61,5 +63,114 @@ let addAnimationStep = ffi('void addAnimationStep(int, int, int)');
|
||||
let LEDMode_on=1, LEDMode_off=2, LEDMode_blink=3, LEDMode_tv=4, LEDMode_fire=5;
|
||||
let LEDStateEngine_start = ffi('void startLEDStateEngine(void)');
|
||||
let LEDStateEngine_pause = ffi('void pauseLEDStateEngine(void)');
|
||||
let LEDState_getRed = ffi('int LEDState_getLedRed(int)');
|
||||
let LEDState_getGreen = ffi('int LEDState_getLedGreen(int)');
|
||||
let LEDState_getBlue = ffi('int LEDState_getLedBlue(int)');
|
||||
let LEDState_getColorName = ffi('char * LEDState_getLedColorName(int)');
|
||||
let LEDState_getNextTick = ffi('int LEDState_getNextTick(int)');
|
||||
let LEDState_getCurrentTick = ffi('int LEDState_getCurrentTick(int)');
|
||||
let LEDDefinition_getLevel = ffi('char *LEDDefinition_getLevel(int)');
|
||||
let LEDDefinition_getRoom = ffi('char *LEDDefinition_getRoom(int)');
|
||||
let LEDDefinition_getId = ffi('char *LEDDefinition_getId(int)');
|
||||
let LEDDefinition_getOnColorRed = ffi('int LEDDefinition_getOnColorRed(int)');
|
||||
let LEDDefinition_getOnColorGreen = ffi('int LEDDefinition_getOnColorGreen(int)');
|
||||
let LEDDefinition_getOnColorBlue = ffi('int LEDDefinition_getOnColorBlue(int)');
|
||||
let getTicks = ffi('int getTicks(void)');
|
||||
|
||||
let pin = Cfg.get('led.pin'), numPixels = Cfg.get('led.count'), colorOrder = NeoPixel.GRB;
|
||||
let strip = NeoPixel.create(pin, numPixels, colorOrder);
|
||||
|
||||
/* Create test pattern */
|
||||
function createLedTestPattern() {
|
||||
let i;
|
||||
let switchMod;
|
||||
for (i=0; i<numPixels; ++i) {
|
||||
switchMod = i - 6 * Math.floor(i/6);
|
||||
if (switchMod === 0) strip.setPixel(i, 100, 100, 100);
|
||||
if (switchMod === 1) strip.setPixel(i, 100, 100, 100);
|
||||
if (switchMod === 2) strip.setPixel(i, 100, 100, 0);
|
||||
if (switchMod === 3) strip.setPixel(i, 0, 100, 0);
|
||||
if (switchMod === 4) strip.setPixel(i, 0, 100, 100);
|
||||
if (switchMod === 5) strip.setPixel(i, 0, 0, 100);
|
||||
if (switchMod < 0 || switchMod > 5) print("WRONG -- should never reach this in switch statement!");
|
||||
/*
|
||||
switch (switchMod) {
|
||||
case 0:
|
||||
strip.setPixel(i, 100, 100, 100);
|
||||
break;
|
||||
case 1:
|
||||
strip.setPixel(i, 100, 0, 0);
|
||||
break;
|
||||
case 2:
|
||||
strip.setPixel(i, 100, 100, 0);
|
||||
break;
|
||||
case 3:
|
||||
strip.setPixel(i, 0, 100, 0);
|
||||
break;
|
||||
case 4:
|
||||
strip.setPixel(i, 0, 100, 100);
|
||||
break;
|
||||
case 5:
|
||||
strip.setPixel(i, 0, 0, 100);
|
||||
break;
|
||||
default:
|
||||
print("WRONG -- should never reach this in switch statement!");
|
||||
}
|
||||
*/
|
||||
// strip.setPixel(i, 100, 100, 100);
|
||||
}
|
||||
strip.show();
|
||||
}
|
||||
|
||||
function allLedOn() {
|
||||
let i;
|
||||
for (i=0; i<numPixels; ++i) {
|
||||
strip.setPixel(i, 100, 100, 100);
|
||||
}
|
||||
strip.show();
|
||||
}
|
||||
|
||||
function allLedOff() {
|
||||
strip.clear();
|
||||
strip.show();
|
||||
}
|
||||
|
||||
|
||||
// initialize LEDs
|
||||
allLedOff();
|
||||
|
||||
print('End of initialization:');
|
||||
print('LedPin:', pin);
|
||||
print('NumLEDs:', numPixels);
|
||||
print('Ticks:', getTicks());
|
||||
let i;
|
||||
print('LED', 'Color', 'R', 'G', 'B', 'Tick', 'Level', 'Room', 'Id');
|
||||
print('---', '-----', '---', '---', '-----', '---', '-----', '----', '--');
|
||||
for (i=0; i<numPixels; ++i) {
|
||||
// print(i, LEDState_getRed(i), LEDState_getGreen(i), LEDState_getBlue(i), LEDState_getCurrentTick(i), LEDDefinition_getLevel(i), LEDDefinition_getRoom(i), LEDDefinition_getId(i))
|
||||
print(i, LEDState_getColorName(i), LEDDefinition_getOnColorRed(i), LEDDefinition_getOnColorGreen(i), LEDDefinition_getOnColorBlue(i), LEDState_getCurrentTick(i), LEDDefinition_getLevel(i), LEDDefinition_getRoom(i), LEDDefinition_getId(i))
|
||||
}
|
||||
Timer.set(500 /* 0,5 sec */, false /* repeat */, function() {
|
||||
createLedTestPattern();
|
||||
print('Created LED test pattern, uptime:', Sys.uptime(), getInfo());
|
||||
LEDStateEngine_start();
|
||||
Timer.set(100, true, function () {
|
||||
let i;
|
||||
for (i=0; i<numPixels; ++i) {
|
||||
strip.setPixel(i, LEDState_getRed(i), LEDState_getGreen(i), LEDState_getBlue(i));
|
||||
}
|
||||
strip.show();
|
||||
}, null);
|
||||
}, null);
|
||||
|
||||
/*
|
||||
Timer.set(30000, true, function () {
|
||||
let i;
|
||||
print('Ticks:', getTicks());
|
||||
print('LED', 'Tick', 'Next');
|
||||
print('---', '-----', '----');
|
||||
for (i=0; i<numPixels; ++i) {
|
||||
print(i, LEDState_getCurrentTick(i), LEDState_getNextTick(i));
|
||||
}
|
||||
}, null);
|
||||
*/
|
||||
|
Reference in New Issue
Block a user