www.open-tager.ru http://www.open-tager.ru/forum/ |
|
LTAscetik http://www.open-tager.ru/forum/viewtopic.php?f=5&t=1565 |
Страница 374 из 532 |
Автор: | Pingvin [ 10 июл 2014, 15:48 ] |
Заголовок сообщения: | Re: LTAscetik |
Sabbah писал(а): Nestr уже писал, но ответа я так и не увидел, я запнулся как на таге реализовать старт игры по центр кнопке или командой с пульта. Просто я насколько понял никакого приема через датчики нет пока не активируешь таг. Как можно это реализовать? Добавит в цикл ожидания while проверку события rx_event |
Автор: | Sabbah [ 10 июл 2014, 15:50 ] |
Заголовок сообщения: | Re: LTAscetik |
Pingvin писал(а): Sabbah писал(а): Nestr уже писал, но ответа я так и не увидел, я запнулся как на таге реализовать старт игры по центр кнопке или командой с пульта. Просто я насколько понял никакого приема через датчики нет пока не активируешь таг. Как можно это реализовать? Добавит в цикл ожидания while проверку события rx_event Прошу прощения, но ткни меня куда именно его добавить в коде. |
Автор: | Pingvin [ 10 июл 2014, 16:05 ] |
Заголовок сообщения: | Re: LTAscetik |
функция invite(); Цитата: void invite(){ //ïðèãëàøåíèå â ìåíþ íàñòðîåê volatile uint8_t countdown = 5; //ñ÷¸ò÷èê îáðàòíîãî îòñ÷¸òà lcd_clrscr(); lcd_home(); if ((eeprom_read_byte(&eeprom_tm_serial_num.device_code)==0)||(eeprom_read_byte(&eeprom_tm_serial_num.device_code)==0xFF)) /* åñëè êëþ÷ åù¸ íå çàïèñàí*/ {//[if] joystick_event = no_pressing; lcd_puts("Çàïèñü êëþ÷à ÒÌ"); lcd_gotoxy(0, 1); lcd_puts("Öåíòð.êí.-îòìåíà"); //timer1 = 0; while ((joystick_event!=key_central_pressing)&&(eeprom_read_byte(&eeprom_tm_serial_num.device_code)==0)||(eeprom_read_byte(&eeprom_tm_serial_num.device_code)==0xFF)) //ïîêà íå íàæàòà öåíòðàëüíàÿ êíîïêà èëè íå çàïèñàí êëþ÷ {//[while] ]while ((cr_received==false)&&(joystick_event==no_pressing)&&(tm_event == no_tm_event)){}; if (cr_received) { parsing_command(); } switch(tm_event) {//[switch] case no_tm_event: { } break; case tm_crc_error: { lcd_clrscr(); lcd_home(); lcd_puts("Îøèáêà CRC"); timer2 = 0; while (timer2 < 6000){}; lcd_clrscr(); lcd_home(); lcd_puts("Çàïèñü êëþ÷à ÒÌ"); lcd_gotoxy(0, 1); lcd_puts("Öåíòð.êí.-îòìåíà"); tm_event=no_tm_event; } break; case tm_crc_ok: { eeprom_write_byte(&eeprom_tm_serial_num.device_code,device_code); for (int i = 0; i<6; i++ ) { eeprom_write_byte(&eeprom_tm_serial_num.serial[i],tm_code[i]); } lcd_clrscr(); lcd_home(); lcd_puts("Êëþ÷ ÒÌ çàïèñàí!"); timer2 = 0; while (timer2 < 6000){}; tm_event=no_tm_event; } break; }//[/switch] if (joystick_event==key_central_pressing) break; if (joystick_event!=key_central_pressing) joystick_event = no_pressing; };//[/while] if (joystick_event==key_central_pressing) /*åñëè âûøëè ïî íàæàòèþ öåíòðàëüíîé êíîïêè*/ { joystick_event = no_pressing; lcd_clrscr(); lcd_home(); lcd_puts("Äëÿ íàñòðîåê æìè\nöåíòð. êíîïêó 5"); //lcd_puts("Âïðàâî"); while ((countdown > 0)&&(joystick_event==no_pressing))//ïîêà íå êîí÷èòüñÿ îáðàòíûé îòñ÷¸ò èëè íå íàæìóí êíîïêó äæîéñòèêà { timer2 = 0; while ((timer2 < 6000)&&(joystick_event==no_pressing)){}; if (joystick_event!=no_pressing) break; //åñëè íàæàòà êíîïêà, âûõîäèì èç öèêëà lcd_gotoxy(14, 1); countdown--; lcd_puts(int_to_str(countdown,0)); } if (joystick_event==key_central_pressing) { get_all_setings(); /* get_int_settings("Èäåíò. èãðîêà:", &eeprom_player_id, 127); //íàæàòà öåíòðàëüíàÿ êíîïêà set_player_id(eeprom_read_byte(&eeprom_player_id)); //Óñòàíàâëèâàåì èäåíòèôèêàòîð èãðîêà get_int_settings("Èäåíò. êîìàíäû:", &eeprom_team_id, 3); //íàæàòà öåíòðàëüíàÿ êíîïêà set_team_color(team_id()); //Óñòàíàâëèâàåì èäåíòèôèêàòîð (öâåò) êîìàíäû get_enum_settings("Íàíîñèìûé óðîí:", &eeprom_damage, &damage_value, Damage_100); set_gun_damage(gun_damage()); //Óñòàíàâëèâàåì ìîùüíîñòü îðóæèÿ (óðîí) get_int_settings("Åìêîñòü ìàãàçèíà:", &eeprom_bullets_in_clip, 90); //íàæàòà öåíòðàëüíàÿ êíîïêà get_int_settings("Ìàãàçèíîâ:", &eeprom_clips, 90); get_int_settings("Âðåìÿ ïåðåçàðÿäà:", &eeprom_reload_duration, 8); */ // return; } } // bullets = eeprom_read_byte(&eeprom_bullets_in_clip); // BULLETS_OUT_LED_OFF; bullets = 0; BULLETS_OUT_LED_ON; clips = eeprom_read_byte(&eeprom_clips); joystick_event=no_pressing; keyboard_event=no_key_pressing; tm_event=no_tm_event; Вот while ((joystick_event!=key_central_pressing)&&(eeprom_read_byte(&eeprom_tm_serial_num.device_code)==0)||(eeprom_read_byte(&eeprom_tm_serial_num.device_code)==0xFF)) Ждем нажатия центральной кнопки А тут while ((cr_received==false)&&(joystick_event==no_pressing)&&(tm_event == no_tm_event)) Программа тут остановиться и не пойдет дальше, пока выполняются условия в скобках То есть пока не принята строка в UART либо не нажата кнопка джойстика либо тачмемори не присоединен. А дальше выясняем - какое из перечисленных условий нарушено, то есть какое из событий наступило и соответственно реагируем Надо добавить еще - пока сообщение (команда пульта) не получено |
Автор: | Pingvin [ 10 июл 2014, 16:25 ] |
Заголовок сообщения: | Re: LTAscetik |
В прошивке без джойсика функция invite() по другому реализована. |
Автор: | Nestr [ 10 июл 2014, 17:25 ] |
Заголовок сообщения: | Re: LTAscetik |
Sabbah вы подружили пульт с тагом? таг принимает команды? |
Автор: | Sabbah [ 10 июл 2014, 17:31 ] |
Заголовок сообщения: | Re: LTAscetik |
Nestr писал(а): Sabbah вы подружили пульт с тагом? таг принимает команды? Не совсем, сейчас реакция тага, что он принял команду но не выполнил заданные условия, я еще до конца сам пульт не оттестировал (например про сброс до стандартных параметров я не знал и фьюзы выставлены на 3.1 как на 3.0, хотя диод у меня мигает при нажатии на кнопки). Сегодня попробую что-то сделать исходя из того, что сейчас прочитал. |
Автор: | Pingvin [ 11 июл 2014, 06:53 ] | ||
Заголовок сообщения: | Re: LTAscetik | ||
На основе этой прошивки буду делать базовую. Оказывается - она с блютус работает! Я и забыл, так что почти все готово (какая же я умничка), осталось научить пульт понимать. Работы совсем немного. Может за сегодня успею. Можете тренироваться на ней, но пока у вас нет блютус модулей, чтобы античит вам мозг не сношал, посадите вывод state, что на разъёме BT/RS232 через резистор (100 К, можно и 10 К) на землю. Если не хотите резистор ставить, тогда исправьте исходники в файле isr.c /************************************************************************************** * Обработчик внещних прерываний timer1A ***************************************************************************************/ ISR(TIMER1_COMPA_vect){ ................... if((!(TSOP_IN&TSOP_PIN))&&(!(BT_STATE_IN&BT_STATE_PIN)))//если на входе INT0 низкий уровень и нет блютус соединения { if (chit_detected_counter < (4000)) chit_detected_counter++; if (chit_detected_counter >= (4000)) chit_detected=true; } .......... Надо сделать так if((!(TSOP_IN&TSOP_PIN))/*&&(!(BT_STATE_IN&BT_STATE_PIN))*/)//если на входе INT0 низкий тогда античит не будет проверять, есть ли блютус соединение
|
Автор: | Pingvin [ 11 июл 2014, 09:16 ] | ||
Заголовок сообщения: | Re: LTAscetik | ||
Ловите, черти! Эта прошива понимает команду "старт игры", не просит нажать центральную кнопку джойстика (вместо неё - перезарядка). Пока команды ловит только с проводной повязки. После отпуска добью блютус. Не забывайте про античит - поставьте резистор, или исправьте исходники (см. выше). И частоту несущей проверьте. Прошивка на 56 000 сейчас настроена. И обязательно, ОБЯЗЯТЕЛЬНО залейте шестой звук. Иначе фигня будет.
|
Автор: | Nestr [ 11 июл 2014, 09:27 ] |
Заголовок сообщения: | Re: LTAscetik |
Pingvin, вот так порадовал! Преступаю к тесту. |
Автор: | Nestr [ 11 июл 2014, 10:14 ] |
Заголовок сообщения: | Re: LTAscetik |
Из первых наблюдений сразу что заметил. аларм не срабатывает вопще. резистор я не под паивал аларм не сработал. отключил повязку аларм не сработал. Тагер понимает "старт игра". патроны востанавлевает на 100 проц. жизни пока не проверил нечем стрельнуть в таг. |
Страница 374 из 532 | Часовой пояс: UTC + 3 часа [ Летнее время ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |