А частота ИК правильно выставлена?
В файле miles_protocol.h
#define ERROR_TOLERANCE_FOR_36KHZ 14
#define ERROR_TOLERANCE_FOR_56KHZ 22
были такие значения раньше.
Я что то похожее наблюдал, когда в повязку поставил в параллель ТСОПы на 56 кГц и на 36 кГц, но я грешил, что из-за этого.
Может чего накуролесил с переключением частоты?...
А может - точнее целиться приходится?
Само пятно то маленькое, если близко стрелять.
Попадания то с близи скорее ореол дает.
Код и правда не верно написан, поправлю.
Если не ошибаюсь, этого достаточно
while(!((ir_message.control_byte ==Valid_value)&&(ir_message.ID==Command)&&(ir_message.param==0x05)
||(
joystick_event==key_central_pressing)))//пока не получим команду "старт"
В скобках после восклицательного знака условия для выхода из цикла.
А выйти мы должны, если получим команду пульта
(ir_message.control_byte ==Valid_value)&&(ir_message.ID==Command)&&(ir_message.param==0x05) ИЛИ будет
нажата центральная кнопка джойстика
||(joystick_event==key_central_pressing)Остальное уберите!
Внутри цикла состояние джойстика проверять не надо - никаких
Код:
if (joystick_event==key_central_pressing)
while(keypress_cntr < 5) //ставим если нажата центр кнопка
// while(keypress_cntr < 20) //ставим если нажат курок
{
// switch (FIRE_KEY_IN&FIRE_KEY_PIN) //проверяем, нажат ли курок
switch (CENTRAL_KEY_IN&CENTRAL_KEY_PIN) //проверяем, нажата ли центральная кнопка
{
case 0: keypress_cntr++ ; break; //ставим если нажата центр кнопка
case CENTRAL_KEY_PIN: keypress_cntr = 0; break; //ставим если нажата центральная кнопка
// case FIRE_KEY_PIN: keypress_cntr = 0; break; //ставим если нажат курок
default: keypress_cntr = 0;
}
Ибо если кнопка будет нажата, мы уже будем за пределами цикла.
С этой логикой легко запутаться!