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

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

Камиль Re: Адаптер рулевых кнопок. 23.04.2010, 21:03
Игорек Re: Адаптер рулевых кнопок. 29.04.2010, 13:18
Камиль Re: Адаптер рулевых кнопок. 31.05.2010, 09:13
Михаил999 Re: Адаптер рулевых кнопок. 22.02.2013, 13:46
Михаил999 Re: Адаптер рулевых кнопок. 24.02.2015, 21:22
сергей055 Re: Адаптер рулевых кнопок. 11.03.2016, 15:27
Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  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]; 
    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()
    {  
      
    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);
    }  

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

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

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

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

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

Ваши права

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