Paso 2: El Sketch de Arduino
El código ha sido modificado para esta aplicación y la legibilidad. Quiero que la flexibilidad de usar los datos para los usos más generales por lo que voy a recuperar con comas después de la salida serial para cada lectura. Esto me permitirá guardar en una base de datos MySql, un archivo CSV o txt. Esto me permite a la desintegración o separar los datos en serie en el procesamiento así como PHP y más otros lenguajes de scripting y programación muy fácilmente. Se utilizó el software BMP085 de Adafruit leer el sensor puesto que era el ejemplo más completo que pude encontrar y me envió los enlaces de arriba. Usted tendrá que importar la biblioteca en la carpeta sketchbook. También me gustaría señalar que deseaba que mis lecturas en unidades que estoy más familiarizado con modo he modificado el código para leer "inHg" de mercurio de presión, Fahrenheit y los pies. El código original estaba en hectopascales, Celsius y metros.
Fichero de croquis:myurov_database-2.ino
#include
#include
#include
#include
// -----------------------------------------------------------------------------------------
Bmp Adafruit_BMP085_Unified = Adafruit_BMP085_Unified(10085);
HMC5883L compás; El BMP085 ha sido sustituido por el BMP180 pero el código aún funciona.
error de int = 0;
void displaySensorDetails(void)
{
sensor de sensor_t;
bmp.getSensor(&sensor);
Delay(500);
}
void setup(void)
{
Serial.Begin(9600);
brújula = HMC5883L(); Construir una nueva brújula HMC5883.
if(!BMP.Begin())
{
while(1);
}
displaySensorDetails();
error = brújula. SetScale(1.3); Establecer la escala de la brújula.
Si (error! = 0) / / si hay un error, imprimir.
error = brújula. SetMeasurementMode(Measurement_Continuous); Establece el modo de medición en continuo
Si (error! = 0); Si hay un error, imprimir.
}
void loop(void) {}
evento sensors_event_t;
bmp.getEvent(&event);
Si (event.pressure)
{
presión int = event.pressure;
flotador de mercurio = 0;
mercurio = presión * 0.029529980164712; Convertir hectopascales a en de mercurio.
Serial.Print(Mercury); inHg
Serial.Print(","); separador de CSV
Float temperatura;
bmp.getTemperature(&temperature);
int temp2 = temperatura * 1.8000 + 32;
Serial.Print(temp2);
Serial.Print(","); separador de CSV
Float seaLevelPressure = SENSORS_PRESSURE_SEALEVELHPA;
alt int = bmp.pressureToAltitude (seaLevelPressure, event.pressure)* 3.2808;
Serial.Print(Alt); en Ft
Serial.Print(","); separador de CSV
}
otra cosa
{
}
Delay(1000);
MagnetometerRaw raw = brújula. ReadRawAxis();
MagnetometerScaled escalada = brújula. ReadScaledAxis();
int MilliGauss_OnThe_XAxis = escala. XAxis; / / (o EjeY respectivamente, o ZAxis)
partida de flotador = atan2 (a escala. EjeY respectivamente, escaladas. XAxis);
Float declinationAngle = 0.0526; 0.0457
título += declinationAngle;
if(Heading < 0)
Dirección += 2 * PI;
Si (partida > 2 * PI)
rumbo = 2 * PI;
Float headingDegrees = título * 180/constantio;
Salida (crudo, escala y rótulo, headingDegrees);
}
Salida nula (MagnetometerRaw prima, MagnetometerScaled escaladas, flotador partida, flotador headingDegrees)
{
Serial.Print (crudo. XAxis);
Serial.Print(","); separador de CSV
Serial.Print (crudo. EjeY respectivamente);
Serial.Print(","); separador de CSV
Serial.Print (crudo. ZAxis);
Serial.Print(","); separador de CSV
Serial.Print (escalado. XAxis);
Serial.Print(","); separador de CSV
Serial.Print (escalado. EjeY respectivamente);
Serial.Print(","); separador de CSV
Serial.Print (escalado. ZAxis);
Serial.Print(","); separador de CSV
Serial.Print(Heading);
Serial.Print(","); separador de CSV
Serial.println(headingDegrees);
}