proyectos:talleres:ets:recursos
Diferencias
Muestra las diferencias entre dos versiones de la página.
| Ambos lados, revisión anteriorRevisión previaPróxima revisión | Revisión previa | ||
| proyectos:talleres:ets:recursos [2021/11/28 00:02] – jero98772 | proyectos:talleres:ets:recursos [2023/07/19 19:37] (actual) – brolin | ||
|---|---|---|---|
| Línea 1: | Línea 1: | ||
| + | https:// | ||
| + | ====== El taller ====== | ||
| + | |||
| + | {{: | ||
| + | {{: | ||
| + | {{: | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| ====== Videos ====== | ====== Videos ====== | ||
| ===== Sesión 1 ===== | ===== Sesión 1 ===== | ||
| Línea 29: | Línea 40: | ||
| Sensores de calidad del aire y weareables: https:// | Sensores de calidad del aire y weareables: https:// | ||
| + | ===== Fanzine con manual de instalación | ||
| + | |||
| + | {{: | ||
| + | |||
| + | |||
| + | {{ : | ||
| ===== Sesión 3 ===== | ===== Sesión 3 ===== | ||
| Línea 79: | Línea 96: | ||
| https:// | https:// | ||
| + | ==== Ejemplo básico ===== | ||
| <file c++ ejemplo.ino> | <file c++ ejemplo.ino> | ||
| Línea 171: | Línea 189: | ||
| </ | </ | ||
| + | FIXME | ||
| + | ==== Librería para escribir en la matriz ==== | ||
| + | FIXME | ||
| + | |||
| + | <file c++ libmatrix.ino> | ||
| + | #include < | ||
| + | #include < | ||
| + | #include < | ||
| + | #define LED_PIN D3 | ||
| + | #define LED_TYPE WS2812B | ||
| + | #define COLOR_ORDER GRB | ||
| + | |||
| + | /* | ||
| + | ** | ||
| + | ** https:// | ||
| + | ** https:// | ||
| + | ** https:// | ||
| + | ** https:// | ||
| + | ** | ||
| + | */ | ||
| + | |||
| + | #define amarillo CRGB:: | ||
| + | #define negro CRGB::Black | ||
| + | #define rojo CRGB::Red | ||
| + | #define azul CRGB::Blue | ||
| + | #define morado CRGB:: | ||
| + | #define naranja CRGB:: | ||
| + | #define verde CRGB::Green | ||
| + | #define aguamarina CRGB::Cyan | ||
| + | #define rosado CRGB:: | ||
| + | #define verdedos CRGB:: | ||
| + | #define raro CRGB:: | ||
| + | #define rarodos CRGB:: | ||
| + | #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; | ||
| + | for (int j = 0; j < matrixWidth; | ||
| + | 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; | ||
| + | for (int j = 0; j < matrixWidth; | ||
| + | leds[i * matrixHeight + j] = color_shape[i][j]; | ||
| + | } | ||
| + | } | ||
| + | }; | ||
| + | // fill row with color | ||
| + | void fill_y(CRGB color, int row) { | ||
| + | for (int j = 0; j < matrixWidth; | ||
| + | leds[row * matrixHeight + j] = color; // send 1 | ||
| + | } | ||
| + | }; | ||
| + | void fill_y_until(CRGB color_shape[][8], | ||
| + | for (int i = 0; i < until; i++) { | ||
| + | for (int j = 0; j < matrixWidth; | ||
| + | leds[i * matrixHeight + j] = color_shape[i][j]; | ||
| + | } | ||
| + | } | ||
| + | }; | ||
| + | // fille column with color | ||
| + | void fill_x(CRGB color, int column) { | ||
| + | for (int i = 0; i < matrixHeight; | ||
| + | leds[i * matrixHeight + column] = color; // send 1 | ||
| + | } | ||
| + | }; | ||
| + | void fill_x_until(CRGB color_shape[][8], | ||
| + | for (int i = 0; i < matrixHeight; | ||
| + | for (int j = 0; j < until; j++) { | ||
| + | leds[i * matrixHeight + j] = color_shape[i][j]; | ||
| + | } | ||
| + | } | ||
| + | }; | ||
| + | // of array in matrix | ||
| + | int sound_scale(); | ||
| + | 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< | ||
| + | mym = new Matrix(leds, | ||
| + | FastLED.setBrightness(BRIGHTNESS); | ||
| + | } | ||
| + | |||
| + | void loop() { | ||
| + | int sample = sample_sound(); | ||
| + | // tomado de https:// | ||
| + | int logmaplv = log(sample + 1) / log(900) * 9; | ||
| + | Serial.println(logmaplv); | ||
| + | |||
| + | for (int i = 0; i <= logmaplv; i++) { | ||
| + | mym-> | ||
| + | FastLED.show(); | ||
| + | FastLED.delay(30); | ||
| + | } | ||
| + | |||
| + | FastLED.clear(); | ||
| + | } | ||
| + | </ | ||
| ==== Diagrama electronico ===== | ==== Diagrama electronico ===== | ||
| Línea 180: | Línea 390: | ||
| * https:// | * https:// | ||
| + | * https:// | ||
| + | * | ||
| ====== Contacto ====== | ====== Contacto ====== | ||
proyectos/talleres/ets/recursos.1638057723.txt.gz · Última modificación: por jero98772
