Serial Monitor data to sd card

Hello, I am having trouble figuring out how to take my sensor data which is displayed on the serial monitor and write that data to my sd card. I am using many sensors which use analog pins and digital pins and I have not found a good way to use my micro sd card adapter for arduino.

In other ways I want to take the words in my serial monitor and put that onto an sd card (in a txt file). I already have all the equipment and I have been using the examples and looking online but its all for analog pins only. The data logger example will not work despite my many tries.

example of serial monitor data;

#include <SimpleDHT.h>
#include <Wire.h>


//temphum
// for DHT11, 
//      VCC: 5V or 3V
//      GND: GND
//      DATA: 2
int pinDHT11 = 2;
SimpleDHT11 dht11;

//analog hall
int  sensorPin  =  A0;     // select the input  pin for  the potentiometer 
int  ledPin  =  13;   // select the pin for  the LED
int  sensorValue =  0;  // variable to  store  the value  coming  from  the sensor

//tempd
#include <OneWire.h>
#include <DallasTemperature.h>
// Data wire is plugged into port 2 on the Arduino
#define ONE_WIRE_BUS 3
// Setup a oneWire instance to communicate with any OneWire devices (not just Maxim/Dallas temperature ICs)
OneWire oneWire(ONE_WIRE_BUS);
// Pass our oneWire reference to Dallas Temperature.
DallasTemperature sensors(&oneWire);

//maghall
int  sensorPin1  =  A1;     // select the input  pin for  the potentiometer 
int  ledPin1  =  14;   // select the pin for  the LED
int  sensorValue1 =  0;  // variable to  store  the value  coming  from  the sensor

//gyro
#include "Wire.h" // This library allows you to communicate with I2C devices.
const int MPU_ADDR = 0x68; // I2C address of the MPU-6050. If AD0 pin is set to HIGH, the I2C address will be 0x69.
int16_t accelerometer_x, accelerometer_y, accelerometer_z; // variables for accelerometer raw data
int16_t gyro_x, gyro_y, gyro_z; // variables for gyro raw data
int16_t temperature; // variables for temperature data
char tmp_str[7]; // temporary variable used in convert function
char* convert_int16_to_str(int16_t i) { // converts int16 to string. Moreover, resulting strings will have the same length in the debug monitor.
  sprintf(tmp_str, "%6d", i);
  return tmp_str;
}


void setup() {
  pinMode(ledPin,OUTPUT);
  Serial.begin(9600);
  //tempd
  // start serial port
  Serial.begin(9600);

  // Start up the library
  sensors.begin();

  //gyro
  Serial.begin(9600);
  Wire.begin();
  Wire.beginTransmission(MPU_ADDR); // Begins a transmission to the I2C slave (GY-521 board)
  Wire.write(0x6B); // PWR_MGMT_1 register
  Wire.write(0); // set to zero (wakes up the MPU-6050)
  Wire.endTransmission(true);
 
}
void loop() {
  // start working...

  // read with raw sample data.
  byte temperature = 0;
  byte humidity = 0;
  byte data[40] = {0};
  if (dht11.read(pinDHT11, &temperature, &humidity, data)) {
    Serial.print("Read Temp&Humid failed");
    return;
  }
  

  for (int i = 0; i < 40; i++) {
    Serial.print((int)data[i]);
    if (i > 0 && ((i + 1) % 4) == 0) {
      Serial.print(' ');
    }
  }
  Serial.println("");
  
  Serial.print("Temperature & Humidity: ");
  Serial.print((int)temperature); Serial.print(" *C, ");
  Serial.print((int)humidity); Serial.println(" %");

  

  
  // DHT11 sampling rate is 1HZ.
  delay(1000);

//hall ana
Serial.print("Analog Hall: ");
sensorValue =  analogRead(sensorPin);
digitalWrite(ledPin,  HIGH); 
delay(sensorValue);
delay(sensorValue);
Serial.println(sensorValue,  DEC);

//tempd
 // call sensors.requestTemperatures() to issue a global temperature
  // request to all devices on the bus
 
  sensors.requestTemperatures(); // Send the command to get temperatures


  Serial.print("TemperatureD: ");
  Serial.println(sensors.getTempCByIndex(0));

  //maghall
  Serial.print("Mag Hall: ");
sensorValue1 =  analogRead(sensorPin1);
digitalWrite(ledPin1,  HIGH); 
delay(sensorValue1); 
digitalWrite(ledPin1,  LOW);
delay(sensorValue1);
Serial.println(sensorValue1,  DEC);

//gyro
 Wire.beginTransmission(MPU_ADDR);
  Wire.write(0x3B); // starting with register 0x3B (ACCEL_XOUT_H) [MPU-6000 and MPU-6050 Register Map and Descriptions Revision 4.2, p.40]
  Wire.endTransmission(false); // the parameter indicates that the Arduino will send a restart. As a result, the connection is kept active.
  Wire.requestFrom(MPU_ADDR, 7*2, true); // request a total of 7*2=14 registers
  
  // "Wire.read()<<8 | Wire.read();" means two registers are read and stored in the same variable
  accelerometer_x = Wire.read()<<8 | Wire.read(); // reading registers: 0x3B (ACCEL_XOUT_H) and 0x3C (ACCEL_XOUT_L)
  accelerometer_y = Wire.read()<<8 | Wire.read(); // reading registers: 0x3D (ACCEL_YOUT_H) and 0x3E (ACCEL_YOUT_L)
  accelerometer_z = Wire.read()<<8 | Wire.read(); // reading registers: 0x3F (ACCEL_ZOUT_H) and 0x40 (ACCEL_ZOUT_L)
  temperature = Wire.read()<<8 | Wire.read(); // reading registers: 0x41 (TEMP_OUT_H) and 0x42 (TEMP_OUT_L)
  gyro_x = Wire.read()<<8 | Wire.read(); // reading registers: 0x43 (GYRO_XOUT_H) and 0x44 (GYRO_XOUT_L)
  gyro_y = Wire.read()<<8 | Wire.read(); // reading registers: 0x45 (GYRO_YOUT_H) and 0x46 (GYRO_YOUT_L)
  gyro_z = Wire.read()<<8 | Wire.read(); // reading registers: 0x47 (GYRO_ZOUT_H) and 0x48 (GYRO_ZOUT_L)
  
  // print out data
  Serial.print("aX = "); Serial.print(convert_int16_to_str(accelerometer_x));
  Serial.print(" | aY = "); Serial.print(convert_int16_to_str(accelerometer_y));
  Serial.print(" | aZ = "); Serial.print(convert_int16_to_str(accelerometer_z));
  // the following equation was taken from the documentation [MPU-6000/MPU-6050 Register Map and Description, p.30]
  Serial.print(" | tempw = "); Serial.print(temperature/340.00+36.53);
  Serial.print(" | gX = "); Serial.print(convert_int16_to_str(gyro_x));
  Serial.print(" | gY = "); Serial.print(convert_int16_to_str(gyro_y));
  Serial.print(" | gZ = "); Serial.print(convert_int16_to_str(gyro_z));
  Serial.println();

  
}

Any help would be appreciated!
Thank you so much in advance!

temphumidnosd.ino (5.4 KB)

did you try the CardInfo example?

The very easiest way to do that is to connect the Sparkfun OpenLog input to the TX pin of the Arduino. No new hardware or software needed!

All the data intended for the serial monitor will automatically go to a file, which you can read on a PC or smart phone.

I will be trying these; thank you!