Приложение кто первый нажмет на кнопку
Перейти к содержимому

Приложение кто первый нажмет на кнопку

  • автор:

Arduino.ru

Добрый вечар ребята! Подскажите пожалуйста не было ли на вашем форуме такой темы как для игры Кто Быстрее нажмет кнопку? Я нашел один сайт на котором был описан способ сборки такой игры на ардуино нано: https://usamodelkina.ru/11535-interaktivnye-tumby-dlja-meroprijatij-brainsystem.html А можно ли сделать такию схему безпроводной и какие лучше элементы из китая использовать, потому что видел на Ютубе что не все вайфай модули с китая хорошо работают.

  • Войдите на сайт для отправки комментариев

Ср, 22/05/2019 — 21:58

ua6em аватар

Зарегистрирован: 17.08.2016

  • Войдите на сайт для отправки комментариев

Ср, 22/05/2019 — 22:01
BorisPolovnikov
Зарегистрирован: 21.05.2019

А как это реализовать из каких деталей более мение качкственно, и схему сборки. За програмное обеспечение заплачу.

  • Войдите на сайт для отправки комментариев

Ср, 22/05/2019 — 22:14
Зарегистрирован: 19.10.2016

Начните с описательной части: какие расстояния, автономность/неавтономность, какая индикация, количество конкурирующих кнопок, время реакции. Без этого никакое программное обеспечение вам никто не напишет.

  • Войдите на сайт для отправки комментариев

Ср, 22/05/2019 — 22:20
BorisPolovnikov
Зарегистрирован: 21.05.2019

Расстояние не более 5-6 метров, автономность это работа от повербанка наверно или от бытареек крона, индакиция настольная светодиодная, 4 конкурирующих кнопки с «фальшстартом» до включения на головноп пульте, время реакции(нажатие человеческим пальцем)

  • Войдите на сайт для отправки комментариев

Ср, 22/05/2019 — 22:54
Зарегистрирован: 19.10.2016

Хотя, что-то я такое припоминаю — обсуждали тут подобную систему. По-моему основная загвоздка была как-раз в радиоканале. Частота рабочая одна, произойдёт наложение сигналов друг на друга и выиграет не первейший, а мощнейший передатчик. Или тот, кто попал в «дырку» между взаимоуничтожившимися посылками от двух передатчиков. Словом — неоднозначная история с беспроводкой.

  • Войдите на сайт для отправки комментариев

Ср, 22/05/2019 — 23:06

ua6em аватар

Зарегистрирован: 17.08.2016

тут только шировещательный режим использовать, отправляем на все кнопки разрешение, каждая кнопка записывает микрос, по нажатию кнопки фиксруется еще раз микрос, вычисляется разность и далее мастер опрашивает, как один из вариантов

  • Войдите на сайт для отправки комментариев

Ср, 22/05/2019 — 23:09
BorisPolovnikov
Зарегистрирован: 21.05.2019

Сложная ситуация. Тогда лучше через проводную систему сделать, она проще будет

  • Войдите на сайт для отправки комментариев

Чт, 23/05/2019 — 08:41

ua6em аватар

Зарегистрирован: 17.08.2016
BorisPolovnikov пишет:
Сложная ситуация. Тогда лучше через проводную систему сделать, она проще будет

это да, обойдётесь одной ардуинкой

  • Войдите на сайт для отправки комментариев

Пт, 24/05/2019 — 00:34
Зарегистрирован: 15.02.2016
sadman41 пишет:

Хотя, что-то я такое припоминаю — обсуждали тут подобную систему. По-моему основная загвоздка была как-раз в радиоканале. Частота рабочая одна, произойдёт наложение сигналов друг на друга и выиграет не первейший, а мощнейший передатчик. Или тот, кто попал в «дырку» между взаимоуничтожившимися посылками от двух передатчиков. Словом — неоднозначная история с беспроводкой.

В данной задаче достаточноо переслать полезной нагрузкой 1 байт. К байту прицепиться 5 байт преамбулы (можно уменьшить до трех) — она же адрес трубы. И в конце байт CRC. Вся эта посылка перешлется за единицы мкс. Уверяю вас — вы никогда и ни за что не нажмете вдвоем кнопки так, чтобы попасть в этот интервал времени. Ну т.е такое возможно один раз на миллион.

Есть другой вариант. Хост постоянно опрашивает тумбы. Тумба же в ACK ответе шлет состояние кнопки. Но в этом варианте шанс одновременного нажатия двух-трех кнопок увеличивается, зато не будет коллизий в радиоканале.

  • Войдите на сайт для отправки комментариев

Пт, 24/05/2019 — 00:36
Зарегистрирован: 15.02.2016
ua6em пишет:
BorisPolovnikov пишет:
Сложная ситуация. Тогда лучше через проводную систему сделать, она проще будет

это да, обойдётесь одной ардуинкой

Можно так и вообще на 561 серии. И ардуина не нужна.

  • Войдите на сайт для отправки комментариев

Пт, 24/05/2019 — 01:15
Зарегистрирован: 19.10.2016
parovoZZ пишет:

В данной задаче достаточноо переслать полезной нагрузкой 1 байт. К байту прицепиться 5 байт преамбулы (можно уменьшить до трех) — она же адрес трубы. И в конце байт CRC. Вся эта посылка перешлется за единицы мкс. Уверяю вас — вы никогда и ни за что не нажмете вдвоем кнопки так, чтобы попасть в этот интервал времени. Ну т.е такое возможно один раз на миллион.

Никто не говорит, что реализация данной системы невозможна.

Так, как никакие допуски, посадки ТС не озвучил, а так же не привёл данных о чистоте эфира, исходим из самых строгих требований и в предположении, что эфир засран. Т.е. отдельно взятая NRF может перепосылать пакет некоторое кол-во раз и не факт, что отправит вообще. Что, несоменнно, вносит неоднозначность в исход радио-гонки. А предполагать, что «хренли там не работать» может любой из нас с лёгкостью. Особенно, если ему не требуется впоследствии отвечать за результат.

Экспериментировать и налаживать систему самостоятельно ТС, как я понимаю, возможности не имеет.

  • Войдите на сайт для отправки комментариев

Пт, 24/05/2019 — 08:57

ua6em аватар

Зарегистрирован: 17.08.2016
sadman41 пишет:
parovoZZ пишет:

В данной задаче достаточноо переслать полезной нагрузкой 1 байт. К байту прицепиться 5 байт преамбулы (можно уменьшить до трех) — она же адрес трубы. И в конце байт CRC. Вся эта посылка перешлется за единицы мкс. Уверяю вас — вы никогда и ни за что не нажмете вдвоем кнопки так, чтобы попасть в этот интервал времени. Ну т.е такое возможно один раз на миллион.

Никто не говорит, что реализация данной системы невозможна.

Так, как никакие допуски, посадки ТС не озвучил, а так же не привёл данных о чистоте эфира, исходим из самых строгих требований и в предположении, что эфир засран. Т.е. отдельно взятая NRF может перепосылать пакет некоторое кол-во раз и не факт, что отправит вообще. Что, несоменнно, вносит неоднозначность в исход радио-гонки. А предполагать, что «хренли там не работать» может любой из нас с лёгкостью. Особенно, если ему не требуется впоследствии отвечать за результат.

Экспериментировать и налаживать систему самостоятельно ТС, как я понимаю, возможности не имеет.

присоединяюсь, поэтому и предложил, что системы кнопок слушают эфир, получают сигнал разрешения и фиксируют время срабатывания, а уж потом мастер опрашивает слэйвов и вычисляет, кто там первый и, никаких коллизий )))

  • Войдите на сайт для отправки комментариев

Петербуржец создал приложение для отправки быстрого оповещения при незаконном задержании на улице

«Красная Кнопка» пригодится тем, кто часто посещает уличные акции и митинги.

Митинг в Москве 26 марта. Фото: Виктория Одиссонова / «Новая газета»

Разработчик Александр Литреев запустил приложение «Красная Кнопка», с помощью которого можно быстро оповещать о незаконном задержании на уличных акциях. После того, как пользователь нажмёт на кнопку, правозащитники смогут примерно понять, в какой ОВД его отвезут. Первыми партнёрами проекта стали «ОВД Инфо» и «Открытая Россия».

По словам Литреева, первый раз сервис протестируют во время всероссийской акции «Открытой России» 29 апреля.

Акцию «Надоел» можно будет считать первым боевым крещением нашего приложения — мы соберем максимум отзывов, информации о багах и ошибках.

К акции, проводимой Алексеем Навальным в День России у нас будет полностью рабочее протестированное приложение.

Александр Литреев, разработчик

Как отметил разработчик, в дальнейшем с помощью «Красной Кнопки» можно будет оповещать о задержании друзей и родственников.

В твиттер-аккаунте «Красной Кнопки» будет появляться информация о местах массовых задержаний в Москве и крупных городах. Приложение будет учитывать количество оповещений — минимум три штуки в одной точке за короткий промежуток времени — и предупреждать о них.

В разговоре с TJ Литреев заявил, что разработкой «Красной Кнопки» он занимался вместе со специалистами из своей дизайнерской студии. Они создали алгоритм, который равномерно распределяет заявки между правозащитными организациями.

Каждая поданная заявка, прошедшая спам-фильтр, также проверяется вручную правозащитниками. Спамфильтр же работает по алгоритмам, которые мы не раскрываем и защищает нас от ботов из Ольгино и подобных негодяев.

Александр Литреев, разработчик

Разработчик добавил, что приложение уже тестировали несколько групп людей в разных городах России, однако основную проверку оно пройдёт 29 апреля. Пока приложение доступно в магазинах AppStore и Google Play, но в ближайшее время появится и для Windows Phone.

26 марта 2017 года по всей России прошли антикоррупционные акции с участием около 40 тысяч человек. В нескольких городах были и задержания: в Москве больше тысячи человек, в Петербурге — 130 человек, в Махачкале — около 150.

Система для «Своей игры»

Привет, Хабр! Так получилось, что одним из моих увлечений являются интеллектуальные игры. Это «Что? Где? Когда?», «Своя игра», «Эрудит-квартет», «Брейн-ринг» и прочие. И вот, однажды мне захотелось сделать своими руками систему для этой игры. Если вам интересен процесс создания с нуля такого устройства — приглашаю под кат.

Предыстория

Коротко о правилах «Своей игры»:
Группа игроков (как правило, до 4-х человек) садится за игровые места. Объявляется тема, состоящая из пяти вопросов. Вопросы идут по возрастанию сложности и соответственно оцениваются — от 10 до 50 баллов. Ведущий объявляет номинал вопроса и начинает его зачитывать. В любой момент чтения вопроса игрок подает сигнал, после которого ведущий прекращает читать вопрос и начинает отсчет времени — подавшему сигнал игроку дается 3-5 секунд на ответ. В случае правильного и своевременного ответа, игрок получает количество баллов, равное номиналу вопроса. В ином случае у игрока отнимается это количество баллов (Итоговый счет может быть глубоко отрицательным).

Сигналом в этой игре может быть все что угодно — от хлопка в ладоши в простейшем случае, до нажатия кнопки специализированной системы для «Своей игры». Подавляющее большинство таких систем являются самодельными (не настолько интеллектуальные игры популярны, чтобы ставить это дело на поток). Кроме того, эти системы зачастую обладают различными недостатками.

  • большие габариты;
  • работа только от сети 220В;
  • работа только в связке с компьютером (взаимодействие со специальным Windows-приложением);
  • некачественные, залипающие кнопки (например, от дверных звонков);
Проект
  • Удобные пульты с надежными кнопками и светодиодной индикацией (подтверждение игроку, что он первый нажал на кнопку);
  • Разъемное соединение пультов и устройства. Решено было сделать разъемы как на пультах, так и на самой системе. Был выбран разъем 4P4C (RJ11, обычно применяется в телефонных аппаратах). Такой выбор был сделан из-за небольших размеров и простоты ремонта кабеля — при наличии обжимного инструмента и коннекторов проблема решается в считанные минуты;
  • Два возможных источника питания — внешний и внутренний. Забегая вперед — именно в реализации схемы питания я совершил наибольшее число ошибок;
  • Система должна иметь разъем внутрисхемного программирования (ISP), чтобы можно было без лишних хлопот менять прошивку микроконтроллера;
  • Не должно быть привязки к любым другим устройствам (компьютер и т.п.);
  • Небольшие габариты.

Затем я на скорую руку набросал приблизительную принципиальную схему:

В качестве внешнего источника питания был выбран валявшийся без дела блок питания от старого модема — на выходе он имеет 12 В переменного напряжения. В роли внутреннего источника я выбрал батарейку типа «Крона» — ошибка №1. Для выработки необходимых для микроконтроллера 5 В я поставил линейный стабилизатор LM7805 — ошибка №2. О том, что это ошибки, я на практике узнал уже после сборки и тестирования устройства. Оказалось, что у «Кроны» весьма низкая емкость, да еще и почти половина ее уходила в никуда — на подогрев линейного стабилизатора. Однако, об этом позже.

Кнопки и разъемы, которые я выбрал для устройства, пришлось покупать на ebay — уж слишком высокие цены запрашивали местные торговцы. Правда, 10-миллиметровые светодиоды таки пришлось приобрести на радиорынке — ни на ebay, ни на aliexpress я не нашел индикаторных разноцветных светодиодов нужного диаметра.

Одним из важнейших и определяющих дальнейшее действие шагов был выбор корпуса. В своем городе ничего подходящего мне по качеству найти не удалось — пришлось воспользоваться торговыми площадками в Интернете. Устраивающий меня вариант нашелся в Киеве, там и были заказаны 5 корпусов — для основного блока и для пультов.

И вот, имея на руках все необходимые элементы, я стал продумывать дизайн устройства.

Печатные платы

Имея на руках корпуса, я приступил к разработке печатных плат. Вот, что у меня вышло:

Печатная плата основного блока

Печатная плата блока светодиодов

Печатная плата кнопки

Макеты печатных платы создавались в программе Sprint Layout, в конце будут ссылки на исходники. Используйте, модифицируйте — в общем, делайте с ними все что хотите.

Сами печатные платы я делал методом ЛУТ (лазерно-утюжная технология) — по моему скромному мнению, это наиболее простой и доступный простому смертному способ сделать печатную плату приемлемого качества.

Код

Тут, собственно, листинг программы микроконтроллера. Возможно, код не самый изящный, но он работает и свою функцию выполняет на ура.

Код программы на языке C

#define F_CPU 4000000UL #define f 349 #define a 440 #define cH 523 #include // Ввод/вывод, все стандартно #include // Нам будут нужны временные задержки #include // Без прерываний тоже никуда // Гасим засветившиеся светодиоды void clear_led(void) < PORTB = 0b00110000; PORTC = 0xFF; >int blink_led(int num) < clear_led(); _delay_ms(100); PORTB |= (1<// Голос нашей программы, аргументы функции - длительность и тон соответственно void song(void) < _delay_ms(500); int T = 1000000/440; int k = 500000/T; int i = 0; int tempo = 1; while(iPORTB |= (1 <<0); PORTB |= (1<<1); PORTB |= (1<<2); PORTB |= (1<<3); PORTD = 0b01111111; _delay_ms(500/tempo); // Завершить все же лучше тишиной :) T = 1000000/440; k = 500000/T; i = 0; while(iclear_led(); _delay_ms(500/tempo); // Завершить все же лучше тишиной :) T = 1000000/440; k = 500000/T; i = 0; while(i PORTB |= (1 <<0); PORTB |= (1<<1); PORTB |= (1<<2); PORTB |= (1<<3); PORTD = 0b01111111; _delay_ms(500/tempo); // Завершить все же лучше тишиной :) T = 1000000/349; k = 350000/T; i = 0; while(iPORTD = 0b01111111; _delay_ms(350/tempo); // Завершить все же лучше тишиной :) T = 1000000/523; k = 150000/T; i = 0; while(i PORTD = 0b01111111; _delay_ms(150/tempo); // Завершить все же лучше тишиной :) T = 1000000/440; k = 500000/T; i = 0; while(i PORTD = 0b01111111; _delay_ms(500/tempo); // Завершить все же лучше тишиной :) T = 1000000/349; k = 350000/T; i = 0; while(i PORTD = 0b01111111; _delay_ms(350/tempo); // Завершить все же лучше тишиной :) T = 1000000/523; k = 150000/T; i = 0; while(i PORTD = 0b01111111; _delay_ms(150/tempo); // Завершить все же лучше тишиной :) T = 1000000/440; k = 1000000/T; i = 0; while(i PORTB |= (1 <<0); PORTB |= (1<<1); PORTB |= (1<<2); PORTB |= (1<<3); PORTD = 0b01111111; _delay_ms(1000); // Завершить все же лучше тишиной :) clear_led(); >int beep(int k, int j) //функция бипа < int i = 0; while(iPORTD = 0b01111111; // Завершить все же лучше тишиной :) return 0; > void reset_wait(void) < short t = 0; while(t==0) < if(!(PIND & (1<> > > int bond007(void) // Функция-шпион для отслеживания нажатия клавиш < short i = 0; short p = 0; int t = 300; int tone = 100; while(i==0) // Цикл отслеживания нажатия кнопок < // Открывающие скобки цикла отслеживания нажатий кнопок if(!(PIND & (1<// Закрывающая скобка "Проверка нажатия кнопки игрока 1" else < if(!(PIND & (1<else < if(!(PIND & (1<else < if(!(PIND & (1<> > > > // Закрывающие скобки "Если хотя бы одна из кнопок игроков нажата" > // Закрывающие скобки цикла отслеживания нажатий кнопок return i; > int main(void) // Главная функция < // Открывающие скобки главной функции DDRC = 0xFF; // Порт С на выход PORTC = 0xFF; // Подтягивающие резисторы вкл. на порт С DDRD = 0b10000000; // порт Д на вход, кроме 8й ножки, она на выход у нас, пищалка там PORTD = 0b01111111; // подтягивающие резисторы на весь порт Д, окромя 8го бита, ибо на нем динамик у нас. DDRB = 0xFF; // Порт Б на выход PORTB = 0b00110000; // Подтягивающие резисторы на 5 и 6 биты порта Б song(); short i = 0; while(1) // Вечный цикл памяти погибших на Клендату < // Открывающие скобки вечного цикла i = bond007(); >// Закрывающие скобки вечного цикла return 0; > 

Если вдруг случится, что кто-то откроет кат и посмотрит на код, у этого человека наверняка возникнет вопрос — что за ерунда занимает большую его часть. Дело в том, что мне захотелось внести в устройство какую-нибудь изюминку, и в качестве этой изюминки я выбрал приветствие при включении. Сразу после того, как первые электроны побегут по цепи, эта черная коробочка с разноцветными светодиодами и красной кнопкой начинает весело играть отрывок из всем известного «Имперского марша».

Вот как это выглядит:

Кроме самой мелодии, на этом коротком видео можно лицезреть пример работы системы: по нажатию кнопки загорается соответствующий светодиод на основном устройстве и индикатор. В таком состоянии система блокируется до нажатия ведущим красной кнопки сброса системы. Вот, собственно, и вся логика работы.

Ошибки в проекте

Как я уже писал выше, основные ошибки на этапе проектирования касались системы питания устройства. Ужасный КПД линейного стабилизатора, который буквально превращает в тепло «лишние» 4В при питании от «Кроны» — апофеоз энергонеэффективности. Да и сама «Крона» — далеко не лучший выбор. Этот элемент питания обладает малой емкостью (около 600 мА*ч), и его хватает очень ненадолго. С такой схемой питания система во время первого тестирования в боевых условиях проработала не больше часа. Меня это абсолютно не устраивало, поэтому пришлось переделывать эту часть схемы.

Незадолго до этого проекта я познакомился с литий-ионными аккумуляторами форм-фактора 18650. Они зарекомендовали себя с наилучшей стороны. Как минимум, даже у дешевых китайских аккумуляторов емкость в пересчете на единицу объема была значительно выше, чем у «Кроны».

Однако, с выбором этих элементов питания сразу появлялась другая проблема. Номинальное напряжение на таком аккумуляторе — 3.7 В. А этого недостаточно, чтобы запитать Atmega8. На помощь снова пришли ушлые китайцы — чтобы получить заветные 5 В я взял лежавший без дела повышающий преобразователь на LM2577. Вырвав с корнем злополучную LM7805 (оставшиеся в плате ножки можно будет увидеть на фото, размещенные дальше), я внедрил в систему питания аккуратную схемку, созданную трудолюбивыми жителями КНР.

Кроме того, на время тестирования этого варианта схемы я решил отказаться от возможности подключения внешнего источника питания. Полевые тесты прошли на ура — после многих часов эксплуатации не было никаких признаков разряда аккумулятора или просадки напряжения («Крона» просадки давала — видимо, не могла отдавать необходимый схеме ток). Я решил продолжать тесты до тех пор, пока мой доблестный noname 18650 не откажется запускать схему.

Кстати, в описании лота при покупке была заявлена емкость около 3700 мА*ч — очень самоуверенно даже для китайцев, учитывая стоимость одной банки в районе 3$. Но вышло так, что за несколько месяцев работы (что говорит еще и о низком саморазряде аккумуляторов) батарейка так и не села. Потому я сдался раньше и зарядил аккумулятор для безотказной работы устройства на одном важном мероприятии, о котором будет упомянуто позже.

Фотографии

Здесь привожу фото получившегося аппарата, в том числе и вид изнутри. Это для того, чтобы было видно, что все сделано по-честному — никакой неонки внутре там нет.

Итог

Система получилась работоспособная, выполняющая свою функцию на 100%. Помимо тренировок, она была протестирована на ЧУСИ-2013 (Чемпионат Украины по «Своей игре» 2013-го года), на котором ваш покорный слуга был одним из ведущих.

Это был замечательный опыт, который, как известно, сын ошибок трудных. В итоговой реализации устройство потеряло часть функций, которые задумывались изначально. Например, я отказался от возможности подключения внешнего блока питания — даже при активном использовании системы, посредственного аккумулятора хватает на многие месяцы.

Ниже прилагаю ссылки, по которым можно скачать макеты печатных плат (в формате .lay) и готовую прошивку для микроконтроллера. Буду рад, если кому-нибудь пригодятся мои наработки.

  • diy или сделай сам
  • программирование микроконтроллеров
  • электроника для начинающих
  • вассерман
  • никто не читает теги

Automatic Clicker

Настройте этот инструмент, чтобы автоматически нажимать на свой экран

Скачать последнюю версию

Automatic Clicker — это приложение, которое позволяет настраивать автоматические нажатия на экран вашего Android. Эта функция кажется простой и, может быть, немного бесполезной, но на самом деле она идеально подходит для игр, где вам нужно щёлкать или нажимать без остановок, чтобы выиграть.

Прежде всего, вам нужно настроить Automatic Clicker, переключив его конфигурацию. Оттуда вы захотите настроить разрешения доступа и выбрать, как часто вы хотите, чтобы он нажимал, сколько времени он должен нажимать и общее количество времени, которое вы хотите, чтобы он нажимал на экран для вас.

Есть два варианта на выбор: первый — для настройки автоматических нажатий на одно определённое место на экране, а второй — для установки нажатий вразброс. Вам придётся настраивать каждый отдельно, но с заранее заданными режимами вам не придётся слишком много думать об этом.

Automatic Clicker — идеальный инструмент для игр бездействия. Всё, что вам нужно делать, это нажать на плавающий виджет, а оттуда просто откинуться в кресле и расслабиться и наслаждаться плодами ваших автоматических нажатий.

Проверено Nelson de Benito Переведено Uptodown Localization Team

Требования (последняя версия)

  • Требуется Android 5.0 или более новая версия

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *