Herramientas de usuario

Herramientas del sitio


proyectos:talleres:ets:recursos

¡Esta es una revisión vieja del documento!


Videos

Sesión 1

Sesión 2

Para generar ideas:

Sensores de calidad del aire y weareables: https://youtu.be/8ZFxrDkVOFk

Fanzine con manual de instalación

Sesión 3

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

Componentes

ESP 8266

Micrófono

Info del Micrófono

Amplificador

Matriz de leds

Aplicación Android

Entorno para desktop

Github y Código

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

https://github.com/unloquer/ETSesnor

Ejemplo básico

ejemplo.ino
 
#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();
}

FIXME

Librería en proceso para usar matriz led

FIXME

matrixlib.ino
#include <Arduino.h>
#include <FastLED.h>
#include <algorithm>
#define LED_PIN D1
#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 = 50;
CRGB leds[matrixWidth * matrixHeight];
 
int animator = 0;
const int sampleWindow = 50; // Sample window width in mS (50 mS = 20Hz)
unsigned int sample;
 
int inputMin = -2;
int inputMax = 110;
 
int rangeMin = 20;
 
int rangeMiddleMin = 21;
int rangeMiddleMax = 60;
 
int rangleMax = 61;
 
CRGBPalette16 currentPalette = OceanColors_p;
CRGBPalette16 targetPalette = OceanColors_p;
TBlendType currentBlending = LINEARBLEND; // NOBLEND or LINEARBLEND
 
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
    }
  };
  // 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
    }
  };
  // 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;
 
void setup() {
  Serial.begin(115200);
  LEDS.addLeds<LED_TYPE, LED_PIN, COLOR_ORDER>(leds, NUM_LEDS);
  mym = new Matrix(leds, 64);
  FastLED.setBrightness(BRIGHTNESS);
}
 
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 loop() {
  // int sample = sample_sound();
  // int maplv = map(sample, inputMin, inputMax, 0, 10);
 
  // EVERY_N_SECONDS(5) {
  //   for (int i = 0; i < 16; i++) {
  //     targetPalette[i] = CHSV(random8(), 255, 255);
  //   }
  // }
 
  // mym->fill(azul);
  // FastLED.show();
  // delay(1000);
  // mym->fill(rojo);
  // FastLED.show();
  // delay(1000);
  // mym->fill(maplv5);
  // FastLED.show();
  // delay(1000);
  // mym->fill(maplv6);
  // FastLED.show();
  // delay(1000);
  // mym->fill(maplv8);
  // FastLED.show();
  // FastLED.delay(1000);
  // mym->fill(maplv10);
  // FastLED.show();
  // FastLED.delay(1000);
  // mym->fill(matrix);
  // FastLED.show();
  // FastLED.delay(1000);
  // mym->fill(verde);
  // mym->fill(raro, sshape);
  // FastLED.show();
  // FastLED.delay(1000);
  FastLED.clear();
  mym->fill_x(maplv1, 0);
  mym->fill_y(maplv1, 0);
  FastLED.show();
  FastLED.delay(50);
 
  FastLED.clear();
  mym->fill_x(maplv2, 1);
  mym->fill_y(maplv2, 1);
  FastLED.show();
  FastLED.delay(50);
 
  FastLED.clear();
  mym->fill_x(maplv3, 2);
  mym->fill_y(maplv3, 2);
  FastLED.show();
  FastLED.delay(50);
 
  FastLED.clear();
  mym->fill_x(maplv4, 3);
  mym->fill_y(maplv4, 3);
  FastLED.show();
  FastLED.delay(50);
 
  FastLED.clear();
  mym->fill_x(maplv5, 4);
  mym->fill_y(maplv5, 4);
  FastLED.show();
  FastLED.delay(50);
 
  FastLED.clear();
  mym->fill_x(maplv6, 5);
  mym->fill_y(maplv6, 5);
  FastLED.show();
  FastLED.delay(50);
 
  FastLED.clear();
  mym->fill_x(maplv8, 6);
  mym->fill_y(maplv8, 6);
  FastLED.show();
  FastLED.delay(50);
 
  FastLED.clear();
  mym->fill_x(maplv10, 7);
  mym->fill_y(maplv10, 7);
  FastLED.show();
  FastLED.delay(50);
  FastLED.clear();
 
  // Serial.println(maplv);
  FastLED.clear();
}

Diagrama electronico

Descargar repositorio codigo para programar varios estados en la matriz

Referentes

Contacto

proyectos/talleres/ets/recursos.1638659852.txt.gz · Última modificación: 2021/12/04 23:17 por elmago116