https://wiki.unloquer.org/_media/proyectos/talleres/ets/talleretsbibliosanjavier.mp4
Para generar ideas:
Sensores de calidad del aire y weareables: https://youtu.be/8ZFxrDkVOFk
Para crear los conceptos:
Comprender el mundo a través de los datos:
¿Para que sirven los datos?
https://www.behance.net/gallery/82992729/Dear-Data-Postcard
http://www.visualcomplexity.com/vc/project_details.cfm?id=666&index=27&domain=Music
https://maxelectronica.cl/3891-thickbox_default/modulo-max9814-sensor-de-sonido-microfono-electret-20-20khz.jpg
Repositorios de github: https://github.com/unloquer/ETSesnor
Repositorio del código sesión 2: intensidad
https://github.com/unloquer/ETSesnor/blob/main/src/src.ino
Descargar repositorio codigo para programar una “imagen” en la matriz
#include <FastLED.h> #define LED_PIN D3 #define LED_TYPE WS2812B #define COLOR_ORDER GRB #define amarillo CRGB::Yellow #define negro CRGB::Black #define rojo CRGB::Red #define azul CRGB::Blue #define maplv1 0x00FF00 #define maplv2 0x00AA00 #define maplv3 0xFFFF00 #define maplv4 0xFFE994 #define maplv5 0xFFAA00 #define maplv6 0xEC9BA4 #define maplv7 0xE1AA00 #define maplv8 0xFF00FF #define maplv9 0x00DAFE #define maplv10 0x0181FE const uint8_t matrixWidth = 8; const uint8_t matrixHeight = 8; #define NUM_LEDS (matrixWidth * matrixHeight) int BRIGHTNESS = 60; CRGB leds[matrixWidth * matrixHeight]; int loop_cnt = 0; const int sampleWindow = 50; // Sample window width in mS (50 mS = 20Hz) unsigned int sample; void setup() { Serial.begin(115200); LEDS.addLeds<LED_TYPE,LED_PIN,COLOR_ORDER>(leds,NUM_LEDS); FastLED.setBrightness(BRIGHTNESS); } #define ESCENAS 1 CRGB matrix[ESCENAS][8][8] = { { {azul, azul, azul,azul, azul, azul, azul,azul}, {azul, azul, azul,azul, azul, azul, azul,azul}, {azul, azul, azul,azul, azul, azul, azul,azul}, {azul, azul, azul,azul, azul, azul, azul,azul}, {azul, azul, azul,azul, azul, azul, azul,azul}, {azul, azul, azul,azul, azul, azul, azul,azul}, {azul, azul, azul,azul, azul, azul, azul,azul}, {azul, azul, azul,azul, azul, azul, azul,azul}, }, }; void loop() { for(int i = 0; i< matrixHeight; i++) { for(int j = 0; j< matrixWidth; j++) { leds[i*matrixWidth + j] = matrix[loop_cnt%ESCENAS][i][j]; } } unsigned long startMillis = millis(); // Start of sample window unsigned int peakToPeak = 0; unsigned int signalMax = 0; unsigned int signalMin = 1024; // collect data for 50 mS while (millis() - startMillis < sampleWindow) { sample = analogRead(0); if (sample < 1024) { if (sample > signalMax) { signalMax = sample; } else if (sample < signalMin) { signalMin = sample; } } } peakToPeak = signalMax - signalMin; int changeBrightness = map(peakToPeak, 20, 500, 0, 100); FastLED.setBrightness(changeBrightness); FastLED.show(); Serial.println(peakToPeak); loop_cnt++; FastLED.clear(); }
#include <Arduino.h> #include <FastLED.h> #include <algorithm> #define LED_PIN D3 #define LED_TYPE WS2812B #define COLOR_ORDER GRB /* ** ** https://github.com/FastLED/ ** https://github.com/gmoehrke/FastFX ** https://www.reddit.com/r/FastLED/wiki/index/user_examples ** https://macetech.github.io/FastLED-XY-Map-Generator/ ** */ #define amarillo CRGB::Yellow #define negro CRGB::Black #define rojo CRGB::Red #define azul CRGB::Blue #define morado CRGB::Purple #define naranja CRGB::OrangeRed #define verde CRGB::Green #define aguamarina CRGB::Cyan #define rosado CRGB::Fuchsia #define verdedos CRGB::LimeGreen #define raro CRGB::DarkOrchid #define rarodos CRGB::DeepPink #define maplv1 0x00FF00 #define maplv2 0x00AA00 #define maplv3 0xFFFF00 #define maplv4 0xFFE994 #define maplv5 0xFFAA00 #define maplv6 0xEC9BA4 #define maplv7 0xE1AA00 #define maplv8 0xFF00FF #define maplv9 0x00DAFE #define maplv10 0x0181FE const uint8_t matrixWidth = 8; const uint8_t matrixHeight = 8; #define NUM_LEDS (matrixWidth * matrixHeight) int BRIGHTNESS = 10; CRGB leds[matrixWidth * matrixHeight]; const int sampleWindow = 50; // Sample window width in mS (50 mS = 20Hz) unsigned int sample; class Matrix { CRGB *leds = NULL; uint8_t numLeds = 0; uint8_t currBrightness = 0; public: Matrix(CRGB *initLeds, uint8_t initNum) { leds = initLeds; numLeds = initNum; } // fill all matrix with same color void fill(CRGB color) { for (int i = 0; i < 64; i++) { leds[i] = color; } }; // fill a binary shape with same color // { // B00000000, // B10101010, // B00000000, // B10101010, // B00000000, // B10101010, // B00000000, // B10101010 // }; void fill(CRGB color, byte *shape) { for (int i = 0; i < matrixHeight; i++) { for (int j = 0; j < matrixWidth; j++) { if (shape[i] & 1 << j) { // if bitwise AND resolves to leds[i * matrixHeight + j] = color; // send 1 } } } }; // fill color shape void fill(CRGB color_shape[][8]) { for (int i = 0; i < matrixHeight; i++) { for (int j = 0; j < matrixWidth; j++) { leds[i * matrixHeight + j] = color_shape[i][j]; // send 1 } } }; // fill row with color void fill_y(CRGB color, int row) { for (int j = 0; j < matrixWidth; j++) { leds[row * matrixHeight + j] = color; // send 1 } }; void fill_y_until(CRGB color_shape[][8], int until) { for (int i = 0; i < until; i++) { for (int j = 0; j < matrixWidth; j++) { leds[i * matrixHeight + j] = color_shape[i][j]; // send 1 } } }; // fille column with color void fill_x(CRGB color, int column) { for (int i = 0; i < matrixHeight; i++) { leds[i * matrixHeight + column] = color; // send 1 } }; void fill_x_until(CRGB color_shape[][8], int until) { for (int i = 0; i < matrixHeight; i++) { for (int j = 0; j < until; j++) { leds[i * matrixHeight + j] = color_shape[i][j]; // send 1 } } }; // of array in matrix int sound_scale(); // return the actual level of sound intensity void color_scale(int sl); // return color for 10 levels of sound intensity }; Matrix *mym; byte sshape[8] = {B00000000, B10101010, B00000000, B10101010, B00000000, B10101010, B00000000, B10101010}; CRGB matrix[8][8] = { {maplv2, maplv2, negro, negro, negro, negro, negro, negro}, {maplv3, maplv3, maplv3, negro, negro, negro, negro, negro}, {maplv4, maplv4, maplv4, maplv4, negro, negro, negro, negro}, {maplv5, maplv5, maplv5, maplv5, maplv5, negro, negro, negro}, {maplv6, maplv6, maplv6, maplv6, maplv6, maplv6, negro, negro}, {maplv7, maplv7, maplv7, maplv7, maplv7, maplv7, maplv7, negro}, {maplv8, maplv8, maplv8, maplv8, maplv8, maplv8, maplv8, maplv8}, {maplv9, maplv9, maplv9, maplv9, maplv9, maplv9, maplv9, maplv9}, }; unsigned int sample_sound() { unsigned long startMillis = millis(); // Start of sample window unsigned int peakToPeak = 0; unsigned int signalMax = 0; unsigned int signalMin = 1024; // collect data for 50 mS while (millis() - startMillis < sampleWindow) { sample = analogRead(0); if (sample < 1024) { if (sample > signalMax) { signalMax = sample; } else if (sample < signalMin) { signalMin = sample; } } } peakToPeak = signalMax - signalMin; return peakToPeak; } void setup() { Serial.begin(115200); LEDS.addLeds<LED_TYPE, LED_PIN, COLOR_ORDER>(leds, NUM_LEDS); mym = new Matrix(leds, 64); FastLED.setBrightness(BRIGHTNESS); } void loop() { int sample = sample_sound(); // tomado de https://forum.arduino.cc/t/map-but-log/379910/3 int logmaplv = log(sample + 1) / log(900) * 9; Serial.println(logmaplv); for (int i = 0; i <= logmaplv; i++) { mym->fill_y_until(matrix, i); FastLED.show(); FastLED.delay(30); } FastLED.clear(); }