Paso 5: Poner juntos, parte 2
/* #include Raíz de archivo; establecer chipSelect al '10' Si utiliza el módulo de tarjeta SD de 2 dólares o '4' si se utiliza el
Porción de Sensor HC-SR04
https://www.dealextreme.com/p/HC-sr04-Ultrasonic-sensor-Distance-measuring-Module-133696
Este bosquejo Lee un telémetro de ultrasonidos HC-SR04 y devuelve la
distancia hasta el objeto más cercano en rango. Para ello, envía un pulso
en el sensor para iniciar una lectura, entonces escucha un pulso
para volver. Es proporcional a la longitud del pulso regresan
la distancia del objeto al sensor.
El circuito:
* Conexión VCC del sensor conectado a + 5V
* Conexión GND del sensor conectado a tierra
* Conexión del sensor atado pin digital 2 de TRIG
* ECHO conexión del sensor atado pin digital 4
Código original de Ping))) ejemplo fue creado por David A. Mellis
Adaptado para HC-SR04 por Tautvidas Sipavicius
Lector de tarjetas SD y reproductor de parte
NO uso tarjetas de clase 10 en este proyecto - son demasiado rápidos para operar con SPI
Creado por NorseEngineering de octubre de 2013
*/
#include
TMRpcm tmrpcm;
Entrada de archivo;
Tarjeta de microSD de shield Ethernet en lugar de otro.
const int chipSelect = 10;
const int oldCard = SPI_HALF_SPEED;
const int newCard = SPI_QUARTER_SPEED;
const trigPin int = 2;
const echoPin int = 4;
const int led = 8;
La siguiente distancia que provoca el sonido (en pies). Debe ser un número entero
const int distancia = 6;
Duración de lo LED de fase.
const int CLIP_DURATION = 10000;
Restaure la tarifa para el sensor.
const int velocidad = 10;
establecer cardType a 'oldCard' Si utiliza una tarjeta SD antigua (más de unos pocos años) o
a 'newCard' Si utiliza una tarjeta de clase 4 nueva compra.
int cardType = oldCard;
int wasPlaying = 0;
int inSwitch = 7;
int terminar = 0;
int Inicio = 0;
int pauseOn = 0;
timeDiff larga sin signo = 0;
sin firmar largo timePress = 0;
void setup() {}
Serial.Begin(9600);
pinMode (led, salida);
Serial.Print ("tarjeta de \nInitializing SD...");
pinMode (chipSelect, salida);
if (!. {SD.begin(chipSelect,cardType))}
Serial.println("Failed!");
retorno;
}
Serial.println("Done.");
tmrpcm.speakerPin = 9;
pinMode(inSwitch,INPUT_PULLUP);
digitalWrite(inSwitch,HIGH);
raíz = SD.open("/");
}
void loop(void) {}
larga duración, cm, pulgadas, pies;
pinMode (trigPin, salida);
digitalWrite (trigPin, LOW);
delayMicroseconds(2);
digitalWrite (trigPin, HIGH);
delayMicroseconds(10);
digitalWrite (trigPin, LOW);
pinMode (echoPin, entrada);
duración = pulseIn (echoPin, HIGH);
pulgadas = microsecondsToInches(duration);
cm = microsecondsToCentimeters(duration);
pies = microsecondsToFeet(duration);
Serial.Print(feet);
Serial.Print ("pies,");
Serial.Print(inches);
Serial.Print ("in");
Serial.Print(cm);
Serial.Print("cm");
Serial.println();
Carne del código en este si declaración.
if(feet < Distance)
{
playNext();
Delay(CLIP_DURATION);
}
Delay(Rate);
digitalWrite (led, baja);
}
{} void playNext()
digitalWrite (led, alto);
entrada = root.openNextFile();
Si {} (entrada)
entry.Close();
tmrpcm.Play(Entry.Name());
wasPlaying = 1;
Serial.Print ("wasPlaying =");
Serial.println(wasPlaying);
} else {}
Si (wasPlaying == 1) {}
Serial.println ("terminado la reproducción.");
wasPlaying = 0;
terminado = 1;
Inicio = 0;
root.rewindDirectory();
}
}
}
microsecondsToInches(long microseconds) largo
{
volver microsegundos / 74 / 2;
}
microsecondsToCentimeters(long microseconds) largo
{
volver microsegundos / 29 / 2;
}
microsecondsToFeet(long microseconds) largo
{
volver microsecondsToInches(microseconds) / 12;
}
También he añadido un interruptor a la primera fila de la protoboard que interrumpe la fuente de 9 voltios a la placa, para que no tenga que abrir la caja para activar si sobre y apagado.
También el código es aquí un archivo de texto.