1
0
Fork 0

Updated for better switching

master
Ambrose Chua 2016-05-23 23:34:10 +08:00
parent 822539db4a
commit acc07ecee8
2 changed files with 61 additions and 25 deletions

View File

@ -1,4 +1,7 @@
// TODO: Rewrite everything
#include <WS2812.h> #include <WS2812.h>
// TODO: switch to FastLED.io
#include <CapacitiveSensor.h> #include <CapacitiveSensor.h>
#define LEDCount 37 #define LEDCount 37
@ -16,27 +19,30 @@ void setup() {
capv_btn1.set_CS_AutocaL_Millis(0xFFFFFFFF); capv_btn1.set_CS_AutocaL_Millis(0xFFFFFFFF);
} }
int capv_btn1_v;
void loop() { void loop() {
//int capv_btn1_v = capv_btn1.capacitiveSensor(1); //int capv_btn1_v = capv_btn1.capacitiveSensor(1);
capv_btn1_avg = (capv_btn1.capacitiveSensor(1) + capv_btn1_avg * 7) / 8; capv_btn1_avg = (capv_btn1.capacitiveSensor(1) + capv_btn1_avg * 20) / 21;
int capv_btn1_v = capv_btn1_avg; capv_btn1_v = capv_btn1_avg;
if (capv_btn1_v > 60 && !capv_btn1_state) { if (capv_btn1_v > 70 && !capv_btn1_state) {
Serial.write(0x17); Serial.write(0x17);
Serial.write(0xff); Serial.write(0xff);
capv_btn1_avg += 600; capv_btn1_avg += 1000000;
capv_btn1_state = true; capv_btn1_state = true;
digitalWrite(13, HIGH);
} }
else if (capv_btn1_v < 25 && capv_btn1_state) { else if (capv_btn1_v < 30 && capv_btn1_state) {
Serial.write(0x17); Serial.write(0x17);
Serial.write(0x00); Serial.write(0x00);
capv_btn1_state = false; capv_btn1_state = false;
digitalWrite(13, LOW);
} }
if (Serial.available() > 0) { if (Serial.available() > 0) {
byte command = Serial.read(); byte command = Serial.read();
if (command == 0x11) { if (command == 0x11) {
LED.sync(); LED.sync();
//Serial.write(0x1a); Serial.write(0x1a);
} }
else if (command == 0x12) { else if (command == 0x12) {
while (Serial.available() < 4) { while (Serial.available() < 4) {
@ -46,10 +52,10 @@ void loop() {
value.g = Serial.read(); value.g = Serial.read();
value.b = Serial.read(); value.b = Serial.read();
LED.set_crgb_at(pos, value); LED.set_crgb_at(pos, value);
//Serial.write(0x1b); Serial.write(0x1b);
} }
else { else {
//Serial.write(0x1e); Serial.write(0x1e);
} }
} }
} }

View File

@ -1,14 +1,20 @@
var express = require("express"); var express = require("express");
var SerialPort = require("serialport").SerialPort; var serialport = require("serialport");
var SerialPort = serialport.SerialPort;
var serialPort = new SerialPort(process.argv[2], { var serialPort = new SerialPort(process.argv[2], {
baudrate: 115200 baudrate: 115200,
flowControl: false
}); });
var lightstate = false; /*serialport.list((err, ports) => {
console.log(ports);
});*/
var lightstate = true;
var tT; var tT;
var leds = 37; var leds = 16;//273;
var toHue = function (s) { var toHue = function (s) {
return Math.floor(s / 64 * 256 % 256); return Math.floor(s / 64 * 256 % 256);
@ -36,8 +42,8 @@ var hslToRgb = function (h, s, l) {
return [Math.round(r * 255), Math.round(g * 255), Math.round(b * 255)]; return [Math.round(r * 255), Math.round(g * 255), Math.round(b * 255)];
}; };
var state = 42; var state = 3;//42;
var lightness = 0.5; var lightness = 0.8;
var h; var h;
var i = toHue(state); var i = toHue(state);
@ -114,6 +120,8 @@ var fade = function (color, cb) {
}; };
var isdone = true;
serialPort.on("open", function () { serialPort.on("open", function () {
serialPort.on("data", function (d) { serialPort.on("data", function (d) {
var i = 0; var i = 0;
@ -129,12 +137,33 @@ serialPort.on("open", function () {
if (n === null) { if (n === null) {
break; break;
} }
var state = n == 0xff; var lstate = n == 0xff;
// state // lstate
//state slide(() => { return [0, 0, 0]; }, () => {}, 20); //lstate slide(() => { return [0, 0, 0]; }, () => {}, 20);
if (state) { if (lstate) {
lightstate = !lightstate; //console.log("Tapped");
lightstate ? setLightness(0) : setLightness(1); //var a = () => {
// if (isdone) {
lightstate = !lightstate;
// isdone = false;
//setLightness(lightstate ? 0 : 0.8, () => {
// isdone = true;
//});
var color = hslToRgb(toHue(state) / 256, 1, lightstate ? lightness : 0);
flash(() => {
return color;
}, () => {
// isdone = true;
});
// }
// else {
// setTimeout(a, 10);
// }
//};
//a();
}
else {
//console.log("down");
} }
} }
} }
@ -221,9 +250,9 @@ app.get("/set/:i", function (req, res) {
}); });
var lightnessT; var lightnessT;
var setLightness = (l) => { var setLightness = (l, done, delay) => {
clearTimeout(lightnessT); //clearTimeout(lightnessT);
clearTimeout(tT); //clearTimeout(tT);
var from = lightness; var from = lightness;
var to = l * 1; var to = l * 1;
@ -236,7 +265,7 @@ var setLightness = (l) => {
if ((to - from) < 0 ? lightness > to : lightness < to) { if ((to - from) < 0 ? lightness > to : lightness < to) {
lightnessT = setTimeout(function () { lightnessT = setTimeout(function () {
a(); a();
}, 16); }, delay == undefined ? 16 : delay);
} }
else { else {
lightness = to; lightness = to;
@ -244,8 +273,9 @@ var setLightness = (l) => {
flash(() => { flash(() => {
return hslToRgb(toHue(state) / 256, 1, lightness); return hslToRgb(toHue(state) / 256, 1, lightness);
}, () => { }, () => {
done && done();
}); });
}, 16); }, delay == undefined ? 16 : delay);
} }
}); });
}; };