jueves, 8 de noviembre de 2012

Respuestas visuales, auditivos y táctiles

Arduino de toques

Como funciona?

A través de una resistencia que varia su valor dependiendo de la luz recibida, aprovecharemos dicha variación para hacer un programa que encienda o apague una serie de LED dependiendo de si hay más luz o menos luz,


Material necesario para este proyecto:
1 x Arduino Uno
1 x Protoboard
1 x LDR(Resistencia de luz)
1 x Potenciómetro 10kΩ
5 x Diodos LED
5 x Resistencias 220Ω
1 x Resistencia 1KΩ
1 x Cables
1 x Transformador




Esquema del circuito Eléctrico



Conexión en la protoboard


Programación


//Aquí almacenamos los datos recogidos del LDR:
int valorLDR = 0;

//Decimos que pines vamos a utilizar para LED
int pinLed1 = 12;
int pinLed2 = 11;
int pinLed3 = 10;
int pinLed4 = 9;
int pinLed5 = 8;

//Y que pin para la LDR
int pinLDR = 0;

void setup()
{
  //Establecemos como salida los pines para LED
  pinMode(pinLed1, OUTPUT);
  pinMode(pinLed2, OUTPUT);
  pinMode(pinLed3, OUTPUT);
  pinMode(pinLed4, OUTPUT);
  pinMode(pinLed5, OUTPUT);

  //Le decimos que vamos a usar una referencia externa
  analogReference(EXTERNAL);

}

void loop()
{
  //Guardamos el valor leido en una variable
  valorLDR = analogRead(pinLDR);

  //Y comenzamos las comparaciones:
  if(valorLDR >= 1023)
  {
    digitalWrite(pinLed1, LOW);
    digitalWrite(pinLed2, LOW);
    digitalWrite(pinLed3, LOW);
    digitalWrite(pinLed4, LOW);
    digitalWrite(pinLed5, LOW);
  }
  else if((valorLDR >= 823) & (valorLDR < 1023))
  {
    digitalWrite(pinLed1, HIGH);
    digitalWrite(pinLed2, LOW);
    digitalWrite(pinLed3, LOW);
    digitalWrite(pinLed4, LOW);
    digitalWrite(pinLed5, LOW);
  }
  else if((valorLDR >= 623) & (valorLDR < 823))
  {
    digitalWrite(pinLed1, HIGH);
    digitalWrite(pinLed2, HIGH);
    digitalWrite(pinLed3, LOW);
    digitalWrite(pinLed4, LOW);
    digitalWrite(pinLed5, LOW);
  }
  else if((valorLDR >= 423) & (valorLDR < 623))
  {
    digitalWrite(pinLed1, HIGH);
    digitalWrite(pinLed2, HIGH);
    digitalWrite(pinLed3, HIGH);
    digitalWrite(pinLed4, LOW);
    digitalWrite(pinLed5, LOW);
  }
  else  if((valorLDR >= 223) & (valorLDR < 423))
  {
    digitalWrite(pinLed1, HIGH);
    digitalWrite(pinLed2, HIGH);
    digitalWrite(pinLed3, HIGH);
    digitalWrite(pinLed4, HIGH);
    digitalWrite(pinLed5, LOW);
  }
  else
  {
    digitalWrite(pinLed1, HIGH);
    digitalWrite(pinLed2, HIGH);
    digitalWrite(pinLed3, HIGH);
    digitalWrite(pinLed4, HIGH);
    digitalWrite(pinLed5, HIGH);
  }

}


En el programa se lee el valor del sensor
Si el valor es mayor o igual a 1023 no se activa ninguna salida
Si el valor es mayor o igual a 823 se activa una salida
Si el valor es mayor o igual a 623 se activan dos salidas
Si el valor es mayor o igual a 423 se activan tres salidas
Si el valor es mayor o igual a 223 se activan las 4 salidas

Aqui se realizo primero con leds, según el sensor detecte proximidad se empezaran a encender los led
una vez funcionando solo es cuestión de quitar los leds y poner el transformador

básicamente simularíamos las maquinitas de toques, donde los leds serian el regulador(potencio metro) y el transformador para dar una descarga fuerte

Aqui un diagrama no muy complejo

Ejemplo del funcionamiento en arduino







Aportación al proyecto
En esta parte se siguen incorporando mas mapas ya que se a tenido muchos problemas en la carga del juego ya que aveces no detecta las rutas de las imágenes aunque estén en la misma carpeta

también se están descargando mas sprites y personajes




Para la interacción con el jugador
Con los compañeros ya se acordó que se hiciera un movimiento random de los personajes y que al acercarse a ellos se pueda interactuar 


1 comentario: