Étape 5: Mettre ensemble, partie 2
/* #include Racine du fichier ; Si vous utilisez le module de carte SD de 2 $ ou « 4 » Si vous utilisez la valeur chipSelect à « 10 » la
Élément de capteur HC-SR04
https://www.DealExtreme.com/p/hc-sr04-Ultrasonic-Sensor-distance-Measuring-module-133696
Cette esquisse lit un télémètre à ultrasons HC-SR04 et retourne le
distance à l’objet le plus proche dans la gamme. Pour ce faire, il envoie une impulsion
à la sonde d’entamer la lecture, puis écoute une impulsion
pour revenir. La longueur de l’impulsion de retour est proportionnelle à
la distance de l’objet de la sonde.
Le circuit :
* Connexion VCC du capteur fixé à + 5V
* Connexion GND du capteur attaché à la terre
* TRIG raccordement de la sonde fixée à la broche numérique 2
* ECHO connexion du capteur fixé à la borne numérique 4
Code original pour Ping))) exemple a été créé par David A. Mellis
Adapté pour les HC-SR04 par Tautvidas Sipavicius
Lecteur de cartes SD & partie de joueur
NE pas utiliser classe-10 cartes sur ce projet - ils sont trop rapides pour l’exploitation SPI
Créé par NorseEngineering octobre 2013
*/
#include
TMRpcm tmrpcm ;
Entrée de fichier ;
MicroSD de bouclier Ethernet carte à la place.
const int chipSelect = 10 ;
const int oldCard = SPI_HALF_SPEED ;
const int newCard = SPI_QUARTER_SPEED ;
const int trigPin = 2 ;
const int echoPin = 4 ;
const int mené = 8 ;
La distance ci-dessous qui le son se déclenche (en pieds). Doit être un entier
const int DISTANCE = 6 ;
Durée de la LED sur la phase.
const int CLIP_DURATION = 10000 ;
Fréquence pour le capteur de rafraîchissement.
const int taux = 10 ;
Définissez cardType à « oldCard », si vous utilisez une vieille carte SD (plusieurs années) ou
à « newCard » si vous utilisez une carte de Class-4 nouvellement-achat.
cardType int = oldCard ;
int wasPlaying = 0 ;
int inSwitch = 7 ;
fini int = 0 ;
début int = 0 ;
int pauseOn = 0 ;
unsigned long timeDiff = 0 ;
unsigned long timePress = 0 ;
void setup() {}
Serial.Begin(9600) ;
pinMode (led, sortie) ;
Serial.Print ("\nInitializing SD carte...") ;
pinMode (chipSelect, sortie) ;
if (!. {SD.begin(chipSelect,cardType))}
Serial.println("Failed!") ;
retour ;
}
Serial.println("Done.") ;
tmrpcm.speakerPin = 9 ;
pinMode(inSwitch,INPUT_PULLUP) ;
digitalWrite(inSwitch,HIGH) ;
racine = SD.open("/") ;
}
void loop(void) {}
longue durée, pouces, cm, pieds ;
pinMode (trigPin, sortie) ;
digitalWrite (trigPin, basse) ;
delayMicroseconds(2) ;
digitalWrite (trigPin, HIGH) ;
delayMicroseconds(10) ;
digitalWrite (trigPin, basse) ;
pinMode (echoPin, entrée) ;
durée = pulseIn (echoPin, HIGH) ;
po = microsecondsToInches(duration) ;
cm = microsecondsToCentimeters(duration) ;
pieds = microsecondsToFeet(duration) ;
Serial.Print(feet) ;
Serial.Print ("ft,") ;
Serial.Print(inches) ;
Serial.Print ("in") ;
Serial.Print(cm) ;
Serial.Print("cm") ;
Serial.println() ;
Viande du code ici dans ce cas exposé.
if(Feet < distance)
{
playNext() ;
Delay(CLIP_DURATION) ;
}
Delay(rate) ;
digitalWrite (led, faible) ;
}
void playNext() {}
digitalWrite (conduit, en haut) ;
entrée = root.openNextFile() ;
Si {(entrée)
entry.Close() ;
tmrpcm.Play(entry.Name()) ;
wasPlaying = 1 ;
Serial.Print ("wasPlaying =") ;
Serial.println(wasPlaying) ;
} else {}
Si (wasPlaying == 1) {}
Serial.println ("terminé la lecture.") ;
wasPlaying = 0 ;
fini = 1 ;
Démarrer = 0 ;
root.rewindDirectory() ;
}
}
}
long microsecondsToInches(long microseconds)
{
retourner les microsecondes / 74 / 2 ;
}
long microsecondsToCentimeters(long microseconds)
{
retourner les microsecondes / 29 / 2 ;
}
long microsecondsToFeet(long microseconds)
{
retour microsecondsToInches(microseconds) / 12 ;
}
J’ai aussi ajouté un interrupteur sur la première ligne de la maquette qui interrompt l’alimentation 9 volts pour le montage d’essai, afin que je n’avais pas à ouvrir le boitier pour mettre if sur et en dehors.
Le code est aussi qu'ici, c’est un fichier texte.