Étape 2: L’esquisse de l’Arduino
Le code a été modifié pour la lisibilité et la présente demande. Je veux la souplesse d’utiliser les données pour les applications plus générales, donc je vais le récupérer avec virgule après la sortie de série pour chaque lecture. Cela me permettra de l’enregistrer sur une base de données MySql, le fichier CSV ou le fichier .txt. Cela sera qu’il me soit à rupture ou séparer les données sérielles dans le traitement ainsi que PHP et la plupart des autres langages de programmation et développement très facilement. Le logiciel BMP085 de Adafruit a été utilisé pour lire le capteur puisqu’il s’agissait d’un exemple plus complet que j’ai pu trouver et j’ai posté les liens ci-dessus. Vous devrez importer la bibliothèque dans votre dossier de carnet de croquis. Je tiens également à noter que je voulais que mes lectures dans les unités que je suis plus familier avec, donc j’ai modifié le code à lire dans « inHg » de mercure pour la pression, Fahrenheit et les pieds. Le code d’origine était en Hectopascals, Celsius et mètres.
Fichier sketch :myurov_database-2.ino
#include
#include
#include
#include
// -----------------------------------------------------------------------------------------
Bmp Adafruit_BMP085_Unified = Adafruit_BMP085_Unified(10085) ;
Compas de HMC5883L ; Le BMP085 a été remplacé par le BMP180, mais le code fonctionne toujours.
erreur d’int = 0 ;
Sub displaySensorDetails(void)
{
capteur de sensor_t ;
bmp.getSensor(&sensor) ;
Delay(500) ;
}
Sub setup(void)
{
Serial.Begin(9600) ;
boussole = HMC5883L() ; Construire une nouvelle boussole HMC5883.
if(!BMP.Begin())
{
while(1) ;
}
displaySensorDetails() ;
erreur = boussole. SetScale(1.3) ; Définissez l’échelle de la boussole.
Si (erreur! = 0) / / si il y a une erreur, imprimez-le.
erreur = boussole. SetMeasurementMode(Measurement_Continuous) ; Sélectionnez le mode de mesure continue
Si (erreur! = 0) ; S’il y a une erreur, imprimez-le.
}
void loop(void) {}
sensors_event_t événement ;
bmp.getEvent(&event) ;
Si (event.pressure)
{
pression d’int = event.pressure ;
flotteur de mercure = 0 ;
Mercure = pression * 0.029529980164712 ; Convertir hectopascals à dans du mercure.
Serial.Print(Mercury) ; inHg
Serial.Print(",") ; CSV séparateur
température du flotteur ;
bmp.getTemperature(&temperature) ;
int temp2 = température * 1.8000 + 32 ;
Serial.Print(Temp2) ;
Serial.Print(",") ; CSV séparateur
float seaLevelPressure = SENSORS_PRESSURE_SEALEVELHPA ;
int alt = bmp.pressureToAltitude (seaLevelPressure, event.pressure)* 3,2808 ;
Serial.Print(Alt) ; en Ft
Serial.Print(",") ; CSV séparateur
}
d’autre
{
}
Delay(1000) ;
MagnetometerRaw brute = boussole. ReadRawAxis() ;
MagnetometerScaled échelle = boussole. ReadScaledAxis() ;
int MilliGauss_OnThe_XAxis = mise à l’échelle. XAxis; / / (ou YAxis ou ZAxis)
position de flotteur = atan2 (mise à l’échelle. YAxis, mise à l’échelle. XAxis) ;
float declinationAngle = 0,0526 ; 0,0457
rubrique += declinationAngle ;
if(Heading < 0)
rubrique = 2 * PI ;
Si (titre > 2 * PI)
rubrique = 2 * PI ;
float headingDegrees = rubrique * 180/M_PI ;
Sortie (raw, à l’échelle, rubrique, headingDegrees) ;
}
Sortie Sub (MagnetometerRaw crue, MagnetometerScaled mis à l’échelle, flotteur position, float headingDegrees)
{
Serial.Print (raw. XAxis) ;
Serial.Print(",") ; CSV séparateur
Serial.Print (raw. YAxis) ;
Serial.Print(",") ; CSV séparateur
Serial.Print (raw. ZAxis) ;
Serial.Print(",") ; CSV séparateur
Serial.Print (mise à l’échelle. XAxis) ;
Serial.Print(",") ; CSV séparateur
Serial.Print (mise à l’échelle. YAxis) ;
Serial.Print(",") ; CSV séparateur
Serial.Print (mise à l’échelle. ZAxis) ;
Serial.Print(",") ; CSV séparateur
Serial.Print(Heading) ;
Serial.Print(",") ; CSV séparateur
Serial.println(headingDegrees) ;
}