Тема: Kia Sorento 2004
Показать сообщение отдельно
Старый 19.01.2015, 02:06   #16
lduhl
Пользователь
 
Регистрация: 03.12.2014
Возраст: 40
Регион: ***эстония***
Сообщений: 75
lduhl is on a distinguished road
По умолчанию

скетч работы энкодера взят отсюда и немного изменён =) Добавлено включение реле с пина номер 3.

Код:
unsigned long currentTime;
unsigned long loopTime;
const int pin_A = 0;       // pin 0
const int pin_B = 1;       // pin 1
unsigned char encoder_A;
unsigned char encoder_B;
unsigned char encoder_A_prev=0;

const int button = 3;          //пин кнопки вкл/выкл
const int relay = 13;          //пин управления реле
 
void setup()  {
  // declare pin 9 to be an output:
  pinMode(9, OUTPUT);         // устанавливаем pin 9 как выход + 
  pinMode(10, OUTPUT);         // устанавливаем pin 10 как выход - 
  pinMode(pin_A, INPUT);
  pinMode(pin_B, INPUT);
  currentTime = millis();
  loopTime = currentTime; 
  pinMode(relay, OUTPUT);
  pinMode(button, INPUT);
} 
 
void loop()  {
  currentTime = millis();
  if(currentTime >= (loopTime + 5)){ // проверяем каждые 5мс (200 Гц)
    encoder_A = digitalRead(pin_A);     // считываем состояние выхода А энкодера 
    encoder_B = digitalRead(pin_B);     // считываем состояние выхода Б энкодера    
    if((!encoder_A) && (encoder_A_prev)){    // если состояние изменилось с положительного к нулю
      if(encoder_B) {
        // выход В в полож. сост., значит вращение по часовой стрелке
        digitalWrite(9, HIGH);
        delay(300);
        digitalWrite(9, LOW);        
      }   
      else {
        // выход В в 0 сост., значит вращение против часовой стрелки     
        digitalWrite(10, HIGH);
        delay(300);
        digitalWrite(10, LOW);              
      }   
    }   
    encoder_A_prev = encoder_A;     // сохраняем значение А для следующего цикла     
    loopTime = currentTime;
  } 
  if (digitalRead(button)==HIGH){
    if (digitalRead(relay)==HIGH){digitalWrite(relay,LOW);delay(500);}else{digitalWrite(relay,HIGH);delay(500);}
  }
  
}
lduhl вне форума   Ответить с цитированием