нужна помощь
- Войдите на сайт для отправки комментариев
Вс, 27/03/2016 - 21:51
здравствуйте, есть у кого нибудь время поучить меня?
задача есть 10 кнопок и одна лампочка. при нажатии любых трех кнопок лампа загорается
здравствуйте, есть у кого нибудь время поучить меня?
задача есть 10 кнопок и одна лампочка. при нажатии любых трех кнопок лампа загорается
народ, помогите, уроки читал. по одной кнопке подключить могу, спаять из микросхем 3 ИЛИ-НЕ могу, а вот понять как программировать не могу
какие переменные использовать?
народ, помогите, уроки читал. по одной кнопке подключить могу, спаять из микросхем 3 ИЛИ-НЕ могу, а вот понять как программировать не могу
Спаять - это как-то из области моторных навыков. НАРИСОВАТЬ схему можете?
Если ДА, запишите это схемное решение в виде логической функции.
Если не в ладах с логикой - просто тупо посчитайте количество нажатых кнопок. Надеюсь, до трех считать умеете?
при правильной подтяжке нажатая кнопка выдает HIGH, то есть единичку, ненажатая - LOW, т.е нолик.
Пробегаемся в цикле по всем кнопкам и суммируем их состояние. Если сумма равна 3, то включаем лампу.
при правильной подтяжке нажатая кнопка выдает HIGH, то есть единичку, ненажатая - LOW, т.е нолик.
Пробегаемся в цикле по всем кнопкам и суммируем их состояние. Если сумма равна 3, то включаем лампу.
А при расово верной подтяжке - нажатая кнопка выдаёт LOW, а ненажатая - HIGH ;)
здравствуйте, есть у кого нибудь время поучить меня?
задача есть 10 кнопок и одна лампочка. при нажатии любых трех кнопок лампа загорается
Проблема с пониманием, как написать код? Вот смотри - есть у тебя 10 кнопок, как читать их состояние, надеюсь, знаешь. Тебе надо при нажатии любых трёх выставлять нужный уровень на пине. Значит, нужно опросить состояние кнопок, и если любые 3 из них нажаты - можно делать то, что тебе нужно.
Чтобы написать грамотный код, надо понимать, что вариантов подключений и получений информации о состоянии кнопки может быть несколько. Мы для простоты будем считать, что для каждой кнопки - свой пин, однако оставим возможность читать состояние кнопки как-то по-другому. Ниже - кусок кода, который поможет тебе понять, что происходит:
Как видишь - всё довольно просто.
спасибо, буду пробовать. вижу, для Вас это просто, для меня очень не просто, пятый день у меня ардуино, пятый деня я программист
спасибо за "
byte
pins[10] = {1,2,3,4,5,6,7,8,9,10};" , а то я вводил каждый пин вручную
DIYMan, пара вопросов?
1. Зачем в грамотном коде на каждом проходе цикла гасить лампу?
2. Каков будет результат, если будет нажато 4 кнопки?
DIYMan, пара вопросов?
1. Зачем в грамотном коде на каждом проходе цикла гасить лампу?
2. Каков будет результат, если будет нажато 4 кнопки?
1. Если вы заметили - я отписал в комментариях, что "для простоты понимания будем считать...". Это принцип, не более того. Или вы предлагаете сразу грузить ТС всем до кучи? Флаги вводить, интервал опроса, кучу обвязки? Зачем всё это, для понимания основ-то? Грамотность там заключается только во введении дополнительного уровня абстракции, в виде функции, которая возвращает состояние кнопки, вместо того, чтобы читать напрямую - мы не знаем, как могут быть подключены сами кнопки.
2. Так условие "нажато 4 кнопки" является подмножеством истинного "нажаты любые 3 кнопки", не находите? Других оговорок не было ;)
DIYMan, пара вопросов?
1. Зачем в грамотном коде на каждом проходе цикла гасить лампу?
2. Каков будет результат, если будет нажато 4 кнопки?
1. Если вы заметили - я отписал в комментариях, что "для простоты понимания будем считать...". Это принцип, не более того. Или вы предлагаете сразу грузить ТС всем до кучи? Флаги вводить, интервал опроса, кучу обвязки? Зачем всё это, для понимания основ-то? Грамотность там заключается только во введении дополнительного уровня абстракции, в виде функции, которая возвращает состояние кнопки, вместо того, чтобы читать напрямую - мы не знаем, как могут быть подключены сами кнопки.
2. Так условие "нажато 4 кнопки" является подмножеством истинного "нажаты любые 3 кнопки", не находите? Других оговорок не было ;)
1. На мой взгляд, если уж вводить понятие "обобщенной нагрузки" намного полезнее понятия"обобщенной кенопки". По крайней мере, то, что будет использоваться именно "простая" кнопка, намного вероятнее состояния, когда выходной сигнал будет использоваться исключительно для зажигания лампочки. В общем случае при переходе из одного состояния в другое может плтребоваться один сигнал, а для перехода из второго состояние в первое - другой сигнал. При этом совершенно не исключена ситуация, когда, например, после команды на выключение двигателя, исполнительное устройство не воспринимает никакие команды вплоть до полной остановки вращения ваоа. Таким образом вместо одной команды на изменение состояния мы будем бомбардировать исполнитиельной устройство противоречащими друг другу командами. Тем более что "правильное" решение по сложности практически не отличаетсяч от Вашкго.
2. Отнюдь. Условие "нажато 3 кнопки" является подмножеством "нажато не менее 3 кнопок". Но они ни в коем случае не тождественны.
1. На мой взгляд, если уж вводить понятие "обобщенной нагрузки" намного полезнее понятия"обобщенной кенопки". По крайней мере, то, что будет использоваться именно "простая" кнопка, намного вероятнее состояния, когда выходной сигнал будет использоваться исключительно для зажигания лампочки. В общем случае при переходе из одного состояния в другое может плтребоваться один сигнал, а для перехода из второго состояние в первое - другой сигнал. При этом совершенно не исключена ситуация, когда, например, после команды на выключение двигателя, исполнительное устройство не воспринимает никакие команды вплоть до полной остановки вращения ваоа. Таким образом вместо одной команды на изменение состояния мы будем бомбардировать исполнитиельной устройство противоречащими друг другу командами. Тем более что "правильное" решение по сложности практически не отличаетсяч от Вашкго.
2. Отнюдь. Условие "нажато 3 кнопки" является подмножеством "нажато не менее 3 кнопок". Но они ни в коем случае не тождественны.
Как вы понимаете - каждый др...чит, как хочет, и в мои задачи не входит нагрузить ТС разными понятиями, типа MVC и т.п. Для того, чтобы вводить архитектурные решения на уровне кода - надо эти самые решения для начала иметь, вы же, основываясь на куске примерочного кода - делаете слишком далеко идущие выводы, имхо ;)
По поводу тождественности - ок, строго говоря - не тождественны, да. Однако, раз не было оговорено, что только 3 кнопки - всё прокатывает. Заметьте - было сказано "любые 3 кнопки". Это значит, что при нажатии 4,5 6 кнопок - в массиве нажатых будет N комбинаций "любые 3". Значит, необходимым и достаточным, судя по вводным, является проверка на нажатие минимум трёх кнопок, остальное - ненужный сахар.
Мы щас своими беседами нахрен отпугнём ТС :)))
Переводим с русского на С:
"три кнокпи" -> "==3"
"ровно три кнопки" -> "==3"
"только три кнопки" -> "==3"
"не менее трех кнопок" -> ">=3"
"три или более кнопок" -> ">=3"
"по крайней мере три кнопки" -> ">=3"
разве нет?
Переводим с русского на С:
"три кнокпи" -> "==3"
"ровно три кнопки" -> "==3"
"только три кнопки" -> "==3"
"не менее трех кнопок" -> ">=3"
"три или более кнопок" -> ">=3"
"по крайней мере три кнопки" -> ">=3"
разве нет?
Переводим с языка ТЗ на С:
"любые три кнопки" - так написано ТС, согласны? На языке С это значит ровно следующее: если из массива в N элементов как минимум 3 элемента имею статус "нажато" - задача решена. То есть, на конкретном примере, специально для вас:
1. Считаем, что кнопки у нас нумеруются от 1 до 10.
2. Считаем, что нажаты кнопки с первой по четвёртую.
3. Проверяем:
1, 2, 3 - любые три? Да => профит.
2,3,4 - любые три? Да => профит.
1,2,4 - любые три? Да => профит.
1,3,4 - любые три? Да => профит.
Следовательно, делаем вывод: при постановке задачи "если нажаты любые три кнопки" - неважно, сколько их нажато, главное, чтобы кол-во нажатых было не менее 3-х.
Вопросы?