Stap 2: De Arduino schets
De code is aangepast voor de leesbaarheid en deze toepassing. Ik wil de flexibiliteit te gebruiken de gegevens voor de meest algemene toepassingen, so I 'm going te halen met komma's na de uitgang voor seriële voor elke lezing. Hierdoor zal me wilt opslaan op een MySql database, een CSV-bestand of een txt-bestand. Hierdoor zal ik wil uiteenvallen of scheiden van de seriële data verwerken evenals PHP en de meeste andere programmering en scripting talen heel gemakkelijk. De software van de BMP085 van Adafruit werd gebruikt om te lezen van de sensor, omdat het de meest volledige voorbeeld dat ik kon vinden was en ik gepost bovenstaande links. U moet de bibliotheek in uw schetsboek-map importeren. Ik wil ook de opmerking dat ik mijn lezingen in eenheden die ik meest vertrouwd zijn met wilde, ben dus ik wijzigde de code om te lezen in "inHg" van kwik voor druk, Fahrenheit en voeten. De originele code was in hectopascal, Celsius en meter.
Sketch bestand:myurov_database-2.ino
#include
#include
#include
#include
// -----------------------------------------------------------------------------------------
Adafruit_BMP085_Unified bmp = Adafruit_BMP085_Unified(10085);
HMC5883L kompas; De BMP085 is vervangen door de BMP180, maar de code werkt nog steeds.
int fout = 0;
VOID displaySensorDetails(void)
{
sensor_t sensor;
bmp.getSensor(&sensor);
delay(500);
}
void setup(void)
{
Serial.begin(9600);
kompas = HMC5883L(); Bouw van een nieuwe HMC5883-kompas.
if(!BMP.begin())
{
while(1);
}
displaySensorDetails();
fout = kompas. SetScale(1.3); Stel de schaal van het kompas.
Als (fout! = 0) / / als er een fout optreedt, uitprinten.
fout = kompas. SetMeasurementMode(Measurement_Continuous); De meting modus instelt op doorlopend
Als (fout! = 0); Als er een fout optreedt, uitprinten.
}
ongeldig loop(void) {}
sensors_event_t evenement;
bmp.getEvent(&event);
Als (event.pressure)
{
int druk = event.pressure;
zweven kwik = 0;
kwik druk = * 0.029529980164712; Converteren hectopascal op in kwik.
Serial.Print(Mercury); inHg
Serial.Print(","); CSV seperator
float temperatuur;
bmp.getTemperature(&temperature);
int temp2 temperatuur = * 1.8000 + 32;
Serial.Print(temp2);
Serial.Print(","); CSV seperator
zweven seaLevelPressure = SENSORS_PRESSURE_SEALEVELHPA;
int alt = bmp.pressureToAltitude (seaLevelPressure, event.pressure)* 3.2808;
Serial.Print(ALT); in Ft
Serial.Print(","); CSV seperator
}
anders
{
}
delay(1000);
MagnetometerRaw ruwe = kompas. ReadRawAxis();
MagnetometerScaled geschaald = kompas. ReadScaledAxis();
int MilliGauss_OnThe_XAxis = geschaald. XAxis; / / (YAxis en/of ZAxis)
float rubriek = atan2 (geschaald. YAxis, geschaald. XAxis);
zweven declinationAngle = 0.0526; 0.0457
rubriek += declinationAngle;
if(heading < 0)
rubriek += 2 * PI;
Als (kop > 2 * PI)
rubriek-= 2 * PI;
zweven headingDegrees = heading * 180/M_PI;
Uitgang (raw, geschaalde, kop, headingDegrees);
}
VOID Output (MagnetometerRaw rauw, MagnetometerScaled geschaald, float rubriek, float headingDegrees)
{
Serial.Print (rauw. XAxis);
Serial.Print(","); CSV seperator
Serial.Print (rauw. YAxis);
Serial.Print(","); CSV seperator
Serial.Print (rauw. ZAxis);
Serial.Print(","); CSV seperator
Serial.Print (geschaald. XAxis);
Serial.Print(","); CSV seperator
Serial.Print (geschaald. YAxis);
Serial.Print(","); CSV seperator
Serial.Print (geschaald. ZAxis);
Serial.Print(","); CSV seperator
Serial.Print(heading);
Serial.Print(","); CSV seperator
Serial.println(headingDegrees);
}