Diferencia entre revisiones de «Daniela Murillo - Proyecto Final I&P»
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== | ||
#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 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(); | |||
} | } | ||
} | } | ||
//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ítulo | Daniela Murillo - Proyecto Final I&P |
---|---|
Tipo de Proyecto | Proyecto de Curso |
Palabras Clave | tinkercad, arduino |
Período | 2020-2020 |
Asignatura | Interacción y Performatividad |
Del Curso | Interacción y Performatividad 2020 |
Carreras | Diseñ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 |
Profesor | Renzo 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.
Materiales
- 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.
Cubrir la cabeza con papel alusa plast y fijar, puedes ayudarte con masking tape para mantenerla en su lugar
Cubrir con dos capas de papel mache y finalizar con una fina capa de yeso, lijar las imperfecciones
crear un agujero en el cual se encajará una rosca
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.
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.
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.
Procede a pintar el casco del color que gustes, de preferencia oscuro.Cuando este seco asegura con una rosca los visores y el casco.
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 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); }