html текст
All interests
  • All interests
  • Design
  • Food
  • Gadgets
  • Humor
  • News
  • Photo
  • Travel
  • Video
Click to see the next recommended page
Like it
Don't like
Add to Favorites

6 кнопок



Постановка задачи



Сутки добрые, Хабраюзеры!

Пару недель назад представитель федерации по кикбоксингу нашего региона поставил мне задачу, сделать то, что позволит сократить время проведения соревнований на 30% методом автоматизации, кибернизации, механизации и прочей «ции». Человек он простой, прямой, и сильный так, что отказать у меня не было возможности. Задача была принята.



Изучив регламент проведения боев, и вспоминая прошлые соревнования было установлено, что 20-30% от соревнований отнимают следующие пункты:
  1. сбор рефери судейских записок после трех раундов
  2. передача записок главному судье
  3. подсчет очков
  4. подведение итогов боя

В среднем около 3-5 минут

Задача встала в следующем: необходимо оперативно передавать информацию об очках главному судье, то есть «запрограммировать 6 кнопок».

Выбор решения


Для решения задачи были рассмотрены следующие аппаратные варианты:
  1. Манипуляторы Мышь на каждом судейском столе и передача от них информации
  2. Некий джойстик на каждом судейском столе и передача информации главному судье


Первый вариант решения технической части задачи был отметен сразу же так как я себе сложно представлял как поведет себя USB мышь на расстоянии 15-20 метров от компьютера главного судьи.

Второй вариант показался мне более реальным.
Центром сбора данных я возложил на контроллер ARDUINO.

Исполнение


Этап 1 Общая схема




На столах боковых судей размещается судейские пульты, которые имеют 2 кнопки: красная и синяя. Информация об нажатиях этих кнопок собирается контроллером Arduino и передается программе установленной на ноутбуке.
Программа анализирует нажатия кнопок и выдает информацию по итогу боя и набранных баллах бойцом.
Главный судья на основании результатов боя объявляет победителя.

Этап 2 схема подключения




Со схемой все просто, каждую отдельную кнопку ставлю на отдельный вход микроконтроллера. Резисторы использовал 2.4 кОм. Я не стал использовать сдвиговый регистр так как не умею с ним работать, а под текущую задачу PIN-ов хватает с лихвой.

Изготовление


Этап 3 Изготовление пультов



Состав пульта:
  1. Коробочка
  2. Кусок монтажной платы
  3. Кнопки
  4. Кусочки проводов
  5. Красная и синяя изолента
  6. Коннектор RJ45









Этап 4 Изготовление контроллера


Состав контроллера:
  1. Коробочка из под отверток
  2. Arduino
  3. монтажная плата
  4. Кусочки проводов
  5. Изолента
  6. Пачкорды RJ-45
  7. USB провод




Программирование


Этап 5 программа для контроллера



В программе для контроллера все взято из примеров. Ждем нажатия кнопок, учитывая дребезжание контактов и шлем все COM-порт:

Скетч контроллера
#include <Bounce.h> 
#define BUTTON7 7 
#define BUTTON6 6 

#define BUTTON5 5 
#define BUTTON4 4

#define BUTTON3 3 
#define BUTTON2 2 

#define LED 13 
int state7 = 0; 
int prevstate7 = 0; 
int state6 = 0; 
int prevstate6 = 0; 

int state5 = 0; 
int prevstate5 = 0; 
int state4 = 0; 
int prevstate4 = 0; 

int state3 = 0; 
int prevstate3 = 0; 
int state2 = 0; 
int prevstate2 = 0; 

Bounce bouncer7 = Bounce( BUTTON7,5 );  
Bounce bouncer6 = Bounce( BUTTON6,5 );  

Bounce bouncer5 = Bounce( BUTTON5,5 );  
Bounce bouncer4 = Bounce( BUTTON4,5 );  

Bounce bouncer3 = Bounce( BUTTON3,5 );  
Bounce bouncer2 = Bounce( BUTTON2,5 );  


void setup() { 
  Serial.begin(115200); 
  pinMode(BUTTON7,INPUT); 
  pinMode(BUTTON6,INPUT); 
  pinMode(LED,OUTPUT); 
} 
void loop() { 
// 7 кнопка начало
  bouncer7.update ( ); 
 int value7 = bouncer7.read(); 
 if ( value7 == HIGH) { 
   digitalWrite(LED, HIGH ); 
   state7 = 1; 
 } else { 
    digitalWrite(LED, LOW ); 
    state7 = 0;   
 } 
 if(state7 != prevstate7){ 
   if(state7 == 1){ 
   Serial.println("7"); 
   } 
 } 
 prevstate7 = state7; 
// 7 кнопка конец  
// 6 кнопка начало
 bouncer6.update ( ); 
 int value6 = bouncer6.read(); 
 if ( value6 == HIGH) { 
   digitalWrite(LED, HIGH ); 
   state6 = 1; 
 } else { 
    digitalWrite(LED, LOW ); 
    state6 = 0;   
 } 
 if(state6 != prevstate6){ 
   if(state6 == 1){ 
   Serial.println("6"); 
   } 
 } 
 prevstate6 = state6; 
// 6 кнопка конец  

// 5 кнопка начало
 bouncer5.update ( ); 
 int value5 = bouncer5.read(); 
 if ( value5 == HIGH) { 
   digitalWrite(LED, HIGH ); 
   state5 = 1; 
 } else { 
    digitalWrite(LED, LOW ); 
    state5 = 0;   
 } 
 if(state5 != prevstate5){ 
   if(state5 == 1){ 
   Serial.println("5"); 
   } 
 } 
 prevstate5 = state5; 
// 5 кнопка конец  
// 4 кнопка начало
 bouncer4.update ( ); 
 int value4 = bouncer4.read(); 
 if ( value4 == HIGH) { 
   digitalWrite(LED, HIGH ); 
   state4 = 1; 
 } else { 
    digitalWrite(LED, LOW ); 
    state4 = 0;   
 } 
 if(state4 != prevstate4){ 
   if(state4 == 1){ 
   Serial.println("4"); 
   } 
 } 
 prevstate4 = state4; 
// 4 кнопка конец  


// 3 кнопка начало
 bouncer3.update ( ); 
 int value3 = bouncer3.read(); 
 if ( value3 == HIGH) { 
   digitalWrite(LED, HIGH ); 
   state3 = 1; 
 } else { 
    digitalWrite(LED, LOW ); 
    state3 = 0;   
 } 
 if(state3 != prevstate3){ 
   if(state3 == 1){ 
   Serial.println("3"); 
   } 
 } 
 prevstate3 = state3; 
// 3 кнопка конец  
// 2 кнопка начало
 bouncer2.update ( ); 
 int value2 = bouncer2.read(); 
 if ( value2 == HIGH) { 
   digitalWrite(LED, HIGH ); 
   state2 = 1; 
 } else { 
    digitalWrite(LED, LOW ); 
    state2 = 0;   
 } 
 if(state2 != prevstate2){ 
   if(state2 == 1){ 
   Serial.println("2"); 
   } 
 } 
 prevstate2 = state2; 
// 2   кнопка конец  


}




Этап 6 программа для контроля ведения боя



Во первых сразу же делюсь кодом Скачать исходный код.
Весь код написан делфи XE3 так как учил его в школе. И небольшая описательная часть:
  1. Используя компоненту ComPort 4.11 подключаемся к com-порту и слушаем его
  2. в зависимости от настроек боя слушаем порт и результаты выводим в labelX.caption
  3. в конце боя выводим итог

Программа писалась за одну ночь, поэтому о красоте не может быть и речи.

Подготовка к соревнованиям



Прокладка кабелей от центрального блока до боковых судей






Работа судьи


О том как работает программа





Итоги соревнований


По итогу двух дневных соревнований был разыгран полный комплект наград проведено более 150 боев.
Благодаря сэкономленному времени спортсмены уехали по своим городам на 4 часа раньше планированного времени


Выводы


  1. Оборудование отработало на ура, без единого сбоя
  2. Длина проводов от центрального блока до кнопок составляла 20 метров, при этом тестировал кнопки на 100 метровом кабеле
  3. В программе нужно переработать интерфейс, чем и занимаюсь к подготовке соревнований по боксу
  4. Программе необходимы дополнения связанные с выводом на табло и звуковыми эффектами
  5. Использование стандартного сетевого кабеля для подключения кнопок и разъемы значительно удешевило всю конструкцию в целом


Спасибо за внимание.

UPD-1 : По кнопкам.
специально выбрал такие кнопки по следующим причинам:
1. обратная связь тактильная. щелчек при нажатии
2. кнопки не имеют свободного хода
3. у кнопок со свободным ходом есть не приятность они срабатывают раньше чем чувствуется щелчок
4. пользователи системы люди с мышцами, а не любители няшных кнопок
5. обратная связь светодиодом бесполезна ибо взор судьи направлен на ринг, а не на руки

UPD-2: бюджет данной сборки вряд ли перевалил 3000 руб

UPD-3 По просьбам исходники на github
Читать дальше
Twitter
Одноклассники
Мой Мир

материал с habrahabr.ru

3

      Add

      You can create thematic collections and keep, for instance, all recipes in one place so you will never lose them.

      No images found
      Previous Next 0 / 0
      500
      • Advertisement
      • Animals
      • Architecture
      • Art
      • Auto
      • Aviation
      • Books
      • Cartoons
      • Celebrities
      • Children
      • Culture
      • Design
      • Economics
      • Education
      • Entertainment
      • Fashion
      • Fitness
      • Food
      • Gadgets
      • Games
      • Health
      • History
      • Hobby
      • Humor
      • Interior
      • Moto
      • Movies
      • Music
      • Nature
      • News
      • Photo
      • Pictures
      • Politics
      • Psychology
      • Science
      • Society
      • Sport
      • Technology
      • Travel
      • Video
      • Weapons
      • Web
      • Work
        Submit
        Valid formats are JPG, PNG, GIF.
        Not more than 5 Мb, please.
        30
        surfingbird.ru/site/
        RSS format guidelines
        500
        • Advertisement
        • Animals
        • Architecture
        • Art
        • Auto
        • Aviation
        • Books
        • Cartoons
        • Celebrities
        • Children
        • Culture
        • Design
        • Economics
        • Education
        • Entertainment
        • Fashion
        • Fitness
        • Food
        • Gadgets
        • Games
        • Health
        • History
        • Hobby
        • Humor
        • Interior
        • Moto
        • Movies
        • Music
        • Nature
        • News
        • Photo
        • Pictures
        • Politics
        • Psychology
        • Science
        • Society
        • Sport
        • Technology
        • Travel
        • Video
        • Weapons
        • Web
        • Work

          Submit

          Thank you! Wait for moderation.

          Тебе это не нравится?

          You can block the domain, tag, user or channel, and we'll stop recommend it to you. You can always unblock them in your settings.

          • habrahabr.ru
          • домен habrahabr.ru

          Get a link

          Спасибо, твоя жалоба принята.

          Log on to Surfingbird

          Recover
          Sign up

          or

          Welcome to Surfingbird.com!

          You'll find thousands of interesting pages, photos, and videos inside.
          Join!

          • Personal
            recommendations

          • Stash
            interesting and useful stuff

          • Anywhere,
            anytime

          Do we already know you? Login or restore the password.

          Close

          Add to collection

             

            Facebook

            Ваш профиль на рассмотрении, обновите страницу через несколько секунд

            Facebook

            К сожалению, вы не попадаете под условия акции