[SOLUCIONADO] Música con Sparkfun / WTV020SD

surbyte:
Solo para probar, intenta alimentar todo con una fuente o batería mas potente. Es posible que tu batería de 9V este agotada.
Por otro lado. No tengo claro cual puede ser la mínima corriente necesaria para que funcione el DC DC que ahora esta de 9V a 3.3V. Revisa si entrega 3.3V a la salida. Pero usa una fuente de 9V y no una batería solo para probar.

Muchas gracias surbyte. He probado con una fuente de alimentación externa y me pasa lo mismo, al quitar la alimentación no se oye nada.
Se me ocurrió hacer la prueba sin utilizar el arduino y al quitar la alimentación si funciona bien. De momento para las pruebas voy a usar la fuente de alimentación, después ya pensaré en sustituirla por la pila.

El circuito con el cuál se oye solamente sería éste:

Si quito la alimentación y la vuelvo a poner, sólo tengo que pulsar el pulsador del "Play". Con el primer pulso, se enciende y con el segundo pulso se apaga y así sucesivamente.

Mi proyectillo es hacer una cajita de música muy sencilla, y ya que he conseguido que se oiga bien, voy al segundo apartado que me interesa y tengo alguna duda.

Para no tener que estar todo el rato teniendo que pulsar el pulsador del play para darle los pulsos, había pensado utilizar un interruptor ON (ON) (u otra cosa si se os ocurre) que cuando el "pulsador" esté metido (tapa cerrada) no se alimente el circuito. Cuando la tapa se abra, el "pulsador" se sube y dejaría pasar la corriente.

Estos cambios en la entrada en el PIN Digital 6 (de 3,3V si está abierto y GND si está cerrado) que el Arduino lo procese y por cada cambio, en el PIN digital de SALIDA (10) de un pulso cada vez que haría la función de "PLAY".
No sé si me explico.. Dejo un esquema de "la idea".

El tema es que el "Play" de la placa de SD se activa por cada pulso conectado a GND (primer pulso se enciende, segundo pulso se apaga, y así sucesivamente cada vez que pones la alimentación), por lo que no sé cómo hacer para que, cuando varíe la entrada (pin 6 del arduino), dé inmediatamente un pulso y cambie de estado (la pata play se conecte a gnd). En el siguiente cambio de estado (cuando se cierra la tapa, y no haya alimentación), se vuelva a dar otro "pulso", el play se conecte a gnd otra vez y se pare. Y el resto "del tiempo" está "suelto"¿? (sería a 3,3V??)
Hay algo que "me falla" pero no logro saber por donde cogerlo

El código que he pensado utilizar sería este:

// NIVEL PARDILLO PDF

int  val=0; //almacenará la lectura del pulsador: ON u OFF
int  valAnterior=0; //almacenará una lectura justamente anterior
int  estado=0; //¿qué toca ahora, encender o apagar el LED?

void setup ()
{
pinMode(10,OUTPUT);
pinMode(6,INPUT);
}

void loop()
{
  val=digitalRead(6);

  if (val==HIGH && valAnterior==LOW) 
  { 
    // Detecta el cambio del estado del pulsador de no estar pulsado a estar pulsado
    estado=1-estado;
    delay(20);

  }

    if (val==LOW && valAnterior==HIGH) 
  { 
    // Detecta el cambio del estado del pulsador de no estar pulsado a estar pulsado
    estado=1-estado;
    delay(20);

  }
  
  valAnterior=val; //el valor del pulsador pasa a ser valor pasado
  
  if (estado==1)
  {
  digitalWrite(10,HIGH); //El pin 10 se pondrá a GND
 
  }
  
  else  
  {digitalWrite(10,LOW);}
}

Esa es una idea, otra es usar un TSL2561 pero tengo el mismo problema: tiene que estar siempre alimentado y consumiría mucha batería.