Publicado por

Práctica – Theremin Visual

Publicado por

Práctica – Theremin Visual

La idea principal de este proyecto es crear un Theremin cuyo objetivo sea crear visuales en tiempo real en vez de sonido.…
La idea principal de este proyecto es crear un Theremin cuyo objetivo sea crear visuales en tiempo real en…

La idea principal de este proyecto es crear un Theremin cuyo objetivo sea crear visuales en tiempo real en vez de sonido.

Para ello hemos instalado dos fotosensores que funcionan de forma independiente. Estos fotosensores recogen la cantidad de luz que le llega de forma analógica. Se conectan a través de la placa de Arduino a las entradas analógicas y una vez recogido los datos en el IDE de Arduino los pasamos al processing en variables para poder jugar con los valores, que se le aplican a la galaxia que se genera produciendo los siguientes cambios:

  • Cambio de tamaño ya que se mapea el valor recibido para pasarlo dentro de un rango al ancho y al alto de la figura que va dibujando.
  • Cambio de colores que se modifica según la luz que le llega.

En relación al fondo que es como un desierto de arena el theremin interactua de la siguiente manera:

  • Modificando con otro fotosensor el color de fondo de forma independiente al anterior. De esta manera se puede mantener el color en el fondo sin modificar la galaxia.

Añadiendo un potenciómetro que por un lado cambia el color a blanco de todo el fondo cuando llega al máximo valor, que en este caso es 255 porque se ha mapeado en processing y creando un efecto onírico al modificar el ruido.

Debate0en Práctica – Theremin Visual

No hay comentarios.

Publicado por

PEC 3 Theremin visual

Publicado por

PEC 3 Theremin visual

¿Cómo podríamos hacer disfrutar de un espectáculo musical a las personas sordas? Partimos de esta pregunta inicial, que nos servirá de guía…
¿Cómo podríamos hacer disfrutar de un espectáculo musical a las personas sordas? Partimos de esta pregunta inicial, que nos…

¿Cómo podríamos hacer disfrutar de un espectáculo musical a las personas sordas?

Partimos de esta pregunta inicial, que nos servirá de guía para establecer un contexto de investigación dentro del proceso design thinking.

Que se transformó en esta otra después de realizar la primera fase del design thinking

¿Cómo podemos crear un espectáculo para personas sordas adaptado para las personas con capacidad auditiva?

Ideas de proyecto

  • Crear un aparato que permita un baile gestual (tipo theremin) a partir del cual se crean unas imágenes visuales en processing y estas imágenes serán interpretadas en sonidos. Usamos el theremin para generar imágenes.
  • El theremin genera círculos radiales. Según introduces en el círculo, da lo mismo si por la derecha o por la izquierda se modifica el sonido. En nuestro caso funciona a través de un fototransmisor que recoge la cantidad de luz que recibe. Pero el concepto es el mismo.
  • Las notas están entre mi cuerpo y la antena.
  • Crear un theremin que active unas visuales de colores y genere sonidos
  • En el código son las visuales las que devuelven los datos al theremin. El proceso sería un fototransmisor envía los datos a las visuales que generan semialeatoriamente, programado con processing, unas figuras. En función de la imagen se produce un sonido. Es decir, invertimos el orden.
  • También dispondrá de un potenciómetro que afectará a las imágenes (ya sea por el color o la forma) y no al sonido.
  • El sonido no ha de ser bello. De hecho puede ser estridente buscando la necesidad del silencio que se puede conseguir tocando un pulsador. En ese momento el piezo pierde conexión y deja de sonar.
  • Varias personas pueden interactuar con diferentes fototransmisores. De esta manera se puede producir diálogos visuales.

 

Vídeo explicativo del proyecto

Debate0en PEC 3 Theremin visual

No hay comentarios.

Publicado por

Arduino (P2)

Publicado por

Arduino (P2)

Design Thinking Un artista audiovisual ha pedido un encargo. Necesita crear una pieza que simule un Theremin y que a la vez…
Design Thinking Un artista audiovisual ha pedido un encargo. Necesita crear una pieza que simule un Theremin y que…

Design Thinking

Un artista audiovisual ha pedido un encargo.

Necesita crear una pieza que simule un Theremin y que a la vez esté adaptado para que personas sordas. Para ello, a la vez que va cambiando la frecuencia de sonidos, también afectará a los colores de un led RGB.

Se le plantea crear un Theremin digital con entradas analógicas. Para ello se realiza la siguiente idea:

Un sensor fototransmisor capatará la cantidad de luz que le llega y como consecuencia, cuando pasemos la mano alrededor del sensor la cantidad de luz que le llegará se irá modificando. Dependiendo de los datos que devuelva el fototransmisor se le pasarán unos datos a un Piezo y emitirá diferentes sonidos.

Se propone la realización de un prototipo con Arduino, conectado por puerto USB a un ordenador que le dará una potencia máxima 5V. Con este simulador se podrá plantear una idea mucho más desarrollada y perfecionada.

Producto desarrollado

Componentes

Nos encontramos con diferentes  acciones que actúan sobre diferentes controles:

Iluminación (leds)

Tenemos dos leds, uno sencillo rojo y otro RGB.
El primero, el led rojo,  lo usamos para indicarnos que se están calibrando los fototransmisores. Cuando se apaga ya podemos iniciar el juego de luces y sonidos.

El Led RGB se usa para mostrar la versión audio en colores. Estos sensores tienen, a parte del cátodo que va a tierra, tres pines. Depende de la tensión que salen de los pines se modula el color del LED.

Audio

Se utiliza un elemento denominado Piezo que lo que hace es vibrar cuando recibe una señal. En nuestro caso la señal la recibimos mapeada desde uno de los  fototransistores, más concretamente el que le da la seña de rojo al pin del Led RGB.

Acción del usuario o entorno

El  entorno envía la acción a través de los fototransistores. Hay tres que envían la señal al Led RGB (rojo, verde y azul).

El usuario interactúa con los tres fototransistores aunque sólo uno de ellos, el mismo que envía la señal al pin rojo, es el que envía la señal a Piezo. El resto hace que la luz se modifique también cuando pasamos la mano a su alrededor. Por lo tanto se modifican el resto de colores.

Desarrollo

En las conexiones de los diferentes sensores y elementos se han tenido en cuenta  conectar los cátodos o emisores a tierra y los ánodos o colectores a difrentes pines.

En concreto destacar que hay 6 pines digitales en la placa de Arduino, marcados con ~ (~3, ~5, ~6, ~9, ~10, ~11). El LED RGB conecta sus diferentes pines en tres de estos pines digitales (en concreto el 9, 10, 11).

A estos pines digitales se les ha enviado información analógica (la luz ambiental a través de los fototransmisores, que están conectados a la placa de Arduino a los pines analógico (A0, A1, A2).

Hay que destacar un error que me he encontrado en el libro. La resistencia del pin rojo debería ser diferente a las del verde y el azul. Esto es debido a que necesita menos tensión para funcionar.

Para ello lo que se ha realizado es un cambio de resistencia en fototransmisor que envía la señal al rojo. En vez de 10Kilo ohmios le pasamos 1 Kilo ohmio y esto hace que llegue menos tensión.

Hay un red Rojo que conectado a tierra y al pin 13 que lo que hace es apagarse cuando en el se han calibrado los sensores a través del código recogido en el setup()

El bizer está conectado el pin 8 y envía una frecuencia según los valores recogidos por el fotsensor.


// FOTOTRANSISTOR
// ----------------
// Los fototransistores emiten un corriente proporcional a la cantidad de luz que absorven.
// Creamos las varibles constantes que nos indicarán donde están conectados Fototransistores o sensores de luz en la placa de Arduino
// Están conectados a los Pines de ENTRADAS ANALÓGICAS de la placa de Arduino
// cada Fototransistor le pasará un dato a un pin del LED RGB
const int redSensorPin = A0;
const int greenSensorPin = A1;
const int blueSensorPin = A2;

// LED RGB (emitirá una luz según la iluminación que le lleguen a los 3 fototransmisores
// ----------------
// Declaramos las variables que afectarán al sensor RGB
// Conectamos los tres terminales del sensor a tres de los 6 pines de arduino PWM ~ (9, 10, 11) identificados conn ~
// Hacemos constantes porque son variables que no se modifican, son fijas
const int greenLEDPin = 9;
const int blueLEDPin = 10;
const int redLEDPin = 11;

//FOTOTRANSISTOR para el Theremín
// ----------------
//Creamos variables enteras para uno de los fototransistores que será el que
//modifique el sonido emitido por el PIEZO

//_ Valores iniciales
int sensorValue;//variable que leerá el valor leído con la función analogRead(). En concreto el A0
int sensorLow; //el valor incial es de 1023
int sensorHigh = 0; //el valor inical es 00

// El fototransitor se tiene que calibrar. Cuando se calibra la luz del Pin se apaga y significa que
// el piezo comienza a funcionar porque los sensores de luz o fototransitores ya están calibrados
// Constante que indica que el sensor conectado a A0 ha terminado la calibración.
// Está conectado al pin 13
const int ledPin = 13;

// LED RGB
// ----------------
//_ Valores iniciales de los terminales del LED RGB que se usarán para modular el LED
// Valores de entrada
int redValue= 0;
int greenValue= 0;
int blueValue= 0;
// Valores de salida
int redSensorValue= 0;
int greenSensorValue= 0;
int blueSensorValue= 0;

void setup() {
// Establecemos la conexión entre la placa de Arduino y el ordenador
// para poder ver los valores de la entrada analógica en la pantalla del ordenador
// El argumento 9600bit/seg es la velocidad con la Que Arduino se comunicará
// usando el puerto serie IDE para ver la información que se envía desde el microcontrolador
// en este caso también veremos los valores mapeados con el método map()
Serial.begin(9600); //configuramos la comunicación serie a 9600 bps

//definimos los diferentes pin del LED RGB
pinMode(greenLEDPin, OUTPUT);
pinMode(redLEDPin, OUTPUT);
pinMode(blueLEDPin, OUTPUT);

//definimos el pin del LED rojo
pinMode(ledPin, OUTPUT);

//digitalWrite() es la función que permite enviar 5V o 0V a un pin de salida usando los
//dos argumentos posibles HIGH o LOW
//encendemos el LED rojo
digitalWrite(ledPin, HIGH);

//Hacemos un bucle para calibrar los valores máximos y mínimos del sensor conectado al pin A0
//que en nustro caso es el redSensorPin (el primero a la izda)
while(millis() < 5000){ sensorValue = analogRead(redSensorPin); // guardamos el valor recogido por el sensor, // en la variable creada al inicio if (sensorValue > sensorHigh){ //si ese valor que recoge es mayor que 0 es que recibe señal
sensorHigh = sensorValue; // cambiamos el valor del sensorHigh
// que al inicio era 0 con el valor que recoge el redSensorPin
// que recordamos es el que está conectado al A0
}
if (sensorValue < sensorLow){ //si el sensorValue es menor que 1023 que es l valor incial,
// es decir, no se pasa de rango
// le asignamos su valor a sensor low

sensorLow = sensorValue;
}
// como es un bucle estos valores van cambiando hasta que deje de ser cierta la condición
// en ese momento se mantien un valor de sensorHigh y otro de sensorLow y
// nos indica que ya está calibrado y se apaga la luz del LED rojo
}
digitalWrite(ledPin, LOW); //apagamos el led Rojo

}
void loop() {
// Theremin
// =========

sensorValue = analogRead(redSensorPin);//leemos el redSensorPin A0 y lo guardamos en la variable
//esta lectura la hace constantemente por el loop por lo que el tono cambiará si modificamos
//la luz que recibe el fotoTransistor conectado a A0

// El método map() crea un nuevo array con los resultados de la llamada a la
// función indicada aplicados a cada uno de sus elementos.argumentos de map()
// map(valor, fromLow, fromHigh, toLow, toHigh)

// mapeamos el valor que recibimos en el sensorValue poniendo como como
// límite de valores de entrada sesorLow y sensorHigh
// así le asignamos un valor proporcional que esté entre 50 y 40000 (que es el intervalod e
// frecuencia que genera Arduino)

int pitch = map(sensorValue, sensorLow, sensorHigh, 50, 40000);

// llamamos a la función tone() para reproducir sonido
// recoge tres agumentos:
// 1.- el pin que reproduce el sonido, en nuestro caso el 8 que es donde está conectado el PIEZO
// 2.- la frecuencia que está recogida en la variable entera pitch que ha mapeado los datos del sensor
//. para transformala en una frecuencia leible por el PIEZO
// 3.- delay que es el tiempo que reproduce dicha nota
tone(8, pitch, 20);
delay(10); //añadimos un delay de 10 milisegundos para dar tiempo a la reporducción del sonido
//

// Cambio de iluminación. El LED RGB
// Usamos la función analogWrite para cambiar el brillo del LED a través de los pines PWM

// Necesita dos argumento. El pin en el que escribe (redLEDPin = 11, blueLEDPin = 10, greenLEDPin =9)
// y el valor de 0 a 255

redSensorValue = analogRead(redSensorPin);
delay(5);
greenSensorValue = analogRead(greenSensorPin);
delay(5);
blueSensorValue = analogRead(blueSensorPin);
delay(5);

// Como el valor de lectura es entre 0 y 1023 que es el valor que viene del sensor
// lo que hacemos es dividirlo entre 4.
// Otro posible sistema sería mapearlo
redValue =redSensorValue/4;
greenValue = greenSensorValue/4;
blueValue = blueSensorValue/4;

//Visualizamos los datos mapeados en el ordenador
Serial.print(«Datos Mapeados t Rojo: «);
Serial.print(redValue);
Serial.print(«t Verde: «);
Serial.print(greenValue);
Serial.print(«t Azul: «);
Serial.println(blueValue);

//Le pasamos los dos argumentos a analogWrite para que genere menos luz cada pin
analogWrite(redLEDPin, redValue);
analogWrite(greenLEDPin, greenValue);
analogWrite(blueLEDPin, blueValue);

}

Debate0en Arduino (P2)

No hay comentarios.

Publicado por

Proyectos con interacción tangible. Análisis

Publicado por

Proyectos con interacción tangible. Análisis

1.- Arduino Sun Tracker Turret por RobotGeek Projects Team Proyecto consistente en una estructura que determina donde está la fuente de luz…
1.- Arduino Sun Tracker Turret por RobotGeek Projects Team Proyecto consistente en una estructura que determina donde está la…

1.- Arduino Sun Tracker Turret por RobotGeek Projects Team

Proyecto consistente en una estructura que determina donde está la fuente de luz más potente y modifica la trayectoria de unos paneles solares para aprovechar dicha luz. Es decir, las placas se irían moviendo en función de la posición del sol. En el ejemplo se utiliza una bombilla como simulador de la luz solar.

 

 

 

2.- Arduino Plant Watering System

Sistema que trabaja con un sensor que mide la humedad de la tierra. Si se alcanza unos mínimos se activa una bomba de agua que reactiva todo el sistema.
Es un modelo también sencillo de trabajar aunque usa más componentes, ya que tiene que realizar la acción de riego.

La utilidad de esto vuelve a ser la eficiencia de los recursos energéticos, permitiéndote optimizar el uso del agua según necesidades, hacer un riego automático cuando te vas de vacaciones o evitar enfermedades por sobre riego.

https://www.instructables.com/Arduino-Plant-Watering-System/

https://www.instructables.com/Easiest-Arduino-Smart-Plant-Watering/

3.- Radar at Home

Este prototipo realizado con Arduino simula un radar a través de un sensor ultrasónico que es muy utilizado en los proyectos de Arduino para medir distancias hacia los objetos. También utiliza una Torre (Tower Pro 9G Micro Servo Motor) para instalar el sensor.

La utilidad que se me ocurre, entre otras, sería usarlo como espantapájaros, es decir para detectar si hay pájaros cerca de un huerto y activar un sonido de águila, por ejemplo, para espantarlos.

https://www.flyrobo.in/arduino-radar-kit-arduino-project-kit-2?tracking=5b853f18ae9a2

4.- Instalación lumínica inmersiva por Vitamin

Sala inmersiva previa a un restaurante. A través de 8400LEDs visuales y sonoros dispuestos en 420 tiras de 3 metros van cambiando de color y emitiendo sonidos según interactúas en el restaurante o te mueves en la sala. Esto junto con las paredes y suelos de espejos hace que tengas una experiencia inmersiva. Algo peculiar es que el proyecto está pensado para que no haya contacto por la situación vivida del  COVID.

En este caso concreto lo han utilizado para simular el Manhattan de los años 20 cuando había restaurantes y bares clandestinos que estaban situados detrás de unas cortinas de tiendas de discos, comida o libros.

La utilidad de esta obra es artística. Es crear una narración que te transporte en el tiempo, crear una experiencia de usuario, donde no hay que tocar nada, que te permita entrar en un mundo único, cambiante e infinito.

Voltereta – Instalación lumínica inmersiva

5.- Arduino Robot Rubik cube solver by matt2uy

Es interesante este proyecto por cómo ha utilizado materiales reutilizables, maderas de helados entre ellos, para hacer la construcción, que se trata de resolver el dado de RubiK utilizando dos servomotores y una placa de Arduino UNO. No obstante para la programación no sólo usa Processing, sino también Python. El dado tarda aproximadamente en completarse 20 minutos.

La utilidad de este experimento podría ser educativo para demostrar que hay una lógica matemática detrás de la resolución del dado.

6.- Robot que recorre un laberinto

Proyecto elegido para el desarrollo. Ver apartado correspondiente.

https://ria.utn.edu.ar/bitstream/handle/20.500.12272/3644/Robot%20aut%C3%B3nomo%20para%20recorrer%20un%20laberinto.pdf?sequence=1&isAllowed=y

 

 

Robot que recorre un laberinto

El proyecto elegido para su desarrollo en profundidad trata de un robot que es capaz de determinar dónde están las paredes de un laberinto para no chocarse y seguir avanzando hasta llegar al final. En el vídeo se ve un resultado similar al caso estudiado, aunque el diseño del chasis no corresponde con el desarrollado.

Este proyecto, se podría extrapolar para  tener una utilidad social para ayudar a personas con diversidad visual a desplazarse por determinados espacios usando algún tipo de aviso sonoro que le indique a la persona que se ha de girar.

Técnicas utilizadas

Para realizar este proyecto de robot autónomo se ha utilizado la placa de Arduino Uno, 3 sensores ultrasónicos, uno delante (para detectar obstáculo) y dos laterales (para medir el ancho del pasillo);  y dos servos para conseguir el desplazamiento del robot. Va emitiendo sonidos que se recogen y reciben una frecuencia la cual se procesa y envía una instrucción a las servos de las ruedas. Está alimentado por pilas así que no hace falta conectarlo por usb al ordenador. De esta manera se consigue un prototipo autónomo.

Diseño de Interactividad

El robot funciona de forma autómata. Sólo hay que ponerlo en funcionamiento en una especie de circuito para ver cómo lo resuelve. Por lo tanto el usuario tiene poco protagonismo.

Los movimientos que realiza el robot son giros de 90º o 180º cuando detecta un obstáculo. Gira sobre sí mismo y por lo tanto no utiliza más espacio para hacer los giros.

Para las ruedas se utilizó 2 mini cd por rueda y como eje uno de los brazos que viene con los servos.

Las pilas se situaron en la parte más baja del robot para ayudar a que el centro de gravedad esté lo más cercano al suelo posible.

Para conseguir estabilidad se añadió una tercera rueda con un giro de 360º y un punto de apoyo frontal.

Las ruedas funcionan gracias a los servomotores que ha sido modificado quitando los topes mecánicos y cambiando el potenciómetro por una resistencia fija funcionando como un motor de corriente continua.

Se programó en código abierto con Arduino y una vez testeado se compiló y se transfirió la información a la placa de Arduino iniciando el código con un bootloader cargado en la memoria. De esta manera el robot es autónomo.

Descripción del funcionamiento

El  objetivo de este microrobot es solucionar el recorrido de un laberinto. Lo que hace el robot es utilizar los sensores que escanean los obstáculos. Tiene tres sensores S1(sensor lateral izquierdo), S2 (sensor frontal), S3(sensor lateral derecho). Si Si=1 significa que hay una pared próxima y por lo tanto no se habilita el giro hacia ese lado, i si Si=0 se hace el giro correspondiente.

Diagrama de flujo

Adjunto el diagrama de flujo en el que se visualizan los siguientes pasos:

1.- Se inicia el proceso

2.- Se avanza hasta que se encuentra un obstáculo al frente.

3.- Se leen los sensores, si devuelven 1 todos los sensores es que no se puede avanzar ni girar a derecha o izquierda porque hay obstáculos. Por lo tanto se da un giro de 180º.

4.- Se avanza buscando un giro a la derecha o a la izquierda leyendo los sensores 1 y 3.

5.- Si el S3 es 0 es que se puede girar a la Derecha hasta que vuelve a encontrar un obstáculo al frente y se vuelve al ciclo.

6.- Si S1 = 1 es que hay que volver a girar 180º

si S1= 0  y los otros sensores marcan 1 gira a la izquierda, si el sensor 3 marca 0 gira a la derecha.

Usabilidad, accesibilidad, aprendizaje, robustez y coherencia

En relación a los principios del diseño de interacción podríamos comentar diferentes aspectos:

Usabilidad: proyecto sencillo, que necesita muy poca interacción con el usuario. Solamente se tendría que montar el laberinto.

Funcionalidad: responde a lo esperado, que es salir de un laberinto, siguiendo las indicaciones que recibe a través de los sensores

Consistencia: le falta un poco de diseño,  no transmite robutez y por lo tanto el diseño no es adecuado

Aprendizaje: el usuario no interrelaciona mucho con el objeto y por lo tanto no necesita tampoco retroalimentación.

Accesibilidad: este prototipo tiene un componente visual lúdico que personas con diversidad no apreciarían. No obstante, paradógicamente se podría usar para personas con diversidad visual para ayudar a moverse a través de la inforamción de los sensores.

Valoración personal y aportaciones creativas

En general creo que todo el sistema está bien pensado y desarrollado, aunque coincido con los desarrolladores que habría que mejorar el avance rectilíneo del dispositivo, cuya trayectoria se desvía. Esto lo haría modificando el tipo de rueda que se usa y quizás no haciendo el dispositivo circular.

También le falla la parte del diseño físico que mejoraría usando carcasas que cubrieran el interior y que simularan un robot.

Este proyecto me ha hecho pensar en las posibilidades de aplicación para personas invidentes. Sería de gran ayuda si los sensores devolvieran la información a través de pequeños impulsos eléctricos o de calor, o con algún sistema que permitiera ejecutar un pequeño golpecito en el brazo de la persona. De esta manera podrían desplazarse sustituyendo el uso del batón.

 

*Imagen de portada de macrovector en Freepik

Debate0en Proyectos con interacción tangible. Análisis

No hay comentarios.