вывод на sd-карту
- Войдите на сайт для отправки комментариев
Пт, 20/11/2015 - 19:56
#include <SD.h>
volatile unsigned int count = 0;// сохраняем обороты
const int chipSelect = 10;
const int pinrazr=8;// при низком уровне прием данных
int flag=-1;
int flag2=-1;
int i=0;
int a[10];
void setup()
{
Serial.begin(9600);
digitalWrite(pinrazr, HIGH);
attachInterrupt(0,fun, CHANGE);
pinMode(10, OUTPUT);
if (!SD.begin(chipSelect)) {
Serial.println("Card failed, or not present");
// don't do anything more:
return;
}
Serial.println("card initialized.");
}
void loop()
{
if(digitalRead(pinrazr)==LOW)flag=1;
if(digitalRead(pinrazr)==HIGH && flag>0){flag=-1;
a[i]=count;
if(i==a[0]){
Serial.println(count);
count=0; i=0; flag2=1; goto loop2;}
else{
Serial.print(count);
Serial.print(" ");
count=0;}
i++; }
loop2:
if (flag2>0)
{
String dataString = "";
for (int j=1; j<a[0]; j++) {
int sensor = a[j];
dataString += String(sensor);
if (j < a[0]-1) {
dataString += ";";
}
}
File dataFile = SD.open("datalog1.csv", FILE_WRITE);
// if the file is available, write to it:
if (dataFile) {
dataFile.println(dataString);
dataFile.close();
Serial.println(dataString);
}
// if the file isn't open, pop up an error:
else {
Serial.println("error opening datalog1.csv");
}
}
flag2=-1;
}
void fun()
{
count++;// прибавляем единицу к полученому
}
Помогите разобраться. Массив передан с другой ардуины. Записываю на sd-карту. Проблема в том, что если в эту ардуину вставлен дата-кабель то все нормально. При любом другом варианте карта не инициализируется. Земля общая. Плюс питания подавал и общий и раздельный - не помогает. Как будто в кабеле существует какая-то невидимая перемычка.
Дополнение. Если аурдину запускать resetом, то пишет на карту нормально, без дата кабеля.