Официальный сайт компании Arduino по адресу arduino.cc
sd card модуль и lcd
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Ср, 01/07/2015 - 06:27
Всем здравствуйте. Помогите разобраться. Задача такова: есть четыре кнопки "запись", "чтение", "вперед", "назад"
При нажатии на кнопку "запись" в файл дописывается строчка из 20 символов. При нажатии на кнопку "чтение" программа переходит в режим чтения и кнопками"вперед" и "назад" на дисплее перелистывает строчки.
Заранее спасибо
И с чем нужно разбираться?
нужно сделать что б при нажатии кнопки"вперед" переходил на следущую строчку, при нажатии на кнопки "назад" на предыдущую
А строчка это что?
Это набор буквенно-цифровых символов ограниченных размерами листа/страницы/экрана по вертикали для некоторых стран юго-востока либо по горизонтали для остальных.
на сд карту записывается строка из 20 символов после нажатия на кнопку "запись", т.е. файл постоянно пополняться будет. один раз нажал на "запись", строка записалась, нажал второй раз на "запись" записалась вторая строка, и т.д. А потом если вошли в режим просмотра файла на дисплее выводится первая строка, нажали кнопку "вперед" отобразилась следующая строка, и т.д. до последней строки
набор цифр и символов, например:
21.06.2015-10:00-54
21.06.2015-11:25-4
21.06.2015-12:00-19
21.06.2015-13:09-48
21.06.2015-14:50-54
Ну так и читайте 1 строку.
не могли бы вы подсказать как?
Считывается весь файл, а как по одной строке считывать?
// until the file is not finished
while (myFile.available()) {
// read from the file into buffer
myFile.read(buffer, sizeof(buffer));
спасибо за помощь, щас буду пробовать
Так правильно?
Аммм, а где все остальное? О.о
простите вот
При нажатии на кнопку вперед buffer++; на кнопку нвзвд buffer--; ?
не успел еще
Не. Даю на водку.
сколько строк в файле?
это не известно, строки добавляться будут постоянно
int
buffer[20]; получается тут надо прописать количество строк, а не количество символов в строке. как же тогда узнать количество строк если это число меняться постоянно будет? а возможно так?
int
buffer[stroka]; а в loop после нажатия на кнопку запись
stroka++?это не известно, строки добавляться будут постоянно
Смелое заявление...
А если посчитать?
И не забыть считать что на экране они все не поместятся.
Мдааа, я уж думал вот сообразительный ученик попался. :(
Предположим что при включении наверное мы можем читать блоки по 20 символов и считать сколько прочитали блоков?
Предположим что мы можем завести переменную которая будет обозначать строку на экоане ...
Дальше догадаетесь?
это не известно, строки добавляться будут постоянно
после нажатия на кнопку "чтение" - очень даже известно
это не известно, строки добавляться будут постоянно
после нажатия на кнопку "чтение" - очень даже известно
Нажми на кнопку mute
Простите за несообразительность.
в итоге переменная stroka будет равна количеству строк в файле?
или опять не так понял
Зайдем с другой стороны.
На экране сколько строк за раз помещается? Есть идеи как их пролистывать?
Простите за несообразительность.
в итоге переменная stroka будет равна количеству строк в файле?
или опять не так понял
У вас всегда есть под рукой возможность отправить переиенную в serial и посмотреть что ваи таи насчиталось.
на экране четиыре строки, не могу понять как
на экране четиыре строки, не могу понять как
Бааальшой список... рамочка в 4 строки движется вверх или вниз по списку. ..
нужно завести переменную и увеличивать ее или уменьшать, вроде так, остальное не понятно
нужно завести переменную и увеличивать ее или уменьшать, вроде так, остальное не понятно
Что еще может быть не понятно?
Зная общее количество строк, пнрнмещаем по ним метку и ввводи на печать 4 строки от метки вниз...
Начните с начала. У вас все перепуталось в голове.
Это точно, насчет перепуталось в голове
Это точно, насчет перепуталось в голове
Значит нужно отложить в сторону. Пойти попить чайку. Погулять. И вернуться к этому чуть позже. Это будет чуть сложнее чем вы предполагали.
Спасибо вам большое за помошь, дело в том что неделю почти бьюсь уже и толку ноль, благодаря вам хоть немного что то сдвинулось, хоть что то понятно стало. А чаю уже столько выпито, что боюсь лопну если еще выпью)) Спасибо большое еще раз
в фпйле строки есть
Спасибо вам большое за помошь, дело в том что неделю почти бьюсь уже и толку ноль, благодаря вам хоть немного что то сдвинулось, хоть что то понятно стало. А чаю уже столько выпито, что боюсь лопну если еще выпью)) Спасибо большое еще раз
вот !!!!!
подход один - а выводов два :
- спасибо ! научили думать
- ты тролль !
:)
я не рано отжал "mute" ?
:)
помогли бы лучше......
помогли бы лучше......
не обращайте внимание !
вам подсказывает самый злой тролль ! ( по версии форума ) - это уже помощь !!!!!!!
он же вам вектор указал - куда рыть !
это больше - чем дать готовый код....
да я не прошу готовый код, просто указать на ошибки. Копирую и вставляя готовый код ничему не научишься
а что Вы хотели там увидеть?
количество строк в файле
дальше же считывается кол во строк simvol[stroka]=myFile.read(); или не так?
так, но только один раз. переменная stroka у Вас не меняется. Она всегда равна 0
а все понял вынести из цикла while
char
simvol[20];
74
int
stroka=0;
до setup() прописать?
обе переменных?
+ как переменная должна узнать что ей надо изменяться? Только Вы можете ее наставить на путь истинный :)
Вот так?
строки всего три в файлк счетчик доходит до 218 потом перестает открывать файл т.е. выводится в сериал эта строка
Serial.println("error opening test.txt");
Теперь смотрим указания Пухлявого в начале обсуждения и находим разницу.
Нет, не так.
Для начала, немного терминологии:
Файл - некая последовательность символов в нем хранящаяся. Вы его создаете в том куске кода, который по кнопке Write. Обратите внимание, что данные вы в него пихаете не по 1 символу, а "пачками" - строкой. Которая нормально кончается символом "\n". println()? как раз и пишет, формируя этот признак "конец строки".
То что вам надо, это теперь организовать чтение так, чтобы обратно читался не весь файл, а только 1 (одна) строка. То бишь от первого символа и до ... первого конца строки. А когда вы нажимаете на "вперед", читалась "следующая" такая порция... соответственно, когда "назад" ... предыдущая.
поищите КАК в той библиотеке, что вы пользуете читать не весь файл, а только одну строчку из него И (главное) КАК позиционаровать указатель текущей позиции в файле "вперед и назад" по файлу. Зная размер только что считанной и предыдущей строчек вернуться назад - означает всего лишь изменить текущую позицию файла на сумму этих размеров и считать снова 1 строку.
Как-то так.
Посмотрел SD.h. "так оно и есть". :)
Откройте для себя методы position() и seek(), в частности.
Нет, не так.
Для начала, немного терминологии:
Файл - некая последовательность символов в нем хранящаяся.
<skipped>
ОЙ! И давно? А если музыкальный диск на свет посмотреть то текст песни можно прочитать?
спасибо а советы, почиталпро функции, но серавно не могу понять......... не могли бы вы на каком нибудь примере показать
Посмотрел SD.h. "так оно и есть". :)
Откройте для себя методы position() и seek(), в частности.
Чё ж ты код не написал сразу? Помошник блин.
Мы тут деревяным методом решаем сначала. А оптимизация потом. Иди займись сыном, блин бедный ребенок.
Иди лучше огород вскопай. Детской лопаткой. На глубину метра. 3 раза
myFile.read(buffer, sizeof(buffer)); что делает?