Diferencia entre revisiones de «Daniela Murillo - Proyecto Final I&P»

De Casiopea
Sin resumen de edición
 
(No se muestran 13 ediciones intermedias del mismo usuario)
Línea 13: Línea 13:
=Proyecto=
=Proyecto=
==Casco luminoso==
==Casco luminoso==
Objeto pensado para eventos, vídeos o fotografías en ambientes nocturnos que no sigue un patrón específico
Casco con tiras de 8 neopixel con encendido aleatorio en las que 2 de las tiras exteriores se comportan de manera igual y la tira central se comporta de manera independiente.
[https://www.tinkercad.com/things/dgVqevl6f2V-proyecto-final-ip Prototipo en Tinkercad]
==Materiales==
==Materiales==
==Código==
#Alusa plast
#Masking tape
#Papel de diario
#Cola
#Yeso
#lija
#Taladro
#Acrílico(oscuro o polarizado) o plástico
#Arduino UNO
#Fuente de energía
#3 tiras de 8 NeoPixel
#rosca
#Pintura para auto(brillante) o pintura metálica
 
Casco con tiras de 8 neopixel con encendido aleatorio en las que 2 de las tiras exteriores se comportan de manera igual y la tira central se comporta de manera independiente.
[[Archivo:DMI 1.png |center| 500px]]
Cubrir la cabeza con papel alusa plast y fijar, puedes ayudarte con masking tape para mantenerla en su lugar
[[Archivo:DMI 2.png |center| 500px]]
Cubrir con dos capas de papel mache y finalizar con una fina capa de yeso, lijar las imperfecciones
[[Archivo:DMI 3.png |center| 500px]]
crear un agujero en el cual se encajará una rosca
[[Archivo:DMI 4.png |center| 500px]]
Utilizando acrílico el cual se doblará al aplicarle calor para llegar a la forma de unos anteojos, deberás medirtelo a tu rostro hasta que estés satisfecho, o de forma más económica utilizando plástico de botella, pero este es más delgado. Debes crear dos siendo el exterior 0,5 cm más grande por cada lado. el visor debe quedar superpuesto al casco general para que al levantar el visor puedas retirarlo.
[[Archivo:DMI 5.png |center| 500px]]
Prueba ambos visores y asegura que no choquen el uno con el otro y dejen un espacio suficiente para no dañar el circuito interior.
[[Archivo:DMI 6.png |center| 500px]]
Prueba el circuito y colócalo entre los visores asegura los circuitos para que no se muevan al visor interior. Deja salir el cable por una orilla del casco pero sin fijarlo.
[[Archivo:DMI 8.png |center| 500px]]
Procede a pintar el casco del color que gustes, de preferencia oscuro.Cuando este seco asegura con una rosca los visores y el casco.
[[Archivo:DMI 7.png |center| 500px]]
Conecta el circuito a una fuente de energía usb y apaga la luz, podrás divertirte tomando buenas fotos del resultado!
 


==Código y circuito==
Circuito
[[Archivo:Casconeopixel.gif]]
Código para Arduino desde tinkercad
Código para Arduino desde tinkercad
  #include <Adafruit_NeoPixel.h>
  #include <Adafruit_NeoPixel.h>
// numero de filas y columnas matriz de 8x8 aplicada a 3x8
// numero de filas y columnas matriz de 8x8 aplicada a 3x8
#define BUTTON_PIN  2
#define NUM_COLS  8
#define NUM_COLS  8
#define NUM_ROWS  8
#define NUM_ROWS  8
// pin de inicio  
// pin de inicio  
// Top row starts at START_PIN
// Top row starts at START_PIN
#define START_PIN 9
#define START_PIN 9
#define PIN_INC  -1
#define PIN_INC  -1


// Set to 1 to wrap pixels   
// Set to 1 to wrap pixels   
#define ALLOW_WRAP 1
#define ALLOW_WRAP 1


Adafruit_NeoPixel rows[NUM_ROWS] = {0};
Adafruit_NeoPixel rows[NUM_ROWS] = {0};


// pxel buffer
// pxel buffer
int pixels[NUM_ROWS][NUM_COLS];
int pixels[NUM_ROWS][NUM_COLS];


// tiempo que se demora
// tiempo que se demora
// wait between frames
// wait between frames
int frameDelayMs = 500;
int frameDelayMs = 500;




void setup() {
void setup() {
   int pin = START_PIN;
   int pin = START_PIN;
   for (int r = 0; r < NUM_ROWS; ++r, pin += PIN_INC)
   for (int r = 0; r < NUM_ROWS; ++r, pin += PIN_INC)
Línea 46: Línea 84:
     rows[r] = Adafruit_NeoPixel(NUM_COLS, pin, NEO_GRB + NEO_KHZ800);
     rows[r] = Adafruit_NeoPixel(NUM_COLS, pin, NEO_GRB + NEO_KHZ800);
   }
   }
}
}
// loop de prendido y apagado
// loop de prendido y apagado
void loop() {
void loop() {
   clear();
   clear();
   drawFilledRect(random(1, 8), random(3, 8),
   drawFilledRect(random(1, 8), random(3, 8),
Línea 57: Línea 95:
   refreshDisplay();
   refreshDisplay();
   delay(frameDelayMs);
   delay(frameDelayMs);
}
}


void drawRect(int x, int y, int w, int h, int color)
void drawRect(int x, int y, int w, int h, int color)
{
{
   int x2 = x + (w - 1);
   int x2 = x + (w - 1);
   int y2 = y + (h - 1);
   int y2 = y + (h - 1);
Línea 73: Línea 111:
       setPixel(x2, r, color);
       setPixel(x2, r, color);
   }
   }
}
}




void drawFilledRect(int x, int y, int w, int h, int color)
void drawFilledRect(int x, int y, int w, int h, int color)
{
{
   int x2 = x + (w - 1);
   int x2 = x + (w - 1);
   int y2 = y + (h - 1);
   int y2 = y + (h - 1);
Línea 88: Línea 126:
  }
  }
   }
   }
}
}


void clear() {
void clear() {
   memset(pixels, 0, sizeof(pixels));
   memset(pixels, 0, sizeof(pixels));
}
}


void fill(int color)
void fill(int color)
{
{
   for(int r = 0; r < NUM_ROWS; ++r){
   for(int r = 0; r < NUM_ROWS; ++r){


Línea 103: Línea 141:
     }
     }
   }
   }
}
}


void setPixel(int x, int y, int color)
void setPixel(int x, int y, int color)
{
{
#if ALLOW_WRAP
#if ALLOW_WRAP
   x = x % NUM_COLS;
   x = x % NUM_COLS;
   y = y % NUM_ROWS;
   y = y % NUM_ROWS;
#else
#else
   if (y < 0 || y >= NUM_ROWS ||
   if (y < 0 || y >= NUM_ROWS ||
       x < 0 || x >= NUM_COLS)
       x < 0 || x >= NUM_COLS)
Línea 116: Línea 154:
     return;
     return;
   }
   }
#endif
#endif
    
    
   pixels[y][x] = color;
   pixels[y][x] = color;
}
}


void refreshDisplay()
void refreshDisplay()
{
{
   for(int r = 0; r < NUM_ROWS; ++r)
   for(int r = 0; r < NUM_ROWS; ++r)
   {
   {
Línea 129: Línea 167:
     rows[r].setPixelColor(c, pixels[r][c]);
     rows[r].setPixelColor(c, pixels[r][c]);
   }
   }
rows[r].show();
        rows[r].show();
   }
   }
}
}
//seleccionador de colores azules y verdes
//seleccionador de colores azules y verdes
int randomColor(){
int randomColor(){
   int redColor = random(0, 50);
   int redColor = random(0, 50);
   int greenColor = random(0, 20);
   int greenColor = random(0, 20);
   int blueColor = random (0, 80);
   int blueColor = random (0, 80);
   return Adafruit_NeoPixel::Color(redColor, greenColor, blueColor);
   return Adafruit_NeoPixel::Color(redColor, greenColor, blueColor);
}
}

Revisión actual - 22:51 24 jun 2020


TítuloDaniela Murillo - Proyecto Final I&P
Tipo de ProyectoProyecto de Curso
Palabras Clavetinkercad, arduino
Período2020-2020
AsignaturaInteracción y Performatividad
Del CursoInteracción y Performatividad 2020
CarrerasDiseño, Diseño Gráfico"Diseño Gráfico" is not in the list (Arquitectura, Diseño, Magíster, Otra) of allowed values for the "Carreras Relacionadas" property., Diseño Industrial"Diseño Industrial" is not in the list (Arquitectura, Diseño, Magíster, Otra) of allowed values for the "Carreras Relacionadas" property.
Alumno(s)Daniela Murillo
ProfesorRenzo Varela

Proyecto

Casco luminoso

Objeto pensado para eventos, vídeos o fotografías en ambientes nocturnos que no sigue un patrón específico Casco con tiras de 8 neopixel con encendido aleatorio en las que 2 de las tiras exteriores se comportan de manera igual y la tira central se comporta de manera independiente.

Prototipo en Tinkercad

Materiales

  1. Alusa plast
  2. Masking tape
  3. Papel de diario
  4. Cola
  5. Yeso
  6. lija
  7. Taladro
  8. Acrílico(oscuro o polarizado) o plástico
  9. Arduino UNO
  10. Fuente de energía
  11. 3 tiras de 8 NeoPixel
  12. rosca
  13. Pintura para auto(brillante) o pintura metálica

Casco con tiras de 8 neopixel con encendido aleatorio en las que 2 de las tiras exteriores se comportan de manera igual y la tira central se comporta de manera independiente.

DMI 1.png

Cubrir la cabeza con papel alusa plast y fijar, puedes ayudarte con masking tape para mantenerla en su lugar

DMI 2.png

Cubrir con dos capas de papel mache y finalizar con una fina capa de yeso, lijar las imperfecciones

DMI 3.png

crear un agujero en el cual se encajará una rosca

DMI 4.png

Utilizando acrílico el cual se doblará al aplicarle calor para llegar a la forma de unos anteojos, deberás medirtelo a tu rostro hasta que estés satisfecho, o de forma más económica utilizando plástico de botella, pero este es más delgado. Debes crear dos siendo el exterior 0,5 cm más grande por cada lado. el visor debe quedar superpuesto al casco general para que al levantar el visor puedas retirarlo.

DMI 5.png

Prueba ambos visores y asegura que no choquen el uno con el otro y dejen un espacio suficiente para no dañar el circuito interior.

DMI 6.png

Prueba el circuito y colócalo entre los visores asegura los circuitos para que no se muevan al visor interior. Deja salir el cable por una orilla del casco pero sin fijarlo.

DMI 8.png

Procede a pintar el casco del color que gustes, de preferencia oscuro.Cuando este seco asegura con una rosca los visores y el casco.

DMI 7.png

Conecta el circuito a una fuente de energía usb y apaga la luz, podrás divertirte tomando buenas fotos del resultado!


Código y circuito

Circuito Casconeopixel.gif Código para Arduino desde tinkercad

#include <Adafruit_NeoPixel.h>
// numero de filas y columnas matriz de 8x8 aplicada a 3x8
#define NUM_COLS  8
#define NUM_ROWS  8
// pin de inicio 
// Top row starts at START_PIN
#define START_PIN 9
#define PIN_INC   -1
// Set to 1 to wrap pixels  
#define ALLOW_WRAP 1
Adafruit_NeoPixel rows[NUM_ROWS] = {0};
// pxel buffer
int pixels[NUM_ROWS][NUM_COLS];
// tiempo que se demora
// wait between frames
int frameDelayMs = 500;


void setup() {
 int pin = START_PIN;
 for (int r = 0; r < NUM_ROWS; ++r, pin += PIN_INC)
 {
   rows[r] = Adafruit_NeoPixel(NUM_COLS, pin, NEO_GRB + NEO_KHZ800);
 }
}
// loop de prendido y apagado
void loop() {
 clear();
 drawFilledRect(random(1, 8), random(3, 8),
                random(5, 8), random(5, 6), randomColor());
 
 drawRect(random(1, 7), random(4, 8),
          random(5, 7), random(6, 8), randomColor());
 refreshDisplay();
 delay(frameDelayMs);
}
void drawRect(int x, int y, int w, int h, int color)
{
 int x2 = x + (w - 1);
 int y2 = y + (h - 1);
 
 for(int c = x; c <= x2; c++){
     setPixel(c, y, color);
     setPixel(c, y2, color);
 }
 for(int r = y; r <= y2; r++){
     setPixel(x, r, color);
     setPixel(x2, r, color);
 }
}


void drawFilledRect(int x, int y, int w, int h, int color)
{
 int x2 = x + (w - 1);
 int y2 = y + (h - 1);
 
 for(int c = x; c <= x2; c++)
 {

for(int r = y; r <= y2; r++)

     {
     	setPixel(c, r, color);

}

 }
}
void clear() {
 memset(pixels, 0, sizeof(pixels));
}
void fill(int color)
{
 for(int r = 0; r < NUM_ROWS; ++r){
   for(int c = 0; c < NUM_COLS; ++c){
     setPixel(c, r, color);
   }
 }
}
void setPixel(int x, int y, int color)
{
#if ALLOW_WRAP
 x = x % NUM_COLS;
 y = y % NUM_ROWS;
#else
 if (y < 0 || y >= NUM_ROWS ||
     x < 0 || x >= NUM_COLS)
 {
   return;
 }
#endif
 
 pixels[y][x] = color;
}
void refreshDisplay()
{
 for(int r = 0; r < NUM_ROWS; ++r)
 {
 	for(int c = 0; c < NUM_COLS; ++c)
   {
   	rows[r].setPixelColor(c, pixels[r][c]);
 	}
       rows[r].show();
 }
}
//seleccionador de colores azules y verdes
int randomColor(){
 int redColor = random(0, 50);
 int greenColor = random(0, 20);
 int blueColor = random (0, 80);
 return Adafruit_NeoPixel::Color(redColor, greenColor, blueColor);
}