Цитата Сообщение от Serg_w Посмотреть сообщение
Еще раз попрошу Chipa подправить скетч и программу для All-In-One...
Пробуй

PHP код:
//http://compcar.ru   
#include <IRremote.h>  
byte bytes[13];    // 0-3 байт   энкодер, рулевые кнопки, ИК приемник, веб камера  
                  //   4 байт   датчик света 
                  //   5 байт   датчик напряжения 
                  //   6 байт   датчик топлива 
                  //   7-12 зарезервированы                   
  
int LIGHT_SENS = 0 ;   // Вход датчика освещености 
int VOLT_SENS = 1 ;    // Вход датчика напряжения 
int FUEL_SENS = 2 ;    // Вход датчика уровня топлива 
int JOYSTIK_PIN = 5 ;  // Вход для рулевых Кнопок 
int NC2_SENS = 4 ;    // Вход датчика 
int NC1_SENS = 5 ;    // Вход датчика  
int NC3_SENS = 6 ;    // Вход датчика 
int NC4_SENS = 7 ;    // Вход датчика 
  
  
int RECV_PIN = 6;     //вход ИК приемника  
int back_cam = 5; //Вход активатора камеры 
int encoder0PinA = 2 ; //Вывод А энкодера 
int encoder0PinB = 3 ; //Вывод В энкодера 
int encoder_botton = 4; //Вход кнопки энкодера 
  
unsigned long res_dt, ir_dt, old_ir, time; 
byte temp, cam_status; 
IRrecv irrecv(RECV_PIN);  
decode_results results; 
  
//****************************************** 
void setup()      
{  
  
pinMode(encoder0PinA, INPUT);  
  
digitalWrite(encoder0PinA, HIGH);     // подключить подтягивающий резистор 
  
pinMode(encoder0PinB, INPUT);  
  
digitalWrite(encoder0PinB, HIGH);    // подключить подтягивающий резистор 
  
pinMode(encoder_botton, INPUT);  
  
digitalWrite(encoder_botton, HIGH);    // подключить подтягивающий резистор 
   
pinMode(back_cam, INPUT);  
  
digitalWrite(back_cam, HIGH);    // подключить подтягивающий резистор 
  
  
attachInterrupt(0, doEncoderA, FALLING);  // настроить прерывание interrupt 0 на pin 2 
  
attachInterrupt(1, doEncoderB, FALLING);  // настроить прерывание interrupt 0 на pin 3   
Serial.begin(115200); // настроить скорость com порт    
irrecv.enableIRIn(); // включить приемник  
}   
//****************************************** 
void loop()   
{   
IR_resiver(); 
joystik(); 
/*cam(); 
  if ((millis()-time)>1000 && results.value ==0) //запуск процедур по таймеру 
   {     
     time = millis(); 
      autolight(); 
      fuel(); 
      voltmetr(); 
   }*/  
} 
//*******************ИК приемник*********************** 
void IR_resiver() 
{  
   if ((
millis()-time)>1000 )  
   {    
     
time = millis();   
     
results.value=0; 
   } 
  
  if (
irrecv.decode(&results))   
  {  
    if (
results.value > 0 && results.value < 0xFFFFFFFF)  
    {  
      
ir_dt = results.value;  
      
bytes[0] = ir_dt & 0xFF;          // преобразовать в 4-байта   
      
bytes[1] = (ir_dt & 0xFF00) >> 8;   
      
bytes[2] = (ir_dt & 0xFF0000) >> 16;  
      
bytes[3] = (ir_dt & 0xFF000000) >> 24;  
      
Serial.write( bytes,13); // отправить прочитаное значение компьютеру  
  
      
if (old_ir == ir_dt){delay(300);} // Пауза после нажатия и удержания(перед повторами) 
      
else {delay(500);} 
      
old_ir = ir_dt; 
    }  
           if (
results.value == 0xFFFFFFFF ) 
            { 
             
delay(130); //пауза между повторами 
             
Serial.write( bytes,13); 
            }  
       
irrecv.resume();  
  }  
} 
//****************резистивные кнопки************************** 
void joystik() 
{   
  
res_dt = analogRead(JOYSTIK_PIN); // прочитать данные АЦП  
  
if( res_dt < 1023 && results.value == 0) 
  { 
    
delay(50); // пауза для проверки дребезга 
    
if(res_dt == analogRead(JOYSTIK_PIN))   //если нет дребезга 
      
{ 
        
bytes[0] = res_dt & 255;          // преобразовать в 2-байта  
        
bytes[1] = (res_dt & 768) >> 8;  
        
bytes[2] = 0; 
        
bytes[3] = 0; 
        
Serial.write( bytes,13); // отправить прочитаное значение компьютеру      
        
delay(250); // Пауза между нажатиями 
      
}   
  }     
}  
//******************Датчик освещения************************ 
void autolight() 
{ 
byte light;   
byte sens = analogRead(LIGHT_SENS)/4;   
  
if ((
sens > 0) && (sens<30)) {light = 2;}    
if ((
sens > 30) && (sens<60)) {light = 60;}    
if ((
sens > 60) && (sens<90)) {light = 90;}  
if ((
sens > 90) && (sens<120)) {light = 120;}  
if ((
sens > 120) && (sens<150)) {light = 150;}    
if ((
sens > 150) && (sens<190)) {light = 190;}    
if (
sens > 190)  {light = 255;}    

   if(
light != bytes[4]) // если были изменения 
     
{  
      
clear_buf();    
      
bytes[4] = light; 
      
Serial.write( bytes,13); 
     }       
}  
//*******************Измерение Напряжения*********************** 
void voltmetr() 
{ 
    
temp = analogRead(VOLT_SENS)/4; 
      if(
temp !=  bytes[5]) 
      { 
        
clear_buf(); 
        
bytes[5]=temp;  
         
Serial.write( bytes,13); 
      } 
} 
//*******************Датчик топлива*********************** 
void fuel() 
{ 
      
temp = analogRead(FUEL_SENS)/4; 
      if(
temp !=  bytes[6]) 
      { 
        
clear_buf(); 
        
bytes[6]=temp; 
         
Serial.write( bytes,13); 
      } 
} 
//*******************Активация веб камеры по сигналу ЗХ*********************** 
void cam() 
{ 
  
temp=digitalRead(back_cam); 
   if(
temp==HIGH && cam_status==0) 
   { 
        
clear_buf(); 
        
cam_status=255; 
        
bytes[1]=8; 
        
Serial.write( bytes,13);  
   }  
       if(
temp==LOW && cam_status==255) 
         { 
          
clear_buf(); 
          
cam_status=0;  
          
bytes[1]= 9; 
          
Serial.write( bytes,13); 
         } 
} 
//*******************Активация веб камеры по сигналу ЗХ*********************** 
void clear_buf() 
{ 
      
bytes[0] = 0; 
      
bytes[1] = 0; 
      
bytes[2] = 0;  
      
bytes[3] = 0; 
} 
//*******************обработка прерывания*********************** 
void doEncoderA() 
{ 
cli(); 
  if(
digitalRead(encoder0PinB)==HIGH){bytes[1]=24;}else{bytes[1]=15;}  
      
bytes[0] = 0; 
      
bytes[2] = 0;  
      
bytes[3] = 0; 
  
Serial.write( bytes,13); 
sei();  
}   
//*******************обработка прерывания*********************** 
void doEncoderB() 
{ 
cli(); 
    if(
digitalRead(encoder0PinA)==HIGH){bytes[1]=15;}else{bytes[1]=24;} 
      
bytes[0] = 0; 
      
bytes[2] = 0;  
      
bytes[3] = 0; 
    
Serial.write( bytes,13); 
sei();     
}