First version
commit
4695c3ff01
|
@ -0,0 +1,75 @@
|
||||||
|
var express = require("express");
|
||||||
|
var SerialPort = require("serialport").SerialPort;
|
||||||
|
var serialPort = new SerialPort("/dev/ttyACM0", {
|
||||||
|
baudrate: 9600
|
||||||
|
});
|
||||||
|
serialPort.on("open", function () {
|
||||||
|
/*serialPort.on('data', function(data) {
|
||||||
|
process.stderr.write(data);
|
||||||
|
});*/
|
||||||
|
setTimeout(function () {
|
||||||
|
serialPort.write("2,3\n", function (err, results) {
|
||||||
|
setTimeout(function () {
|
||||||
|
serialPort.write("1,255\n", function (err, results) {
|
||||||
|
});
|
||||||
|
}, 500);
|
||||||
|
});
|
||||||
|
}, 2000);
|
||||||
|
});
|
||||||
|
|
||||||
|
var toHue = function (s) {
|
||||||
|
return Math.floor(s / 64 * 256 % 256);
|
||||||
|
};
|
||||||
|
|
||||||
|
var state = 42;
|
||||||
|
var h;
|
||||||
|
var i = toHue(state);
|
||||||
|
|
||||||
|
var sp = 1;
|
||||||
|
|
||||||
|
var app = express();
|
||||||
|
|
||||||
|
app.get("/get", function (req, res) {
|
||||||
|
res.end(state + "");
|
||||||
|
});
|
||||||
|
|
||||||
|
app.get("/set/:i", function (req, res) {
|
||||||
|
|
||||||
|
state = req.params.i;
|
||||||
|
//console.log("3," + Math.floor(state / 64 * 256 % 256));
|
||||||
|
res.status(200).end();
|
||||||
|
|
||||||
|
if (h) {
|
||||||
|
clearInterval(h);
|
||||||
|
}
|
||||||
|
h = setInterval(function () {
|
||||||
|
if (i - toHue(state) > toHue(state) - i + 255) {
|
||||||
|
i += sp;
|
||||||
|
}
|
||||||
|
else if (toHue(state) - i > i - toHue(state) + 255) {
|
||||||
|
i -= sp;
|
||||||
|
}
|
||||||
|
else if (toHue(state) < i) {
|
||||||
|
i -= sp;
|
||||||
|
}
|
||||||
|
else if (toHue(state) > i) {
|
||||||
|
i += sp;
|
||||||
|
}
|
||||||
|
if (i > 255) {
|
||||||
|
i = 0;
|
||||||
|
}
|
||||||
|
else if (i < 0) {
|
||||||
|
i = 255;
|
||||||
|
}
|
||||||
|
if (Math.floor(toHue(state) / sp * 2) == Math.floor(i / sp * 2)) {
|
||||||
|
i = toHue(state);
|
||||||
|
console.log(i);
|
||||||
|
clearInterval(h);
|
||||||
|
}
|
||||||
|
serialPort.write("3," + Math.floor(i) + "\n", function (err, results) {
|
||||||
|
});
|
||||||
|
}, 50)
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
app.listen(8026);
|
|
@ -0,0 +1,112 @@
|
||||||
|
#include <Adafruit_NeoPixel.h>
|
||||||
|
|
||||||
|
#define PIN 6
|
||||||
|
#define NUMPIXELS 37
|
||||||
|
|
||||||
|
Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
|
||||||
|
|
||||||
|
int delayval = 16;
|
||||||
|
|
||||||
|
bool off = false;
|
||||||
|
int brightness = 255;
|
||||||
|
int hue = 168;
|
||||||
|
int mode = 1;
|
||||||
|
|
||||||
|
int counter = 0;
|
||||||
|
|
||||||
|
uint32_t Wheel(byte WheelPos) {
|
||||||
|
WheelPos = 255 - WheelPos;
|
||||||
|
if(WheelPos < 85) {
|
||||||
|
return pixels.Color((255 - WheelPos * 3) * brightness / 255, 0, WheelPos * 3 * brightness / 255);
|
||||||
|
}
|
||||||
|
if(WheelPos < 170) {
|
||||||
|
WheelPos -= 85;
|
||||||
|
return pixels.Color(0, WheelPos * 3 * brightness / 255, (255 - WheelPos * 3) * brightness / 255);
|
||||||
|
}
|
||||||
|
WheelPos -= 170;
|
||||||
|
return pixels.Color(WheelPos * 3 * brightness / 255, (255 - WheelPos * 3) * brightness / 255, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
void setup() {
|
||||||
|
Serial.begin(9600);
|
||||||
|
pixels.begin();
|
||||||
|
}
|
||||||
|
|
||||||
|
void loop() {
|
||||||
|
|
||||||
|
if (off) {
|
||||||
|
|
||||||
|
for (int i = 0; i < NUMPIXELS; i++){
|
||||||
|
pixels.setPixelColor(i, pixels.Color(0,0,0));
|
||||||
|
}
|
||||||
|
pixels.show();
|
||||||
|
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
|
||||||
|
if (mode == 1) {
|
||||||
|
for (int i = 0; i < NUMPIXELS; i++){
|
||||||
|
pixels.setPixelColor(i, pixels.Color(0,0,brightness));
|
||||||
|
}
|
||||||
|
pixels.show();
|
||||||
|
}
|
||||||
|
else if (mode == 2) {
|
||||||
|
for (int i = 0; i < NUMPIXELS; i++){
|
||||||
|
pixels.setPixelColor(i, Wheel((i * 2 + counter / 2) % 256));
|
||||||
|
}
|
||||||
|
pixels.show();
|
||||||
|
}
|
||||||
|
else if (mode == 3) {
|
||||||
|
for (int i = 0; i < NUMPIXELS; i++){
|
||||||
|
pixels.setPixelColor(i, Wheel(hue % 256));
|
||||||
|
}
|
||||||
|
pixels.show();
|
||||||
|
}
|
||||||
|
|
||||||
|
counter++;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
delay(delayval);
|
||||||
|
|
||||||
|
while (Serial.available() > 0) {
|
||||||
|
|
||||||
|
int command = Serial.parseInt();
|
||||||
|
int value = Serial.parseInt();
|
||||||
|
|
||||||
|
if (Serial.read() == '\n') {
|
||||||
|
Serial.print("Command: ");
|
||||||
|
Serial.println(command);
|
||||||
|
Serial.print("Value: ");
|
||||||
|
Serial.println(value);
|
||||||
|
switch (command) {
|
||||||
|
|
||||||
|
case 0:
|
||||||
|
off = (value == 0);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 1:
|
||||||
|
brightness = constrain(value, 0, 255);
|
||||||
|
Serial.print("Brightness: ");
|
||||||
|
Serial.println(brightness);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 2:
|
||||||
|
mode = constrain(value, 1, 3);
|
||||||
|
Serial.print("Mode: ");
|
||||||
|
Serial.println(brightness);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 3:
|
||||||
|
hue = constrain(value, 0, 255);
|
||||||
|
Serial.print("Hue: ");
|
||||||
|
Serial.println(hue);
|
||||||
|
break;
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue