Cómo conectar un pin a tierra cuando se dispara otro pin analógico

1

Estoy tratando de combinar dos proyectos electrónicos de trabajo en uno. Tengo un sensor piezoeléctrico independiente del que puedo leer los valores cuando vibra a través de un arduino, y tengo una placa de audio independiente (no se necesita arduino) que reproducirá un archivo de sonido cuando conecte uno de sus pines a tierra (actualmente a través de un pulsador).

Esta es la configuración básica de la placa de audio

y esta es la configuración básica del botón piezo

Lo que quiero hacer es eliminar la necesidad de que el botón active los archivos de sonido y, en su lugar, utilice la vibración del piezo para activar una canción.

La tarjeta de sonido está configurada para reproducir una pista cuando conectas uno de sus pines a tierra. Tiene una resistencia incorporada en pullup. Con el piezo, tengo un código que se ejecuta de modo que, si la vibración supera un cierto valor, activará una función para reproducir el sonido:

if (piezoV > 0.1){ //play sound }

¿Qué necesito para un cableado y amp; ¿Perspectiva del código para hacer que el piezo reproduzca el sonido? Lo que intenté fue configurar uno de los pines de arduino para hacer una escritura digital:

const int SOUND_PIN = 2; //Trigger Sound Board
void setup() {
  pinMode(LED_PIN, OUTPUT);
  pinMode(SOUND_PIN, OUTPUT);
}

void loop() {
  int piezoADC = analogRead(PIEZO_PIN);
  float piezoV = piezoADC / 1023.0;
  if (piezoV > 0.1){
    playSound();
    delay(5000);
    stopSound();
  } 
}

void playSound(){
  digitalWrite(SOUND_PIN, HIGH);
}

void stopSound(){
  digitalWrite(SOUND_PIN, LOW);
}

Luego me di cuenta de que podía conectar un cable del pin 2 del arduino a la tierra de la placa de sonido, y un cable de la tierra de la placa de sonido a su propio pin 1 (para reproducir la pista 1), pero parece que hay vibración. o no, cuando hago eso el sonido se reproduce incondicionalmente.

CABLEADO:

Configuracióndecableadoparareproduciraudioconunbotón:

¡Si alguien me puede orientar en la dirección correcta, lo apreciaría!

    
pregunta mheavers

1 respuesta

1

¿Puede conectar la placa de sonido de la forma habitual, Arduino tierra a tierra de la placa de sonido, Arduino, pin 2 a la placa de sonido, reproducir el pin 1 y modificar la salida para la lógica invertida (LOW = play y HIGH = stop establecer como entrada = detener)?

Obviamente, se reproduce todo el tiempo porque el pin de reproducción de la caja de resonancia está siempre conectado al pin de tierra de la caja de resonancia.

Esta es tu primera configuración:

simular este circuito : esquema creado usando CircuitLab

Primera opción:

simular este circuito

Arduino usa niveles de E / S de 0-5V, la caja de resonancia usa 0-3.3V, por eso debería usar solo pinMode (SOUND_PIN, INPUT); desconecte el pin de reproducción de sonido en lugar de digitalWrite (SOUND_PIN, HIGH) que arrastra el pin a 5V cuando quieres soltar el pin.

Para tirar del pin a GND use digitalWrite (SOUND_PIN, LOW); pinMode (SOUND_PIN, OUTPUT);

Vea el siguiente ejemplo:

const int SOUND_PIN = 2; //Trigger Sound Board
void setup() {
  pinMode(LED_PIN, OUTPUT);
  pinMode(SOUND_PIN, INPUT);// high impedance, sound pin disconnected
  digitalWrite(SOUND_PIN, LOW);//make sure the pin will be low when using it
  //this last instruction has no effect yet as long as the pin is configured as input
}

void loop() {
  int piezoADC = analogRead(PIEZO_PIN);
  float piezoV = piezoADC / 1023.0;
  if (piezoV > 0.1){
    playSound();
    delay(5000);
    stopSound();
  } 
}

void playSound(){
  digitalWrite(SOUND_PIN, LOW);//make sure the pin will be low
  pinMode(SOUND_PIN, OUTPUT);// set as output to drive the sound pin to gnd
}

void stopSound(){
  pinMode(SOUND_PIN, INPUT);// high impedance, sound pin disconnected
}

Puede usar la resistencia R1 para la etapa de desarrollo para proteger la entrada de la tabla de sonido de los errores de software.

Otras opciones:

Utilizando un optoacoplador como puede ver en este enlace que encontré en tha pregunta anterior similar. El S2 debe ir a Soundboard Ground y S1 a PIN 1

Usando un relé, aquí es un ejemplo, pero puedes encontrar mucho en la web

    
respondido por el Dorian

Lea otras preguntas en las etiquetas