Open ChristianKnorr opened 5 years ago
Thank you for the nice example! :) By the way, you can do the ` symbol three times before and after your code, it will show it in the correct format.
#ifdef ARDUINO_ARCH_ESP32
#include <WiFi.h>
#else
#include <ESP8266WiFi.h>
#endif
#include <DNSServer.h> //Local DNS Server used for redirecting all requests to the configuration portal
#include <ESP8266WebServer.h> //Local WebServer used to serve the configuration portal
#include <WiFiManager.h> //https://github.com/tzapu/WiFiManager WiFi Configuration Magic
#include <Espalexa.h>
#include <FastLED.h>
#define DATA_PIN D4
//#define CLOCK_PIN ?
#define NUM_LEDS 15
CRGB leds[NUM_LEDS];
//callback function prototype
void colorLightChanged(uint8_t brightness, uint32_t rgb);
Espalexa espalexa;
void setup()
{
// Uncomment/edit one of the following lines for your leds arrangement.
// FastLED.addLeds<TM1803, DATA_PIN, RGB>(leds, NUM_LEDS);
// FastLED.addLeds<TM1804, DATA_PIN, RGB>(leds, NUM_LEDS);
// FastLED.addLeds<TM1809, DATA_PIN, RGB>(leds, NUM_LEDS);
// FastLED.addLeds<WS2811, DATA_PIN, RGB>(leds, NUM_LEDS);
// FastLED.addLeds<WS2812, DATA_PIN, RGB>(leds, NUM_LEDS);
FastLED.addLeds<WS2812B, DATA_PIN, GRB>(leds, NUM_LEDS);
// FastLED.addLeds<NEOPIXEL, DATA_PIN>(leds, NUM_LEDS);
// FastLED.addLeds<APA104, DATA_PIN, RGB>(leds, NUM_LEDS);
// FastLED.addLeds<UCS1903, DATA_PIN, RGB>(leds, NUM_LEDS);
// FastLED.addLeds<UCS1903B, DATA_PIN, RGB>(leds, NUM_LEDS);
// FastLED.addLeds<GW6205, DATA_PIN, RGB>(leds, NUM_LEDS);
// FastLED.addLeds<GW6205_400, DATA_PIN, RGB>(leds, NUM_LEDS);
// FastLED.addLeds<WS2801, RGB>(leds, NUM_LEDS);
// FastLED.addLeds<SM16716, RGB>(leds, NUM_LEDS);
// FastLED.addLeds<LPD8806, RGB>(leds, NUM_LEDS);
// FastLED.addLeds<P9813, RGB>(leds, NUM_LEDS);
// FastLED.addLeds<APA102, RGB>(leds, NUM_LEDS);
// FastLED.addLeds<DOTSTAR, RGB>(leds, NUM_LEDS);
// FastLED.addLeds<WS2801, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS);
// FastLED.addLeds<SM16716, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS);
// FastLED.addLeds<LPD8806, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS);
// FastLED.addLeds<P9813, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS);
// FastLED.addLeds<APA102, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS);
// FastLED.addLeds<DOTSTAR, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS);
for ( int i = 0; i <= 30; i++ ) { // fade from black to orange
fill_solid( leds, NUM_LEDS, CRGB(i,round( (i / 1,5) ),0));
FastLED.show();
delay(20);
}
Serial.begin(115200);
Serial.println("connect to Espalexa and configure wifi");
WiFiManager wifiManager;
if (!wifiManager.autoConnect("Espalexa")) {
fill_solid( leds, NUM_LEDS, CRGB(255,0,0)); // red
FastLED.show();
Serial.println("failed to connect and hit timeout");
//reset and try again, or maybe put it to deep sleep
ESP.reset();
delay(1000);
} else {
for ( int i = 0; i <= 30; i++ ) { // fade from orange to green
fill_solid( leds, NUM_LEDS, CRGB((30-i),(20+i),0));
FastLED.show();
delay(33);
}
Serial.println("connected to WIFI..");
espalexa_addDevices();
espalexa.begin();
delay(1000);
FastLED.show();
for ( int i = 50; i >= 0; i-- ) { // fade from green to black
fill_solid( leds, NUM_LEDS, CRGB(0,i,0));
FastLED.show();
delay(20);
}
}
Serial.println("Now it's time to ask alexa to discover devices...");
}
void loop()
{
espalexa.loop();
delay(1);
}
void espalexa_addDevices() { // add Devices you want
espalexa.addDevice("Light", colorLightChanged);
Serial.println("devices added");
}
//the color device callback function has two parameters
void colorLightChanged(uint8_t brightness, uint32_t rgb) {
float r = ((rgb >> 16) & 0xFF);
float g = ((rgb >> 8) & 0xFF);
float b = (rgb & 0xFF);
int rd = round( r / 255 * brightness );
int gd = round( g / 255 * brightness );
int bd = round( b / 255 * brightness );
//do what you need to do here, for example control RGB LED strip
Serial.print("Brightness: ");
Serial.print(brightness);
Serial.print("\tRed: ");
Serial.print(r); //get red component
Serial.print("\tGreen: ");
Serial.print(g); //get green
Serial.print("\tBlue: ");
Serial.print(b); //get blue
Serial.print("\tDimmed Red: ");
Serial.print(rd); //get red component
Serial.print("\tGreen: ");
Serial.print(gd); //get green
Serial.print("\tBlue: ");
Serial.println(bd); //get blue
fill_solid( leds, NUM_LEDS, CRGB(rd,gd,bd));
FastLED.show();
}
Aha okay three times 😁 i only noticed the <> icon above which inserts one time `
Any idea why i'm getting only the first 2 led's in my strip light up? The first one is white and the second is green, it also doesn't respond to commands. Alexa discovers the device and i see the commands come up in serial monitor when i say "Alexa turn on light" etc.
Also when using the alexa app, i can turn the light on, but then if i try to change the brightness or colour, it turns the device off (in the app).
I'm using a 1m 30 led ws2812b strip with nodemcu amica v2 connecting to pin D4, 3v3 and gnd. Running fastled on its own lights up all led's.
Any idea why i'm getting only the first 2 led's in my strip light up?
Poste your code
/*
This is a basic example on how to use Espalexa with FastLED LED Strip
- first start: LED orange indicates: connect to me ;)
- LED switches to green if youre connected and configured wifi and Espalexa in your wlan
- then LED fades to black and its ready
- otherwise LED will be switches to red and reset itselfes
*/
#ifdef ARDUINO_ARCH_ESP32
#include <WiFi.h>
#else
#include <ESP8266WiFi.h>
#endif
#include <DNSServer.h> //Local DNS Server used for redirecting all requests to the configuration portal
#include <ESP8266WebServer.h> //Local WebServer used to serve the configuration portal
#include <WiFiManager.h> //https://github.com/tzapu/WiFiManager WiFi Configuration Magic
#include <Espalexa.h>
#include <FastLED.h>
#define DATA_PIN D4
//#define CLOCK_PIN ?
#define NUM_LEDS 30
CRGB leds[NUM_LEDS];
//callback function prototype
void colorLightChanged(uint8_t brightness, uint32_t rgb);
Espalexa espalexa;
void setup()
{
// Uncomment/edit one of the following lines for your leds arrangement.
// FastLED.addLeds<TM1803, DATA_PIN, RGB>(leds, NUM_LEDS);
// FastLED.addLeds<TM1804, DATA_PIN, RGB>(leds, NUM_LEDS);
// FastLED.addLeds<TM1809, DATA_PIN, RGB>(leds, NUM_LEDS);
// FastLED.addLeds<WS2811, DATA_PIN, RGB>(leds, NUM_LEDS);
// FastLED.addLeds<WS2812, DATA_PIN, RGB>(leds, NUM_LEDS);
FastLED.addLeds<WS2812B, DATA_PIN, GRB>(leds, NUM_LEDS);
// FastLED.addLeds<NEOPIXEL, DATA_PIN>(leds, NUM_LEDS);
// FastLED.addLeds<APA104, DATA_PIN, RGB>(leds, NUM_LEDS);
// FastLED.addLeds<UCS1903, DATA_PIN, RGB>(leds, NUM_LEDS);
// FastLED.addLeds<UCS1903B, DATA_PIN, RGB>(leds, NUM_LEDS);
// FastLED.addLeds<GW6205, DATA_PIN, RGB>(leds, NUM_LEDS);
// FastLED.addLeds<GW6205_400, DATA_PIN, RGB>(leds, NUM_LEDS);
// FastLED.addLeds<WS2801, RGB>(leds, NUM_LEDS);
// FastLED.addLeds<SM16716, RGB>(leds, NUM_LEDS);
// FastLED.addLeds<LPD8806, RGB>(leds, NUM_LEDS);
// FastLED.addLeds<P9813, RGB>(leds, NUM_LEDS);
// FastLED.addLeds<APA102, RGB>(leds, NUM_LEDS);
// FastLED.addLeds<DOTSTAR, RGB>(leds, NUM_LEDS);
// FastLED.addLeds<WS2801, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS);
// FastLED.addLeds<SM16716, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS);
// FastLED.addLeds<LPD8806, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS);
// FastLED.addLeds<P9813, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS);
// FastLED.addLeds<APA102, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS);
// FastLED.addLeds<DOTSTAR, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS);
for ( int i = 0; i <= 30; i++ ) { // fade from black to orange
fill_solid( leds, NUM_LEDS, CRGB(i,round( (i / 1,5) ),0));
FastLED.show();
delay(20);
}
Serial.begin(115200);
Serial.println("connect to Espalexa and configure wifi");
WiFiManager wifiManager;
if (!wifiManager.autoConnect("Espalexa")) {
fill_solid( leds, NUM_LEDS, CRGB(255,0,0)); // red
FastLED.show();
Serial.println("failed to connect and hit timeout");
//reset and try again, or maybe put it to deep sleep
ESP.reset();
delay(1000);
} else {
for ( int i = 0; i <= 30; i++ ) { // fade from orange to green
fill_solid( leds, NUM_LEDS, CRGB((30-i),(20+i),0));
FastLED.show();
delay(33);
}
Serial.println("connected to WIFI..");
espalexa_addDevices();
espalexa.begin();
delay(1000);
FastLED.show();
for ( int i = 50; i >= 0; i-- ) { // fade from green to black
fill_solid( leds, NUM_LEDS, CRGB(0,i,0));
FastLED.show();
delay(20);
}
}
Serial.println("Now it's time to ask alexa to discover devices...");
}
void loop()
{
espalexa.loop();
delay(1);
}
void espalexa_addDevices() { // add Devices you want
espalexa.addDevice("Light", colorLightChanged);
Serial.println("devices added");
}
//the color device callback function has two parameters
void colorLightChanged(uint8_t brightness, uint32_t rgb) {
float r = ((rgb >> 16) & 0xFF);
float g = ((rgb >> 8) & 0xFF);
float b = (rgb & 0xFF);
int rd = round( r / 255 * brightness );
int gd = round( g / 255 * brightness );
int bd = round( b / 255 * brightness );
//do what you need to do here, for example control RGB LED strip
Serial.print("Brightness: ");
Serial.print(brightness);
Serial.print("\tRed: ");
Serial.print(r); //get red component
Serial.print("\tGreen: ");
Serial.print(g); //get green
Serial.print("\tBlue: ");
Serial.print(b); //get blue
Serial.print("\tDimmed Red: ");
Serial.print(rd); //get red component
Serial.print("\tGreen: ");
Serial.print(gd); //get green
Serial.print("\tBlue: ");
Serial.println(bd); //get blue
fill_solid( leds, NUM_LEDS, CRGB(rd,gd,bd));
FastLED.show();
}
You have serial connection? What it says?
All sorted now, must have been corrupt upload or something, erased the flash and it seems fine now.