Запись массива
- Войдите на сайт для отправки комментариев
Пнд, 07/12/2015 - 08:45
У меня такой вопрос. Мне нужно записать в массив последовательность нажатий кнопок.
Например, есть 5 кнопок. Нажали их в таком порядке - 1.4.3.5.2. Как мне занести эти числа в массив?
объявляете массив на 5 элементов
заводите переменную счётчик равный 0
с каждым нажатием кнопок переменная меняется до 4 и обнуляется
записываете в массив элемент с номером счётчика
Andrushka, если это какой-то пароль, то можно взять одну переменную int, записывать в неё пришедший номер, и сдвигать на 3 бита. Как раз хватит на 5 цифр. При последовательности 1,4,3,5,2 проверочное знаечние инта будет 0x18EA.
Нет, это не пароль. Я делаю игру на подобии "Саймон сказал".
Моя идея в чем:
1)рандомно загорается 1 светодиод
2)номер светодиода записывается в массив скажем led[sv] sv - количество загоревшихся светодиодов
3)нажимаются кнопки. их последовательность записывается в массив, например, button[sv]
4)сравниваются 2 массива. если она равны, то sv++ и уже 2 светодиода загорается.
и вот моя проблема - я не могу записать последовательность нажатий кнопок. я начинающий и опыта у меня очень мало, все способы, которые я пробовал не работают.
кнопки как подключены
вот такая схема у меня сейчас
вот я когда то игрался с аналоговыми кнопками, может пригодится
где-то , когда-то на этих просторах тупее и тупой ( я ) - примерно такую игрушку уже делали
"повторить порядок зажигания светодиодов" - найду-вспомню будет ссылка или сам по темам пошарься :)
сложновато пока что для меня))
почему не работает такой код?
у меня загорается светодиод при первом же нажатии
ну раз сложновато, то сначала учимся просто работать с кнопкой с учётом дребезга
изучаем тему http://arduino.ru/forum/programmirovanie/rabota-s-knopkami-v-pomoshch-novichku
ничего похожего не нашел. буду очень благодарен за ссылочку)
эту тему я читал несколько раз... для моей цели там нужной информации нету...
ничего похожего не нашел. буду очень благодарен за ссылочку)
тоже пока не нашёл :(
видимо , где-то в середине чужой темы шло обсуждение-написание....
три светика , три кнопки
суть :
в зависимости от уровня задания - повторить кнопками порядок включения светиков
- один из трёх , 2 , 3 , 4 , 5 , ....... вспышек ( порядок случайный )
- два из трёх , 2 , 3 , 4 , 5 , ....... вспышек ( порядок случайный )
угадал - жизнь++ , если жизней > 10 то уровень++
не угадал - жизнь-- , если жизней меньше 1 ещё и минус уровень с восстановлением жизней = 3
...похоже на твою задумку и сделано до конца , НО - не могу найти пока :(
вот мне бы понять, как записать последовательность эту... для led такой-же код будет, а остальное все легко
да , действительно в "середине" темы не про это оказалось.....
:)
http://arduino.ru/forum/programmirovanie/pomogite-pozhaluista-s-kodom-dl...
выделять не буду - сам ищи что тибе надо от первого поста до крайнего :)-
эту тему я читал несколько раз... для моей цели там нужной информации нету...
Как так нету? А где в вашей проге защита от дребезга?
Вот этот, например, фрагмент:
При нажатии на кнопку выполнится несколько раз, с одного нажатия произойтет выход за границы массива и запись будет происходить куда-то в память, затирая другую информацию. Loop() вызывается постоянно и пока нажата кнопка будет выполняться этот участок кода. А микроконтроллер работает очень быстро, миллионы элементарных операций в секунду.
Поэтому, собственно, светодиод и загорается, т.к. третий проход Loop() при нажатии любой клавиши дает i==2.
от такая схема у меня сейчас
Вот прям без токоограничивающего резистора для светодиода?
от такая схема у меня сейчас
Вот прям без токоограничивающего резистора для светодиода?
ДА , спалим все СД !
То есть дребезг это когда во время нажатия кнопки происходит повтор цикла много раз, а не то, что я думал - если человек пальцем касается деталей и от него дополнительно сопротивление идет или еще что-то?
То есть дребезг это когда во время нажатия кнопки происходит повтор цикла много раз, а не то, что я думал - если человек пальцем касается деталей и от него дополнительно сопротивление идет или еще что-то?
нет - дребезг это когда контакты кнопки не замыкаются сразу, а подпрыгивают от удара несколько раз.
Большое спасибо за ссылку, буду разбираться))
В той теме написано, что задержку необходимо увеличивать в соответствии с уровнем для ввода ответа #56
А можно ведь поставить задержку сразу 1мин на все уровни. Ведь, как мне кажется, это будет проще - не нужно увеличивать переменную, писать доп. код. Так на каждом уровне будет 1 минута, чтобы ввести ответ...
Значит, когда я нажимаю на кнопку, то хоть она и нажата, а контакты внутри колеблсятся очень быстро и получается, что кнопка с очень большой частотой включается и выключается до тех пор, пока контакт не перестанет колебаться?
Значит, когда я нажимаю на кнопку, то хоть она и нажата, а контакты внутри колеблсятся очень быстро и получается, что кнопка с очень большой частотой включается и выключается до тех пор, пока контакт не перестанет колебаться?
кароче, возьми молоток и ударь по наковальне.
знаешь, что такое "молоток"?
То есть дребезг это когда во время нажатия кнопки происходит повтор цикла много раз, а не то, что я думал - если человек пальцем касается деталей и от него дополнительно сопротивление идет или еще что-то?
Про дребезг вам ответили. А повтор обеспечивает функция loop(). Она повторяется бесконечно пока включен микроконтроллер. Т.е. после последней команды этой функции сразу начинает выполнятся первая.
"Человек от которого идет сопротивление". Хм. Все что нужно знать о сопротивлении сводится к закону Ома. Объяснять собственное непонимание подобной хренью - тупиковый путь.
А можно ведь поставить задержку сразу 1мин на все уровни. Ведь, как мне кажется, это будет проще - не нужно увеличивать переменную, писать доп. код. Так на каждом уровне будет 1 минута, чтобы ввести ответ...
Во-первых задержка для подавления дребезга нужна ровно такая, сколько длится дребезг. А длится он примерно 0,01 сек.
Во-вторых код для подавления дребезга это всего несколько строчек. Признались бы честно, вам лень думать над алгоритмом. Где лишний код, так это здесь:
Эквивалент вот этого: