martes, 28 de marzo de 2017



Con esta configuración se lanza un sonido desde la micro sd al detectarse movimiento desde el Sensor Pir, a la vez que un led enciende cuando se detecta o no movimiento.

Partes
1 Sensor PIR
1 Tarjeta micro sd
1 lector de tarjeta micro sd
1 Resistencia de 330 ohms
1 led
1 Arduino uno. Rev 3.
1 Bocina de 8 ohms
Jumpers

Fritzing




Código


[code]
/* Con este sketch podremos hacer lectura de un archivo .wav
    y reproducirla en una bocina de 8 ohms.
    Necesitamos de la librería TMRpcm
    https://github.com/TMRh20/TMRpcm/wiki
    Sketch inicial tomado en: http://intelirobot.com.mx/blog/arduino/toca-sonidos-wav-en-arduino/
    Modificación ODF, 2017.
    Es muy importante que el audio tenga el formato correcto:
    Tipo de archivo: .wav
    Samples per second (Hz): Custom define 16000
    Channels: Mono
    Bits per sample: 8
*/
#include <pcmConfig.h>
#include <pcmRF.h>
//Cargamos las líbrerias necesarias
#include <SD.h>
#include <SPI.h>
#include <TMRpcm.h>
// Definimos el pin de entrada del lector de tarjeta SD
#define pinSD 10
//Creamos un objeto de la librería TMRpcm
TMRpcm audio;

const int LEDPin = 7;        // pin para el LED
const int PIRPin = 4;        // pin de entrada (for PIR sensor)
int pirState = LOW;           // de inicio no hay movimiento
int val = 0;                  // estado del pin
 void setup() {
 pinMode(LEDPin, OUTPUT); 
 pinMode(PIRPin, INPUT);
 Serial.begin(9600);
 audio.speakerPin = 9; //Se define el pin en el que está conectada la bocina
 Serial.begin(9600);    //Se inicia la comunicación serial
}
void loop() {
  {
 val = digitalRead(PIRPin);
 if (val == LOW)   //si está desactivado
 {
 if (!SD.begin(pinSD)) {  //revisa que la tarjeta esté colocada
    Serial.println("Fallo en la lectura de tarjeta SD");  //Aviso de que algo no anda bien
    return;
  }
 digitalWrite(LEDPin, LOW);  //LED LOW
 if (pirState == LOW)  //si previamente estaba apagado
 {
   Serial.println("Sensor parado");
   pirState = HIGH;
 }
 } 
 else   //si esta desactivado
 {
 digitalWrite(LEDPin, HIGH); // LED OFF
 if (pirState == HIGH)  //si previamente estaba encendido
 {
   Serial.println("Sensor activado");
   pirState = LOW;
 }
 }
}
  Serial.println("Comienza lectura de archivo");
  audio.play("RISA1.wav"); // Realiza la lectura del achivo
  audio.setVolume(6); // Determina el volumen 1 - 7
  delay(7000); //Espera para volver a reproducirlo
}

[/code]


1 comentario:

  1. Cuando suena el audio, de un momento a otro se bloquea y hay un ruido constante. como puedo solucionar esto?
    Gracias!!!!

    ResponderEliminar

Popular Posts

Xochimeh. Con la tecnología de Blogger.