Diff
checker
Texte
Texte
Images
Documents
Excel
Dossiers
Legal
Enterprise
Application de bureau
Prix
Se connecter
Télécharger Diffchecker Desktop
Comparer le texte
Trouver la différence entre deux fichiers texte
Outils
Historique
Éditeur live
Masquer les espaces
Cacher identiques
Sans retour à la ligne
Vue
Divisé
Unifié
Niveau de précision
Intelligent
Mot
Caractère
Styles de texte
Modifier l’apparence
Coloration syntaxique
Choisir la syntaxe
Ignorer
Transformer le texte
Aller au premier écart
Modifier l'entrée
Diffchecker Desktop
La façon la plus sécurisée d'utiliser Diffchecker. Obtenez l'application Diffchecker Desktop : vos diffs ne quittent jamais votre ordinateur !
Obtenir Desktop
LED_Remote
Créé
il y a 4 ans
Le diff n'expire jamais
Effacer
Exporter
Partager
Expliquer
28 suppressions
Lignes
Total
Supprimé
Caractères
Total
Supprimé
Pour continuer à utiliser cette fonctionnalité, passez à
Diff
checker
Pro
Voir les prix
227 lignes
Copier tout
397 ajouts
Lignes
Total
Ajouté
Caractères
Total
Ajouté
Pour continuer à utiliser cette fonctionnalité, passez à
Diff
checker
Pro
Voir les prix
533 lignes
Copier tout
/* =================================================================
/* =================================================================
Copier
Copié
Copier
Copié
* LED Remote
* LED Remote
Copier
Copié
Copier
Copié
* (c) Brooke. 2016
* (c) Brooke. 2016
-2020
Copier
Copié
Copier
Copié
* This file is the firmware to be upload and ran on the photon. It makes use of the particle API.
* This file is the firmware to be upload and ran on the photon. It makes use of the particle API.
Copier
Copié
Copier
Copié
* All original code is under the GPL v3 except where listed.
* All original code is under the GPL v3 except where listed.
Copier
Copié
Copier
Copié
* This program is free software; you can redistribute it and/or modify
* This program is free software; you can redistribute it and/or modify
Copier
Copié
Copier
Copié
* it under the terms of the GNU General Public License as published by
* it under the terms of the GNU General Public License as published by
Copier
Copié
Copier
Copié
* the Free Software Foundation; either version 3 of the License, or
* the Free Software Foundation; either version 3 of the License, or
Copier
Copié
Copier
Copié
* (at your option) any later version.
* (at your option) any later version.
Copier
Copié
Copier
Copié
* This program is distributed in the hope that it will be useful,
* This program is distributed in the hope that it will be useful,
Copier
Copié
Copier
Copié
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* but WITHOUT ANY WARRANTY; without even the implied warranty of
Copier
Copié
Copier
Copié
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
Copier
Copié
Copier
Copié
* GNU General Public License for more details.
* GNU General Public License for more details.
Copier
Copié
Copier
Copié
Copier
Copié
Copier
Copié
* You should have received a copy of the GNU General Public License
* You should have received a copy of the GNU General Public License
Copier
Copié
Copier
Copié
* along with this program; if not, write to the Free Software
* along with this program; if not, write to the Free Software
Copier
Copié
Copier
Copié
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
02110-1301
USA
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
02110-1301
USA
================================================================= */
================================================================= */
Copier
Copié
Copier
Copié
/* =======================
i
ncludes ================================= */
#include <neopixel.h>
// use for Build IDE
// #include
"neopixel.h
" // use for local build
/* =======================
I
ncludes ================================= */
#include <neopixel.h>
// #include
\
"neopixel.h
\
" // use for local build
/* ======================= Constances====================== */
/* ======================= Constances====================== */
Copier
Copié
Copier
Copié
SYSTEM_MODE(AUTOMATIC);
SYSTEM_MODE(AUTOMATIC);
Copier
Copié
Copier
Copié
#define PIXEL_PIN
2
#define PIXEL_COUNT
58
#define PIXEL_PIN
6
#define PIXEL_COUNT
120
#define PIXEL_TYPE SK6812RGBW
#define PIXEL_TYPE SK6812RGBW
Copier
Copié
Copier
Copié
#define BRIGHTNESS 255
#define BRIGHTNESS 255
Copier
Copié
Copier
Copié
uint8_t setStripBrigtness( String brightnessValue) ;
uint8_t setStripBrigtness( String brightnessValue) ;
Copier
Copié
Copier
Copié
int
setStripColor( String hexValue );
int
setStripColor( String hexValue );
int currentBrightness = 0;
int currentBrightness = 0;
Copier
Copié
Copier
Copié
String currentHex =
"";
String currentHex =
\"\";
uint8_t setStripPower( String powerValue );
int currentPower = 2;
int loopCase = 0;
int loopCase = 0;
Copier
Copié
Copier
Copié
Adafruit_NeoPixel strip = Adafruit_NeoPixel(PIXEL_COUNT, PIXEL_PIN, PIXEL_TYPE);
Adafruit_NeoPixel strip = Adafruit_NeoPixel(PIXEL_COUNT, PIXEL_PIN, PIXEL_TYPE);
Copier
Copié
Copier
Copié
/**
/**
* setup -- Standard Arduino setup() function
* setup -- Standard Arduino setup() function
Copier
Copié
Copier
Copié
**/
**/
Copier
Copié
Copier
Copié
void setup (){
void setup (){
Copier
Copié
Copier
Copié
Copier
Copié
Copier
Copié
strip.begin();
strip.begin();
Copier
Copié
Copier
Copié
strip.show(); // Initialize all pixels to 'off'
strip.show(); // Initialize all pixels to 'off'
Copier
Copié
Copier
Copié
Copier
Copié
Copier
Copié
//Particle Functions for Color and Brightness
//Particle Functions for Color and Brightness
Copier
Copié
Copier
Copié
Particle.function(
"hex
", setStripColor);
Particle.function(
"bri
", setStripBrigtness);
Particle.function(
\
"hex
\
", setStripColor);
Particle.function(
\
"bri
\
", setStripBrigtness);
Particle.function(\"pwr\", setStripPower);
Copier
Copié
Copier
Copié
//Particle Variable to hold brightness value
:
Particle.variable(
"curBri
", currentBrightness);
//Particle Variable to hold brightness value
. Shoudl return between 0 - 255
Particle.variable(
\
"curBri
\
", currentBrightness);
Copier
Copié
Copier
Copié
//Particle Variable to hold color value
:
Particle.variable(
"curHex
", currentHex);
//Particle Variable to hold color value
. Should return hex or -1 for false
Particle.variable(
\
"curHex
\
", currentHex);
Copier
Copié
Copier
Copié
}
//Particle Variable to hold power value. Should always return 1 or 2.
Particle.variable(\"curPwr\", currentPower);
}
Copier
Copié
Copier
Copié
/**
/**
Copier
Copié
Copier
Copié
* loop -- Standard Arduino loop() function
**/
* loop -- Standard Arduino loop() function
**/
void loop (){
void loop (){
Copier
Copié
Copier
Copié
switch ( loopCase ) {
switch ( loopCase ) {
Copier
Copié
Copier
Copié
case 1:
case 1:
Copier
Copié
Copier
Copié
setHex(currentHex);
setHex(currentHex);
Copier
Copié
Copier
Copié
break;
break;
Copier
Copié
Copier
Copié
case 2:
case 2:
Copier
Copié
Copier
Copié
rainbowCycle(20);
rainbowCycle(20);
Copier
Copié
Copier
Copié
break;
break;
Copier
Copié
Copier
Copié
case 3:
case 3:
Copier
Copié
Copier
Copié
rainbow(20);
rainbow(20);
Copier
Copié
Copier
Copié
}
}
Copier
Copié
Copier
Copié
delay(20);
delay(20);
Copier
Copié
Copier
Copié
}
}
Copier
Copié
Copier
Copié
/**
/**
Copier
Copié
Copier
Copié
* getStripColor -- gets the HexValue input from our POST request
* @param hexValue -- gets hex value string from Particle API
* getStripColor -- gets the HexValue input from our POST request
*/
* @param hexValue -- gets hex value string from Particle API
*/
int setStripColor( String hexValue ) {
int setStripColor( String hexValue ) {
Copier
Copié
Copier
Copié
if(hexValue.length() == 8){
if(hexValue.length() == 8){
Copier
Copié
Copier
Copié
currentHex = hexValue;
currentHex = hexValue;
Copier
Copié
Copier
Copié
loopCase = 1;
loopCase = 1;
Copier
Copié
Copier
Copié
return 1;
return 1;
Copier
Copié
Copier
Copié
}
}
Copier
Copié
Copier
Copié
else if( hexValue ==
"rainbow
" ) {
else if( hexValue ==
\
"rainbow
\
" ) {
loopCase = 2;
loopCase = 2;
Copier
Copié
Copier
Copié
return 2;
return 2;
Copier
Copié
Copier
Copié
}
}
Copier
Copié
Copier
Copié
else if ( hexValue ==
"rainbowCycle
" ) {
else if ( hexValue ==
\
"rainbowCycle
\
" ) {
loopCase = 3;
loopCase = 3;
Copier
Copié
Copier
Copié
return 3;
return 3;
Copier
Copié
Copier
Copié
}
}
Copier
Copié
Copier
Copié
else {
else {
Copier
Copié
Copier
Copié
return -1;
return -1;
Copier
Copié
Copier
Copié
}
}
Copier
Copié
Copier
Copié
}
}
Copier
Copié
Copier
Copié
/**
/**
* setStripBrightness -- Sets the LED strip color based on input of particle function setStripBrigtness
* setStripBrightness -- Sets the LED strip color based on input of particle function setStripBrigtness
Copier
Copié
Copier
Copié
* @param brightnessValue -- 0-255 brightness value for our LED strip.
* @param brightnessValue -- 0-255 brightness value for our LED strip.
Copier
Copié
Copier
Copié
*/
*/
Copier
Copié
Copier
Copié
uint8_t setStripBrigtness( String brightnessValue ) {
uint8_t setStripBrigtness( String brightnessValue ) {
Copier
Copié
Copier
Copié
Copier
Copié
Copier
Copié
uint8_t brightnessAsInt = brightnessValue.toInt();
uint8_t brightnessAsInt = brightnessValue.toInt();
Copier
Copié
Copier
Copié
Copier
Copié
Copier
Copié
if( ( brightnessAsInt <= 255 ) && ( brightnessValue.length() <= 3 ) ){
if( ( brightnessAsInt <= 255 ) && ( brightnessValue.length() <= 3 ) ){
Copier
Copié
Copier
Copié
for (uint8_t i = 0; i < PIXEL_COUNT; i
++ ){
for (uint8_t i = 0; i < PIXEL_COUNT; i
= i + currentPower ){
strip.setBrightness( brightnessAsInt );
strip.setBrightness( brightnessAsInt );
Copier
Copié
Copier
Copié
strip.show();
}
}
Copier
Copié
Copier
Copié
strip.show();
currentBrightness = brightnessAsInt;
currentBrightness = brightnessAsInt;
Copier
Copié
Copier
Copié
return currentBrightness;
return currentBrightness;
Copier
Copié
Copier
Copié
}
}
Copier
Copié
Copier
Copié
Copier
Copié
Copier
Copié
else {
else {
Copier
Copié
Copier
Copié
return 0;
return 0;
Copier
Copié
Copier
Copié
}
}
Copier
Copié
Copier
Copié
}
}
Copier
Copié
Copier
Copié
/**
/**
Copier
Copié
Copier
Copié
* convertHex -- converts hexValue into byte to be used in our array RBG > 255
* see: https://arduino.stackexchange.com/a/16446
* setStripPower -- Sets the strip power
* @param char -- gets hex value string from Particle API
*/
* @param powerValue -- Send 1 for all lights and send 0 for just half.
*/
uint8_t setStripPower( String powerValue ) {
if( powerValue.toInt() == 1 ){
currentPower = 1;
return 1;
}
else {
currentPower = 2;
return 0;
}
}
/**
* convertHex -- converts hexValue into byte to be used in our array RBG > 255
* see: https://arduino.stackexchange.com/a/16446
* @param char -- gets hex value string from Particle API
*/
byte convertHex (const char * str){
byte convertHex (const char * str){
Copier
Copié
Copier
Copié
char c = str [0] - '0';
char c = str [0] - '0';
Copier
Copié
Copier
Copié
if (c > 9)
if (c > 9)
Copier
Copié
Copier
Copié
c -= 7;
c -= 7;
Copier
Copié
Copier
Copié
int result = c;
int result = c;
Copier
Copié
Copier
Copié
c = str [1] - '0';
c = str [1] - '0';
Copier
Copié
Copier
Copié
if (c > 9)
if (c > 9)
Copier
Copié
Copier
Copié
c -= 7;
c -= 7;
Copier
Copié
Copier
Copié
return (result << 4) | c;
return (result << 4) | c;
Copier
Copié
Copier
Copié
}
}
Copier
Copié
Copier
Copié
/**
/**
Copier
Copié
Copier
Copié
* setHex -- converts hexValue into byte to be used in our array RBG > 255
* @param hexValue HexValue to set strip to.
* setHex -- converts hexValue into byte to be used in our array RBG > 255
*/
* @param hexValue HexValue to set strip to.
*/
Copier
Copié
Copier
Copié
char setHex( String hexValue ) {
char setHex( String hexValue ) {
Copier
Copié
Copier
Copié
const char * hexCharArray = hexValue;
const char * hexCharArray = hexValue;
Copier
Copié
Copier
Copié
Copier
Copié
Copier
Copié
byte redValue = convertHex ( & hexCharArray[0] );
byte redValue = convertHex ( & hexCharArray[0] );
Copier
Copié
Copier
Copié
byte greenValue = convertHex ( & hexCharArray[2] );
byte greenValue = convertHex ( & hexCharArray[2] );
Copier
Copié
Copier
Copié
byte blueValue = convertHex ( & hexCharArray[4] );
byte blueValue = convertHex ( & hexCharArray[4] );
Copier
Copié
Copier
Copié
byte whiteValue = convertHex ( & hexCharArray[6] );
byte whiteValue = convertHex ( & hexCharArray[6] );
Copier
Copié
Copier
Copié
Copier
Copié
Copier
Copié
for (int i = 0; i < PIXEL_COUNT; i
++ ){
if( currentPower == 2 ){
for (int i = 1; i < PIXEL_COUNT; i++ ){
strip.setPixelColor(i, 0, 0, 0, 0);
}
}
for (int i = 0; i < PIXEL_COUNT; i
= i + currentPower ){
strip.setPixelColor(i, greenValue, redValue, blueValue, whiteValue);
strip.setPixelColor(i, greenValue, redValue, blueValue, whiteValue);
Copier
Copié
Copier
Copié
strip.show();
}
}
Copier
Copié
Copier
Copié
strip.show();
}
}
Copier
Copié
Copier
Copié
/**
/**
Copier
Copié
Copier
Copié
* rainbowCycle -- Cycles through colors
* @source: https://github.com/adafruit/Adafruit_NeoPixel
* rainbowCycle -- Cycles through colors
* @param wait -- mills between transition, higher is slower. Vaules 0-255
*/
* @source: https://github.com/adafruit/Adafruit_NeoPixel
* @param wait -- mills between transition, higher is slower. Vaules 0-255
*/
void rainbowCycle(uint8_t wait) {
void rainbowCycle(uint8_t wait) {
Copier
Copié
Copier
Copié
uint16_t i, j;
uint16_t i, j;
Copier
Copié
Copier
Copié
for(j=0; j<256; j++) { // 5 cycles of all colors on wheel
for(j=0; j<256; j++) { // 5 cycles of all colors on wheel
Copier
Copié
Copier
Copié
for(i=0; i< strip.numPixels(); i
++
) {
strip.setPixelColor(i, Wheel(((i * 256 /
strip.numPixels()
) + j) & 255));
if( currentPower == 2 ){
for (int i = 1; i < PIXEL_COUNT; i++ ){
strip.setPixelColor(i, 0, 0, 0, 0);
}
}
for(i=0; i< strip.numPixels(); i
= i + currentPower
) {
strip.setPixelColor(i, Wheel(((i * 256 /
PIXEL_COUNT
) + j) & 255));
}
}
Copier
Copié
Copier
Copié
strip.show();
strip.show();
Copier
Copié
Copier
Copié
delay(wait);
delay(wait);
Copier
Copié
Copier
Copié
}
}
Copier
Copié
Copier
Copié
}
}
Copier
Copié
Copier
Copié
/**
/**
Copier
Copié
Copier
Copié
* rainbow -- Cycles through colors
* @source: https://github.com/adafruit/Adafruit_NeoPixel
* rainbow -- Cycles through colors
* @param wait -- mills between transition, higher is slower. Vaules 0-255
*/
* @source: https://github.com/adafruit/Adafruit_NeoPixel
* @param wait -- mills between transition, higher is slower. Vaules 0-255
*/
void rainbow(uint8_t wait) {
void rainbow(uint8_t wait) {
Copier
Copié
Copier
Copié
uint16_t i, j;
uint16_t i, j;
Copier
Copié
Copier
Copié
for(j=0; j<256; j++) {
for(j=0; j<256; j++) {
Copier
Copié
Copier
Copié
for(i=0; i<strip.numPixels(); i
++
) {
if( currentPower == 2 ){
for (int i = 1; i < PIXEL_COUNT; i++ ){
strip.setPixelColor(i, 0, 0, 0, 0);
}
}
for(i=0; i<strip.numPixels(); i
= i + currentPower
) {
strip.setPixelColor(i, Wheel((i+j) & 255));
strip.setPixelColor(i, Wheel((i+j) & 255));
Copier
Copié
Copier
Copié
}
}
Copier
Copié
Copier
Copié
strip.show();
strip.show();
Copier
Copié
Copier
Copié
delay(wait);
delay(wait);
Copier
Copié
Copier
Copié
}
}
Copier
Copié
Copier
Copié
}
}
Copier
Copié
Copier
Copié
/**
/**
Copier
Copié
Copier
Copié
* Wheel
* Input a value 0 to 255 to get a color value.
* Wheel
* The colours are a transition r - g - b - back to r.
* @source: https://github.com/adafruit/Adafruit_NeoPixel
* Input a value 0 to 255 to get a color value.
* @param byte WheelPos
*/
* The colours are a transition r - g - b - back to r.
* @source: https://github.com/adafruit/Adafruit_NeoPixel
* @param byte WheelPos
*/
uint32_t Wheel(byte WheelPos) {
uint32_t Wheel(byte WheelPos) {
Copier
Copié
Copier
Copié
WheelPos = 255 - WheelPos;
WheelPos = 255 - WheelPos;
Copier
Copié
Copier
Copié
if(WheelPos < 85) {
if(WheelPos < 85) {
Copier
Copié
Copier
Copié
return strip.Color(255 - WheelPos * 3, 0, WheelPos * 3,0);
return strip.Color(255 - WheelPos * 3, 0, WheelPos * 3,0);
Copier
Copié
Copier
Copié
}
}
Copier
Copié
Copier
Copié
if(WheelPos < 170) {
if(WheelPos < 170) {
Copier
Copié
Copier
Copié
WheelPos -= 85;
WheelPos -= 85;
Copier
Copié
Copier
Copié
return strip.Color(0, WheelPos * 3, 255 - WheelPos * 3,0);
return strip.Color(0, WheelPos * 3, 255 - WheelPos * 3,0);
Copier
Copié
Copier
Copié
}
}
Copier
Copié
Copier
Copié
WheelPos -= 170;
WheelPos -= 170;
Copier
Copié
Copier
Copié
return strip.Color(WheelPos * 3, 255 - WheelPos * 3, 0,0);
return strip.Color(WheelPos * 3, 255 - WheelPos * 3, 0,0);
Copier
Copié
Copier
Copié
}
}
Copier
Copié
Copier
Copié
uint8_t red(uint32_t c) {
uint8_t red(uint32_t c) {
Copier
Copié
Copier
Copié
return (c >> 8);
return (c >> 8);
Copier
Copié
Copier
Copié
}
}
Copier
Copié
Copier
Copié
uint8_t green(uint32_t c) {
uint8_t green(uint32_t c) {
Copier
Copié
Copier
Copié
return (c >> 16);
return (c >> 16);
Copier
Copié
Copier
Copié
}
}
Copier
Copié
Copier
Copié
uint8_t blue(uint32_t c) {
uint8_t blue(uint32_t c) {
Copier
Copié
Copier
Copié
return (c);
return (c);
Copier
Copié
Copier
Copié
}
}
Différences enregistrées
Texte d'origine
Ouvrir un fichier
/* ================================================================= * LED Remote * (c) Brooke. 2016 * This file is the firmware to be upload and ran on the photon. It makes use of the particle API. * All original code is under the GPL v3 except where listed. * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3 of the License, or * (at your option) any later version. * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA ================================================================= */ /* ======================= includes ================================= */ #include <neopixel.h> // use for Build IDE // #include "neopixel.h" // use for local build /* ======================= Constances====================== */ SYSTEM_MODE(AUTOMATIC); #define PIXEL_PIN 2 #define PIXEL_COUNT 58 #define PIXEL_TYPE SK6812RGBW #define BRIGHTNESS 255 uint8_t setStripBrigtness( String brightnessValue) ; int setStripColor( String hexValue ); int currentBrightness = 0; String currentHex = ""; int loopCase = 0; Adafruit_NeoPixel strip = Adafruit_NeoPixel(PIXEL_COUNT, PIXEL_PIN, PIXEL_TYPE); /** * setup -- Standard Arduino setup() function **/ void setup (){ strip.begin(); strip.show(); // Initialize all pixels to 'off' //Particle Functions for Color and Brightness Particle.function("hex", setStripColor); Particle.function("bri", setStripBrigtness); //Particle Variable to hold brightness value: Particle.variable("curBri", currentBrightness); //Particle Variable to hold color value: Particle.variable("curHex", currentHex); } /** * loop -- Standard Arduino loop() function **/ void loop (){ switch ( loopCase ) { case 1: setHex(currentHex); break; case 2: rainbowCycle(20); break; case 3: rainbow(20); } delay(20); } /** * getStripColor -- gets the HexValue input from our POST request * @param hexValue -- gets hex value string from Particle API */ int setStripColor( String hexValue ) { if(hexValue.length() == 8){ currentHex = hexValue; loopCase = 1; return 1; } else if( hexValue == "rainbow" ) { loopCase = 2; return 2; } else if ( hexValue == "rainbowCycle" ) { loopCase = 3; return 3; } else { return -1; } } /** * setStripBrightness -- Sets the LED strip color based on input of particle function setStripBrigtness * @param brightnessValue -- 0-255 brightness value for our LED strip. */ uint8_t setStripBrigtness( String brightnessValue ) { uint8_t brightnessAsInt = brightnessValue.toInt(); if( ( brightnessAsInt <= 255 ) && ( brightnessValue.length() <= 3 ) ){ for (uint8_t i = 0; i < PIXEL_COUNT; i++ ){ strip.setBrightness( brightnessAsInt ); strip.show(); } currentBrightness = brightnessAsInt; return currentBrightness; } else { return 0; } } /** * convertHex -- converts hexValue into byte to be used in our array RBG > 255 * see: https://arduino.stackexchange.com/a/16446 * @param char -- gets hex value string from Particle API */ byte convertHex (const char * str){ char c = str [0] - '0'; if (c > 9) c -= 7; int result = c; c = str [1] - '0'; if (c > 9) c -= 7; return (result << 4) | c; } /** * setHex -- converts hexValue into byte to be used in our array RBG > 255 * @param hexValue HexValue to set strip to. */ char setHex( String hexValue ) { const char * hexCharArray = hexValue; byte redValue = convertHex ( & hexCharArray[0] ); byte greenValue = convertHex ( & hexCharArray[2] ); byte blueValue = convertHex ( & hexCharArray[4] ); byte whiteValue = convertHex ( & hexCharArray[6] ); for (int i = 0; i < PIXEL_COUNT; i++ ){ strip.setPixelColor(i, greenValue, redValue, blueValue, whiteValue); strip.show(); } } /** * rainbowCycle -- Cycles through colors * @source: https://github.com/adafruit/Adafruit_NeoPixel * @param wait -- mills between transition, higher is slower. Vaules 0-255 */ void rainbowCycle(uint8_t wait) { uint16_t i, j; for(j=0; j<256; j++) { // 5 cycles of all colors on wheel for(i=0; i< strip.numPixels(); i++) { strip.setPixelColor(i, Wheel(((i * 256 / strip.numPixels()) + j) & 255)); } strip.show(); delay(wait); } } /** * rainbow -- Cycles through colors * @source: https://github.com/adafruit/Adafruit_NeoPixel * @param wait -- mills between transition, higher is slower. Vaules 0-255 */ void rainbow(uint8_t wait) { uint16_t i, j; for(j=0; j<256; j++) { for(i=0; i<strip.numPixels(); i++) { strip.setPixelColor(i, Wheel((i+j) & 255)); } strip.show(); delay(wait); } } /** * Wheel * Input a value 0 to 255 to get a color value. * The colours are a transition r - g - b - back to r. * @source: https://github.com/adafruit/Adafruit_NeoPixel * @param byte WheelPos */ uint32_t Wheel(byte WheelPos) { WheelPos = 255 - WheelPos; if(WheelPos < 85) { return strip.Color(255 - WheelPos * 3, 0, WheelPos * 3,0); } if(WheelPos < 170) { WheelPos -= 85; return strip.Color(0, WheelPos * 3, 255 - WheelPos * 3,0); } WheelPos -= 170; return strip.Color(WheelPos * 3, 255 - WheelPos * 3, 0,0); } uint8_t red(uint32_t c) { return (c >> 8); } uint8_t green(uint32_t c) { return (c >> 16); } uint8_t blue(uint32_t c) { return (c); }
Texte modifié
Ouvrir un fichier
/* ================================================================= * LED Remote * (c) Brooke. 2016-2020 * This file is the firmware to be upload and ran on the photon. It makes use of the particle API. * All original code is under the GPL v3 except where listed. * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3 of the License, or * (at your option) any later version. * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA ================================================================= */ /* ======================= Includes ================================= */ #include <neopixel.h> // #include \"neopixel.h\" // use for local build /* ======================= Constances====================== */ SYSTEM_MODE(AUTOMATIC); #define PIXEL_PIN 6 #define PIXEL_COUNT 120 #define PIXEL_TYPE SK6812RGBW #define BRIGHTNESS 255 uint8_t setStripBrigtness( String brightnessValue) ; int setStripColor( String hexValue ); int currentBrightness = 0; String currentHex = \"\"; uint8_t setStripPower( String powerValue ); int currentPower = 2; int loopCase = 0; Adafruit_NeoPixel strip = Adafruit_NeoPixel(PIXEL_COUNT, PIXEL_PIN, PIXEL_TYPE); /** * setup -- Standard Arduino setup() function **/ void setup (){ strip.begin(); strip.show(); // Initialize all pixels to 'off' //Particle Functions for Color and Brightness Particle.function(\"hex\", setStripColor); Particle.function(\"bri\", setStripBrigtness); Particle.function(\"pwr\", setStripPower); //Particle Variable to hold brightness value. Shoudl return between 0 - 255 Particle.variable(\"curBri\", currentBrightness); //Particle Variable to hold color value. Should return hex or -1 for false Particle.variable(\"curHex\", currentHex); //Particle Variable to hold power value. Should always return 1 or 2. Particle.variable(\"curPwr\", currentPower); } /** * loop -- Standard Arduino loop() function **/ void loop (){ switch ( loopCase ) { case 1: setHex(currentHex); break; case 2: rainbowCycle(20); break; case 3: rainbow(20); } delay(20); } /** * getStripColor -- gets the HexValue input from our POST request * @param hexValue -- gets hex value string from Particle API */ int setStripColor( String hexValue ) { if(hexValue.length() == 8){ currentHex = hexValue; loopCase = 1; return 1; } else if( hexValue == \"rainbow\" ) { loopCase = 2; return 2; } else if ( hexValue == \"rainbowCycle\" ) { loopCase = 3; return 3; } else { return -1; } } /** * setStripBrightness -- Sets the LED strip color based on input of particle function setStripBrigtness * @param brightnessValue -- 0-255 brightness value for our LED strip. */ uint8_t setStripBrigtness( String brightnessValue ) { uint8_t brightnessAsInt = brightnessValue.toInt(); if( ( brightnessAsInt <= 255 ) && ( brightnessValue.length() <= 3 ) ){ for (uint8_t i = 0; i < PIXEL_COUNT; i = i + currentPower ){ strip.setBrightness( brightnessAsInt ); } strip.show(); currentBrightness = brightnessAsInt; return currentBrightness; } else { return 0; } } /** * setStripPower -- Sets the strip power * @param powerValue -- Send 1 for all lights and send 0 for just half. */ uint8_t setStripPower( String powerValue ) { if( powerValue.toInt() == 1 ){ currentPower = 1; return 1; } else { currentPower = 2; return 0; } } /** * convertHex -- converts hexValue into byte to be used in our array RBG > 255 * see: https://arduino.stackexchange.com/a/16446 * @param char -- gets hex value string from Particle API */ byte convertHex (const char * str){ char c = str [0] - '0'; if (c > 9) c -= 7; int result = c; c = str [1] - '0'; if (c > 9) c -= 7; return (result << 4) | c; } /** * setHex -- converts hexValue into byte to be used in our array RBG > 255 * @param hexValue HexValue to set strip to. */ char setHex( String hexValue ) { const char * hexCharArray = hexValue; byte redValue = convertHex ( & hexCharArray[0] ); byte greenValue = convertHex ( & hexCharArray[2] ); byte blueValue = convertHex ( & hexCharArray[4] ); byte whiteValue = convertHex ( & hexCharArray[6] ); if( currentPower == 2 ){ for (int i = 1; i < PIXEL_COUNT; i++ ){ strip.setPixelColor(i, 0, 0, 0, 0); } } for (int i = 0; i < PIXEL_COUNT; i = i + currentPower ){ strip.setPixelColor(i, greenValue, redValue, blueValue, whiteValue); } strip.show(); } /** * rainbowCycle -- Cycles through colors * @source: https://github.com/adafruit/Adafruit_NeoPixel * @param wait -- mills between transition, higher is slower. Vaules 0-255 */ void rainbowCycle(uint8_t wait) { uint16_t i, j; for(j=0; j<256; j++) { // 5 cycles of all colors on wheel if( currentPower == 2 ){ for (int i = 1; i < PIXEL_COUNT; i++ ){ strip.setPixelColor(i, 0, 0, 0, 0); } } for(i=0; i< strip.numPixels(); i = i + currentPower) { strip.setPixelColor(i, Wheel(((i * 256 / PIXEL_COUNT ) + j) & 255)); } strip.show(); delay(wait); } } /** * rainbow -- Cycles through colors * @source: https://github.com/adafruit/Adafruit_NeoPixel * @param wait -- mills between transition, higher is slower. Vaules 0-255 */ void rainbow(uint8_t wait) { uint16_t i, j; for(j=0; j<256; j++) { if( currentPower == 2 ){ for (int i = 1; i < PIXEL_COUNT; i++ ){ strip.setPixelColor(i, 0, 0, 0, 0); } } for(i=0; i<strip.numPixels(); i = i + currentPower ) { strip.setPixelColor(i, Wheel((i+j) & 255)); } strip.show(); delay(wait); } } /** * Wheel * Input a value 0 to 255 to get a color value. * The colours are a transition r - g - b - back to r. * @source: https://github.com/adafruit/Adafruit_NeoPixel * @param byte WheelPos */ uint32_t Wheel(byte WheelPos) { WheelPos = 255 - WheelPos; if(WheelPos < 85) { return strip.Color(255 - WheelPos * 3, 0, WheelPos * 3,0); } if(WheelPos < 170) { WheelPos -= 85; return strip.Color(0, WheelPos * 3, 255 - WheelPos * 3,0); } WheelPos -= 170; return strip.Color(WheelPos * 3, 255 - WheelPos * 3, 0,0); } uint8_t red(uint32_t c) { return (c >> 8); } uint8_t green(uint32_t c) { return (c >> 16); } uint8_t blue(uint32_t c) { return (c); }
Trouver la différence