Difference between revisions of "Bargueño-las mutaciones"
Line 108: | Line 108: | ||
==== Código del sensor capacitivo ==== | ==== Código del sensor capacitivo ==== | ||
+ | #include <CapacitiveSensor.h> | ||
+ | #define COMUN 2 | ||
+ | #define MUESTRAS 10 | ||
+ | #define UMBRAL 2400 | ||
+ | |||
+ | CapacitiveSensor tecla(COMUN, 3); | ||
+ | int speakerPin = 12; // Introducimos la variable por donde saldrá nuestra señal digital hasta el zumbador | ||
+ | // Definimos una variable con el número de tonos que va a reproducir | ||
+ | int numTones = 1; //10; //tonos que tocará. | ||
+ | int tones[] = {261, 277, 294, 311, 330, 349, 370, 392, 415, 440}; //{261}; | ||
+ | // mid C C# D D# E F F# G G# A | ||
+ | // Arriba se muestran las equivalencias entre frecuencias y Notas de la escala natural, no están todas declaradas pero existen | ||
+ | |||
+ | void setup() { | ||
+ | Serial.begin(9600); | ||
+ | tecla.set_CS_AutocaL_Millis(0xFFFFFFFF); | ||
+ | |||
+ | randomSeed(analogRead(0)); | ||
+ | pinMode(4, OUTPUT); | ||
+ | pinMode(5, OUTPUT); | ||
+ | pinMode(6, OUTPUT); | ||
+ | pinMode(7, OUTPUT); | ||
+ | pinMode(8, OUTPUT); | ||
+ | pinMode(9, OUTPUT); | ||
+ | pinMode(10, OUTPUT); | ||
+ | pinMode(11, OUTPUT); | ||
+ | pinMode(13, OUTPUT); // activa el led | ||
+ | } | ||
+ | |||
+ | void reconoce() { | ||
+ | digitalWrite(13, HIGH); // conecta el led para indicar que ha sido reconocido | ||
+ | for (int i = 0; i < numTones; i++) // Generamos un bucle que recorra nuestro vector. Este será el encargado de introducir una determinada frecuencia al zumbador cada vez, conforme hayamos declarado el vector de tonos. | ||
+ | |||
+ | { | ||
+ | tone(speakerPin, tones[i]); //inicia el zumbador | ||
+ | delay(100); | ||
+ | } | ||
+ | |||
+ | elegirCasilla(); // inicia la función elegirCsdilla() para elegir el sensor que va a funcionar | ||
+ | |||
+ | noTone(speakerPin); // finaliza el zumbador | ||
+ | digitalWrite(13, LOW); // desconecta el led | ||
+ | delay(5000); //espera 5000 milisegundos | ||
+ | |||
+ | //elegirCasilla(); | ||
+ | } | ||
+ | |||
+ | void elegirCasilla() { | ||
+ | int randNumber; | ||
+ | |||
+ | randNumber = random(1, 9); // Elegirir una casilla aleatoria de 1-8 ambos inclusive | ||
+ | |||
+ | switch (randNumber) { | ||
+ | case 1: // hace algo cuando var es igual a 1 | ||
+ | Serial.println("caso1"); //imprime en pantalla el caso elegido | ||
+ | digitalWrite(4, HIGH); | ||
+ | delay(200); | ||
+ | digitalWrite(4, LOW); | ||
+ | break; | ||
+ | case 2: // hace algo cuando var es igual a 2 | ||
+ | Serial.println("caso2"); //imprime en pantalla el caso elegido | ||
+ | digitalWrite(5, HIGH); | ||
+ | delay(200); | ||
+ | digitalWrite(5, LOW); | ||
+ | break; | ||
+ | case 3: // hace algo cuando var es igual a 3 | ||
+ | Serial.println("caso3"); //imprime en pantalla el caso elegido | ||
+ | digitalWrite(6, HIGH); | ||
+ | delay(200); | ||
+ | digitalWrite(6, LOW); | ||
+ | break; | ||
+ | case 4: // hace algo cuando var es igual a 4 | ||
+ | Serial.println("caso4"); //imprime en pantalla el caso elegido | ||
+ | digitalWrite(7, HIGH); | ||
+ | delay(200); | ||
+ | digitalWrite(7, LOW); | ||
+ | break; | ||
+ | case 5: // hace algo cuando var es igual a 5 | ||
+ | Serial.println("caso5"); //imprime en pantalla el caso elegido | ||
+ | digitalWrite(8, HIGH); | ||
+ | delay(200); | ||
+ | digitalWrite(8, LOW); | ||
+ | break; | ||
+ | case 6: // hace algo cuando var es igual a 6 | ||
+ | Serial.println("caso6"); //imprime en pantalla el caso elegido | ||
+ | digitalWrite(9, HIGH); | ||
+ | delay(200); | ||
+ | digitalWrite(9, LOW); | ||
+ | break; | ||
+ | case 7: // hace algo cuando var es igual a 7 | ||
+ | Serial.println("caso7"); //imprime en pantalla el caso elegido | ||
+ | digitalWrite(10, HIGH); | ||
+ | delay(200); | ||
+ | digitalWrite(10, LOW); | ||
+ | break; | ||
+ | case 8: // hace algo cuando var es igual a 8 | ||
+ | Serial.println("caso8"); //imprime en pantalla el caso elegido | ||
+ | digitalWrite(11, HIGH); | ||
+ | delay(200); | ||
+ | digitalWrite(11, LOW); | ||
+ | break; | ||
+ | } | ||
+ | } | ||
+ | |||
+ | void loop() { | ||
+ | |||
+ | static int n = 0; | ||
+ | |||
+ | if (tecla.capacitiveSensor(MUESTRAS) > UMBRAL) | ||
+ | //incia la función reconoce() al acercarse alguien o algo | ||
+ | reconoce(); | ||
+ | } | ||
[[Category:Proyectos]][[Category:Arte]] | [[Category:Proyectos]][[Category:Arte]] |
Revision as of 16:10, 8 October 2015
Contents
Título: BARGUEÑO (las mutaciones)
Miembros: User:Antonio Alvarado
Exposición del proyecto
Objetivo
Construir una obra artística en forma de mueble, basada en un bargueño clásico. El bargueño como el mandala es una representación del mundo, en este caso de un mundo oculto. Es una metáfora de nuestro propio cerebro.
Motivación
La creatividad no necesita motivaciones.
Concepto
La realidad es mutable, lo que vivimos o sentimos es un espejismo multidimensional. Este proyecto es una forma de representar esa multiplicidad de dimensiones.
Antecedentes
Parte de una experiencia infantil. Cuando tenía 8 años pase un verano en casa de un tío mío. Mi tío tenía un bargueño en el recibidor de su casa. El mueble me atraía por su infinidad de cajones. Un día me atreví a abrirlos. Los abrí al azar hasta que en uno de ellos encontré una pistola. Esto trastocó mi mundo pues mi tío era muy buena persona y la pistola le convirtió en un desconocido que escondía un pasado oscuro.
A lo largo de todo mi trabajo, la multiplicidad y la ambigüedad de la existencia son una constante.
Desarrollo
Un Bargueño tiene patas y múltiples cubículos(en un bargueño clásico son cajones, en este proyecto pueden ser pequeños túneles a modo de tubo), cada uno de ellos puede mostrar una faceta de la realidad.
En este bargueño, las patas pueden servir de antena o encerrar una. Al captar el movimiento ponen en funcionamiento un programa que activa aleatoriamente uno o varios cubículos.
En el bargueño que propongo cada cubículo (cajón) esconde un trozo de realidad. Algunas de esas realidades ya existen y otras esperan su cubículo. Hay también cubículos que tendrán que buscarla. Cada uno de estos cubiculos puede necesitar su propio software que permita mostrar su interior.
Una vez seleccionado por el programa general, cada cubículo podrá actuar independientemente controlado por su propio software y hardware. O bien todos o algunos de los cubículos podrán actuar interrelacionados y controlados por un programa que controle múltiples elementos, como PureData.
Algunos de estos departamentos encierran poemas, otros una cámara que graba lo que ve si está activo (al espectador le parecerá inerte) y guardará la información para su uso bien inmediato o en otro momento ante diferentes espectadores, otros proyectan lo que vieron aquellos. También recitan poemas, o transforman lo que dicen los espectadores mediante micrófonos y/o altavoces que copian literalmente o distorsionan estas conversaciones.
No está totalmente definido lo que ocurre al acercarse al bargueño.
Pequeñas obras (en cuanto a tamaño) de otros autores pueden incluirse en el interior de algunos de los cubículos
Podría funcionar mediante la utilización de diferentes lenguajes de programación. PureData, Arduino, C, o aquel que sea mas pertinente para cada una de sus partes.
Progreso del trabajo
Fecha de la primera idea: 21 de diciembre de 2013.
Fecha publicación en la wiki: 17 de febrero de 2014.
Fecha convocatoria de participación: 25 de junio de 2014.
Estado del proyecto
El proyecto se encuentra en un primer estadio de diseño.
Duración estimada
Se calcula que la realización puede ser entre 3 y 7 años.
Primer boceto con sus anotaciones:
Diseño definitivo a 11 de septiembre de 2014
File:2014 09 11 bargueno y cotas.jpg
Extructura definitiva en julio de 2015
La extructura de la obra está realizada en acero y contrachapado de madera. De las tres piezas de madera dos están directamente apoyadas sobre la extructura de acero y una de ellas sujeta con tornillos de ensamblaje.
Cada una de las piezas de madera tiene una función.
La pieza de madera cuadrada contiene 9 habitáculos o cajones que llamaremos "captadores", estos captadores son sensores de diverso tipo que reconocen al espectador y diversas circustancias del medio, como pueda ser fecha, temperatura, velocidad del viento o situación geográfica. Esta pieza empieza a actuar mediante un sensor capcitivo y activa aleatoriamente a uno de los otros sensores.
Hay una segunda pieza rectángular de 20 habitáculos o cajones que llamares "actuadores".
Una tercera pieza rectángular de 5 habitáculos o cajones que llamaremos "conectores" y que estarían relacionados con IoT.
File:2015 07 09 contenido provisional cajones.jpg
Progreso del proyecto el 6 de octubre de 2015
En este momento se ha desarrollado el sensor capacitivo que pondrá en funcionamiento toda la obra. Material utilizado:
- La extructura de acero de la obra a modo de sensor. - 1 placa Arduino Uno. - 1 zumbador. - 1 led blanco - 8 conexiones a digitales que activan los 8 sensores "captadores2 restantes.
File:Sensor capacitivo umbral 2400.jpg
Ha sido compilado con la versión de Arduino 1.6.4
Código del sensor capacitivo
- include <CapacitiveSensor.h>
- define COMUN 2
- define MUESTRAS 10
- define UMBRAL 2400
CapacitiveSensor tecla(COMUN, 3); int speakerPin = 12; // Introducimos la variable por donde saldrá nuestra señal digital hasta el zumbador // Definimos una variable con el número de tonos que va a reproducir int numTones = 1; //10; //tonos que tocará. int tones[] = {261, 277, 294, 311, 330, 349, 370, 392, 415, 440}; //{261}; // mid C C# D D# E F F# G G# A // Arriba se muestran las equivalencias entre frecuencias y Notas de la escala natural, no están todas declaradas pero existen
void setup() {
Serial.begin(9600); tecla.set_CS_AutocaL_Millis(0xFFFFFFFF);
randomSeed(analogRead(0)); pinMode(4, OUTPUT); pinMode(5, OUTPUT); pinMode(6, OUTPUT); pinMode(7, OUTPUT); pinMode(8, OUTPUT); pinMode(9, OUTPUT); pinMode(10, OUTPUT); pinMode(11, OUTPUT); pinMode(13, OUTPUT); // activa el led
}
void reconoce() {
digitalWrite(13, HIGH); // conecta el led para indicar que ha sido reconocido for (int i = 0; i < numTones; i++) // Generamos un bucle que recorra nuestro vector. Este será el encargado de introducir una determinada frecuencia al zumbador cada vez, conforme hayamos declarado el vector de tonos. { tone(speakerPin, tones[i]); //inicia el zumbador delay(100); }
elegirCasilla(); // inicia la función elegirCsdilla() para elegir el sensor que va a funcionar
noTone(speakerPin); // finaliza el zumbador digitalWrite(13, LOW); // desconecta el led delay(5000); //espera 5000 milisegundos
//elegirCasilla();
}
void elegirCasilla() {
int randNumber; randNumber = random(1, 9); // Elegirir una casilla aleatoria de 1-8 ambos inclusive
switch (randNumber) { case 1: // hace algo cuando var es igual a 1 Serial.println("caso1"); //imprime en pantalla el caso elegido digitalWrite(4, HIGH); delay(200); digitalWrite(4, LOW); break; case 2: // hace algo cuando var es igual a 2 Serial.println("caso2"); //imprime en pantalla el caso elegido digitalWrite(5, HIGH); delay(200); digitalWrite(5, LOW); break; case 3: // hace algo cuando var es igual a 3 Serial.println("caso3"); //imprime en pantalla el caso elegido digitalWrite(6, HIGH); delay(200); digitalWrite(6, LOW); break; case 4: // hace algo cuando var es igual a 4 Serial.println("caso4"); //imprime en pantalla el caso elegido digitalWrite(7, HIGH); delay(200); digitalWrite(7, LOW); break; case 5: // hace algo cuando var es igual a 5 Serial.println("caso5"); //imprime en pantalla el caso elegido digitalWrite(8, HIGH); delay(200); digitalWrite(8, LOW); break; case 6: // hace algo cuando var es igual a 6 Serial.println("caso6"); //imprime en pantalla el caso elegido digitalWrite(9, HIGH); delay(200); digitalWrite(9, LOW); break; case 7: // hace algo cuando var es igual a 7 Serial.println("caso7"); //imprime en pantalla el caso elegido digitalWrite(10, HIGH); delay(200); digitalWrite(10, LOW); break; case 8: // hace algo cuando var es igual a 8 Serial.println("caso8"); //imprime en pantalla el caso elegido digitalWrite(11, HIGH); delay(200); digitalWrite(11, LOW); break; }
}
void loop() {
static int n = 0;
if (tecla.capacitiveSensor(MUESTRAS) > UMBRAL) //incia la función reconoce() al acercarse alguien o algo reconoce();
}