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

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1
    Администратор Аватар для 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];  
    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() 
    {  
     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++) bytes[i]=0
      if(
    digitalRead(encoder0PinB)==HIGHbytes[1]=24; else bytes[1]=15;  
      
    Serial.write(bytes4); 
      
    delay(1);
    }   

    void doEncoderB() // обработка прерывания 

        for(
    byte i=0i<4i++) bytes[i]=0
        if(
    digitalRead(encoder0PinA)==HIGHbytes[1]=15; else bytes[1]=24
        
    Serial.write(bytes4); 
        
    delay(1);

    Последний раз редактировалось Chip; 02.03.2012 в 03:29.

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

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

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

Ваши права

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