www.open-tager.ru http://www.open-tager.ru/forum/ |
|
LTAscetik http://www.open-tager.ru/forum/viewtopic.php?f=5&t=1565 |
Страница 501 из 532 |
Автор: | Pingvin [ 21 май 2018, 19:55 ] |
Заголовок сообщения: | Re: LTAscetik |
maksim писал(а): Что то никакой реакции на команды A3XXE8 и A8XXE8)))Загляните в исхожник ,что можит быть не так .... Я не вижу в коде изменений. Куда добавляли? |
Автор: | maksim [ 21 май 2018, 20:12 ] |
Заголовок сообщения: | Re: LTAscetik |
ltag_ascetic.c Там в самон низу.... |
Автор: | maksim [ 21 май 2018, 20:14 ] |
Заголовок сообщения: | Re: LTAscetik |
break; case RX_ERROR: //ошибка приема { if((!ir_error_ignore)&&(!eeprom_is_open)) { play_sound_8(); keyboard_event=no_key_pressing; } } break; case RX_MESSAGE_COMPLITE://принято сообщение { // rx_event = NOT_EVENT; if(get_bt_buffer_bit(0)) //если этот бит равен 1, то это пакет с командой { ir_message = get_ir_message_from_bt_buffer();//выдергиваем значения команды из буфера ИК приемника if (ir_message.control_byte ==Valid_value )//сообщение принято корректно (контрольный байт принят без ошибок) { switch(ir_message.ID)//если имя команды { case Add_Health: //добавить "жизни" { //код для добавления жизни break; } case Set_life:// установить хх жизней { life_in_percent = ir_message.param; life = (life_in_percent*10)/125; if ((life==0)&&(life_in_percent>0)) life=1; status_need_update = true; eeprom_write_byte(&life_after_start,ir_message.param); beep(1000, 2, 128); break; } case Set_damage://установить хх урон { eeprom_write_byte(&eeprom_damage,ir_message.param); beep(1000, 2, 128); break; } case Add_Rounds://добавить "патронов" { //код для добавления патронов break; } case Change_color: { //код для смены цвета if((ir_message.param>=0)&&(ir_message.param<=3)) { eeprom_write_byte(&eeprom_team_id,ir_message.param ); set_team_color(team_id()); //Устанавливаем идентификатор (цвет) команды for (uint8_t i=0; i <ir_message.param; i++ ) { beep(1000, 2, 128); timer2 = 0; while (timer2 < 1000); } beep(1000, 2, 128); } else { //ошибка смены цвета beep(1000, 3, 128); beep(500, 3, 128); //Воспроизводим звук (частота, длительность, громкость) beep(1000, 3, 128); beep(500, 3, 128); //Воспроизводим звук (частота, длительность, громкость) } break; } case Command://какая то дополнительноя команда { switch(ir_message.param)//выясним, какая это командв { case 0x05://начать новую игру немедленно { if (simples_in_queue>1) //если звук выстрла воспроизводится { simples_in_queue=1;//закроем eeprom while (eeprom_is_open);//дождемся, пока eerom закроется } init_var(); //инициализируем переменные joystick_event=no_pressing; //очищаем события джойстика keyboard_event=no_key_pressing;//очищаем события триггера reload_key_event=no_key_pressing;//очищаем события перезарядки rx_event = NOT_EVENT; //очищаем события ИК приемника display_status();//обновляем информацию на дисплее display_life(life);//отобразим уровень жизни на диодах WOUND_LED_ON; playstartsound();//Воспроизводим звук "старт игры" //код обработки дополнительной команды WOUND_LED_OFF; break; } case 0x00://"выключить" игрока { |
Автор: | maksim [ 21 май 2018, 20:35 ] |
Заголовок сообщения: | Re: LTAscetik |
На лтк1 Урон задается командой A8ххЕ8 ,где хх 1-15 ......1(0),2(1),4(2),5(3),7(4),10(5),15(6),17(7), 20(8),25(9),30(10),35(11),40(12),50(13),75(14),100(15)) Желательно и на аскете так сделать)))Чтобы пульт один был и для аскета и для ЛТК1... |
Автор: | Pingvin [ 22 май 2018, 08:28 ] |
Заголовок сообщения: | Re: LTAscetik |
maksim писал(а): break; case RX_ERROR: //ошибка приема { if((!ir_error_ignore)&&(!eeprom_is_open)) { play_sound_8(); keyboard_event=no_key_pressing; } } break; case RX_MESSAGE_COMPLITE://принято сообщение { // rx_event = NOT_EVENT; if(get_bt_buffer_bit(0)) //если этот бит равен 1, то это пакет с командой { ir_message = get_ir_message_from_bt_buffer();//выдергиваем значения команды из буфера ИК приемника if (ir_message.control_byte ==Valid_value )//сообщение принято корректно (контрольный байт принят без ошибок) { switch(ir_message.ID)//если имя команды { case Add_Health: //добавить "жизни" { //код для добавления жизни break; } case Set_life:// установить хх жизней { life_in_percent = ir_message.param; life = (life_in_percent*10)/125; if ((life==0)&&(life_in_percent>0)) life=1; status_need_update = true; eeprom_write_byte(&life_after_start,ir_message.param); beep(1000, 2, 128); break; } case Set_damage://установить хх урон { eeprom_write_byte(&eeprom_damage,ir_message.param); beep(1000, 2, 128); break; } case Add_Rounds://добавить "патронов" { //код для добавления патронов break; } case Change_color: { //код для смены цвета if((ir_message.param>=0)&&(ir_message.param<=3)) { eeprom_write_byte(&eeprom_team_id,ir_message.param ); set_team_color(team_id()); //Устанавливаем идентификатор (цвет) команды for (uint8_t i=0; i <ir_message.param; i++ ) { beep(1000, 2, 128); timer2 = 0; while (timer2 < 1000); } beep(1000, 2, 128); } else { //ошибка смены цвета beep(1000, 3, 128); beep(500, 3, 128); //Воспроизводим звук (частота, длительность, громкость) beep(1000, 3, 128); beep(500, 3, 128); //Воспроизводим звук (частота, длительность, громкость) } break; } case Command://какая то дополнительноя команда { switch(ir_message.param)//выясним, какая это командв { case 0x05://начать новую игру немедленно { if (simples_in_queue>1) //если звук выстрла воспроизводится { simples_in_queue=1;//закроем eeprom while (eeprom_is_open);//дождемся, пока eerom закроется } init_var(); //инициализируем переменные joystick_event=no_pressing; //очищаем события джойстика keyboard_event=no_key_pressing;//очищаем события триггера reload_key_event=no_key_pressing;//очищаем события перезарядки rx_event = NOT_EVENT; //очищаем события ИК приемника display_status();//обновляем информацию на дисплее display_life(life);//отобразим уровень жизни на диодах WOUND_LED_ON; playstartsound();//Воспроизводим звук "старт игры" //код обработки дополнительной команды WOUND_LED_OFF; break; } case 0x00://"выключить" игрока { В архиве этого не было! Сейчас перепроверю... |
Автор: | Pingvin [ 22 май 2018, 08:42 ] |
Заголовок сообщения: | Re: LTAscetik |
maksim писал(а): Что то никакой реакции на команды A3XXE8 и A8XXE8)))Загляните в исхожник ,что можит быть не так .... А-ха-ха! Понял! Вы добавили обработчики в функцию, которая с блютус каналом работает - то есть обрабатывает сигнал с беспроводной повязки. То же самое нужно добавить в обработчик сигнала "с провода" - он почти в самом начале файла. Это конечно не очень правильно - два обработчика иметь. Но пока некогда переписывать, полно планов незаконченных. |
Автор: | maksim [ 22 май 2018, 14:52 ] |
Заголовок сообщения: | Re: LTAscetik |
Добавил код )))Все работает))) Еще убить игрока, подскадите какой там код должен быть? |
Автор: | Pingvin [ 22 май 2018, 17:10 ] |
Заголовок сообщения: | Re: LTAscetik |
Кстати - чтобы урон применился тут же, без перезагрузки. Добавьте в код Код: set_gun_damage(gun_damage());
|
Автор: | Pingvin [ 22 май 2018, 17:11 ] |
Заголовок сообщения: | Re: LTAscetik |
maksim писал(а): Добавил код )))Все работает))) Еще убить игрока, подскадите какой там код должен быть? Попозже посмотрю. |
Автор: | Pingvin [ 22 май 2018, 17:21 ] |
Заголовок сообщения: | Re: LTAscetik |
Тут надо внимательно смотреть. Но в первом приближении что то типа этого Код: life = 0;
life_in_percent=0; WOUND_LED_ON; display_life(life);//îòîáðàçèì óðîâåíü æèçíè íà äèîäàõ display_life_update();//îòîáðàçèì óðîâåíü æèçíè íà ÆÊÈ volatile uint8_t keypress_cntr; //ñ÷åò÷èê öèêëîâ, â òå÷åíèè êîòîðûõ êóðîê áûë íàæàò keypress_cntr = 0; while (eeprom_is_open);//äîæäåìñÿ, ïîêà eerom çàêðîåòñÿ playgameoversound(); lcd_bl_off(); display_status(); rx_event = rx_event = NOT_EVENT; ir_message.control_byte = 0; while(!(((ir_message.control_byte ==Valid_value)&&(ir_message.ID==Command)&&(ir_message.param==0x05))||(joystick_event == key_central_pressing)))//ïîêà íå ïîëó÷èì êîìàíäó "ñòàðò" {//[while] rx_event = NOT_EVENT; while((rxCount==0)&&(rx_event != RX_MESSAGE_COMPLITE)&&(joystick_event == no_pressing))//ïîêà íåò íèêàêèõ êîìàíä ïóëüòà {//[while] WOUND_LED_INVERT; USART_PutChar('1'); timer2 = 0; while (timer2 < 1000); WOUND_LED_INVERT; timer2 = 0; while (timer2 < 1000); }//[while] if(joystick_event!=key_central_pressing)joystick_event = no_key_pressing; if (rx_event == RX_MESSAGE_COMPLITE) ir_message = get_ir_message_from_buffer();//ïðèøëà êîìàíäà ïóëüòà, âûäåðãèâàåì çíà÷åíèÿ êîìàíäû èç áóôåðà ÈÊ ïðèåìíèêà else //[else] { if (rxCount>0) finde_message_in_bt_buffer(); }//[else] }//[while] /* while(keypress_cntr < 20) { WOUND_LED_INVERT; USART_PutChar('1'); timer2 = 0; while (timer2 < 1000); WOUND_LED_INVERT; timer2 = 0; while (timer2 < 1000); switch (FIRE_KEY_IN&FIRE_KEY_PIN) //ïðîâåðÿåì, íàæàò ëè êóðîê { case 0: keypress_cntr++ ; break; case FIRE_KEY_PIN: keypress_cntr = 0; break; default: keypress_cntr = 0; } } */ } //end else //òà÷ ìåìîðè íå çàïèñàí â ïàìÿòü //"îæèâàåì" - íà÷èíàåì íîâóþ èãðó if (simples_in_queue>1) //åñëè çâóê âûñòðëà âîñïðîèçâîäèòñÿ {//[if] simples_in_queue=1;//çàêðîåì eeprom while (eeprom_is_open);//äîæäåìñÿ, ïîêà eerom çàêðîåòñÿ }//[if] init_var(); //èíèöèàëèçèðóåì ïåðåìåííûå joystick_event=no_pressing; //î÷èùàåì ñîáûòèÿ äæîéñòèêà keyboard_event=no_key_pressing;//î÷èùàåì ñîáûòèÿ òðèããåðà reload_key_event=no_key_pressing;//î÷èùàåì ñîáûòèÿ ïåðåçàðÿäêè rx_event = NOT_EVENT; //î÷èùàåì ñîáûòèÿ ÈÊ ïðèåìíèêà display_status();//îáíîâëÿåì èíôîðìàöèþ íà äèñïëåå // display_life(life);//îòîáðàçèì óðîâåíü æèçíè íà äèîäàõ WOUND_LED_ON; playstartsound(); //êîä îáðàáîòêè äîïîëíèòåëüíîé êîìàíäû WOUND_LED_OFF; |
Страница 501 из 532 | Часовой пояс: UTC + 3 часа [ Летнее время ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |