Herramientas de usuario

Herramientas del sitio


proyectos:talleres:ets:recursos

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anteriorRevisión previa
Próxima revisión
Revisión previa
proyectos:talleres:ets:recursos [2021/11/27 15:54] – [Github y Código] brolinproyectos:talleres:ets:recursos [2023/07/19 19:37] (actual) brolin
Línea 1: Línea 1:
 +https://wiki.unloquer.org/_media/proyectos/talleres/ets/talleretsbibliosanjavier.mp4
 +====== El taller ======
 +
 +{{:proyectos:talleres:ets:whatsapp_image_2021-12-10_at_17.28.06.jpeg?200|}}
 +{{:proyectos:talleres:ets:whatsapp_image_2021-12-10_at_17.28.56.jpeg?200|}}
 +{{:proyectos:talleres:ets:whatsapp_image_2021-12-10_at_17.30.28.jpeg?400|}}
 +
 +
 +
 +
 +
 ====== Videos ====== ====== Videos ======
 ===== Sesión 1 ===== ===== Sesión 1 =====
Línea 29: Línea 40:
 Sensores de calidad del aire y weareables: https://youtu.be/8ZFxrDkVOFk  Sensores de calidad del aire y weareables: https://youtu.be/8ZFxrDkVOFk 
  
 +===== Fanzine con manual de instalación  =====
 +
 +{{:proyectos:talleres:ets:sin_titulo.png?nolink&200|}}
 +
 +
 +{{ :proyectos:talleres:ets:sin_titulo.pdf |}}
 ===== Sesión 3 ===== ===== Sesión 3 =====
  
Línea 79: Línea 96:
 https://github.com/unloquer/ETSesnor https://github.com/unloquer/ETSesnor
  
 +==== Ejemplo básico =====
 <file c++ ejemplo.ino> <file c++ ejemplo.ino>
  
Línea 171: Línea 189:
 </file> </file>
  
 +FIXME
 +==== Librería para escribir en la matriz ====
 +FIXME
 +
 +<file c++ libmatrix.ino>
 +#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();
 +}
 +</file>
 +==== Diagrama electronico =====
 +
 +{{:proyectos:talleres:ets:diagram.png}}
  
 **Descargar repositorio codigo para programar varios estados en la matriz** **Descargar repositorio codigo para programar varios estados en la matriz**
Línea 177: Línea 390:
  
   * https://www.reddit.com/r/FastLED/wiki/index/user_examples   * https://www.reddit.com/r/FastLED/wiki/index/user_examples
 +  * https://connornishijima.github.io/Pixie_Chroma/?section=shortcodes
 +  * 
 +
 +====== Contacto ======
  
 +https://t.me/unloquer
  
  
  
proyectos/talleres/ets/recursos.1638028440.txt.gz · Última modificación: 2021/11/27 15:54 por brolin