proyectos:vestuario_aqa
Diferencias
Muestra las diferencias entre dos versiones de la página.
Ambos lados, revisión anteriorRevisión previa | Próxima revisiónAmbos lados, revisión siguiente | ||
proyectos:vestuario_aqa [2019/12/04 02:35] – [Código para el proyecto del corazon] brolin | proyectos:vestuario_aqa [2019/12/06 06:04] – [Leds con plantower] kz | ||
---|---|---|---|
Línea 479: | Línea 479: | ||
} | } | ||
</ | </ | ||
+ | |||
+ | ==== Leds + plantower: cambia color segun lectura del sensor ==== | ||
+ | |||
+ | platformio.ini | ||
+ | |||
+ | <code c++> | ||
+ | [env: | ||
+ | platform = espressif8266 | ||
+ | board = d1_mini | ||
+ | framework = arduino | ||
+ | lib_deps = FastLED, PMS Library, https:// | ||
+ | |||
+ | </ | ||
+ | |||
+ | main.cpp | ||
+ | < | ||
+ | #include " | ||
+ | #include < | ||
+ | #include " | ||
+ | #include < | ||
+ | #include < | ||
+ | #include < | ||
+ | |||
+ | #define P_TOWER_RX D2 | ||
+ | #define P_TOWER_TX 6 | ||
+ | |||
+ | // Plantower | ||
+ | SoftwareSerial plantower_serial(P_TOWER_RX, | ||
+ | PMS pms(plantower_serial); | ||
+ | PMS::DATA data; | ||
+ | |||
+ | int pm2_5 = 0; | ||
+ | int *dir_pm2_5; | ||
+ | |||
+ | // Leds | ||
+ | #define DATA_PIN D7 | ||
+ | #define CLK_PIN D6 | ||
+ | #define LED_TYPE DOTSTAR | ||
+ | #define COLOR_ORDER BGR | ||
+ | #define NUM_LEDS 26 // estos 10 es para que cuando lea el sensor no se vean los leds prendidos | ||
+ | #define BRIGHTNESS 96 | ||
+ | CRGB leds[NUM_LEDS]; | ||
+ | |||
+ | //create one canvas and one brush with global scope | ||
+ | FastLEDPainterCanvas pixelcanvas = FastLEDPainterCanvas(NUM_LEDS); | ||
+ | FastLEDPainterBrush pixelbrush = FastLEDPainterBrush(& | ||
+ | |||
+ | CHSV brushcolor; //the brush and the canvas operate on HSV color space only | ||
+ | |||
+ | int color = 0; | ||
+ | int speed = 400; | ||
+ | |||
+ | int time_hours = 0; | ||
+ | int time_minutes = 0; | ||
+ | int time_seconds = 0; | ||
+ | |||
+ | void readPlantower(); | ||
+ | void animateLeds(); | ||
+ | void updateValues(); | ||
+ | |||
+ | void setup() { | ||
+ | //initilize FastLED library | ||
+ | FastLED.addLeds< | ||
+ | |||
+ | plantower_serial.begin(9600); | ||
+ | Serial.begin(115200); | ||
+ | Serial.println(" | ||
+ | Serial.println(F(" | ||
+ | |||
+ | //check if ram allocation of brushes and canvases was successful (painting will not work if unsuccessful, | ||
+ | //this check is optional but helps to check if something does not work, especially on low ram chips like the Arduino Uno | ||
+ | if (pixelcanvas.isvalid() == false) | ||
+ | Serial.println(F(" | ||
+ | else | ||
+ | Serial.println(F(" | ||
+ | |||
+ | if (pixelbrush.isvalid() == false) | ||
+ | Serial.println(F(" | ||
+ | else | ||
+ | Serial.println(F(" | ||
+ | |||
+ | // | ||
+ | brushcolor.h = color; //zero is red in HSV. Library uses 0-255 instead of 0-360 for colors (see https:// | ||
+ | brushcolor.s = 255; // | ||
+ | brushcolor.v = 130; // | ||
+ | |||
+ | pixelbrush.setSpeed(speed); | ||
+ | pixelbrush.setColor(brushcolor); | ||
+ | pixelbrush.setFadeSpeed(130); | ||
+ | pixelbrush.setFadeout(true); | ||
+ | pixelbrush.setBounce(true); | ||
+ | |||
+ | // set pointer | ||
+ | dir_pm2_5 = &pm2_5; | ||
+ | |||
+ | // setup time | ||
+ | setTime(time_hours, | ||
+ | } | ||
+ | |||
+ | void loop() { | ||
+ | readPlantower(); | ||
+ | } | ||
+ | |||
+ | void readPlantower() { | ||
+ | int sec = second(); | ||
+ | if (sec == 0 || sec == 15 || sec == 20 || sec == 30 || sec == 40 || sec == 50 || | ||
+ | sec == 5 || sec == 10 || sec == 35 || sec == 35 || sec == 45 || sec == 55) { | ||
+ | pms.wakeUp(); | ||
+ | if (pms.read(data)) { | ||
+ | pm2_5 = data.PM_AE_UG_2_5; | ||
+ | delay(500); | ||
+ | updateValues(); | ||
+ | } | ||
+ | Serial.print(" | ||
+ | Serial.println(*dir_pm2_5); | ||
+ | } | ||
+ | else { | ||
+ | Serial.print(" | ||
+ | Serial.println(*dir_pm2_5); | ||
+ | pms.sleep(); | ||
+ | animateLeds(); | ||
+ | } | ||
+ | // Serial.print(" | ||
+ | // Serial.println(sec); | ||
+ | } | ||
+ | |||
+ | void animateLeds(){ | ||
+ | // Serial.println(" | ||
+ | FastLED.clear(); | ||
+ | pixelbrush.paint(); | ||
+ | pixelcanvas.transfer(); | ||
+ | FastLED.show(); | ||
+ | } | ||
+ | |||
+ | void updateValues() { | ||
+ | // varia en los que varia | ||
+ | /* | ||
+ | 233 minimo | ||
+ | 1225 maximo | ||
+ | */ | ||
+ | if (*dir_pm2_5 < 400){ | ||
+ | brushcolor.h = 90; // aire bueno verde | ||
+ | pixelbrush.setColor(brushcolor); | ||
+ | pixelbrush.setFadeout(true); | ||
+ | pixelbrush.setBounce(true); | ||
+ | } else if (*dir_pm2_5 > 400 ) { | ||
+ | brushcolor.h = 200; // aire regular azul | ||
+ | pixelbrush.setColor(brushcolor); | ||
+ | pixelbrush.setFadeout(true); | ||
+ | pixelbrush.setBounce(true); | ||
+ | } else if (*dir_pm2_5 > 800) { | ||
+ | brushcolor.h = 155; // aire malo ? | ||
+ | pixelbrush.setColor(brushcolor); | ||
+ | pixelbrush.setFadeout(true); | ||
+ | pixelbrush.setBounce(true); | ||
+ | } else if (*dir_pm2_5 > 1200) { | ||
+ | brushcolor.h = 0; // magenta aire podrido | ||
+ | pixelbrush.setColor(brushcolor); | ||
+ | pixelbrush.setFadeout(true); | ||
+ | pixelbrush.setBounce(true); | ||
+ | } | ||
+ | } | ||
+ | </ | ||
+ | |||
proyectos/vestuario_aqa.txt · Última modificación: 2021/10/30 23:38 por kz