Saltar la navegación

ultra_so_basic_6

Aquest arxiu determina dues zones i dispara dos sons. La zona està dieferenciada per la variable "dis" que en el nostre exemple li hem posat 20 cm. Això vol dir que si ens posem més a propo de 20 cms. del sensor dispararà un so i si en sposem més lluny ho farà amb un altra.

Es convenient tenir la durada de cada so i posar-la en el moment que es demana la seva execució. Tot és més precís si li diem que estigui el temps que necessita. D'aquesta manera tenim un major control de la reproducció del so.
Els exemples que venen a continuació tenen els sons amb la durada dels exemples emprats. Si feu canvis recordeu d'incorporar la durada dels vostres.
A l'exemple del codi:

void so_1(){
     mp3.volume(0x1F);
     mp3.play_spi_flash(0x0001);// a l'exemple hi ha un so de cavall
     delay (1500);//durada del so cavall
}

teniu marcat en cursiva el que haureu de modificar, el retard (delay) del so.
logo_arduino

//està feta per comprovar que la shield mp3 d'elechouse funciona activada per un sensor de ultrasons HC-SR04.
//activa un só si estàs aprop i un só si estàs lluny

#define trigPin 2 //hem modificat els pins del sensor d'ultrasons per no coincidir amb els pins de l'elechouse
#define echoPin 3 //en els dos aparells originariament empraven el 7 i 8
//#define led 11
//#define led2 10
#include <SoftwareSerial.h>
#include <MP3.h>
SoftwareSerial Geno(7,8); // Rx , Tx
/** defineix mp3 class */
MP3 mp3;
int dis = 20; //// Establim la distància en cm per a la comprovació

// LLibreria necesaria per el funcionamient.
#include "Ultrasonic.h"


// Declaram el sensor ultrasons als pins digitals assignats anteriorment
Ultrasonic ultrasonido(trigPin,echoPin);


void setup() {
 Serial.begin (9600);
  pinMode(trigPin, OUTPUT); // Establim el pin trig com a sortida
  pinMode(echoPin, INPUT); // Establim el pin echo com entrada
 
  //so
 delay (3000); //s'ha de deixar uns segons per estabilitzar shield
 mp3.begin(MP3_SOFTWARE_SERIAL);    // selecciona software serial
 
  /** fixa volum MAX */
 mp3.volume(0x1F);
 
  /** selecciona MP3 Shield SINGLE mode */
  mp3.set_mode(MP3::SINGLE);
  // fi so
 
}

void loop() {
 int distancia;

  distancia = ultrasonido.Ranging(CM);

  if (distancia < dis){
    Serial.print("Led Vermell - Distancia: ");
    Serial.print(ultrasonido.Ranging(CM));
    Serial.println(" cm");
       
     so_1();
     delay(1000);
     /*so_2();//desactivem la resta
     delay(1000);
     so_3();
     delay(1000);
     so_4();
     delay(1000);
     so_5();
     delay(1000);
     so_6();
     delay(1000);
     so_7();
     delay(1000);
     so_8();
     delay(1000);*/
 
}
else {
    //digitalWrite(led,HIGH); //  Encenem el led verd
    //digitalWrite(led2,LOW); // Apagam el led vermell
    Serial.print("Led verd - Distancia: ");
    Serial.print(ultrasonido.Ranging(CM));
    Serial.println(" cm");
    Serial.print("Led rojo - Distancia: ");
    Serial.print(ultrasonido.Ranging(CM));
    Serial.println(" cm");
    
    
    
     so_2();
     delay(1000);
  }
}
void so_1(){
     mp3.volume(0x1F);
     mp3.play_spi_flash(0x0001);// so 1
     delay (1500);//durada del so 1
}
void so_2(){
     mp3.volume(0x1F);
     mp3.play_spi_flash(0x0002);//so 2
     delay (5000);//durada del so 2
}