С micro sd с txt управление пинами знает кто как сделать ?

virfl
Offline
Зарегистрирован: 11.11.2017
Перерыл много чего не нашел не одного урока.
Смысл  таков: фаил  txt в нем набор команд, которыми управлял пинами ардуино далее нагрузка
что-то вроде перфоленты только с микро сд

 

b707
Offline
Зарегистрирован: 26.05.2017

virfl пишет:

Перерыл много чего не нашел не одного урока.
Смысл  таков: фаил  txt в нем набор команд, которыми управлял пинами ардуино далее нагрузка
что-то вроде перфоленты только с микро сд

 

и не найдете. Чтобы сделать такое, надо разработать свой язык команд и написать к нему интерпретатор, запускаемый на ардуино. Задачка, прямо скажем, не для новичка.

Не поделитесь, зачем вам это? К чему кодировать команды в ТХТ файле на каком-то новом языке, когда эти команды можно закодировать на Си прямо в скетче?

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

"Кто на ком стоял?"

virfl
Offline
Зарегистрирован: 11.11.2017

b707 пишет:

virfl пишет:

Перерыл много чего не нашел не одного урока.
Смысл  таков: фаил  txt в нем набор команд, которыми управлял пинами ардуино далее нагрузка
что-то вроде перфоленты только с микро сд

 

и не найдете. Чтобы сделать такое, надо разработать свой язык команд и написать к нему интерпретатор, запускаемый на ардуино. Задачка, прямо скажем, не для новичка.

Не поделитесь, зачем вам это? К чему кодировать команды в ТХТ файле на каком-то новом языке, когда эти команды можно закодировать на Си прямо в скетче?

ясно выглядит просто на деле как всегда. Хотя и правда можно попробовать без сдшки

задумка что-то вроде механическо электро шкатулки

b707
Offline
Зарегистрирован: 26.05.2017

virfl пишет:

задумка что-то вроде механическо электро шкатулки

поищите что-то типа "ноты для ардуино" - есть скетчи с записью нот и с кодом, который их умеет обрабатывать. А потом, если разберетесь - сможете перенести ноты во внешний файл и обрабатывать как входной поток.

Это примерно то, что вам нужно, если я правильно понял задачу.

virfl
Offline
Зарегистрирован: 11.11.2017

b707 пишет:

virfl пишет:

задумка что-то вроде механическо электро шкатулки

поищите что-то типа "ноты для ардуино" - есть скетчи с записью нот и с кодом, который их умеет обрабатывать. А потом, если разберетесь - сможете перенести ноты во внешний файл и обрабатывать как входной поток.

Это примерно то, что вам нужно, если я правильно понял задачу.

спасибо гляну если она сможет не играть а (пинами) поршнями  упровлять то да

b707
Offline
Зарегистрирован: 26.05.2017

virfl пишет:

спасибо гляну если она сможет не играть а (пинами) поршнями  упровлять то да

напишете - сможет :) Готовое вряд ли найдете., все равно самому допиливать придется.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

b707 пишет:
надо разработать свой язык команд и написать к нему интерпретатор

Существуют готовые интерпретаторы для лиспа, бэйсика, брейнфака, форта и ещё какие-то были :)

virfl
Offline
Зарегистрирован: 11.11.2017

нет не нашел похожего нашел видео https://www.youtube.com/watch?v=FcgFfY4fVqU подобной задумкой с пианино с передачей данных по беспроводной свази. связывает магнитные привада  и ноты так сказать

SLKH
Offline
Зарегистрирован: 17.08.2015

b707 пишет:

virfl пишет:

Перерыл много чего не нашел не одного урока.
Смысл  таков: фаил  txt в нем набор команд, которыми управлял пинами ардуино далее нагрузка
что-то вроде перфоленты только с микро сд

 

и не найдете. Чтобы сделать такое, надо разработать свой язык команд и написать к нему интерпретатор, запускаемый на ардуино. 

читаем очередной байт из файла;

pin = 5 младших бит;

val = старший бит; // или шестой

digitalWrite(pin, val);

 

Или я задачу не понял?  

virfl
Offline
Зарегистрирован: 11.11.2017

я наверно таким примитивом в ручную и буду делать так как больше не нашел чем заменить

Green
Offline
Зарегистрирован: 01.10.2015

ЕвгенийП пишет:

Существуют готовые интерпретаторы для лиспа, бэйсика, брейнфака, форта и ещё какие-то были :)


Бейсиков полно всяких. Даже для tiny2313 попадался, с сохранением в ЕЕПРОМ.)

SLKH
Offline
Зарегистрирован: 17.08.2015

virfl пишет:

я наверно таким примитивом в ручную и буду делать так как больше не нашел чем заменить

а что не нравится? "просто понятно вольготно", та же перфолента.

можно читать байт и менять сразу несколько пинов, если хочется (кстати, а сколько надо?). тоже совсем несложно написать. 

asam
asam аватар
Offline
Зарегистрирован: 12.12.2018

SLKH пишет:

читаем очередной байт из файла;

pin = 5 младших бит;

val = старший бит; // или шестой

digitalWrite(pin, val);

Ну, в общем, да. Но я бы сделал, все таки, разбор текстового файла. Хоть это и потребует чуть более сложного «интерпретатора», но потом будет проще писать «программу» для управления этими поршнями.

Можно придумать формат разбор, которого, будет несложно реализовать.
Например, каждая команда начинается с новой строки и может быть вида

P,<пин N>,<0|1> 

Установить пин с номером N в состояние Low или High

D,<время>, <размерность>

Где <размерность>  ::= “l” | “s” |”m”

Пауза на <время> миллисекунд, секунд или минут в зависимости от размерности.

S

Стоп

R

Начать с начала файла.

Интерпретатор таких «программ» можно за вечер наваять и отладить.
Можно еще переменные ввести и условные/безусловные переходы, но это уже чуть сложнее

SLKH
Offline
Зарегистрирован: 17.08.2015

asam пишет:

SLKH пишет:

читаем очередной байт из файла;

pin = 5 младших бит;

val = старший бит; // или шестой

digitalWrite(pin, val);

Ну, в общем, да. Но я бы сделал, все таки, разбор текстового файла. Хоть это и потребует чуть более сложного «интерпретатора», но потом будет проще писать «программу» для управления этими поршнями.

Можно придумать формат разбор, которого, будет несложно реализовать.
Например, каждая команда начинается с новой строки и может быть вида

P,<пин N>,<0|1> 

Установить пин с номером N в состояние Low или High

D,<время>, <размерность>

Где <размерность>  ::= “l” | “s” |”m”

Пауза на <время> миллисекунд, секунд или минут в зависимости от размерности.

S

Стоп

R

Начать с начала файла.

Интерпретатор таких «программ» можно за вечер наваять и отладить.
Можно еще переменные ввести и условные/безусловные переходы, но это уже чуть сложнее

Можно написать на С очередной интерпретатор. но зачем? 

Не проще написать на С программу (с переменными и условными переходами), которая будет, кроме прочего,  читать из файла очередной байт (или 2-3) и переключать 8 (16-24) пинов?

asam
asam аватар
Offline
Зарегистрирован: 12.12.2018

SLKH пишет:

Можно написать на С очередной интерпретатор. но зачем? 

Не проще написать на С программу (с переменными и условными переходами), которая будет, кроме прочего,  читать из файла очередной байт (или 2-3) и переключать 8 (16-24) пинов?

Конечно проще. Но надо думать немного вперед. И заботится не только о том, как бы побыстрей наваять код, но и о том как потом пользователь с этим кодом будет жить. Даже если пользователь это только ты.

В данном случае ТС хочет иметь файл на флешке где будет записана «программа» управления пинами в определенной послед овальности. Ардуино будет ее читать и , соответственно, дергать пинами. Очевидно что нужно, что бы при замене файла на флешки для другую последовательности не требовалось перекомпиляции  скетча и перепрошивки ардуино. Так что заявление  идея про «программу на С (с переменными и условными переходами)» тут как-то не прикладывается.

 

Потом возьмем идею «читать из файла очередной байт (или 2-3) и переключать 8 (16-24) пинов». Все, вроде, замечательно и просто реализуется. А как быть с таймингами? С какой скоростью менять состояния пинов? С фиксированной задержкой между считанными байтами? А если нам надо менять состояния сначала с одной скоростью, а потом сделать паузу на много этих фиксированных задержек?

Да, можно повторить один и тот же байт (или 2-3) несколько раз. А если надо 1000 кратную задержку? Можно ввести код задержки, но тогда все равно придется парсить файл с «программой».

А потом как пользователю писать подобную «программу»? Открывать файл в HEX и пересчитывать каждое байт (2-3) из 2-ного в 16-ричное, а потом вбивать? А если состояний сотни? Ведь замучаешься же.

Так что если все равно надо исходные данные парсить, так не проще ли для пользователь сделать так, что бы он мог писать и править «программу» в любом текстовом редакторе?

 

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Я бы порекомендовал что-нибудь почитать про структуру MIDI файлов. По сути - это как раз то, что нужно. При желании можно сделать свой упрощенный текстовый аналог MIDI файла.

asam
asam аватар
Offline
Зарегистрирован: 12.12.2018

andriano пишет:

Я бы порекомендовал что-нибудь почитать про структуру MIDI файлов. По сути - это как раз то, что нужно. При желании можно сделать свой упрощенный текстовый аналог MIDI файла.

МИДИ слишком наворченный для этой задачи. Тут, скорее, надо что-то вроде G-code.

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Честно говоря, не разбирался - как в G-code решается проблема точного формирования временных интервалов?

SLKH
Offline
Зарегистрирован: 17.08.2015

asam пишет:

SLKH пишет:

Можно написать на С очередной интерпретатор. но зачем? 

Не проще написать на С программу (с переменными и условными переходами), которая будет, кроме прочего,  читать из файла очередной байт (или 2-3) и переключать 8 (16-24) пинов?

Конечно проще. Но надо думать немного вперед. И заботится не только о том, как бы побыстрей наваять код, но и о том как потом пользователь с этим кодом будет жить. Даже если пользователь это только ты.

В данном случае ТС хочет иметь файл на флешке где будет записана «программа» управления пинами в определенной послед овальности. 

типичная для этого форума ситуация: прогрессивное человечество придумывает за ТС, чего же он хочет; при этом сам ТС молчит. 

=======

упомянутое человечество написало туеву хучу программок проигрывания музыки: из массива читаются 2 параметра (в т.ч. время звучания очередной ноты), обрабатываются и подаются на пищалку, при этом все прекрасно обходятся без написания самопальных интерпретаторов. если читать данные не из массива в памяти, а из файла на sd- в чём принципиальная разница?

asam
asam аватар
Offline
Зарегистрирован: 12.12.2018

SLKH пишет:

упомянутое человечество написало туеву хучу программок проигрывания музыки: из массива читаются 2 параметра (в т.ч. время звучания очередной ноты), обрабатываются и подаются на пищалку, при этом все прекрасно обходятся без написания самопальных интерпретаторов. если читать данные не из массива в памяти, а из файла на sd- в чём принципиальная разница?

Ой, как-то эта движуха с пищалками мимо меня прошла. Это стандартный формат? Можно ссылочки привести на несклолько штук из этой туевой хучи?

Цитата:
(в т.ч. время звучания очередной ноты),

О! замечательно. Вижу наступает пониманимание, что надо еще и "время звучания", а не просто

Цитата:
читаем очередной байт из файла;
pin = 5 младших бит;
val = старший бит; // или шестой
digitalWrite(pin, val);