Снятие данных с акселерометра и их запись на флешку

Luksor666
Offline
Зарегистрирован: 14.02.2015

Я хочу подключить подключить arduino pro mini к телефонному аккумулятору, а к pro mini картридер и гироскоп(mpu 6050) проблема оказалась с кодом я не знаю как написать код что бы все записывалось на флешку, мне нужно что бы в текстовый документ записывались ускорения по 3м осям и данные с акселерометра.Вот мой четные попытки( Помогите



Сделал так подключил гироскоп, картридер, pro, аккум. Проверяю результат карта вообще не работает. Что за бред?? 

#include "SD.h"
#include "Wire.h"                 
#include "I2Cdev.h"
#include "MPU6050.h"
MPU6050 accelgyro; 
File MPUFile;  // Файл в который будут записаны показания с датчика
 
int16_t ax, ay, az;  // define accel as ax,ay,az
int16_t gx, gy, gz;  // define gyro as gx,gy,gz
           
#define LED_PIN 13
bool blinkState = false;
 
void setup() {
  Wire.begin();      // присоединиться к шине I2C 
  Serial.begin(38400);    //  инициализировать последовательную связь
  Serial.println("Initializing I2C devices...");
  accelgyro.initialize();  
 
  // проверка соединения
  Serial.println("Testing device connections...");
  Serial.println(accelgyro.testConnection() ? "MPU6050 connection successful" : "MPU6050 connection failed");
 
  pinMode(LED_PIN, OUTPUT);  // настроить LED pin
  
  // Инициализируем СД карту
  Serial.print("Initializing SD card...");
  if (!SD.begin(4)) {
    Serial.println("initialization failed!");
    return;}
    
  Serial.println("initialization done.");
  
  // Открываем (или создаем, если его нет) файл для записи данных с датчика
  MPUFile = SD.open("Test.txt", FILE_WRITE);
     
        if (MPUFile){
          // accelgyro.getMotion6(&ax, &ay, &az, &gx, &gy, &gz);
           Serial.print("a/g:\t");
           MPUFile.println(ax); 
           Serial.print("\t");
           MPUFile.print(ay); 
           Serial.print("\t");
           MPUFile.print(az); 
           Serial.print("\t");
           MPUFile.print(gx); 
           Serial.print("\t");
           MPUFile.print(gy); 
           Serial.print("\t");
           MPUFile.println(gz);
           
           // Закрываем файл:
           MPUFile.close();
           Serial.println("done.");
     }
}
 
void loop() {
}

 

Yarik.Yar
Offline
Зарегистрирован: 07.09.2014

Так у вас строка получения ускорения закомментирована.не так ли?

// accelgyro.getMotion6(&ax, &ay, &az, &gx, &gy, &gz);

Уберите два слеша перед строкой и пробуйте:)

 

Luksor666
Offline
Зарегистрирован: 14.02.2015

А строчку я закомментировал потому что думал она не нужна, это я переделывал код который данные выдавал в ком порт

Да я теперь даже проверить не могу

Потому что у меня теперь почему то не работает карта, комп ее вообще не видит. Ни как 

А стандартный скетч для карты, который показывал информацию о карте говорит вот это

Initializing SD card...Wiring is correct and a card is present.
Card type: SDHC
Could not find FAT16/FAT32 partition.
Make sure you've formatted the card

А как я ее форматирую если комп не видит ее((

Может есть какой ни будь скетчь который может форматировать карту которую я вставлю в этот карт ридер?

Yarik.Yar
Offline
Зарегистрирован: 07.09.2014

 

Форматируй Partiton Magic'ом

Ты раздел удалил на карте

 

Luksor666
Offline
Зарегистрирован: 14.02.2015

Установил, она тоже не видит флешку

В компе не отображается, в диспетчере тоже, cmd list disk не показывает ее.

Yarik.Yar
Offline
Зарегистрирован: 07.09.2014

 

Защита от записи не включена случайно?

Luksor666
Offline
Зарегистрирован: 14.02.2015

Где? Что за защита? на карте, нет

Yarik.Yar
Offline
Зарегистрирован: 07.09.2014

 

Плохо дело) с другими картами работает?

Luksor666
Offline
Зарегистрирован: 14.02.2015

Другие флешки видит. А проблема мне кажется не в флешке. Или в карт ридере который на компе или что то в компе. Телефон эту карту видит, но долго думает с ней, очистил через телефон не помогло. На ней кстати были файлы 1.txt и систем волум инфо. Удалил все равно комп не видит 

А вообще код правильный? Я просто толком не понимаю что за что отвечает. Я переделывал код который выводил данные с гироскопа в ком порт. И пытался опираясь на этот пример записать данные на флешку. Тут только датчик другой.

#include <SD.h>
#include <dht.h>
DHT sensor = DHT();  // Датчик температуры и влажности
File sensorDataFile;  // Файл в который будут записаны показания с датчика
char* SENSOR_DATA_FILE_NAME = "1.txt";  // Название файла

void setup()
{
  Serial.begin(9600);
  // Подключаем сенсор к 0 аналоговому порту
  sensor.attach(A0);
  // Ждем готовность сенсора
  delay(1000);
  // SPI SS пин должен быть OUTPUT
  pinMode(10, OUTPUT);
   
  // Инициализируем СД карту
  Serial.print("Initializing SD card...");
  if (!SD.begin(4)) {
    Serial.println("initialization failed!");
    return;
  }
  Serial.println("initialization done.");
  
  // Открываем (или создаем, если его нет) файл для записи данных с датчика
  sensorDataFile = SD.open(SENSOR_DATA_FILE_NAME, FILE_WRITE);
  for (int i = 0; i < 10; i++)
  {
    // Проводим 10 замеров
    sensor.update();
    // Записываем удачные результаты в файл и в порт
    if (sensor.getLastError() == DHT_ERROR_OK && sensorDataFile)
    {
      char msg[128];
      sprintf(msg, "Current humidity = %d%% temperature = %dC",
              sensor.getHumidityInt(), sensor.getTemperatureInt());
      Serial.println(msg);
      sensorDataFile.println(msg);
    }
    delay(2000);
  }
  sensorDataFile.close();
  Serial.println("Finished.");
}

void loop()
{
}