Hello, I am creating a program that records altitude and temperature on an SD card using BMP180, SD module, and servo motor, and turns the servo motor when the rocket differs from the maximum altitude by 20m. However, when I run the code, there is no response in the serial monitor and there is no recorded information when I check the SD card. What's the problem?
#include <Servo.h>
#include <SPI.h>
#include <SD.h>
#include <Wire.h>
#include <time.h>
#include <Adafruit_BMP085.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BMP085_U.h>
#include <DS1307RTC.h>
Adafruit_BMP085 bmp;
static float altitudemax = 0;
static float altitude = bmp.readAltitude();
File myFile;
Servo servo;
void setup() {
Serial.begin(9600);
setSyncProvider(RTC.get);
setTime(10, 42, 0, 24, 12, 26);
servo.attach(7);
Serial.print("Initializing SD card...");
if (!bmp.begin()) {
Serial.println("Could not find a valid BMP085 sensor, check wiring!");
while (1) {}
}
if (!SD.begin(4)) {
// Initialize the SD card module.
Serial.println("initialization failed!"); //If initialization of the SD card module fails, an error is output.
while (1);
}
Serial.println("initialization done.");
while (1) {
// Open the file and prepare it for writing. You can only open one file at a time.
myFile = SD.open("PRESSURE.txt", FILE_WRITE); // If there is a second argument, it is in write mode.
if (myFile) {
// If the file opens normally, write (add) text to the file.
Serial.print("Writing to test.txt...");
myFile.print(year());
myFile.print("year");
myFile.print(month());
myFile.print("month");
myFile.print(day());
myFile.print("day");
myFile.print(hour());
myFile.print("hour");
myFile.print(minute());
myFile.print("minute");
myFile.print(second());
myFile.println("second");
myFile.print("Temperature = ");
myFile.print(bmp.readTemperature());
myFile.println(" *C");
myFile.print("Pressure = ");
myFile.print(bmp.readPressure());
myFile.println(" Pa");
myFile.print("Altitude = ");
myFile.print(bmp.readAltitude() + 87.5);
myFile.println(" meters");
myFile.println();
myFile.close();
if (altitude > altitudemax) {
altitudemax = altitude;
}
if (altitudemax - altitude > 20) {
servo.write(180);
}
delay(500);
} else {
// If the file cannot be opened, an error is output.
Serial.println("error opening pressure.txt");
}
}
}
void loop() {
}