Tuesday, August 22, 2017

Điều khiển 4 thiết bị (4 relay) bằng remote RF (cách khác)

Ở bài trước, ta đã biết cách kết nối phần cứng và lập trình điều khiển 4 thiết bị bằng remote RF.

Ở bài này, ta sử dụng lại phần cứng tương tự bài trước, lập trình theo cách khác, dựa vào việc đếm số lần nhấn phím.

___Code___

// Khai báo tên 4 chân nối với remote
const int  C = 2;
const int  A = 3;
const int  D = 4;
const int  B = 5;

// Khai báo tên 4 chân nối với relay
const int  relay1 = 6;
const int  relay2 = 7;
const int  relay3 = 8;
const int  relay4 = 9;




// Các biến hỗ trợ phím A
int demA = 0;
int Ahientai = 0;      
int Atruoc = 0;

// Các biến hỗ trợ phím B
int demB = 0;
int Bhientai = 0;      
int Btruoc = 0;

// Các biến hỗ trợ phím C
int demC = 0;
int Chientai = 0;      
int Ctruoc = 0;

// Các biến hỗ trợ phím D
int demD = 0;
int Dhientai = 0;      
int Dtruoc = 0;

void setup()
{
  // Khai báo các chân nhận và xuất tín hiệu
  pinMode(A, INPUT);
  pinMode(B, INPUT);
  pinMode(C, INPUT);
  pinMode(D, INPUT);
  pinMode(relay1, OUTPUT);
  pinMode(relay2, OUTPUT);
  pinMode(relay3, OUTPUT);
  pinMode(relay4, OUTPUT);

  // Mặc định các relay luôn tắt
  digitalWrite(relay1,1);
  digitalWrite(relay2,1);
  digitalWrite(relay3,1);
  digitalWrite(relay4,1);
}

void loop()
{
  // Đọc tín hiệu các phím trên remote
  Ahientai  = digitalRead(A);
  Bhientai  = digitalRead(B);
  Chientai  = digitalRead(C);
  Dhientai  = digitalRead(D);

  // Ghi nhận số lần bấm phím A
  if (Ahientai != Atruoc && Ahientai == 1)
  {
    demA++;    
  }
  Atruoc = Ahientai;  

  // Ghi nhận số lần bấm phím B
  if (Bhientai != Btruoc && Bhientai == 1)
  {
    demB++;    
  }
  Btruoc = Bhientai;

  // Ghi nhận số lần bấm phím C
  if (Chientai != Ctruoc && Chientai == 1)
  {
    demC++;    
  }
  Ctruoc = Chientai;

  // Ghi nhận số lần bấm phím D
  if (Dhientai != Dtruoc && Dhientai == 1)
  {
    demD++;    
  }

  Dtruoc = Dhientai;

  // Bật, tắt relay1
  if (demA % 2 == 0)
  {
    digitalWrite(relay1, 1);
  }
  else
  {
    digitalWrite(relay1, 0);
  }

  // Bật, tắt relay2
  if (demB % 2 == 0)
  {
    digitalWrite(relay2, 1);
  }
  else
  {
    digitalWrite(relay2, 0);
  }

  // Bật, tắt relay3
  if (demC % 2 == 0)
  {
    digitalWrite(relay3, 1);
  }
  else
  {
    digitalWrite(relay3, 0);
  }

  // Bật, tắt relay4
  if (demD % 2 == 0)
  {
    digitalWrite(relay4, 1);
  }
  else
  {
    digitalWrite(relay4, 0);
  }
 
}

___End___

No comments:

Post a Comment