Лазерный Ринг

mds3d
Offline
Зарегистрирован: 14.07.2018

Приветствую профессионалов форума !

Вообщем суть вопроса довольно-таки проста, просто я новичок в Ардуино и не могу толком разобраться как правильно сделать ?

Суть задачи такова: - необходимо сделать "Лазерный ринг" тоесть на ринге вместо оградительных канатов должны выступать лазеры и фотоэлементы, когда игроки переходят каждый нечетный лазер (ближе к рингу) тогда поступает одна определенная команда, когда игроки переходят через внешнюю линию, поступает другая команда, эти команды необходимо по USB считывать на ПК.

Подскажите плз как правильно организовать данную задачу ?

Спасибо.

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016
/*
*/
unsigned long mill;// переменная для millis()
typedef void (*pDo)() ;// тип -функция обработчик
//--------------- Cl_Btn---------
//класс кнопка подключ на землю 
class Cl_Btn {
  protected:
    byte pin; // номер ноги на кнопке
    pDo Do;// указатель на обработчик
    bool btn, btn_old;
    bool bounce = 0; // антидребезговый флаг
    uint32_t past = 0 ;
  public:
    /* конструктор класса*/
    Cl_Btn( byte p , pDo Do_): pin(p), Do(Do_) {}
    // метод setup()
    void init() {
      pinMode(pin, INPUT);// подключить кнопку 
      btn = digitalRead(pin); // прочитать реальное значение на выводе};
    }
    // метод loop()
    void run() {
      if (! bounce && btn != digitalRead(pin)) { // если прошел фронт изм на выводн
        bounce = 1;                              // выставить флаг
        past = millis();                         // сделать временую засветку
      }
      else if ( bounce && millis() - past >= 5 ) { // если прошло антидребезговое время
        bounce = 0;                                // то снять флаг
        btn_old = btn ;
        btn = digitalRead(pin) ;                   // прочитать реальное значение на выводе
        if (btn_old && ! btn) Do();
      }
    }
};
//--------------компоновка------------
void Do1() {
  Serial.println("1 Line");
}
void Do2() {
  Serial.println("2 Line");
}
Cl_Btn Photo1(/*пин*/2,/*обработчик*/Do1);
Cl_Btn Photo2(/*пин*/3,/*обработчик*/Do2);
Cl_Btn Photo3(/*пин*/4,/*обработчик*/Do1);
Cl_Btn Photo4(/*пин*/5,/*обработчик*/Do2);
Cl_Btn Photo5(/*пин*/6,/*обработчик*/Do1);
Cl_Btn Photo6(/*пин*/7,/*обработчик*/Do2);
Cl_Btn Photo7(/*пин*/8,/*обработчик*/Do1);
Cl_Btn Photo8(/*пин*/9,/*обработчик*/Do2);
//------------main()--------------
void setup() {
  Serial.begin(9600);
  Photo1.init();
  Photo2.init();
  Photo3.init();
  Photo4.init();
  Photo5.init();
  Photo6.init();
  Photo7.init();
  Photo8.init();
}
void loop() {
  mill = millis();
  Photo1.run();
  Photo2.run();
  Photo3.run();
  Photo4.run();
  Photo5.run();
  Photo6.run();
  Photo7.run();
  Photo8.run();
}
/*Скетч использует 2364 байт (7%) памяти устройства. Всего доступно 30720 байт.
  Глобальные переменные используют 284 байт (13%) динамической памяти, оставляя 1764 байт для локальных переменных. Максимум: 2048 байт.
*/

ПС:#4

 

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

mds3d пишет:

...на ринге вместо оградительных канатов должны выступать лазеры и фотоэлементы...

Это какой же мощности должны быть лазеры, чтобы не допустить падения боксера за пределы ринга?

sadman41
Offline
Зарегистрирован: 19.10.2016

Квон, а почему при всех наворотах с классами в исходнике присутствует индусский код с поименным перечислением экземпляров? Лень было доделать?))

sadman41
Offline
Зарегистрирован: 19.10.2016

andriano пишет:

Это какой же мощности должны быть лазеры, чтобы не допустить падения боксера за пределы ринга?

Упавшие за пределы ринга руки и ноги боксером не считаются... 

mds3d
Offline
Зарегистрирован: 14.07.2018

2 qwone

Благодарю вас за вашу помощь !

- Буду пробовать !!!

2 andriano & sadman41

Этот ринг не для насстоящего бокса, это просто оптические разметки чтобы игроки не выходили за игровое пространство, первая линия желтое предупреждение, вторая линия красное предупреждение.

ВН
Offline
Зарегистрирован: 25.02.2016

Вроде как существуют законодательные проблемы с применением лазерного излучения, если непременно хочется лазеры где-то в общественном месте, то стоит начать с этого.

Sidorchuk
Offline
Зарегистрирован: 22.07.2016

Форумчане, посоветуйте пожалуйста фотоэлемент для похожей задачи.

mds3d
Offline
Зарегистрирован: 14.07.2018

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

надо-же, для меня это новость.....

- в принципе "лазеры" я образно назвал (для описания сути задачи) вероятно возможно использованиее обычных IR-светодиодов ? 

mds3d
Offline
Зарегистрирован: 14.07.2018

Sidorchuk пишет:
Форумчане, посоветуйте пожалуйста фотоэлемент для похожей задачи.

предварительно (как новичек) за основу я взял этот вариант:

http://edurobots.ru/2014/05/arduino-fotorezistor

mds3d
Offline
Зарегистрирован: 14.07.2018

qwone пишет:
ПС:#4 

- по теме разговора мне посоветовали подобный код:

// число лазеров
int count = 8;
// пины фоторезисторов
int myPins[] = {1, 2, 3, 4, 5, 6, 7, 8};
// чувствительность фоторезистора
int r = 800;
// задержка
int t = 50;
void setup()
{
  for (int i=0; i < count; i++)
  {
    pinMode(myPins[i], INPUT);
    }
  Serial.begin(11500);
}
void loop()
{
  string s = "";
  for (int i=0; i < count; i++){
    if (analogRead(myPins[i]) < r) s = s + "1"; else s = s + "0";
    }
  Serial.println(s);
  delay(t);
}

 

P.S. Толком еще не разобрался на данном форуме..., подскажите плз как убирать коды и изображения под спойлер ?

ВН
Offline
Зарегистрирован: 25.02.2016

mds3d пишет:

- в принципе "лазеры" я образно назвал (для описания сути задачи) вероятно возможно использованиее обычных IR-светодиодов ? 

только вчера в теме Датчик входа-выхода писал какой датчик можно использовать.

На дальности 7м для ИК диодов и фотоприемников возникнет вопрос формирования диаграммы направлености

b707
Offline
Зарегистрирован: 26.05.2017

mds3d пишет:

- в принципе "лазеры" я образно назвал (для описания сути задачи) вероятно возможно использованиее обычных IR-светодиодов ? 

это вряд ли. Преимущество лазера - очень узкий луч, для световых или ИК диодов этого очень трудно достичь

sadman41
Offline
Зарегистрирован: 19.10.2016

Я на одной из прошлых работ (в ВЦ) я видел какую-то штуку типа оптического барьера. Такая железная хренотень с козырьком и двумя приличными линзами. Отражательную часть визуально не помню. Да и эта фиговина просто валялась на полке, не работала даже.

Однако, видимо, можно сфокусировать нелазерный луч для дальнобойности (ибо откуда в Советском Союзе лазеры на охрану периметра были?). 

kalapanga
Offline
Зарегистрирован: 23.10.2016

sadman41 пишет:

Я на одной из прошлых работ (в ВЦ) я видел какую-то штуку типа оптического барьера. Такая железная хренотень с козырьком и двумя приличными линзами. Отражательную часть визуально не помню. Да и эта фиговина просто валялась на полке, не работала даже.

Однако, видимо, можно сфокусировать нелазерный луч для дальнобойности (ибо откуда в Советском Союзе лазеры на охрану периметра были?). 

Похож на какой-нибудь ДОП-2. Они и как охранные на дверной проём ставились, и как пожарные на задымлённость. Отражатель там типа катафота, ставился на расстоянии по-моему до 2, может 3 метров. Излучателем служили сначала лампы, позже ИК-светодиоды. Приёмник - фотодиод. Но это небольшой такой приборчик был.

ВН
Offline
Зарегистрирован: 25.02.2016

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

но на 4-5 м дальности пятно было всего 3- 4см.