www.open-tager.ru http://www.open-tager.ru/forum/ |
|
LTAscetik http://www.open-tager.ru/forum/viewtopic.php?f=5&t=1565 |
Страница 10 из 532 |
Автор: | Pingvin [ 20 июн 2012, 17:20 ] |
Заголовок сообщения: | Re: LTAscetik |
furhunter писал(а): Присмотрелся к диоду вспышки. Он светит очень слабо, но достаточно долго. С полсекунды непрерывного свечения. А то и секунду.Осциллограф показывает 1,56V с подключенным светодиодом, 3,36V c отключенным. Все верно! Именно так себя и ведёт диод вспышки! Пробовал несколькими if-ами - помогает. Но это ковыряться надо, какой из if-ов глючит. Так что выбор стоит - "вылизывать" то что есть, или идти дальше! Надеюсь на помощь сообщества в этом вопросе - дела пойдут быстрее! Я уже предложил решение - включать в начале передачи ИК-пакета и выключать при окончании передачи. Если не осилите (почему то уверен - справитесь! ) - поправлю сам, время будет... |
Автор: | Pingvin [ 20 июн 2012, 17:29 ] |
Заголовок сообщения: | Re: LTAscetik |
furhunter писал(а): Это мне уже нравится Начинаю разбираться с программой, хочется осилить Атмегу да и понять алгоритм лазертага. Ибо есть желание сосредоточиться на этом направлении А пока буду доводить до рабочего состояния то что есть, да займусь макетами. Пока пистолеты "джентельмены, к барьеру" Да уж - занятная штука эти контроллеры, затягивает. Сам с Атмегой познакомился с год назад - тут же, на форуме. Спасибо парням за это! Направили на "путь истинный"! Рассматривайте проект как некий "быстрый старт", от которого можно отталкнуться. Надеюсь, он будет Вам полезен. Но и, в свою очередь, надеюсь, Вы так же будете готовы поделиться своими наработками? По поводу программы - спрашивайте, если что не понятно! Как коментарии отображаются? Нормально? Проблема в том, что git не "переваривает" виндовую кодировку, и вместо символов кириллицы в коментах видны какие то непонятные символы. |
Автор: | Pingvin [ 20 июн 2012, 19:19 ] |
Заголовок сообщения: | Re: LTAscetik |
У нас ещё в "загашнике" есть драйвер для внешней eeprom - проверено, работает! Поставим одну на 64 кБайт (512 кБит) - это ещё + 8 секунд звука! И статистику туда можно скидывать. Ну и очень хочу с SD-картами поработать, но их питать от 3,3 Вольт надо. Холдеры уже купил! Тогда звука будет - море! Нет ... океан!!! А уж RS-232 или USB - это само собой, по любому! |
Автор: | Pacifist [ 21 июн 2012, 04:31 ] |
Заголовок сообщения: | Re: LTAscetik |
Коллеги, так быть не должно. Не должен компилятор принуждать нас использовать те или иные лексикомы... Представьте себе сколько ошибок может накопиться в простых If() по ходу программы... задолбемся их ловить |
Автор: | furhunter [ 21 июн 2012, 09:40 ] |
Заголовок сообщения: | Re: LTAscetik |
Странно со светодиодом. Буду разбираться, заодно и подучусь. Если тело программы модульное и код светодиода ни на что не влияет больше, то оставляйте мне. Поищу, посмотрю, подумаю. Разумеется, у меня есть размышления на счет нового в лазертаге. Все что сможет порадовать ребят, без проблем, буду выкладывать. Философия лазертага только рождается Из ближайших целей - расширение функций головной повязки, экран от мобилки, два (пока) оружия на один модуль с ограничением по боезапасу каждого отдельно, далее - радиомодули, далее всепротокольность. В перспективе - штудирую принципы определения координат удаленных объектов. Если удастся увидеть на электронной карте всех игроков - игра выйдет на совершенно новый уровень. Все хотелки и все фантазии можно будет реализовать, хоть тебе мародерство, хоть облако радиации, хоть зомби и пси воздействие. Пока буду обкатывать на Атмеге. Хороший процессор и популярный. Pacifist верно говорит. От стандартов отходить не следует и изначально нужно исключить любые возможности возникновения независимых от человека ошибок в программировании. Допушенные человеком найдутся. Пропущенные машиной заберут 90% времени от всего программирования. |
Автор: | Pingvin [ 21 июн 2012, 19:25 ] |
Заголовок сообщения: | Re: LTAscetik |
Копать надо тут: Код: /************************************************************************************** * Обработчик внещних прерываний timer1A ***************************************************************************************/ ISR(TIMER1_COMPA_vect){ TIMSK &= ~_BV(OCIE1A); //запрещаем прерывания timer1, чтобы не было рекурсии sei(); if ((bullets >0)&&(!play_hit_snd))//если патроны не кончились { if (last_simple == 0) { fire_led_status=ON; //включаем вспышку } else; if (last_simple < sizeof(pSnd))//3913 { if (last_simple==(sizeof(pSnd)/100)*CUT_OFF_SOUNT) { if (fire_mode()==queues) { if ((get_keyboard_status()==key_pressed)&&(life>0)) //курок нажат, то отсекаем звук { bullets--;//уменьшаем на 1 количество патронов send_ir_package(); //Производим "выстрел" last_simple=0; //воспроизводим звук сначала fire_led_status=FQR_4HZ; } else fire_led_status=ON; } else; } else; OCR0 = pgm_read_byte(&(pSnd[last_simple++])); } if (last_simple >= sizeof(pSnd)&&(last_simple)!=0xFFFF)//3913 { OCR0 = 128; //Скважность = 0,5 fire_led_status=OFF; }; } if (bullets <= 0) //патроны кончились { BULLETS_OUT_LED_ON; // включаем светодиод "Патроны кончились" if (last_simple < sizeof(pSnd)) {OCR0 = pgm_read_byte(&(pSnd[last_simple++]));}//дадим выстрелу прозвучать до конца else fire_led_status = OFF; }; static volatile uint16_t tmp_cntr=0; if ((tmp_cntr - (tmp_cntr/100)*100)==0) { switch(keyboard_event) { case no_key_pressing: { keyboard_event=test_keyboard(); break; } default:; } } if (++tmp_cntr > 1000) //пора обновить индикацию { tmp_cntr = 0; static volatile uint8_t bit_mask = 0b00000001; if ((life_leds_status[0]&bit_mask)==0) { LIFE_LED1_OFF; } else { LIFE_LED1_ON; }; if ((life_leds_status[1]&bit_mask)==0) { LIFE_LED2_OFF; } else { LIFE_LED2_ON; }; if ((life_leds_status[2]&bit_mask)==0) { LIFE_LED3_OFF; } else { LIFE_LED3_ON; }; if ((life_leds_status[3]&bit_mask)==0) { LIFE_LED4_OFF; } else { LIFE_LED4_ON; }; if ((fire_led_status&bit_mask)==0) { FIRE_LED_OFF; } else { FIRE_LED_ON; }; bit_mask = (bit_mask<<1); if (bit_mask == 0) bit_mask = 0b00000001; } Чувствую - перемудрил со вспышкой! Проще надо сделать. Понимаю парни, что в чужом коде разбираться "удовольствие" на любителя! Постараюсь объясник ка все работает, но в двух словах не получиться. Как реализована индикация? Каждый светодиод жизни и диод вспышки имеют, как я их называю - регистры статуса. Это простые переменные размером с байт (uint8_t). Примерно четыре раза в секунду происходит опрос очередного бита регистра статуса, и если бит=1 диод включается, если 0 - выключается. Биты опрашиваются друг за другом "по кругу". Таким образом, чтобы диод горел постоянно - значение регистра статуса должно быть 11111111 = 255. Чтобы не горел совсем - 00000000. Чтобы мигал с частотой один Герц - 00001111. 2 Герца - 00110011 4 Герца - 01010101 Смысл ясен? Вернёмся к вспышке. Если огонь ведётся очередью - диод мигает с частотой 4 Гц. Если одиночными - ... уже подзабыл. Но вроде выключается диод с окончанием звука выстрела. Но ошибку надо искать в приведённом коде. Может ошибка чисто моя, "человеческая", и компилятор не причем... А лучше - переделать, как я уже предлагал ранее. |
Автор: | Pacifist [ 21 июн 2012, 21:42 ] |
Заголовок сообщения: | Re: LTAscetik |
Pingvin писал(а): ... А лучше - переделать, как я уже предлагал ранее. Согласен, лучше переделать так. Код: fire_led_status=ON; //включаем вспышкуем на 1 количество патронов send_ir_package(); //Производим "выстрел" last_simple=0; //воспроизводим звук сначала fire_led_status=OFF; А еще лучше вообще засунуть fire_led_status=ON/OFF; в функцию send_ir_package(); Тогда и мигать будет соответственно скорострельности. |
Автор: | furhunter [ 22 июн 2012, 09:58 ] |
Заголовок сообщения: | Re: LTAscetik |
Запустил две платы. Могу прицельно стрелять. А попадание уже реализовано? |
Автор: | furhunter [ 22 июн 2012, 14:01 ] |
Заголовок сообщения: | Re: LTAscetik |
ТСОП пакет принимает. |
Автор: | Pingvin [ 24 июн 2012, 17:01 ] |
Заголовок сообщения: | Re: LTAscetik |
furhunter писал(а): Запустил две платы. Могу прицельно стрелять. А попадание уже реализовано? Конечно - только проследите, чтобы ЦВЕТА КОМАНД БЫЛЫ РАЗНЫЕ! В этой версии прошивки дружественный огонь игнорируется (хотя включить легко). Диоды жизни подпаяйте - все сами увидите! |
Страница 10 из 532 | Часовой пояс: UTC + 3 часа [ Летнее время ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |