Ви не увійшли.
Не хочу трепаться что именно, вдруг выгорит и стану миллионером
Понятно.
Ну, тогда и я не буду трепаться как это делается, вдруг мне это объяснение кто-нить за миллион закажет.
нужно подключить одновременно 6 ультразвуковых дальномеров и 6 цифровых табло
С одного начни. Как сделаешь, приходи, если вопросы останутся.
Собрана схема одного устройства, которая считывает некоторую информацию и выводит на экран некоторые данные.
Ну, если так, то нет ничего проще. Нужно оформить эти данные некоторым образом, и передать их на ПК, используя для этого некоторый набор функций из одной библиотеки.
тоже очень информативна, конкретна
Ты выбрал хороший путь повысить информативность :-)
Бред какой-то. К любой библиотеке дисплея можно присобачить уже готовую в системе printf и выводить туда что и как надо.
видосы
А что, читать не умеешь? Беда, если так :-(
Однажды я услышал фразу: не нужно зубрить матчасть, нужно сразу брать и пробовать.
Надеюсь, ты плюнул в рожу тому, кто тебе такой бред сказал?
А по задаче, делай массив указателей на функции, если так приспичило. Только ещё раз говорю - это прошлый век. На С++ так не пишут. Как пишут - могу подсказать, но надо задачу понимать.
что я делаю не так
Не читаешь, что тебе пишут. Я ж тебе уже написал, что у меня твой код работает, значит, дело не в коде.
Не суть какой делитель устанавлиывется
С точки зрения работоспособности кода, не влияет, а вот с точки зрения "общей аккуратности" ... если ты говоришь, что делитель такой, а он совсем другой, какие у меня основания доверять, что у тебя там в вправду 128-ая на 8МГц, а не 32U на 20?
Фьюзы как по мне тут непричем
Ну, тебе виднее. Раз ты всё и сам знаешь - что причём, а что - нет, зачем было сюда обращаться?
будет ли работать следующая конструкция?
Ну, ты ведь уже пробовал? И знаешь, что - нет? Если хочешь так, надо объявлять массив функций и вызывать по индексу. Хотя, ... думаю, возможно более простое решение, но я задачи не знаю.
темнит, всё-таки.
Через раз напарываешься на умника, который выкладывает не свой код, а скачанный откуда-нибудь (и схему тоже) и потом говорит, так я там ничего не менял, ну вот только ... но это же ни на что не влияет! Или выкладывает сокращённый код из которого он выбросил то, по его просвещённому мнению "ни на что не влияет".
Один деятель, как-то вылез типа analogRead на тини'85 не работает. Скетч выложил. Вроде, должен работать. И так его пытали и эдак, через полдня вымогли, что это скетч из статьи, и заставили таки выложить именно его скетч, копи-пастом (таки выложил, когда уже "утюгом пытать начали"). При этом невинно так: "да, такой же точно скетч, только с другого пина читаю, какая нахрен разница, мне с того удобнее!". Вот так, полдня потратили, чтобы таки узнать, что поциент пытался на 85-ой тиньке analogRead'ом пин ADC0 читать! Так, сука, хоть бы извинился, что полдня из-за него с левым скетчем трахались - нет, ещё и мудаками обозвал - недостаточно вежливо ему всё объяснили.
Давай разбираться.
1. Внимательно посмотри даташит и исправь вот эту строчку, ты ту явно не 1024 устанавливаешь:
TCCR0 |= (1<<CS02)|(1<<CS00); // устанавливаем прескалер - 1024
В остальном так: у меня твой код работает - нормально мигает. Поэтому, смотри на фьюзы, всё ли там в порядке. Далее, убедись, что USART1 выключен (заткни его принудительно), иначе он переопределяет пин PD5 под себя.
И общий совет (в данном коде ни на что не влияет, но может аукнуться в другом). Когда ты впервые инициализируешь таймер (или ещё чего), делай это полностью. Не надейся, что там было что-то разумное до тебя. Вот зачем ты используешь |=, а не присваивание? Тебе важно сохранить то, что было в других битах до тебя? Зачем? Ты знаешь, что там было? При включении питания - умолчательные значения (см. даташит), а вот, например, если будешь делать это в среде той же ардуино, с удивлением обнаружишь, что в настройках таймера уже поковырялись до тебя и сохраняя "старые" биты, ты неправильно настраиваешь таймер. Т.е. при первой настройке - настраиваем все регистры и все биты.
пищалки совместимая с высоким напряжением.
Ну, да. Там, где не помогает доброе слово, нужно воспользоваться добрым словом и пистолетом :-)
А почему они не должны совмещаться?)
Ну, потому и не должны. Если что-то "лучше всего подходит", то у него всего хватает и жрёт он сколько надо. А если не хватает и жрёт через чур, то это называется "не подходит".
Как тебе вот такая фраза? "Для задачи перевозки пяти тонн навоза лучше всего подходит Mercedes-AMG GT roadster, только вот пять тонн навоза в него не влазит, да и дороговат он для такой работы"?
Вот ты примерно также написал :-)
Так ты не отладишься НИКОГДА. Такие вещи так не отлаживаются.
Выбрось пока всю эту простыню, напишик код в три строчки, где строку для разбора просто объяви как переменную с инициализацией
char * s = "/123/456/7890";
и попробуй написать функцию её разбора без всего остального. А потому уже вставляй.
Парень,
у тебя в голове вот эти две фразы:
МК ATTiny13 ... подходит больше всего
но память ATTiny13 ... может не хватить. А так же МК потребляет повышенный ток постоянно.
хорошо совмещаются?
У меня вот как-то не очень.
Возьми такую же по размеру ATtiny85 с её памятью и режимом picopower и не выноси сам себе мозг.
как сделать такой код?
Искать первый слэш, если нашёлся, то (А) вычитывать всё, что идет после него до тех про пока там цифры и формировать первую переменную. Далее проверять что там нашлось (не цифра). Если не не слэш, и не конец строки - ругаться. Если конец строки - всё, а если слэш, то перейти назад к точке А и продолжать также.
Думаю пора остановиться
Невозможно. Кнопка - штука трансцендентная по своей природе, а стало быть сделать всё нельзя и всегда есть куда двигаться дальше.
да и наверное аппаратно невозможно.
Ещё как возможно! У 328 прерывания есть на всех пинах.
Лучше всегда использовать ESP32, чуть дороже зато все на борту и 2 ядра процессора и память и файловая система
А вот это как раз "перебор". Неужели для обработки трёх кнопок требуется "и 2 ядра процессора и память и файловая система"? А что будешь делать, если "четыре кнопки" обрабатывать придётся? А "пять"? Summit возьмёшь? Не спортивно. На ЕСП и дурак сделает.
написал еще почти собственный класс, стало можно
Но тут опять бац. Взяли Arduino Nano, а она цепляется к прерыванию только 2 пинами (2 и 3) остальные нет.
А класс удобный уже, ладно еще 15 минут работы. Можем ставить сколько хотим кнопок, но уже не все правильно будут реагировать на очередь, те которые к прерыванию не цепляются
Ну, очевидно, что на очереди следующий шаг - написать "почти собственный класс", чтобы на Нано и ей подобных стало можно обрабатывать прерывания от любого пина.
Пиши, останавливаться на полпути - нехорошо.
Вы в сетапе переводите пин в UOTPUT? Вот перед этим действием, пропишите туда HIGH, если Вам там HIGH нужен.
1. Пины притянуть резисторами "куда надо".
2. Перед тем, как переключать пин в OUTUP, записать в него то, что в нём должно быть (HIGH, например).
Вот хороший материал - подробно, понятно и как раз для взрослых. Там, правда, STM, но платформа "ардуино" их тоже поддерживает.
Пример Blink из библиотеки FastLED чем не угодил? Проще никак не сделать.
Может это поможет.
Нет, не поможет. Это ж фуфло дешевле, чем за $1. Оно и работать так будет. Вот такое надо!