Аналоговый вход для изменения цвета RGB - PullRequest
0 голосов
/ 01 марта 2020

Я настраиваю датчик угла поворота для моего аналогового чейнджера. Цифровой дисплей показывает, где мы находимся в пределах досягаемости. Я пытаюсь создать цветовую гамму с аналоговым диапазоном, но не могу понять, как заставить цвета меняться с аналоговым диапазоном.

// This #include statement was automatically added by the Particle IDE.
#include <Grove_ChainableLED.h>

// This #include statement was automatically added by the Particle IDE.
#include <Grove_4Digit_Display.h>

#define NUM_LEDS 1 
ChainableLED leds(D2, D3, NUM_LEDS);

#define POT1 A0
#define LED1 D2
#define CLK D4
#define DIO D5

TM1637 tm1637(CLK,DIO);

int analogValue = 0;
float hue = 0.0;

void setup() 
{
    pinMode(LED1 , OUTPUT);
    pinMode(POT1 , INPUT);
    tm1637.set();
    tm1637.init();
    Serial.begin(9600);
}

void loop()
{
    analogValue = analogRead(POT1);
    hue = analogValue;
    analogWrite(LED1, map(analogValue, 0, 4095, 0, 255));
    tm1637.display(0, (analogValue / 1000));
    tm1637.display(1, (analogValue % 1000 /100));
    tm1637.display(2, (analogValue % 100 /10));
    tm1637.display(3, (analogValue % 10));
    leds.setColorHSB(0, map(hue, 0.0, 4095.0, 0.0, 1.0), 1.0, 0.2);
    delay(200);

}

1 Ответ

0 голосов
/ 13 марта 2020

Мне удалось перенаправить то, как я смотрел, чтобы свет менял цвет. В целом я смог заставить его работать. Цифровой дисплей работал с поворотной ручкой, затем, когда он достиг 2000, цвет меняется.

// This #include statement was automatically added by the Particle IDE.
#include <Grove_ChainableLED.h>

// This #include statement was automatically added by the Particle IDE.
#include <TM1637Display.h>

// This #include statement was automatically added by the Particle IDE.
#include <Grove_4Digit_Display.h>



#define POT1 A0
#define CLK D4
#define DIO D5

#define NUM_LEDS 1

TM1637 tm1637(CLK,DIO);
ChainableLED leds(D2, D3, NUM_LEDS);

int analogValue;
int hue = 0.0;


void setup() 
{

    pinMode(POT1 , INPUT);
    tm1637.set();
    tm1637.init();
    leds.init();
    Particle.variable("Displayed_Number", analogValue);
    leds.setColorRGB(0, 0, 0, 255);
}

void loop()
{


    //Reading Input From Knob Turning
    analogValue = analogRead(POT1);
    hue = analogValue;
    tm1637.display(0, (analogValue / 1000));
    tm1637.display(1, (analogValue % 1000 /100));
    tm1637.display(2, (analogValue % 100 /10));
    tm1637.display(3, (analogValue % 10));
    delay(200);


    if (analogValue > 2000) {
        //Turn Light On When Above Number
        leds.setColorRGB(0, 255, 0, 0);
    }

    if (analogValue <= 2000) {
        //Light Is Off If Below Number
        leds.setColorRGB(0, 0, 255, 0);
    }

}
...