Я хочу подключить подключить arduino pro mini к телефонному аккумулятору, а к pro mini картридер и гироскоп(mpu 6050) проблема оказалась с кодом я не знаю как написать код что бы все записывалось на флешку, мне нужно что бы в текстовый документ записывались ускорения по 3м осям и данные с акселерометра.Вот мой четные попытки( Помогите. Сделал так подключил гироскоп, картридер, pro, аккум. Проверяю результат карта вообще не работает. Что за бред?? Код (Text): /* **pro mini + mpu 6050: GND=GND, VIN=VCC, SDA=A4, SCL=A5 **pro mini + sd card module: GND=GND, 5V=VCC, SDCS=D4, MOSL=D11, SCK=D13, MISO=D12 **pro mini + akkum: GND=GND, RAW=5V */ #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() { } делал по этому примеру, тут только датчик другой Код (Text): #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() { }
этот скетч переделывал http://www.dfrobot.com/wiki/index.php/6_DOF_Sensor-MPU6050_(SKU:SEN0142)#Sample_Code так соединил
Да все примеры работали: Примеры для гироскопа работали, примеры для sd все работали. Но все это работало отдельно! А когда все это совместил работать не стало. Ошибки компилятор не выводит. А результата нет все вместе подключил сначала на флешку просто ничего не записалось, а при второй попытке она вообще перестала работать! Комп эту флешку вообще не видит, телефон видит, через скетчь cardinfo просит форматировать(типа раздел не может найти). Но это ладно флешку другую возьму, а вот что с кодом? Он правильный? Флешка была на 16гб, sdhc
Код (Text): 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."); в луп перекиньте
Попробуй так Код (Text): MPUFile = SD.open("Test.txt", FILE_WRITE); if (MPUFile) { Serial.println("Test.txt:"); while (dataFile.available()) { accelgyro.getMotion6(&ax, &ay, &az, &gx, &gy, &gz); Serial.print(ax); Serial.print("\t"); Serial.print(ay); Serial.print("\t"); Serial.println(az); } MPUFile.close(); }
Не работает, а это (Serial.print) не в ком порт выводит? Я просто плохо понимаю программирование. Может конфликт каких нибудь модулей?
попробуй так, у меня просто MPU ещё не приехал и проверить не могу Код (Text): #include "SD.h" #include "Wire.h" #include "I2Cdev.h" #include "MPU6050.h" MPU6050 accelgyro; File MPUFile; int16_t ax, ay, az; int16_t gx, gy, gz; void setup() { Wire.begin(); Serial.begin(9600); Serial.println("Initializing I2C devices..."); accelgyro.initialize(); Serial.println("Testing device connections..."); Serial.println(accelgyro.testConnection() ? "MPU6050 connection successful" : "MPU6050 connection failed"); Serial.print("Initializing SD card..."); if (!SD.begin(4)) { Serial.println("initialization failed!"); return; } Serial.println("initialization done."); } void loop() { accelgyro.getMotion6(&ax, &ay, &az, &gx, &gy, &gz); MPUFile = SD.open("Test.txt", FILE_WRITE); if (MPUFile) { MPUFile.write(ax); MPUFile.write(ay); MPUFile.write(az); MPUFile.write(gx); MPUFile.write(gy); MPUFile.write(gz); Serial.print(ax); Serial.print("\t"); Serial.print(ay); Serial.print("\t"); Serial.print(az); Serial.print("\t"); Serial.print(gx); Serial.print("\t"); Serial.print(gy); Serial.print("\t"); Serial.println(gz); } MPUFile.close(); }
Попробовал не работает. Но я сомневаться начал что дело в коде.Дело в том что карта которую комп не видит на 16гб, он через скетч cardinfo показывает что ее нужно форматировать! А когда я пытался использовать другую карту на 32мб FAT(должно быть вроде FAT 16 или 32) скетч cardinfo вообще ее не видит, а компьютер нормально видит. Вообщем я не понимаю что не так(( Мне на одном форуме написали что возможно это конфликт модулей(лишний модуль подключил) , сказали оф документы почитать только не сказали по чему док почитать. Смотрел все библиотеки которые подключал, все даташиты ничего не нашел. На днях попробую другую карту с преподом может он что то скажет. Спасибо вам за помощь. Если хотите могу потом сюда написать результат что было не так) Если выясним