Лазерный Ринг
- Войдите на сайт для отправки комментариев
Сб, 14/07/2018 - 06:58
Приветствую профессионалов форума !
Вообщем суть вопроса довольно-таки проста, просто я новичок в Ардуино и не могу толком разобраться как правильно сделать ?
Суть задачи такова: - необходимо сделать "Лазерный ринг" тоесть на ринге вместо оградительных канатов должны выступать лазеры и фотоэлементы, когда игроки переходят каждый нечетный лазер (ближе к рингу) тогда поступает одна определенная команда, когда игроки переходят через внешнюю линию, поступает другая команда, эти команды необходимо по USB считывать на ПК.
Подскажите плз как правильно организовать данную задачу ?
Спасибо.

/* */ 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
...на ринге вместо оградительных канатов должны выступать лазеры и фотоэлементы...
Это какой же мощности должны быть лазеры, чтобы не допустить падения боксера за пределы ринга?
Квон, а почему при всех наворотах с классами в исходнике присутствует индусский код с поименным перечислением экземпляров? Лень было доделать?))
Это какой же мощности должны быть лазеры, чтобы не допустить падения боксера за пределы ринга?
Упавшие за пределы ринга руки и ноги боксером не считаются...
2 qwone
Благодарю вас за вашу помощь !
- Буду пробовать !!!
2 andriano & sadman41
Этот ринг не для насстоящего бокса, это просто оптические разметки чтобы игроки не выходили за игровое пространство, первая линия желтое предупреждение, вторая линия красное предупреждение.
Вроде как существуют законодательные проблемы с применением лазерного излучения, если непременно хочется лазеры где-то в общественном месте, то стоит начать с этого.
Форумчане, посоветуйте пожалуйста фотоэлемент для похожей задачи.
надо-же, для меня это новость.....
- в принципе "лазеры" я образно назвал (для описания сути задачи) вероятно возможно использованиее обычных IR-светодиодов ?
предварительно (как новичек) за основу я взял этот вариант:
http://edurobots.ru/2014/05/arduino-fotorezistor
- по теме разговора мне посоветовали подобный код:
// число лазеров 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. Толком еще не разобрался на данном форуме..., подскажите плз как убирать коды и изображения под спойлер ?
- в принципе "лазеры" я образно назвал (для описания сути задачи) вероятно возможно использованиее обычных IR-светодиодов ?
только вчера в теме Датчик входа-выхода писал какой датчик можно использовать.
На дальности 7м для ИК диодов и фотоприемников возникнет вопрос формирования диаграммы направлености
- в принципе "лазеры" я образно назвал (для описания сути задачи) вероятно возможно использованиее обычных IR-светодиодов ?
это вряд ли. Преимущество лазера - очень узкий луч, для световых или ИК диодов этого очень трудно достичь
Я на одной из прошлых работ (в ВЦ) я видел какую-то штуку типа оптического барьера. Такая железная хренотень с козырьком и двумя приличными линзами. Отражательную часть визуально не помню. Да и эта фиговина просто валялась на полке, не работала даже.
Однако, видимо, можно сфокусировать нелазерный луч для дальнобойности (ибо откуда в Советском Союзе лазеры на охрану периметра были?).
Я на одной из прошлых работ (в ВЦ) я видел какую-то штуку типа оптического барьера. Такая железная хренотень с козырьком и двумя приличными линзами. Отражательную часть визуально не помню. Да и эта фиговина просто валялась на полке, не работала даже.
Однако, видимо, можно сфокусировать нелазерный луч для дальнобойности (ибо откуда в Советском Союзе лазеры на охрану периметра были?).
Похож на какой-нибудь ДОП-2. Они и как охранные на дверной проём ставились, и как пожарные на задымлённость. Отражатель там типа катафота, ставился на расстоянии по-моему до 2, может 3 метров. Излучателем служили сначала лампы, позже ИК-светодиоды. Приёмник - фотодиод. Но это небольшой такой приборчик был.
Кстати, из готовых решений можно посмотреть на датчики безопасности для ворот. уж не помню какой тип как-то настраивал,
но на 4-5 м дальности пятно было всего 3- 4см.