Daniela Murillo - Proyecto Final I&P

De Casiopea


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

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
DMI 2.png
DMI 3.png
DMI 4.png
DMI 5.png
DMI 6.png
DMI 8.png
DMI 7.png

Materiales

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);
}