Чтение данных с SD в ардуино

Пользовательские блоки дающие дополнительные возможности при работе с EEPROM и SD картами
Правила форума
Рекомендации по размещению блоков:
Автор блока создает подробное описание блока, отличие от подобных(если есть на данный момент).Сложные блоки очень желательно с примерами.
При выходе новых версий редактирует/дополняет свой первый пост с указанием даты, версии, причины.
В каждой теме обсуждается только выложенный автором блок - баги, возможность (или предложение) доработки и прочие хотелки.
Свои блоки, переработанные, с другими библиотеками, протоколами и т.д.- размещаем либо сами отдельно, либо обсуждаем и дорабатываем в форуме Разработка блоков.
Пользователи улучшив блок автора и проверив его работоспособность - могут обратиться к автору или модераторам с просьбой добавить их версию блока в первое сообщение темы.
Ответить
Ingwar
Полковник
Сообщения: 1929
Зарегистрирован: 28.10.2015{, 22:47}
Репутация: 223
Откуда: Ленобласть
Имя: Игорь

Чтение данных с SD в ардуино

#1

Сообщение Ingwar » 11.01.2019{, 10:59}

Выгружаем содержимое заданного файла не в порт, а в переменную (string).
Подробнее в описании.
Тестил на Mega и NANO.
readSD_nano.flp
(83.97 КБ) 319 скачиваний
read_SD_(CODE).ubi
(41.72 КБ) 280 скачиваний
Люди в своем большинстве живо интересуются всем на свете, за исключением того, что действительно стоит знать.

Аватара пользователя
Alias
Лейтенант
Сообщения: 481
Зарегистрирован: 27.11.2017{, 13:15}
Репутация: 36
Откуда: Rus44
Имя: Michael
Контактная информация:

Чтение данных с SD в ардуино

#2

Сообщение Alias » 11.01.2019{, 13:12}

Не удалось проверить на Нано вживую, тк памяти мало. Проверил на пустом проектике, где только две булевых переменных и одна строковая:
СпойлерПоказать
Скетч использует 10156 байт (33%) памяти устройства. Всего доступно 30720 байт.
Глобальные переменные используют 860 байт (41%) динамической памяти, оставляя 1188 байт для локальных переменных. Максимум: 2048 байт.
Это библиотеки столько жрут?

Ingwar
Полковник
Сообщения: 1929
Зарегистрирован: 28.10.2015{, 22:47}
Репутация: 223
Откуда: Ленобласть
Имя: Игорь

Чтение данных с SD в ардуино

#3

Сообщение Ingwar » 11.01.2019{, 14:08}

Alias писал(а):
11.01.2019{, 13:12}
Это библиотеки столько жрут?
Ага.
Пустой проект со стандартным блоком выгрузки файла с SD
СпойлерПоказать
Скетч использует 7738 байт (25%) памяти устройства. Всего доступно 30720 байт.
Глобальные переменные используют 835 байт (40%) динамической памяти, оставляя 1213 байт для локальных переменных. Максимум: 2048 байт.
Люди в своем большинстве живо интересуются всем на свете, за исключением того, что действительно стоит знать.

aska
Рядовой
Сообщения: 23
Зарегистрирован: 06.02.2019{, 10:57}
Репутация: 2
Имя: Андрей

Чтение данных с SD в ардуино

#4

Сообщение aska » 11.02.2019{, 21:05}

Блок безусловно полезный. Я так понимаю он считывает файл пакетом т.е. все строки разом. Сколько бы их там не было, хоть 10 000.
А возможно ли считывать по одной строке. Что бы информацию каждой строки можно было обработать и перейти на следующую.
Например.
P1000
P2000
P3000
и т.д.
Допустим, что 1000, 2000, 3000 это милисекунды. Счетчик отсчитал, читаем следующую строку и т.д. :smile37:

Ingwar
Полковник
Сообщения: 1929
Зарегистрирован: 28.10.2015{, 22:47}
Репутация: 223
Откуда: Ленобласть
Имя: Игорь

Чтение данных с SD в ардуино

#5

Сообщение Ingwar » 11.02.2019{, 23:08}

aska писал(а):
11.02.2019{, 21:05}
Что бы информацию каждой строки можно было обработать и перейти на следующую.
Например.
P1000
P2000
P3000
и т.д.
Допустим, что 1000, 2000, 3000 это милисекунды. Счетчик отсчитал, читаем следующую строку и т.д.
Ну если только для этого алгоритма, то можно парсить данные написанные в одну строку другим ПБ viewtopic.php?f=85&t=4778, а уже потом их применять.
В принципе
aska писал(а):
11.02.2019{, 21:05}
А возможно ли считывать по одной строке.
возможно. Нужно в блоке добавить условие и читать пока не встретите какой-то признак по которому следует прекратить чтение (например перенос строки). Но я не программист. Вдруг кто то из знающих модифицирует/сделает другой ПБ. Или как появится время попробую прикрутить сам.
Люди в своем большинстве живо интересуются всем на свете, за исключением того, что действительно стоит знать.

aska
Рядовой
Сообщения: 23
Зарегистрирован: 06.02.2019{, 10:57}
Репутация: 2
Имя: Андрей

Чтение данных с SD в ардуино

#6

Сообщение aska » 12.02.2019{, 06:37}

Вот и я не программист. Понимаю, что нужно сделать, а как сделать не знаю. :D . Тоже подумаю.

mihail66
Рядовой
Сообщения: 47
Зарегистрирован: 03.10.2019{, 10:19}
Репутация: 0
Имя: Михаил

Чтение данных с SD в ардуино

#7

Сообщение mihail66 » 24.05.2020{, 19:20}

Всем привет! У меня вопрос не про чтение, а про запись данных на SD карту. Но поскольку такой темы нет, то поинтересуюсь в этой.
Вот такой у меня вопрос, во встроенном блоке "Запись переменной на SD карту" какой максимальной длины можно записать комментарий по входу "Comment"?

Аватара пользователя
AlexCrane
Капитан
Сообщения: 895
Зарегистрирован: 20.10.2017{, 13:22}
Репутация: 294
Откуда: Ульяновск
Имя: Александр

Чтение данных с SD в ардуино

#8

Сообщение AlexCrane » 24.05.2020{, 20:58}

mihail66, по максимуму 65536, на практике ограничены памятью контроллера (уно, нано - 2000 байт)
Если не знаю, то не скажу. Если скажу, то сначала проверю...
Если нет возможности отблагодарить материально, хотя бы оцени пост....

mihail66
Рядовой
Сообщения: 47
Зарегистрирован: 03.10.2019{, 10:19}
Репутация: 0
Имя: Михаил

Чтение данных с SD в ардуино

#9

Сообщение mihail66 » 24.05.2020{, 21:07}

У меня по входу "Comment" пишется максимум 13 символов (на картинке это столбец E). А мне нужно записать 15 знакомест. Но вместо этого пишется просто пустота. Определил экспериментально.
13-комментов.png

User8
Лейтенант
Сообщения: 341
Зарегистрирован: 12.06.2017{, 14:44}
Репутация: 103
Имя: Евгений

Чтение данных с SD в ардуино

#10

Сообщение User8 » 03.07.2020{, 17:34}

Блок чтения построчно с sd карты, можно выбрать нужную строку.
В параметрах блока нужко указать пин подключения к sd карте.
getLine - при подаче единицы, будет искать нужную строку. (используйте через блок rTrig);
needLine - указать нужную строку, начиная с 0;
fileName - имя файла с расширением на sd карте;
Выход lineString - найденная строка;
Вложения
SD_Card_Read_v1.5_(CODE).ubi
(24.57 КБ) 150 скачиваний

vladimirle
Рядовой
Сообщения: 16
Зарегистрирован: 27.12.2015{, 19:25}
Репутация: 0
Откуда: Москва
Имя: Владимир

Чтение данных с SD в ардуино

#11

Сообщение vladimirle » 09.02.2021{, 18:38}

User8 писал(а):
03.07.2020{, 17:34}
Блок чтения построчно с sd карты, можно выбрать нужную строку.
В параметрах блока нужко указать пин подключения к sd карте.
getLine - при подаче единицы, будет искать нужную строку. (используйте через блок rTrig);
needLine - указать нужную строку, начиная с 0;
fileName - имя файла с расширением на sd карте;
Выход lineString - найденная строка;
Подскажите, пожалуйста, какое расширение файла допускается? И если есть возможность, то хотелось бы иметь описание данного ФБ :yes:

Serhio44
Рядовой
Сообщения: 13
Зарегистрирован: 12.10.2020{, 16:21}
Репутация: 0
Откуда: Шизино
Имя: Сергей

Чтение данных с SD в ардуино

#12

Сообщение Serhio44 » 11.02.2021{, 10:12}

User8 писал(а):
03.07.2020{, 17:34}
Блок чтения построчно с sd карты
Уважаемый User8,
Могли бы вы немножко расширить функционал данного блока? :smile453:
Все тоже самое, только вместо вывода битов выводить значения (Integer). Исходный файл аналогичен файлу загрузки для стандартного блока "коммандоаппарат" с расширением ххх.csv
Использование массива коммандоаппарата в процессоре (ограничено объемом памяти) не позволяет использовать большие-большие массивы, ну и крайне неудобно в коммандоаппарате заменять массив, поскольку при замене массива происходит отключение всех выходов и приходится каждый раз при этом муторно переподключать все выходы коммандоаппарата.

заранее благодарен

вроде разобрался. только .csv не читает

uglerod
Рядовой
Сообщения: 73
Зарегистрирован: 27.11.2016{, 18:32}
Репутация: 5

Чтение данных с SD в ардуино

#13

Сообщение uglerod » 22.08.2021{, 11:30}

Здравствуйте! Вопрос к знатокам в этой теме- стоит задача записи чисел (integer) на SD карту по имени файла , а при чтении выбранного файла вывести в переменную последнее записанное значение. Буду очень благодарен за помощь.

Ответить

Вернуться в «EEPROM и SD карты»