Показано с 1 по 10 из 697

Древовидный режим

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #11
    Администратор Аватар для Chip
    Регистрация
    08.06.2007
    Возраст
    55
    Сообщений
    13,381
    Вес репутации
    10

    По умолчанию Re: Адаптер рулевых кнопок.

    Попробуй вот этот скетч

    PHP код:
    //http://compcar.ru      
    #define PIN 5  //номер аналогового порта     
    #define LIMIT 10 //предел погрешности сопротивления    
    #define encoder0PinA  2  
    #define encoder0PinB  3  
    byte bytes[4];
    volatile enbuf[4]={0,0,0,0};  
    unsigned long math_time,old_time,real_timeres_dt1res_d;   

    void setup()   
    {     
      
    pinMode(encoder0PinAINPUT);   
      
    digitalWrite(encoder0PinAHIGH);     // подключить подтягивающий резистор  
      
    pinMode(encoder0PinBINPUT);   
      
    digitalWrite(encoder0PinBHIGH);    // подключить подтягивающий резистор  

      
    attachInterrupt(0doEncoderAFALLING);  // настроить прерывание interrupt 0 на pin 2  
      
    attachInterrupt(1doEncoderBFALLING);  // настроить прерывание interrupt 0 на pin 3  
      
    Serial.begin (115200);  
    }   

    void loop()  
    {  
    Serial.write(enbuf4); 
     for(
    byte i=0i<4i++) bytes[i]=0
      
    res_d analogRead(PIN); // прочитать данные АЦП   
      
    if( res_d LIMITres_d LIMIT;  
      
    delay(10);    
      
    res_dt1 analogRead(PIN); // прочитать данные АЦП     
            
    old_time millis();     
            
    math_time 0;      
            while(
    math_time 200)     
              {     
                 
    real_time millis();             //получить реальное время      
                 
    math_time real_time old_time//считаем длительность нажатия    
                
    res_dt1 analogRead(PIN); // прочитать данные АЦП   
                
    if(res_dt1 res_d-LIMIT || res_dt1 res_d+LIMIT)break;  
              }     
            
        if( 
    math_time 70)  //если нет дребезга то короткое нажатие    
          
    {    
            
    bytes[0] = res_d  0xFF;          // преобразовать в 4-байта      
            
    bytes[1] = (res_d  0xFF00) >> 8;      
            
    bytes[2] = (res_d  0xFF0000) >> 16;     
            
    bytes[3] = (res_d  0xFF000000) >> 24;     
            
    Serial.writebytes,4); // отправить прочитаное значение компьютеру           
          
    }    
    }  

    void doEncoderA() // обработка прерывания  
    {  
      for(
    byte i=0i<4i++) enbuf[i]=0;  
      if(
    digitalRead(encoder0PinB)==HIGHenbuf[1]=24; else enbuf[1]=15;   
    }    

    void doEncoderB() // обработка прерывания  
    {  
        for(
    byte i=0i<4i++) enbuf[i]=0;  
        if(
    digitalRead(encoder0PinA)==HIGHenbuf[1]=15; else enbuf[1]=24;   

    Последний раз редактировалось Chip; 14.03.2012 в 02:16.

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •