Saltar la navegación

ultra_so_basic_4c

El logo d'arduino i el de l'altaveu us baixarà els arxius per fer la pràctica.

 logo arduino  

altaveu
codi arduino arxius mp3

Tercera part d'aquest punt 4.
Dos zones, dos leds i dos sons.
Conforme estem sobre una zona concreta, marcada per cartolines, sonarà el so del color d'aquesta cartolina i s'encendrà el led del color corresponent.

Codi de la practica

/***************************************************/
//Joan Gelabert i Jesús Arbués. www.sacosta.org
//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 sobre una zona de color verd o vermell, el límit ho fixa la variable dis
//els sons els teniu per poder baixar a la web.
#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 originàriament empraven el 7 i 8
#define led1 10 //definim led1 al pin 10 (led vermell)
#define led2 11//definim led2 al pin 11 (led verd)
#include <SoftwareSerial.h>
#include <MP3.h>
SoftwareSerial Geno(7,8); // Rx , Tx
/** defineix mp3 class */
MP3 mp3;
int dis = 20; // distància de comprovació

// Llibreria per a ultrasons
#include "Ultrasonic.h"

Ultrasonic ultrasonido(trigPin,echoPin);



void setup() {
 Serial.begin (9600);
  pinMode(trigPin, OUTPUT);  // Establim el pin trig com sortida
  pinMode(echoPin, INPUT);   // Establim el pin echo com entrada
  pinMode(led1,OUTPUT);      //Establim led1 com a sortida
  pinMode(led2,OUTPUT);      //Establim led2 com a sortida
  digitalWrite(led1,LOW);    //Apagam els led1
  digitalWrite(led2,LOW);    //Apagam el led2
  //so
 delay (2000); //s'ha de deixar uns segons per estabilitzar shield
  mp3.begin(MP3_SOFTWARE_SERIAL);    // selecciona software serial
 
  /** fixa volum de sortida de so */
 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");
     digitalWrite(led1,HIGH);  
     so_1();//so english read
     delay(1500);
 
 digitalWrite(led1,HIGH);
}
else if(distancia >= dis && distancia < 30){
    digitalWrite(led2,HIGH); // Encenem el led verd
    Serial.print("Led verd - Distancia: ");
    Serial.print(ultrasonido.Ranging(CM));
    Serial.println(" cm");
    so_2();//so english green
    delay(1500);
  }
  digitalWrite(led1,LOW);
  digitalWrite(led2,LOW);
}
void so_1(){
     mp3.volume(0x1F);
     mp3.play_spi_flash(0x0001);//so en english read
     delay (1500);//durada so read
}

void so_2(){
     mp3.volume(0x1F);
     mp3.play_spi_flash(0x0002);//so en english green
     delay (1500);//durada del so green
}

placa ultra sons 4c

placa ultra sons 4c