Значение переменной с SD карты, tinyFat
- Войдите на сайт для отправки комментариев
Ср, 16/10/2013 - 06:55
Здравствуйте.
Никак не могу разобраться как при помощи библиотеки tinyFat считывать число из файла c sd карты и значение этого числа присваивать переменной. Может есть пример кода или куска кода где в файле на sd карте находится 2 разных числа и эти числа присваиваются значению 2-х разных переменных?
Примерно так:
01
/*в файле BASE.txt делаете записи:
02
c3658,a123,b789.
03
или так:
04
b789 a123 c3658_ - в конце тоже пробел
05
или так:
06
a123
07
c3658
08
b789
09
_ - к конце новая пустая строка
10
порядок записи переменных не важен
11
*/
12
13
#include <SD.h>
14
#define CS 4 // CS SD-карты
15
#define FILE "BASE.txt"
16
17
void
setup
()
18
{
19
Serial
.begin(9600);
20
pinMode(CS, OUTPUT);
21
if
(!SD.begin(CS)) {
22
Serial
.println(
"Card failed, or not present"
);
23
return
;
24
}
25
Serial
.println(
"card initialized."
);
26
}
27
28
29
void
loop
()
30
{
31
int
a = 0;
32
int
b = 0;
33
int
c = 0;
34
35
File dataFile = SD.open(FILE, FILE_READ);
36
if
(dataFile)
37
{
38
unsigned
long
buff = 0;
39
while
(dataFile.available())
40
{
41
char
ch = dataFile.read();
42
if
(ch ==
'a'
)
43
{
44
a = dataFile.parseInt();
45
Serial
.print(
"a = "
);
46
Serial
.println(a);
47
}
48
else
if
(ch ==
'b'
)
49
{
50
b = dataFile.parseInt();
51
Serial
.print(
"b = "
);
52
Serial
.println(b);
53
}
54
else
if
(ch ==
'c'
)
55
{
56
c = dataFile.parseInt();
57
Serial
.print(
"c = "
);
58
Serial
.println(c);
59
}
60
}
61
dataFile.close();
62
}
63
else
Serial
.println(
"error opening file"
);
64
65
while
(1);
66
}
Спасибо, но это пример библиотеки SD, а очень бы хотелось бы пример библиотеки tinyFat
Попробую задать вопрос немного поконкретнее... делаю я пивоварню, так вот в пивовареном процессе есть температурные паузы (для получения сусла - солод с водой выдерживаются определённое время при определённой температуре, время и температура зависят от рецепта пива). Пока у меня получилось выставлять и запоминать температуру и время всех пауз вручную, но что бы не делать рутинную работу каждый раз, хотелось бы иметь возможность загрузки рецептов с sd карты. Тут и появилась проблема... сегодня убил ещё один вечер и проблема всё ещё не решена:
Вот кусок кода с которым не могу разобраться:
При таком варианте на экран выводится количество символов в каждой строке, а не их значение. А мне нужно каким-то образом сделать
num=textBuffer;
но тогда получаю ошибку - error: invalid conversion from 'char*' to 'int'
что делать???
1
num = atoi(textBuffer);
спасибо, всё заработало.
а зачем в твоём коде нужна 38-я строка???
Низачем, можно удалить.
Всем привет!
Что бы не плодить темы, напишу тут ...
Я конечно задам может быть ОООЧЕНЬ глупый вопрос .. НО ... как проверить наличие/прочитать файл лежащий не в корне, а в папке?
1
if
(file.exists(
"/folder/file.txt"
)) {
2
res = file.openFile(
"/folder/file.txt"
, FILEMODE_BINARY);
3
...
4
}
else
{
5
Serial
.println(F(
" ...not found :("
));
6
}
вот я и получаю ...not found :(
Умеет-ли вообще эта библиотека читать файлы не из корня?