Back to Parent

// This #include statement was automatically added by the Particle IDE.
#include <neopixel.h>
//#include <Servo.h> //included in particle by default

int ledPin = D3;
int buttonPin = D4;
bool doLED = false;

int buttonVar =0;
int buttonValue;
bool LEDvar = false;

Servo flowerServo;
int servoPin = D6;
int servoValue = 0;
#define servoMin  0
#define servoMax  200


#define PIXEL_PIN D5
#define PIXEL_COUNT 1 //8 for stick, 16 for ring
#define PIXEL_TYPE WS2812B //for 4pin neopixels, WS2812/WS2813 for 6pin
Adafruit_NeoPixel flowerLED = Adafruit_NeoPixel( PIXEL_COUNT, PIXEL_PIN, PIXEL_TYPE);
#define PIXEL_PIN_POT D7
#define PIXEL_COUNT_POT 16
#define PIXEL_TYPE_POT WS2812B
Adafruit_NeoPixel potLED = Adafruit_NeoPixel(PIXEL_COUNT_POT, PIXEL_PIN_POT, PIXEL_TYPE_POT);
int redValue = 40;
int greenValue = 40;
int blueValue = 40;
bool pulseDirection = true;
int pulseDifference = 0;
int pulseMax = 28;

int test = 0;

void setup() {
    // pinMode( ledPin, OUTPUT);
    pinMode( buttonPin, INPUT_PULLUP);

    // Particle.subscribe( "blinkLED", handleActivateLED );
    // blinkLED( 3, ledPin );

    // Particle.variable("Button", buttonVar);
    // Particle.variable("led", LEDvar);
    
    flowerServo.attach(servoPin);
    flowerServo.write(servoMin);
    Particle.function("servo", servoControl);
    Particle.variable(  "servoValue" , &servoValue , INT );
    Particle.variable(  "testValue" , &test , INT );
    
    flowerLED.begin();
    potLED.begin();
    Particle.function("Red_Value", setRedValue);
    Particle.function("Green_Value", setGreenValue);
    Particle.function("Blue_Value", setBlueValue);
    flowerLED.setPixelColor(0, redValue, greenValue, blueValue);
    for(int i=0; i<potLED.numPixels();i++){
        potLED.setPixelColor(i, redValue, greenValue, blueValue);
        //potLED.show();
        test++;
    }
    flowerLED.setPixelColor(0, redValue, greenValue, blueValue);
    flowerLED.show();
    potLED.show();
}

void loop() {
    //flowerServo.write(servoMin);
    //delay(1000);
    //flowerServo.write(servoMax);
    //flowerServo.write(180);

    buttonValue = digitalRead( buttonPin );
    // buttonVar = buttonValue;
    if( buttonValue == LOW ){
        //Particle.publish( "doPairedPublish" );
        if(servoValue == servoMin){
            servoValue = servoMax;
        }else{
            servoValue = servoMin;
            }
        flowerServo.write(servoValue);
    }
    //flowerServo.write(servoValue);

    // if( doLED == true ){
    //     blinkLED( 6, ledPin );
    //     doLED = false;
    //     LEDvar = doLED;
    // }
    colorPulse(); //for flower tip single pixel, not pot ring
    flowerLED.show();
    for(int i=0; i<potLED.numPixels();i++){
        potLED.setPixelColor(i, redValue, greenValue, blueValue);
        //potLED.show();
    }
    potLED.show();
    delay(100);

}

int setRedValue(String command)
{
    // Convert
   redValue = command.toInt();
   flowerLED.setPixelColor(0, redValue, greenValue, blueValue);
   for(int i=0; i<potLED.numPixels();i++){
        potLED.setPixelColor(i, redValue, greenValue, blueValue);
        //potLED.show();
    }
   return 1;
}
int setGreenValue(String command)
{
    // Convert
   greenValue = command.toInt();
   flowerLED.setPixelColor(0, redValue, greenValue, blueValue);
   for(int i=0; i<potLED.numPixels();i++){
        potLED.setPixelColor(i, redValue, greenValue, blueValue);
        potLED.show();
    }
   return 1;
}
int setBlueValue(String command)
{
    // Convert
   blueValue = command.toInt();
   flowerLED.setPixelColor(0, redValue, greenValue, blueValue);
   for(int i=0; i<potLED.numPixels();i++){
        potLED.setPixelColor(i, redValue, greenValue, blueValue);
        potLED.show();
    }
   return 1;
}

void colorPulse(){
    flowerLED.setPixelColor(0, redValue-pulseDifference, greenValue-pulseDifference, blueValue-pulseDifference);
    // for(int i=0; i<PIXEL_COUNT_POT;i++){
    //     potLED.setPixelColor(i, redValue, greenValue, blueValue);
    // }
    
    if(pulseDirection){
        pulseDifference++;
        if(pulseDifference>=pulseMax){
            pulseDirection = !pulseDirection;
        }
    }else{
        pulseDifference--;
        if(pulseDifference <=0){
            pulseDirection = !pulseDirection;
        }
    }
}

int servoControl(String command)
{
    // Convert
   int newPos = command.toInt();
   // Make sure it is in the right range
   // And set the position
   servoValue = constrain( newPos, servoMin , servoMax);

   // Set the servo
   flowerServo.write( servoValue );

   // done
   return 1;
}
Click to Expand

Content Rating

Is this a good/useful/informative piece of content to include in the project? Have your say!

0