Уборка сахарного тростника. Сезонная. Пайка кастрюль. Сдельная. Предложения работы.
Ответить

Код для ATTiny13.

Сб май 13, 2023 00:44:35

Здравствуйте!
Кто может помочь написать код для ATTiny13?
На входе две кнопки (+ и -) или энкодер.
Кнопка "Сброс".
Три выхода: Т1, Т2, Т3.
Пять режимов работы:
Режим 0. ( Т1, Т2, Т3 - выключены);
Режим 1. ( Т1, Т2, Т3 - включены);
Режим 2. ( Т1, Т3 - включены, а Т2 - выключен);
Режим 3. ( Т2, Т3 - включены, а Т1 - выключен);
Режим 4. ( Т3 - включен, а Т1 и Т2 - выключены);
При включении МК - по умолчанию включается "Режим 0".
Чтобы режимы можно было переключать по кругу (по возрастанию и убыванию, через "Режим 0")
Предусмотреть светодиод, который будет светиться или моргать на всех режимах, кроме: "Режим 0".
Желательно моргать пачками импульсов, согласно режима.

Re: Код для ATTiny13.

Сб май 13, 2023 10:16:43

Готов взяться. Написал в личку.

Re: Код для ATTiny13.

Сб май 13, 2023 10:22:26

Желательно моргать пачками импульсов, согласно режима.

Какими такими "пачками"?!
2 кнопки, 3 выхода, 1 светодиод. Вы хотите использовать reset?
Пишите на htpicc@gmail.com.

Re: Код для ATTiny13.

Сб май 13, 2023 12:33:42

(имхо) по-моему, тут справится обычный реверсивный счётчик.. :dont_know:

зы.. А зачем "миганиями" индицировать состояние? поставьте три светодиода- и будет вам вся информация без всякого геморроя с подсчётом морганий..

Re: Код для ATTiny13.

Сб май 13, 2023 21:09:10

Я имел ввиду:
режим1 - 1 импульс - длинная пауза - 1 импульс - длинная пауза;
режим2 - 2 импульса - длинная пауза - 2 импульса - длинная пауза;
режим3 - 3 импульса - длинная пауза - 3 импульса - длинная пауза;
и т.д.
Мне нужна индикация режима работы, а не индикация включенной нагрузки.
Кнопка сброс нужна, чтобы быстро выйти с любого режима на нулевой режим.
Пытаюсь сам написать, но пока не получается.
Я только учусь.

Re: Код для ATTiny13.

Сб май 13, 2023 21:43:38

Вот только у вас есть проблема- у АТтини13 возможно использовать из восьми, только ПЯТЬ выводов, шестой- "сброс", который у вас так и запланирован как "сброс"
Три вывода- управление нагрузкой, два вывода- кнопки и всё, выводы кончились! Светодиод подключать некуда!
А мой вариант- просто использование тех же выходов МК для индикации режимов.
Либо подбираете другой МК, либо, кроме МК у вас будет использоваться ещё одна, или даже больше, микросхем, например, регистр 74НС595, например, тогда у вас из трёх выходов получится восемь
http://codius.ru/articles/Arduino_%D0%A ... 1%82%D1%8B

И да, при использовании "расширителя портов" можно не заморачиваться в счётом морганий светодиода, а просто включать нужный светодиод- у вас "в запасе" целых пять выводов.

зы.. Возьмите ATtiny2313, там можно пользоваться аж 18 входами/выходами (включая сброс), можно даже семисегментный индикатор подключить, для индикации режима..

Re: Код для ATTiny13.

Сб май 13, 2023 22:53:25

Для кнопок один вход ADC, до 36 кнопок включал.

Re: Код для ATTiny13.

Пн май 15, 2023 11:25:46

Внимательно изучил даташит. Не нашёл T1 T2 и T3. Что сдесь имеется ввиду?

Re: Код для ATTiny13.

Пн май 15, 2023 12:01:41

"сдесь" это условные обозначения любых пинов, настроенных на вывод. Не нравятся Т, замените на Q, U, O - алфавит большой.

Re: Код для ATTiny13.

Пн май 15, 2023 12:32:03

smacorp писал(а):Не нравятся Т, замените на Q, U, O - алфавит большой.

Можно OUT1, OUT2 и OUT3? И ещё OUTLED. Мне так больше нравится! :)))
linkov1959 писал(а):Для кнопок один вход ADC,

Ну, да.. В принципе, так тоже можно.. :dont_know:

зы.. На счёт "морганий" - это ПАМЯТЬ, а в тини13 её всего 1 килобайт..

Re: Код для ATTiny13.

Пн май 15, 2023 14:34:22

Для кнопок один вход ADC, до 36 кнопок включал.

а по какому принципу резисторы подбирал?

Re: Код для ATTiny13.

Пн май 15, 2023 17:40:37

Родэрик, 200к на сам вход для нуля и общее для делителя пару кил. Желательно максимум 32 кнопки.

Re: Код для ATTiny13.

Пн май 15, 2023 20:35:40

чет я не совсем понял......
Давай так - вот у тебя подтяжка входа на плюс, скажем 10к. И теперь ты будешь замыкать этот вход на минус через резисторы. Через 35 резисторов. Напиши какие это будут сопротивления и почему именно такие?

Re: Код для ATTiny13.

Вт май 16, 2023 02:36:28

Родэрик писал(а):подтяжка входа на плюс, скажем 10к. И теперь ты будешь замыкать этот вход на минус через резисторы. Через 35 резисторов. Напиши какие это будут сопротивления и почему именно такие?
(имхо) а там сопротивления не очень принципиальны, главное- какое напряжение будет поступать с делителя на вход ADC.
Ну, или, какой "код" будет на выходе.
Вот, например:
СпойлерИзображение

(условно показаны не все 36 кнопок)
Например, при ненажатых кнопках на выходе АЦП будет код 1023, при нажатой кнопке 1- на выходе будет НОЛЬ, при нажатой кнопке 2 - 93, кнопке 3- 171, кнопка 4 - 236, ...... кнопка 14- 579, кнопка 24- 713, 34=786, 35=790, 36=796...
Недостаток такого "тупо в лоб" метода- чем больше кнопок, тем мельче "шаг изменения данных АЦП". В принципе, если немного помучиться, то можно так подобрать резисторы делителя, что "шаг" будет более- менее равномерным, но тогда потребуется подбор резисторов нестандартных номиналов.
А так-
если АЦП= от 0 до 45- это "кнопка 1"
если АЦП= от 46 до 131 это "кнопка 2"
если АЦП= от 132 до 203 это "кнопка 3"
...................
если АЦП= от 783 до 787 это "кнопка 34"
если АЦП= от 788 до 793 это "кнопка 35"
если АЦП= от 794 до 800 это "кнопка 36"
Ну, (имхо) как-то вот так...
Вложения
кн35-790.JPG
(114.63 KiB) Скачиваний: 23
кн14-579.JPG
(116.19 KiB) Скачиваний: 21
кн1-0.JPG
(116.2 KiB) Скачиваний: 15
кн36-796.JPG
(114.49 KiB) Скачиваний: 43

Re: Код для ATTiny13.

Вт май 16, 2023 05:36:49

вот к этому "немного помучиться" я и вёл..... Последние значения (34,35,36) слишком близко, считай для программных допусков уже места нет, в реальном устройстве со временем кнопки начнут чудить, реагировать на силу нажатия ....... итд. Тут разумеется надо сначала шкалу разбивать ровно, а уже потом под найденные точки вычислять сопротивления

как-то в том году понадобилось мне подключить всего две кнопки к одному входу, вот только были такие условия: во-первых, - 4 состояния (а это означает, что "видеть" надо будет и одновременное нажатие двух кнопок )........ и во-вторых, захотелось сделать красиво - разнести точки равномерно по всей шкале [0......1023]....... Ну я такой думаю: "ладно, как минимум резистор подтяжки и резистор какой-то кнопки долны быть одинаковы, чтобы дали как раз 512 ....... ну а потом покумекаю как определить идеальный номинал для второго резистора, чтобы когда один - уводил точку наверх, а когда запаралелливался с первым уходил вниз........" И вроде как всё в целом так то понятно, но в итоге залип я на несколько дней, пытаясь понять как именно искать номинал второго резистора ....... исписал кучу бумаги, даже немного познал эксель, через который значения конечно же нашёл, но это разве метод....... И вот с тех пор блуждаю по форумам в надежде, что кто-то однажды поведает как можно в такой задаче найти идеальное соотношение математическим методом (через уравнение) ......

Re: Код для ATTiny13.

Вт май 16, 2023 09:16:16

вот к этому "немного помучиться" я и вёл..... Последние значения (34,35,36) слишком близко, считай для программных допусков уже места нет, в реальном устройстве со временем кнопки начнут чудить, реагировать на силу нажатия ....... итд. Тут разумеется надо сначала шкалу разбивать ровно, а уже потом под найденные точки вычислять сопротивления

как-то в том году понадобилось мне подключить всего две кнопки к одному входу, вот только были такие условия: во-первых, - 4 состояния (а это означает, что "видеть" надо будет и одновременное нажатие двух кнопок )........ и во-вторых, захотелось сделать красиво - разнести точки равномерно по всей шкале [0......1023]....... Ну я такой думаю: "ладно, как минимум резистор подтяжки и резистор какой-то кнопки долны быть одинаковы, чтобы дали как раз 512 ....... ну а потом покумекаю как определить идеальный номинал для второго резистора, чтобы когда один - уводил точку наверх, а когда запаралелливался с первым уходил вниз........" И вроде как всё в целом так то понятно, но в итоге залип я на несколько дней, пытаясь понять как именно искать номинал второго резистора ....... исписал кучу бумаги, даже немного познал эксель, через который значения конечно же нашёл, но это разве метод....... И вот с тех пор блуждаю по форумам в надежде, что кто-то однажды поведает как можно в такой задаче найти идеальное соотношение математическим методом (через уравнение) ......

В два раза уменьшай каждый последующий резистор.

Re: Код для ATTiny13.

Вт май 16, 2023 09:22:08

На 12 кнопок
Изображение

Re: Код для ATTiny13.

Вт май 16, 2023 13:29:53

linkov1959 писал(а):На 12 кнопок
А как ваша схема реагирует на одновременное нажатие двух и более кнопок?

Re: Код для ATTiny13.

Вт май 16, 2023 14:27:33

АлександрЛ, не схема а программа, в моей программе никак не реагирует - реакция только по одной кнопке. В операторе Case для каждой кнопки указан узкий диапазон реагирования. Даже один бит АЦП из 1024 имеет значение, если он не будет стабильным 0.1с команда не пройдет.

Re: Код для ATTiny13.

Вт май 16, 2023 16:50:12

если кнопками замыкать резисторы. т.е. кнопка ставится параллельно резистору , то клавиатура на 4-6 кнопок легко реализуема , причем может быть замкнуто любое количество кнопок. Номиналы резисторов берутся такие же как для построения ЦАПа.
На 10бит АЦП 7 или 8 кнопок еще будут как то работать в идеальных условиях, но больше это уже на уровне шумов , и точно ничего толкового не получится.
Ответить