С micro sd с txt управление пинами знает кто как сделать ?
- Войдите на сайт для отправки комментариев
Ср, 18/09/2019 - 17:36
Перерыл много чего не нашел не одного урока.
Смысл таков: фаил txt в нем набор команд, которыми управлял пинами ардуино далее нагрузка
что-то вроде перфоленты только с микро сд
и не найдете. Чтобы сделать такое, надо разработать свой язык команд и написать к нему интерпретатор, запускаемый на ардуино. Задачка, прямо скажем, не для новичка.
Не поделитесь, зачем вам это? К чему кодировать команды в ТХТ файле на каком-то новом языке, когда эти команды можно закодировать на Си прямо в скетче?
"Кто на ком стоял?"
и не найдете. Чтобы сделать такое, надо разработать свой язык команд и написать к нему интерпретатор, запускаемый на ардуино. Задачка, прямо скажем, не для новичка.
Не поделитесь, зачем вам это? К чему кодировать команды в ТХТ файле на каком-то новом языке, когда эти команды можно закодировать на Си прямо в скетче?
ясно выглядит просто на деле как всегда. Хотя и правда можно попробовать без сдшки
задумка что-то вроде механическо электро шкатулки
задумка что-то вроде механическо электро шкатулки
поищите что-то типа "ноты для ардуино" - есть скетчи с записью нот и с кодом, который их умеет обрабатывать. А потом, если разберетесь - сможете перенести ноты во внешний файл и обрабатывать как входной поток.
Это примерно то, что вам нужно, если я правильно понял задачу.
задумка что-то вроде механическо электро шкатулки
поищите что-то типа "ноты для ардуино" - есть скетчи с записью нот и с кодом, который их умеет обрабатывать. А потом, если разберетесь - сможете перенести ноты во внешний файл и обрабатывать как входной поток.
Это примерно то, что вам нужно, если я правильно понял задачу.
спасибо гляну если она сможет не играть а (пинами) поршнями упровлять то да
спасибо гляну если она сможет не играть а (пинами) поршнями упровлять то да
напишете - сможет :) Готовое вряд ли найдете., все равно самому допиливать придется.
Существуют готовые интерпретаторы для лиспа, бэйсика, брейнфака, форта и ещё какие-то были :)
нет не нашел похожего нашел видео https://www.youtube.com/watch?v=FcgFfY4fVqU подобной задумкой с пианино с передачей данных по беспроводной свази. связывает магнитные привада и ноты так сказать
и не найдете. Чтобы сделать такое, надо разработать свой язык команд и написать к нему интерпретатор, запускаемый на ардуино.
читаем очередной байт из файла;
pin = 5 младших бит;
val = старший бит; // или шестой
digitalWrite(pin, val);
Или я задачу не понял?
я наверно таким примитивом в ручную и буду делать так как больше не нашел чем заменить
Существуют готовые интерпретаторы для лиспа, бэйсика, брейнфака, форта и ещё какие-то были :)
Бейсиков полно всяких. Даже для tiny2313 попадался, с сохранением в ЕЕПРОМ.)
я наверно таким примитивом в ручную и буду делать так как больше не нашел чем заменить
можно читать байт и менять сразу несколько пинов, если хочется (кстати, а сколько надо?). тоже совсем несложно написать.
читаем очередной байт из файла;
pin = 5 младших бит;
val = старший бит; // или шестой
digitalWrite(pin, val);
Ну, в общем, да. Но я бы сделал, все таки, разбор текстового файла. Хоть это и потребует чуть более сложного «интерпретатора», но потом будет проще писать «программу» для управления этими поршнями.
Можно придумать формат разбор, которого, будет несложно реализовать.
Например, каждая команда начинается с новой строки и может быть вида
P,<пин N>,<0|1>
Установить пин с номером N в состояние Low или High
D,<время>, <размерность>
Где <размерность> ::= “l” | “s” |”m”
Пауза на <время> миллисекунд, секунд или минут в зависимости от размерности.
S
Стоп
R
Начать с начала файла.
Интерпретатор таких «программ» можно за вечер наваять и отладить.
Можно еще переменные ввести и условные/безусловные переходы, но это уже чуть сложнее
читаем очередной байт из файла;
pin = 5 младших бит;
val = старший бит; // или шестой
digitalWrite(pin, val);
Ну, в общем, да. Но я бы сделал, все таки, разбор текстового файла. Хоть это и потребует чуть более сложного «интерпретатора», но потом будет проще писать «программу» для управления этими поршнями.
Можно придумать формат разбор, которого, будет несложно реализовать.
Например, каждая команда начинается с новой строки и может быть вида
P,<пин N>,<0|1>
Установить пин с номером N в состояние Low или High
D,<время>, <размерность>
Где <размерность> ::= “l” | “s” |”m”
Пауза на <время> миллисекунд, секунд или минут в зависимости от размерности.
S
Стоп
R
Начать с начала файла.
Интерпретатор таких «программ» можно за вечер наваять и отладить.
Можно еще переменные ввести и условные/безусловные переходы, но это уже чуть сложнее
Не проще написать на С программу (с переменными и условными переходами), которая будет, кроме прочего, читать из файла очередной байт (или 2-3) и переключать 8 (16-24) пинов?
Можно написать на С очередной интерпретатор. но зачем?
Не проще написать на С программу (с переменными и условными переходами), которая будет, кроме прочего, читать из файла очередной байт (или 2-3) и переключать 8 (16-24) пинов?
Конечно проще. Но надо думать немного вперед. И заботится не только о том, как бы побыстрей наваять код, но и о том как потом пользователь с этим кодом будет жить. Даже если пользователь это только ты.
В данном случае ТС хочет иметь файл на флешке где будет записана «программа» управления пинами в определенной послед овальности. Ардуино будет ее читать и , соответственно, дергать пинами. Очевидно что нужно, что бы при замене файла на флешки для другую последовательности не требовалось перекомпиляции скетча и перепрошивки ардуино. Так что заявление идея про «программу на С (с переменными и условными переходами)» тут как-то не прикладывается.
Потом возьмем идею «читать из файла очередной байт (или 2-3) и переключать 8 (16-24) пинов». Все, вроде, замечательно и просто реализуется. А как быть с таймингами? С какой скоростью менять состояния пинов? С фиксированной задержкой между считанными байтами? А если нам надо менять состояния сначала с одной скоростью, а потом сделать паузу на много этих фиксированных задержек?
Да, можно повторить один и тот же байт (или 2-3) несколько раз. А если надо 1000 кратную задержку? Можно ввести код задержки, но тогда все равно придется парсить файл с «программой».
А потом как пользователю писать подобную «программу»? Открывать файл в HEX и пересчитывать каждое байт (2-3) из 2-ного в 16-ричное, а потом вбивать? А если состояний сотни? Ведь замучаешься же.
Так что если все равно надо исходные данные парсить, так не проще ли для пользователь сделать так, что бы он мог писать и править «программу» в любом текстовом редакторе?
Я бы порекомендовал что-нибудь почитать про структуру MIDI файлов. По сути - это как раз то, что нужно. При желании можно сделать свой упрощенный текстовый аналог MIDI файла.
Я бы порекомендовал что-нибудь почитать про структуру MIDI файлов. По сути - это как раз то, что нужно. При желании можно сделать свой упрощенный текстовый аналог MIDI файла.
МИДИ слишком наворченный для этой задачи. Тут, скорее, надо что-то вроде G-code.
Честно говоря, не разбирался - как в G-code решается проблема точного формирования временных интервалов?
Можно написать на С очередной интерпретатор. но зачем?
Не проще написать на С программу (с переменными и условными переходами), которая будет, кроме прочего, читать из файла очередной байт (или 2-3) и переключать 8 (16-24) пинов?
Конечно проще. Но надо думать немного вперед. И заботится не только о том, как бы побыстрей наваять код, но и о том как потом пользователь с этим кодом будет жить. Даже если пользователь это только ты.
В данном случае ТС хочет иметь файл на флешке где будет записана «программа» управления пинами в определенной послед овальности.
=======
упомянутое человечество написало туеву хучу программок проигрывания музыки: из массива читаются 2 параметра (в т.ч. время звучания очередной ноты), обрабатываются и подаются на пищалку, при этом все прекрасно обходятся без написания самопальных интерпретаторов. если читать данные не из массива в памяти, а из файла на sd- в чём принципиальная разница?
упомянутое человечество написало туеву хучу программок проигрывания музыки: из массива читаются 2 параметра (в т.ч. время звучания очередной ноты), обрабатываются и подаются на пищалку, при этом все прекрасно обходятся без написания самопальных интерпретаторов. если читать данные не из массива в памяти, а из файла на sd- в чём принципиальная разница?
Ой, как-то эта движуха с пищалками мимо меня прошла. Это стандартный формат? Можно ссылочки привести на несклолько штук из этой туевой хучи?
О! замечательно. Вижу наступает пониманимание, что надо еще и "время звучания", а не просто
pin = 5 младших бит;
val = старший бит; // или шестой
digitalWrite(pin, val);